河北联合大学2010SQLSERVER课件4.视图_索引_游标
SELECT 总分=SUM(分数),平均分=AVG(分数) 总分=SUM(分数 平均分 分数),平均分=AVG(分数 分数) FROM 学生_课程_分数 学生_课程_ WHERE 课程名='数据库应用' 课程名='数据库应用 数据库应用' GO
【例9-4】查询姓“张”的职工进 查询姓“ 货的零件名称。 货的零件名称。 SELECT 零件名称 FROM 进货视图 WHERE 姓名LIKE '张%' 姓名LIKE '张 GO
【例9-2】创建进货视图,包括职工的姓名 创建进货视图, 和零件名称。 和零件名称。 CREATE VIEW 进货视图 AS SELECT 姓名,零件名称 姓名, FROM 工作人员表,库存零件表,出货单表 工作人员表,库存零件表, WHERE 工作人员表.人员编号=出货单表. 工作人员表.人员编号=出货单表.人员编号 AND 库存零件表.零件编号=出货单表.零件 库存零件表.零件编号=出货单表. 编号 GO
9.1 视图
在SQL Server 2005中创建标准视图主要有两种方式:一种 2005中创建标准视图主要有两种方式 中创建标准视图主要有两种方式: 方式是在SQL 方式是在SQL Server Management Studio中使用向导创 Studio中使用向导创 建视图,另一种方式是通过在查询窗口中执行T SQL语句创 建视图,另一种方式是通过在查询窗口中执行T-SQL语句创 建视图。 SQL提供了视图创建语句 建视图。T-SQL提供了视图创建语句CREATE VIEW。其语 提供了视图创建语句CREATE VIEW。 法格式如下: 法格式如下:
9.1 视图 10) 不能为视图定义全文索引定义。 不能为视图定义全文索引定义。 11) 不能创建临时视图,也不能对临时表创建视图。 不能创建临时视图,也不能对临时表创建视图。 12) 不能删除参与到使用SCHEMABINDING子句创 不能删除参与到使用SCHEMABINDING子句创 建的视图中的视图、表或函数, 建的视图中的视图、表或函数,除非该视图已被删 除或更改而不再具有架构绑定。另外, 除或更改而不再具有架构绑定。另外,如果对参与 具有架构绑定的视图的表执行ALTER TABLE语句 语句, 具有架构绑定的视图的表执行ALTER TABLE语句, 而这些语句又会影响该视图的定义, 而这些语句又会影响该视图的定义,则这些语句将 会失败。 会失败。 13) 下列情况下必须指定视图中每列的名称: 下列情况下必须指定视图中每列的名称: 视图中的任何列都是从算术表达式、 ① 视图中的任何列都是从算术表达式、内置函数或常 量派生而来。 量派生而来。 视图中有两列或多列原应具有相同名称。 ② 视图中有两列或多列原应具有相同名称。 希望为视图中的列指定一个与其源列不同的名称。 ③ 希望为视图中的列指定一个与其源列不同的名称。
CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ] [ WITH <view_attribute> [ ,...n ] ] AS select_statement [ ; ] [ WITH CHECK OPTION ]
9.1 视图
9.1 视图 9.1.3 创建视图,应考虑如下准则: 创建视图,应考虑如下准则: 1) 只能在当前数据库中创建视图。 只能在当前数据库中创建视图。 2) 视图名称必须遵循标识符的规则,且对每个架构都必 视图名称必须遵循标识符的规则, 须惟一。 须惟一。 3) 用户可以对其他视图创建视图。 用户可以对其他视图创建视图。 5) 不能将AFTER触发器与视图相关联,只有INSTEAD 不能将AFTER触发器与视图相关联 只有INSTEAD 触发器与视图相关联, OF触发器可以与之相关联 OF触发器可以与之相关联。 触发器可以与之相关联。 6) 定义视图的查询不能包含COMPUTE子句、 定义视图的查询不能包含COMPUTE子句 子句、 COMPUTE BY子句或INTO关键字。 BY子句或 子句或INTO关键字 关键字。 7) 定义视图的查询不能包含ORDER BY子句,除非在 定义视图的查询不能包含ORDER BY子句 子句, SELECT语句的选择列表中还有一个 SELECT语句的选择列表中还有一个TOP子句。 语句的选择列表中还有一个TOP子句 子句。 8) 定义视图的查询不能包含指定查询提示的OPTION子 定义视图的查询不能包含指定查询提示的OPTION子 句。 9) 定义视图的查询不能包含TABLESAMPLE子句。 定义视图的查询不能包含TABLESAMPLE子句 子句。
【例9-1】创建学生_课程_分数视图,包括计算 创建学生_课程_分数视图, 机学院的学生的学号、姓名, 机学院的学生的学号、姓名,和他们选修的课 程号、课程名、分数。 程号、课程名、分数。 CREATE VIEW 学生_课程_分数 学生_课程_ AS SELECT 学生表.学号,姓名,课程表.课程号,课程 学生表.学号,姓名,课程表.课程号, 名,分数 FROM 学生表,课程表,成绩表 学生表,课程表, WHERE 学生表.学号=成绩表.学号 学生表.学号=成绩表. AND 课程表.课程号=成绩表.课程号 课程表.课程号=成绩表. AND 院系名称='计算机学院' 院系名称='计算机学院 计算机学院' GO
9.1 视图 9.1.5 更新视图 通过更新视图数据(包括添加、修改和删除) 通过更新视图数据(包括添加、修改和删除)可以修改 基本表数据。 基本表数据。只有对满足可更新条件的视图才能进行 更新。 更新。 只要满足下列条件,即可通过视图修改基础基表的数据: 只要满足下列条件,即可通过视图修改基础基表的数据: 1) 任何修改(包括UPDATE、INSERT和 任何修改(包括UPDATE、INSERT和
DELETE语句) 只能引用一个基表的列。 DELETE语句)都只能引用一个基表的列。 语句 2) 视图中被修改的列必须直接引用表列中的基础 视图中被修改的列必须直接引用表列中的基础 数据。 数据。不能通过任何其他方式对这些列进行派 如通过聚合函数、计算(如表达式计算)、 生,如通过聚合函数、计算(如表达式计算)、 集合运算等。 集合运算等。
3) 被修改的列不受GROUቤተ መጻሕፍቲ ባይዱ BY、 被修改的列不受GROUP BY、 HAVING、DISTINCT或TOP子句的影响。 HAVING、DISTINCT或TOP子句的影响。 子句的影响
即使是可更新视图,也不能随意更新数据。 即使是可更新视图,也不能随意更新数据。 如果视图所依赖的基本表有多个时, 如果视图所依赖的基本表有多个时,不能向 该视图添加数据,因为这将影响多个基本表。 该视图添加数据,因为这将影响多个基本表。 修改数据时,若视图依赖于多个基本表, 修改数据时,若视图依赖于多个基本表, 那么一次修改只能修改一个基本表中的数据。 那么一次修改只能修改一个基本表中的数据。 删除数据时,若视图依赖于多个基本表, 删除数据时,若视图依赖于多个基本表, 那么不能通过视图删除数据。 那么不能通过视图删除数据。
9.1 视图 9.1.4 查询视图 视图创建完毕, 视图创建完毕,就可以如同查询基本表一样查询视图 可以在SQL Studio中选 了。可以在SQL Server Management Studio中选 中要查询的视图并打开, 中要查询的视图并打开,浏览该视图查询的所有数 也可以在查询窗口中执行T SQL语句查询视图 语句查询视图。 据。也可以在查询窗口中执行T-SQL语句查询视图。 【例9-3】查询学生_课程_分数视图,统计“数据库 查询学生_课程_分数视图,统计“ 应用”课程的总分和平均分。 应用”课程的总分和平均分。
分区视图在一台或多台服务器间水 平连接一组成员表中的分区数据。 平连接一组成员表中的分区数据。这 数据看上去如同来自于一个表。 样,数据看上去如同来自于一个表。 联接同一个SQL Server实例中的成 联接同一个SQL Server实例中的成 员表的视图是一个本地分区视图。 员表的视图是一个本地分区视图。
第9章 视图、索引和游标 视图、
数据库的基本表是按照数据库设计人员的观点设 计的,并不一定符合用户的需求。 计的,并不一定符合用户的需求。SQL Server 2005可以根据用户需求重新定义表的数据结构 可以根据用户需求重新定义表的数据结构, 2005可以根据用户需求重新定义表的数据结构,这 种数据结构就是视图。 种数据结构就是视图。 在数据库系统中, 在数据库系统中,为了迅速地从庞大的数据库中 找到所需要的数据, 2005提供了类似 找到所需要的数据,SQL Server 2005提供了类似 书的目录作用的索引技术。 书的目录作用的索引技术。通过对数据库中表设置 索引,可以大大加快数据的检索速度。 索引,可以大大加快数据的检索速度。 2005还提供了一种称为游标的机制 还提供了一种称为游标的机制, SQL Server 2005还提供了一种称为游标的机制, 来处理数据。 来处理数据。
1. 视图的优点,主要表现在: 视图的优点,主要表现在: 1) 为用户集中数据,简化用户的数据查 为用户集中数据, 询和处理。使得分散在多个表中的数据, 询和处理。使得分散在多个表中的数据, 通过视图定义在一起。 通过视图定义在一起。 2) 简化操作,屏蔽了数据库的复杂性。 简化操作,屏蔽了数据库的复杂性。 3) 重新定制数据,使得数据便于共享。 重新定制数据,使得数据便于共享。 3) 合并分割数据,有利于数据输出到应 合并分割数据, 用程序中。 用程序中。 4) 简化了用户权限的管理,增加了安全 简化了用户权限的管理, 性。
第9章 视图、索引和游标 视图、
9.1 视图 9.2 索引 9.3 游标
9.1 视图
9.1.1 视图概述 视图是从一个或多个表或视图中导出的表, 视图是从一个或多个表或视图中导出的表, 其结构和数据是建立在对表的查询基础 上的。 上的。 视图不是真实存在的基础表而是一张虚表, 视图不是真实存在的基础表而是一张虚表, 视图所对应的数据并不实际地以视图结 构存储在数据库中, 构存储在数据库中,而是存储在视图所 引用的表中。 引用的表中。
数据库SQL ServerSQLite教程课件:存储过程、触发器和游标
存储过程、触发器和游标
⒉ 使用 SSMS 创建存储过程 操作步骤如下: (1) 在“对象资源管理器”中展开“数据库”节点,展 开要创建存储过程的数据库。 (2) 展开“可编程性”节点,选择“存储过程”选项, 右击鼠标弹出快捷菜单,选择“新建存储过程”命令,打开 创建存储过程对话框,如图 8-3 所示。
存储过程、触发器和游标
8.1.2 创建存储过程 1. 使用 create procedure 语句创建存储过程 1) 语法格式
存储过程、触发器和游标
参数说明: (1) procedure_name 是要创建的存储过程的名称,它后 面跟一个可选项 number,是一个整数,用来区别一组同名 的存储过程,如 proc1、proc2 等。 (2) @parameter 用来声明存储过程的形式参数。在 create procedure 语句中,可以声明一个或多个参数。 (3) data_type 是参数的数据类型。 (4) varying 指定由 output 参数支持的结果集,仅应用于 游标型参数。
exec xp_logininfo;
存储过程、触发器和游标 例 8-3 查看有关 D:\sq 文件夹的文件信息。显示结果如
图 8-2 所示。代码如下: exec xp_cmdshell 'dir D:\sq\';
图 8-2 扩展存储过程
存储过程、触发器和游标
3) 用户自定义存储过程 用户自定义存储过程 (User-Defined Stored Procedure) 是 由用户设计的存储过程。其名称可以是任意组合 SQL Server 命令规则的字符组合,通常以“usp_”开头,避免以“sp_” 或“xp_”开头,以免造成混淆。自定义的存储过程会被添 加到所属数据库的存储过程中,并以对象的形式保存。
SQLServer游标详解
SQLServer游标详解⼀、⽤到的数据CREATE TABLE[dbo].[XSB]([学号][char](6) NOT NULL,[姓名][char](8) NOT NULL,[性别][bit]NULL,[出⽣时间][date]NULL,[专业][char](12) NULL,[总学分][int]NULL,[备注][varchar](500) NULL,PRIMARY KEY CLUSTERED([学号]ASC)WITH (PAD_INDEX =OFF, STATISTICS_NORECOMPUTE =OFF, IGNORE_DUP_KEY =OFF, ALLOW_ROW_LOCKS =ON, ALLOW_PAGE_LOCKS =ON) ON[PRIMARY] ) ON[PRIMARY]GOinsert into XSB values('081101','王林','true','1990-2-10','计算机',50,null),('081102','陈平','true','1991-2-1','计算机',50,null),('081103','王燕','false','1989-10-6','计算机',50,null),('081104','韦严平','true','1990-8-26','计算机',50,null),('081106','李芳芳','true','1990-11-20','计算机',50,null),('081107','李明','true','1990-5-1','计算机',54,'已提前修完数据结构,并获学分'),('081108','林⼀凡','true','1989-8-5','计算机',52,'已提前修完⼀门课'),('081109','张强民','true','1989-8-11','计算机',50,null),('081110','张蔚','false','1991-7-22','计算机',50,'三好⽣'),('081111','赵琳','false','1989-10-6','计算机',50,null),('081113','严红','false','1989-8-11','计算机',48,'⼀门不及格,待补考'),('081201','王敏','true','1989-6-10','通信⼯程',42,null),('081202','王林','true','1989-6-10','通信⼯程',40,'⼀门不及格,待补考')GO⼆、游标概念我们知道,关系数据库所有的关系运算其实是集合与集合的运算,它的输⼊是集合输出同样是集合,有时需要对结果集逐⾏进⾏处理,这时就需要⽤到游标。
SQLServer数据库技术及应用(第六讲)——索引和约束精品PPT课件
创建索引
【练习】使用SQL语句在StuCou表上创建名为 IX_StuNoCouNo的聚集、唯一、复合索引,该 索引基于StuNo列和CouNo列创建.
use xk go create unique clustered index IX_stunocouno on
stucou(stuno,couno) go
建有unique索引的表在执行insert语句或update语句 时,SQL Server将自动检验新数据中是否存在重复值。 如果存在,SQL Server在第一个重复值处取消语句并 返回错误信息。
如果表中已有数据,那么在创建unique索引时,SQL Server将自动检验是否存在重复值,若有重复值,则 不能创建unique索引。
外键约束
• 外键约束 建立两个表之间的联系 【问题】要保证class表中的系代码在表
Department中存在,请创建外键 。 方法一:使用企业管理器
外键约束
方法二:使用SQL语句 use xk go alter table class add constraint fk_departno foreign key
约束的实现
use xk go create table employee (name char(20), id int , dno char(2) not null, salary int, primary key(id), unique(name), foreign key(dno) references department(departno))
复合索引说明
在(字段1,字段2)上创建的复合索引和在 (字段2,字段1)上创建的复合索引是不同的
查找数据时,只有在where子句中指定了索引 的第一个字段时才使用该复合索引
SQLServer索引和视图
SQLServer索引和视图Ø 索引1、什么是索引索引就是数据表中数据和相应的存储位置的列表,利⽤索引可以提⾼在表或视图中的查找数据的速度。
2、索引分类数据库中索引主要分为两类:聚集索引和⾮聚集索引。
SQL Server 2005还提供了唯⼀索引、索引视图、全⽂索引、xml索引等等。
聚集索引和⾮聚集索引是数据库引擎中索引的基本类型,是理解其他类型索引的基础。
# 聚集索引聚集索引是值表中数据⾏的物理存储顺序和索引的存储顺序完全相同。
聚集索引根据索引顺序物理地重新排列了⽤户插⼊到表中的数据,因此,每个表只能创建⼀个聚集索引。
聚集索引经常创建在表中经常被搜索到的列或按顺序访问的列上。
在默认情况下,主键约束⾃动创建聚集索引。
# ⾮聚集索引⾮聚集索引不改变表中数据列的物理存储位置,数据与索引分开存储,通过索引指向的地址与表中的数据发⽣关系。
⾮聚集索引没有改变表中物理⾏的位置,索引可以在以下情况下使⽤⾮聚集索引:⼀、如果某个字段的数据唯⼀性⽐较⾼⼆、如果查询所得到的数据量⽐较少聚集索引和⾮聚集索引的区别:聚集索引⾮聚集索引每个表只允许创建⼀个聚集索引最多可以有249个⾮聚集索引物理的重排表中的数据以符合索引约束创建⼀个键值列表,键值指向数据在数据页中的位置⽤于经常查找数据的列⽤于从表中查找单个值的列# 其他类型索引除了以上索引,还有以下类型索引:a、唯⼀索引:如果希望索引键都不同,可以创建唯⼀索引。
聚集索引和⾮聚集索引都可以是唯⼀索引。
b、包含新列索引:索引列的最⼤数量是16个,索引列的字节总数的最⾼值是900。
如果当多个列的字节总数⼤于900,切⼜想在这些劣种都包含索引是,可以使⽤包含性列索引c、视图索引:提供视图查询效率,可以视图的索引物理化,也就是说将结果集永久存储在索引中,可以创建视图索引。
d、 XML索引:是与xml数据关联的索引形式,是XML⼆进制blob的已拆分持久表⽰形式e、全⽂索引:⼀种特殊类型的基于标记的功能性功能,⽤于帮助在字符串中搜索赋值的词3、创建索引语法create [unique] [clustered | noclustered]index index_nameon table_name (column_name ...)[with fillfactor=x]unique唯⼀索引clustered聚集索引noclustered⾮聚集索引fillfactor填充因⼦⼤⼩,范围在0-100直接,表⽰索引页填满的空间所占的百分⽐。
MYSQL数据库的索引、视图、触发器、游标和存储过程
MYSQL数据库的索引、视图、触发器、游标和存储过程(1)索引(index) (1)(2)视图(view) (3)(3)触发器(trigger) (6)(4)游标(cursor) (8)(5)事务(Transaction) (10)(6)存储过程(Stored Procedure) (13)(1)索引(index)索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
优点:大大加快数据的检索速度;创建唯一性索引,保证数据库表中每一行数据的唯一性;加速表和表之间的连接;在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
缺点:索引需要占物理空间当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
更好的理解索引的提示:✓如果经常使用表中的某一列或某几列为条件进行查询,且表中的数据量比较大时,可以创建索引,以提高查询的速度。
✓索引是与表关联的可选结构。
✓通过有目的的创建索引,可以加快对表执行SELECT语句的速度。
✓不管索引是否存在,都无需修改任何SQL语句的书写方式。
索引只是一种快速访问数据的途径,它只影响查询执行的效率。
✓可以使用CREATE INDEX命令在一列或若干列的组合上创建索引。
✓创建索引时,将获取要创建索引的列,并对其进行排序。
然后,将一个指针连同每一行的索引值存储起来,组成键值对(目录名和页码)。
使用索引时,系统首先通过已排序的列值执行快速搜索,然后使用相关联的指针值来定位具有所要查找值的行。
✓一旦创建了索引,MySQL会自动维护和使用它们。
✓只要修改了数据,如添加新行、更新现有行或删除行,MySQL都会自动更新索引。
✓但是为表创建过多的索引会降低更新、删除以及插入的性能,因为MySQL还必须更新与该表关联的索引。
索引的分类普通索引:这是最基本的索引,它没有任何限制唯一索引:它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。
《SQLServer表》课件
使用 `TRUNCATE TABLE` 语句,可以快速删除 表中的所有行,但不会删除表本身。
使用子查询删除数据
通过将一个查询的结果作为另一个查询的源数据 来删除表中的数据。
04
SQL Server 表的高级功能
主键与外键
主键(Primary Key)
唯一标识数据库表中的每条记录的一个或多 个字段的组合。主键用于快速检索数据,并 确保数据的唯一性。
06
详细描述
介绍如何通过动态SQL和存储过程来提高查询 的灵活性和效率,减少重复代码和逻辑。
表关联查询实例
总结词
内连接查询
详细描述
通过实际案例演示如何使用内连接查询来获取两个或多个 表之间相关联的数据。
总结词
左连接查询
详细描述
介绍如何使用左连接查询来获取左表中的所有记录以及右 表中匹配的记录,即使右表中没有匹配的记录也能获取左 表中的记录。
2000年
SQL Server 2000 发布,支持更多的企业级应用和电 子商务解决方案。
2005年
SQL Server 2005 发布,引入了新的数据类型、安全 性和管理功能。
2008年
SQL Server 2008 发布,增加了全文搜索、数据压缩 等新功能。
SQL Server 的发展历程
2012年
数据备份与恢复
备份策略
根据业务需求制定合适的备份策略,包括全量备份、增量备份和差 异备份等。
备份存储
选择可靠的存储介质和设备,确保备份数据的安全性和可用性。
数据恢复
在数据丢失或损坏时,能够快速恢复数据,减少业务中断时间。
06
SQL Server 表的应用实例
河北联合大学SQLSERVER第四章精品PPT课件
2.为什么要求这三种运算不能依赖于物理存取路径呢? 因为依赖物理存取路径来实现关系运算就降低或丧 失了数据的物理独立性。不依赖物理存取路径来实 现关系运算就要求关系系统自动地选择路径。为此, 系统要进行查询优化,以获得较好的性能。这正是 关系系统实施的关键技术。
3. 要求关系系统支持这三种最主要的运算而不是关系 代数的全部运算功能,是因为它们是最有用的运算 功能,能解决绝大部分的实际回题。
二、关系系统的分类
•有了关系系统的定义,我们就可以根据它来区分哪些是真正的关 系系统。当前,许多产品如DB2,ORACLE,SYBASE, INFORMIX, INGRES是关系系统。我国自己开发的PBASE(中国 人民大学)、COBASE(北大、人大与中软)、OPENBASE(东 大阿尔派)、DM2(华中理工大学)等等数据库管理系统是关系系 统。 •4.1.1定义的关系系统是关系系统的最小要求,许多实际系统,如 上面提到的那些系统都不同程度地超过了这些要求。
从实际意义上看,这十二条准则可以作为 评价或购买关系型产品的标准。
从理论意义上看,它是对关系数据模型的 具体而又深入的论述,是从理论和实际紧密结 合的高度对关系型DBMS的评述。
准则0 : 一个关系型的DBMS必须能完全通过它的 关系能力来管理数据库。
准则0是下面十二条准则的基础。准则0的一个推论 是:任何声称是关系型的DBMS必须在关系这个级 别上支持数据的插入、修改和删除(即一次多个记 录的操作级别)。 不管一个系统是否还具有非关系的管理数据的能力, 它必须满足准则0。任何不满足准则0的DBMS不配 称为关系型DBMS。
按照E .F.Codd的思想,可以把关系系统分类: 注释
s
M 1.表式系统:仅支持关系(表)数据
SQLserver第4章PPT教学课件
2020/12/10
表
§4.1 概述 §4.2 基表的定义 §4.3 案例:创建“高校学生学籍与成绩管理数据库” §4.4 修改表的结构和表名 §4.5 图形界面的数据录入 §4.6 使用SQL语句进行数据插入 §4.7 数据修改与删除 §4.8 删除基本表
2007.8
§4.1 概述
数据库设计的步骤:
2020/12/10
5
▪ 逻辑上讲,基本表与三级模式结构中的模
式(或称逻辑模式)严格对应。
▪ 一个具体的关系数据库中,全部关系模式
的集合就构成它的逻辑模式。
▪ 要注意的的问题:
(1) 表必须创建在指定的数据库中。
(2) 同一数据库中的不同表不能同名。
(3) 要充分重视每个表的关系模式的定义(列 名、数据类型及精度、完整性约束条件)。
2020/12/10
26
CREATE TABLE 表名 (列名 数据类型 [列级完 整性约束定义] {,列名 数据类型 [列级完整性约束定义] … } [ ,表级完整性约束定义] )
2020/12/10
8
举例: create table 职工(
职工号 char(3), 姓名 varchar(6), 性别 char(2) , 出生日期 smalldatetime, 工资 numeric(6,2) )
部门部门号部门名负责人联系电话职工职工号姓名性别出生日期工资部门号参考答案?createtable部门部门号char3primarykey部门名varchar10notnullunique负责人varchar6notnull联系电话varchar15unique?createtable职工职工号char3primarykey姓名varchar6notnull性别char2default男check性别男or性别女出生日期smalldatetime工资numeric62check工资1000部门号char3notnullforeignkey部门号references部门部门号check出生日期1975and出生日期1995方式2
SQL Server数据库教程 第4章 数据库的查询、视图和游标
6.消除结果集中的重复行
对表只选择某些列时,可能会出现重复行。例如,若对xscj数据库的xsb表只选择专业和总学 分,则出现多行重复的情况。可以使用DISTINCT关键字消除结果集中的重复行,其格式是:
SELECT DISTINCT | ALL 列名[ , 列名…]
关键字DISTINCT的含义是:对结果集中的重复行只选择一个,保证行的唯一性。 【例4.6】 对xscj数据库的xsb表只选择专业和总学分,消除结果集中的重复行。 代码如下,执行结果如图4.5所示。
通配符 % 代表倒数 说明
_(下画线)
[] [^]
代表单个字符
指定范围(如[a-f]、[0-9])或集合(如[abcdef])中的任何单个字符 指定不属于范围(如[^a-f]、[^0-9])或集合(如[^abcdef])的任何单个字符
5.计算列值
使用SELECT对列进行查询时,在结果中可以输出对列值计算后的值,即SELECT子句可 使用表达式作为结果,格式为: SELECT表达式[ , 表达式] 【例4.5】 按120分计算成绩并显示学号为“191301”的学生的成绩情况。 代码如下,执行结果如图4.4所示。 USE xscj GO SELECT 学号, 课程号, 成绩120=成绩*1.20 FROM cjb WHERE学号= '191301' 计算列值使用算术运算符:+(加)、(减)、*(乘)、/(除)和%(取余)。其中, 算术运算符(+、、*、/)可以用于任何数字类型的列,包括int、smallint、tinyint、decimal、 numeric、float、real、money和smallmoney;%可以用于上述除money和smallmoney以外的 数字类型。
SQL server 数据库第4章PPT课件
3.统一字符文本类型 Ntext
Ntext存储的是可变长度的双字节字符数据类型,最 多可以存储(230-1)/2个字符。 l 统一字符型数据长度n为“字符”个数,所占字节数 为2*n。 l 统一字符型字符串常量必须使用单引号括起来。 l Nchar、Nvarchar数据类型若不指定长度n,默认为1 个字符(2个字节)。 l 若实际字符串长度超过指定的n个字符,用局部变量 存储时只截取字符串前n个字符,其余字符舍掉。 l 统一字符型数据可以在SSMS中直接输入到数据表中, 但输入的字符个数超过字段长度时则系统不接受。 l 在用INSERT或UPDATE为数据表统一字符型字段输入、 更新字符串时,若超过n个字符则系统提示“将截断字 符串或二进制数据”并终止命令执行,不能保存该数据。
5.近似值实型浮点数 real
占4字节固定长度内存,最多7位有效数字,范围从3.40E+38到1.79E+38。 6.可变精度实型浮点数 float(n) l 当n的取值为1-24时,数据精度是7位有效数字,范围 从-3.40E+38到1.79E+38,占4字节内存。 l 当n的取值为25-53时,精度是15位有效数字,范围从1.79E+308到1.79E+308,占8字节内存。 l 实型浮点数常量可以直接使用科学记数法的指数形式 书写。
长字段)。
l numeric型数据所占的存储空间随精度的不同而不同,一
般说来对应关系为:
p的取值范围
数据所占内存字节数
1 -9
5
10-19
9
20-28
13
29-38
17
8.精确小数型数据 Decimal(p,s) 或 Dec(p,s)
该类型数据与Numeric(p,s)类型用法相同,所不同的是
