表的操作与管理.ppt

上传人:牧羊曲112 文档编号:6341398 上传时间:2023-10-18 格式:PPT 页数:86 大小:557.50KB
返回 下载 相关 举报
表的操作与管理.ppt_第1页
第1页 / 共86页
表的操作与管理.ppt_第2页
第2页 / 共86页
表的操作与管理.ppt_第3页
第3页 / 共86页
表的操作与管理.ppt_第4页
第4页 / 共86页
表的操作与管理.ppt_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《表的操作与管理.ppt》由会员分享,可在线阅读,更多相关《表的操作与管理.ppt(86页珍藏版)》请在三一办公上搜索。

1、第六讲 表的操作与管理,王无恙,本章学习目标,掌握表操作;table 掌握约束及操作;constraint 掌握索引及操作;index 掌握数据类型;data type,任务,任务一:创建案例中的表(两种方法);任务二:创建案例中的约束(两种方法);任务三:创建案例中的索引(两种方法);任务四:请向案例中的表每表中添加不少于5条数据;(两种方法)insert data任务五:请创建表对象脚本,包括数据及数据结构;Data Structure;任务六:创建项目中的表、约束及索引;任务七:请完成实训 报告二。,任务一,用SQL 语句创建案例中的表;用Management Studio创建案例中的表

2、;,步骤一:用SQL语句创建表,请按照下面要求创建学生表;学生(学生号,学生名,性别,出生年月,电话,学生的来源,班级,年级);S(SNO,SName,BYear,,SSEX,Stel,SFrom,Sclass)SNO CHAR(10),SName VARCHAR(20);BYear datetime;SSEX CHAR(2);Stel VARCHAR(20);Sfrom varchar(20);,思考题,思考问题:当SNO为null时,能设置成功吗?为什么?(什么是主键?为什么设置主键?怎样设置主键?)Primary Key,创建C课程表:C(CNO,CNAME,Ccredit);要求:CN

3、O CHAR20 NOT NULL,CNAME CHAR20;Ccredit int;,创建SC表:CREATE TABLE SC(SNO,CNO,SCORE)要求:SNO CHAR(5),CNO CHAR(5),SCORE NUMERIC(5,1)。,步骤二:用SQL语句修改表或者删除表,请用SQL语句向S中添加列SClass nvarchar(20);Sgrade nvarchar(20);请用SQL语句删除S表中的Sgrade列;,步骤三,请用Management Studio重复以上操作:创建表,添加列,删除列,添加数据;Column,任务二:请用SQL语句实现,请向S、C表中添加主键

4、约束;请向S表中添加SNO非空约束;请向表S中添加Byear列中添加默认为1989年1月1日的约束;default;请向表C的列CNAME添加Unique唯一约束;请向C表的Ccredit添加Check约束,要求学分大于0分小于50分;请向SC表中添加外键SNO参考S表主键SNO;请向SC表中添加外键CNO,参考C表中的主键CNO;请把SC表中的两外键设置成一个组合主键;请设置SC表CHECK约束为优、良、中、及格、不及格。,任务三,1.建立索引 unique index1)在S 表上建立关于SNO 的唯一索引stusno。2)在C 表上建立关于CNO 升序的唯一索引 coucno。sort

5、ascending2.删除索引1)删除S 表上的索引stusno。2)删除C表上的索引coucno。,任务四,请向以上所建的三张表中添加不少于5条的记录;recordS表的记录中的SNO能一样吗?能为空吗?SNAME呢?C表中能填入值80吗?为什么?,任务五,请把所创建里表及数据用SQL脚本给导出;script,任务六,请把项目设计报告中的表物理实现;并导出所创建的表的脚本;,任务七,请完成实训报告二;,8.1.1 创建表,利用SQL Server管理平台创建表在SQL Server管理平台中,展开指定的服务器和数据库,打开想要创建新表的数据库,右击表对象,并从弹出的快捷菜单中选择“新建表”选

6、项,如图5-4所示。在图5-4的对话框中,可以对表的结构进行更改,设置主键及字段属性,使用SQL Server管理平台可以非常直观地修改数据库结构和添加数据。在表中任意行上右击,则弹出一个快捷菜单,如图5-6所示。,图5-4 新建表对话框,图5-6 设置字段属性对话框,8.1.1 创建表,2.利用create命令创建表 使用create命令创建表非常灵活,它允许对表设置几种不同的选项,包括表名、存放位置和列的属性等。其完整语法形式如下:CREATE TABLE database_name.owner.|owner.table_name(|column_name AS computed_colu

7、mn_expression|,n)ON filegroup|DEFAULT TEXTIMAGE_ON filegroup|DEFAULT:=column_name data_type COLLATE DEFAULT constant_expression|IDENTITY(seed,increment)NOT FOR REPLICATION ROWGUIDCOL.n,8.1.1 创建表,2.利用create命令创建表 其中,各参数的说明如下:parameterdatabase_name:用于指定所创建表的数据库名称。owner:用于指定新建表的所有者的用户名。table_name:用于指定新建

8、表的名称。column_name:用于指定新建表的列名。computed_column_expression:用于指定计算列的列值表达式。ON filegroup|DEFAULT:用于指定存储表的文件组名。TEXTIMAGE_ON:用于指定 text、ntext 和 image 列的数据存储的文件组。data_type:用于指定列的数据类型。DEFAULT:用于指定列的默认值。constant_expression:用于指定列的默认值的常量表达式、可以为一个常量或NULL或系统函数。functionIDENTITY:用于将列指定为标识列。Seed:用于指定标识列的初始值。Increment:用

9、于指定标识列的增量值。NOT FOR REPLICATION:用于指定列的IDENTITY属性,在把从其他表中复制的数据插入到表中时不发生作用,即不生成列值,使得复制的数据行保持原来的列值。ROWGUIDCOL:用于将列指定为全局惟一标识行号列(row global unique identifier column)。COLLATE:用于指定表的校验方式。column_constraint和table_constraint:用于指定列约束和表约束。,8.1.1 创建表,2.利用create命令创建表 例5-3创建了一个工人信息表,它包括员工编号、姓名、性别、出生日期、职位、工资和备注信息。SQ

10、L语句的程序清单如下:CREATE TABLE worker(number char(8)not null,name char(8)NOT NULL,sex char(2)NULL,birthday datetime null,job_title varchar(10)null,salary money null,memo ntext null),8.1.2 创建约束,约束是SQL Server提供的自动保持数据库完整性的一种方法,它通过限制字段中数据、记录中数据和表之间的数据来保证数据的完整性。在SQL SERVER中,对于基本表的约束分为列约束和表约束。列约束是对某一个特定列的约束,包含在

11、列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用,分隔,定义表约束时必须指出要约束的那些列的名称。完整性约束的基本语法格式为:CONSTRAINT constraint_name(约束名)约束不指定名称时,系统会给定一个名称。在SQL Server 2005中有6种约束:主键约束(primary key constraint)、惟一性约束(unique constraint)、检查约束(check constraint)、默认约束(default constraint)、外部键约束(foreign

12、 key constraint)和空值(NULL)约束。,8.1.2 创建约束,主键(PRIMARY KEY)约束 PRIMARY KEY约束用于定义基本表的主键,它是惟一确定表中每一条记录的标识符,其值不能为NULL,也不能重复,以此来保证实体的完整性。PRIMARY KEY与UNIQUE约束类似,通过建立唯一索引来保证基本表在主键列取值的唯一性,但它们之间存在着很大的区别:在一个基本表中只能定义一个PRIMARY KEY约束,但可定义多个UNIQUE约束;对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。注意

13、:不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束。PRIMARY KEY既可用于列约束,也可用于表约束。,8.1.2 创建约束,主键(PRIMARY KEY)约束 主键的创建操作方法有两种:SQL Server管理平台操作法和Transact-SQL语句操作法。(1)SQL Server管理平台操作法,如图5-7所示。,图5-7 选择多个字段共同做为主键对话框,8.1.2 创建约束,主键(PRIMARY KEY)约束(2)使用Transact-SQL语句操作法设置主键约束,其语法形式如下:CONSTRAINT constraint_name PRIMARY KE

14、Y CLUSTERED|NONCLUSTERED(column_name)PRIMARY KEY用于定义表约束时,即将某些列的组合定义为主键,其语法格式如下:CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED(column_name,n),8.1.2 创建约束,主键(PRIMARY KEY)约束 例5-5 建立一个SC表,定义SNO,CNO共同组成SC的主键程序清单如下:CREATE TABLE SC(SNO CHAR(5)NOT NULL,CNO CHAR(5)NOT NULL,SCORE NUMERIC(3),CONS

15、TRAINT SC_PRIM PRIMARY KEY(SNO,CNO),8.1.2 创建约束,2.惟一性约束 惟一性约束用于指定一个或者多个列的组合值具有惟一性,以防止在列中输入重复的值。定义了UNIQUE约束的那些列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。当使用惟一性约束时,需要考虑以下几个因素:使用惟一性约束的字段允许为空值;一个表中可以允许有多个惟一性约束;可以把惟一性约束定义在多个字段上;惟一性约束用于强制在指定字段上创建一个惟一性索引;默认情况下,创建的索引类型为非聚集索引。,8.1.2 创建约束,2.惟一性约束 创建惟一性约束的方法有两种:通过SQL S

16、erver管理平台可以完成创建和修改惟一性约束的操作;使用Transact-SQL语句完成惟一性约束的操作。(1)通过SQL Server管理平台可以完成创建和修改惟一性约束的操作,如图5-8所示。,图5-8 创建惟一性约束对话框,8.1.2 创建约束,2.惟一性约束(2)使用Transact-SQL语句完成惟一性约束的操作,其语法形式如下:CONSTRAINT constraint_name UNIQUE CLUSTERED|NONCLUSTERED(column_name,n)例5-6创建一个学生信息表,其中name字段具有惟一性。程序清单如下:Create table student(i

17、d char(8),name char(10),sex char(2),constraint pk_id primary key(id),constraint uk_identity unique(name),8.1.2 创建约束,3.检查约束 检查约束对输入列或者整个表中的值设置检查条件,以限制输入值,保证数据库数据的完整性。当使用检查约束时,应该考虑和注意以下几点:一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关;一个表中可以定义多个检查约束;每个CREATE TABLE语句中每个字段只能定义一个检查约束;在多个字段上定义检查约束,则必须将检查约束定义为表级约

18、束;当执行INSERT语句或者UPDATE语句时,检查约束将验证数据;检查约束中不能包含子查询。,8.1.2 创建约束,3.检查约束 创建检查约束常用的操作方法有如下两种:使用SQL Server管理平台创建检查约束;用Transact-SQL语句创建检查约束。(1)使用SQL Server管理平台创建检查约束,如图5-9所示。,图5-9 创建检查约束对话框,8.1.2 创建约束,3.检查约束(2)用Transact-SQL语句创建检查约束。用Transact-SQL语句创建检查约束。其语法形式如下:CONSTRAINT constraint_name CHECK NOT FOR REPLIC

19、ATION(logical_expression)例5-8 建立一个SC表,定义SCORE 的取值范围为0到100之间。程序清单如下:CREATE TABLE SC(SNO CHAR(5),CNO CHAR(5),SCORE NUMERIC(5,1)CONSTRAINT SCORE_CHK CHECK(SCORE=0 AND SCORE=100),8.1.2 创建约束,4.默认(DEFAULT)约束 默认约束指定在插入操作中如果没有提供输入值时,则系统自动指定值。默认约束可以包括常量、函数、不带变元的内建函数或者空值。使用默认约束时,应该注意以下几点:(1)每个字段只能定义一个默认约束;(2)

20、如果定义的默认值长于其对应字段的允许长度,那么输入到表中的默认值将被截断;(3)不能加入到带有IDENTITY属性或者数据类型为timestamp的字段上;(4)如果字段定义为用户定义的数据类型,而且有一个默认绑定到这个数据类型上,则不允许该字段有默认约束。,8.1.2 创建约束,4.默认(DEFAULT)约束 创建默认约束常用的操作方法有如下两种:使用SQL Server管理平台创建默认约束;创建默认约束的Transact-SQL语句操作法。(1)使用SQL Server管理平台创建默认约束,如图5-10所示。,图5-10 创建默认约束对话框,8.1.2 创建约束,4.默认(DEFAULT)

21、约束(2)创建默认约束的Transact-SQL语句操作法。其语法形式如下:CONSTRAINT constraint_name DEFAULT constraint_expression FOR column_name例5-10为 dept字段创建默认约束。程序清单如下:constraint con_dept default 计算机 for dept,8.1.2 创建约束,8.外部键约束 外键(FOREIGN KEY)是用于建立和加强两个表数据之间的链接的一列或多列。外部键约束用于强制参照完整性。当使用外部键约束时,应该考虑以下几个因素:外部键约束提供了字段参照完整性;外部键从句中的字段数目

22、和每个字段指定的数据类型都必须和REFERENCES从句中的字段相匹配;外部键约束不能自动创建索引,需要用户手动创建;用户想要修改外部键约束的数据,必须有对外部键约束所参考表的SELECT权限或者REFERENCES权限;参考同一表中的字段时,必须只使用REFERENCES子句,不能使用外部键子句;一个表中最多可以有31个外部键约束;在临时表中,不能使用外部键约束;主键和外部键的数据类型必须严格匹配,8.1.2 创建约束,8.外部键约束 创建外部键约束常用的操作方法有如下两种:在SQL Server管理平台中添加外部键约束;使用Transact-SQL语句设置外部键约束。(1)在SQL Ser

23、ver管理平台中添加外部键约束,在SQL Server管理平台中添加外部键约束。如图5-11,5-12所示。,图5-11 选择创建外键约束的字段,图5-12 创建外键约束对话框,8.1.2 创建约束,8.外部键约束(2)使用Transact-SQL语句设置外部键约束,其语法形式如下:CONSTRAINT constraint_name FOREIGN KEY(column_name,n)REFERENCES ref_table(ref_column,n)例5-11 建立一个SC表,定义SNO,CNO为SC的外部键。程序清单如下:CREATE TABLE SC(SNO CHAR(5)NOT NU

24、LL CONSTRAINT S_FORE FOREIGN KEY REFERENCES S(SNO),CNO CHAR(5)NOT NULL CONSTRAINT C_FORE FOREIGN KEY REFERENCES C(CNO),SCORE NUMERIC(3),CONSTRAINT S_C_PRIM PRIMARY KEY(SNO,CNO),8.1.2 创建约束,6.空值(NULL)约束 空值(NULL)约束用来控制是否允许该字段的值为NULL。NULL值不是0也不是空白,更不是填入字符串的“NULL”字符串,而是表示“不知道”、“不确定”或“没有数据”的意思。当某一字段的值一定要输

25、入才有意义的时候,则可以设置为NOT NULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用。空值(NULL)约束只能用于定义列约束。创建空值(NULL)约束常用的操作方法有如下两种:(1)在SQL Server管理平台中添加空值(NULL)约束;(2)使用Transact-SQL语句设置空值(NULL)约束。,8.1.2 创建约束,6.空值(NULL)约束(1)在SQL Server管理平台中添加空值(NULL)约束。如图5-14所示。,图5-14设置空值(NULL)约束对话框,8.1.2 创建约束,6.空值(NULL)约束(2)使用Transact-SQL语句设置空值(NU

26、LL)约束,其语法形式如下:CONSTRAINT NULL|NOT NULL 例5-13 建立一个S表,对SNO字段进行NOT NULL约束。程序清单如下:CREATE TABLE S(SNO CHAR(10)CONSTRAINT S_CONS NOT NULL,SN VARCHAR(20),AGE INT,SEX CHAR(2)DEFAULT 男,DEPT VARCHAR(20),8.1.3 修改表,当数据库中的表创建完成后,可以根据需要改变表中原先定义的许多选项,以更改表的结构。用户可以增加、删除和修改列,增加、删除和修改约束,更改表名以及改变表的所有者等。1、修改列属性 修改列属性包括以

27、下一些内容:(1)修改列的数据类型;(2)修改列的数据长度;(3)修改列的精度;(4)修改列的小数位数;(5)修改列的为空性。,8.1.3 修改表,2、添加和删除列 add column and delete column 在SQL Server 2005中,如果列允许空值或对列创建 DEFAULT 约束,则可以将列添加到现有表中。将新列添加到表时,SQL Server 2005数据库引擎在该列为表中的每个现有数据行插入一个值。因此,在向表中添加列时向列添加DEFAULT定义会很有用。如果新列没有 DEFAULT定义,则必须指定该列允许空值。数据库引擎将空值插入该列,如果新列不允许空值,则返回

28、错误。反之,可以删除现有表中的列,但具有下列特征的列不能被删除:(1)用于索引;(2)用于CHECK、FOREIGN KEY、UNIQUE 或PRIMARY KEY约束;(3)与DEFAULT 定义关联或绑定到某一默认对象;(4)绑定到规则;(5)已注册支持全文;(6)用作表的全文键。,8.1.3 修改表,3、增加、修改和删除约束(1)增加、修改和删除PRIMARY KEY 约束。(2)增加、修改和删除UNIQUE约束。(3)增加、修改和删除CHECK约束。(4)增加、修改和删除DEFAULT约束。(5)增加、修改和删除FOREIGN KEY约束。(6)增加和修改标识符列。只能为每个表创建一个

29、标识符列和一个 GUID 列。,8.1.3 修改表,例 5-14创建一个雇员信息表,然后在表中增加一个salary字段,删除表中的age字段,并且修改memo字段的数据类型。SQL语句的程序清单如下:create table employees(id char(8)primary key,name char(20)not null,department char(20)null,memo char(30)null,age int null,)alter table employees add salary int null,drop column age,alter column memo v

30、archar(200)null,8.1.3 修改表,例 5-15 在S表中增加一个班号列和住址列。SQL语句的程序清单如下:ALTER TABLE S ADDCLASS_NO CHAR(6),ADDRESS CHAR(40)注意:使用此方式增加的新列自动填充NULL值,所以不能为增加的新列指定NOT NULL约束。例5-16 在SC表中增加完整性约束定义,使SCORE在0-100之间。SQL语句的程序清单如下:ALTER TABLE SC ADD CONSTRAINT SCORE_CHK CHECK(SCORE BETWEEN 0 AND 100),8.1.4 查看表,当在数据库中创建了表后,

31、有时需要查看表的有关信息。比如表的属性、定义、数据、字段属性和索引等。尤其重要的是查看表内存放的数据,另外有时需要查看表与其他数据库对象之间的依赖关系。1.查看表的定义,如图5-15,5-16所示。,图5-15 选择表格属性对话框,图5-16 表格属性对话框,8.1.4 查看表,2.查看表中存储的数据,如图5-17,5-18所示。,图5-17 选择打开表对话框,图5-18 显示表格数据对话框,8.1.4 查看表,3.查看表与其他数据库对象的依赖关系,independent relation,如图5-19所示。,图5-19 显示相关性对话框,8.1.4 查看表,4.利用系统存储过程查看表的信息系

32、统存储过程Sp_help可以提供指定数据库对象的信息,也可以提供系统或者用户定义的数据类型的信息,其语法形式如下:sp_help objname=name例5-17(1)显示当前数据库中所有对象的信息;(2)显示表Person.Contact 的信息。在SQL Server管理平台的查询窗口中,它们对应的语句和运行结果如图5-20和图5-21所示,图5-20所有数据库对象显示窗口,图5-21当前数据库对象显示窗口,8.1.5 删除表,1.利用管理平台删除表在SQL Server管理平台中,展开指定的数据库和表,右击要删除的表,从弹出的快捷菜单中选择“删除”选项,则出现除去对象对话框,如图5-2

33、5所示。,图5-25 删除表对话框,8.1.5 删除表,2.利用DROP TABLE语句删除表DROP TABLE语句可以删除一个表和表中的数据及其与表有关的所有索引、触发器、约束、许可对象。DROP TABLE语句的语法形式如下:DROP TABLE table_name要删除的表如果不在当前数据库中,则应在table_name中指明其所属的数据库和用户名。在删除一个表之前要先删除与此表相关联的表中的外部关键字约束。当删除表后,绑定的规则或者默认值会自动松绑。例5-18删除company数据库中的表employee。程序如下:drop table,8.2 索引操作,索引是数据库随机检索的常用

34、手段,它实际上就是记录的关键字与其相应地址的对应表。通过索引可大大提高查询速度。此外,在SQL SERVER中,行的唯一性也是通过建立唯一索引来维护的。使用索引可以大大提高系统的性能,其具体表现在:(1)通过创建惟一索引,可以保证数据记录的惟一性。(2)可以大大加快数据检索速度。(3)可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。(4)在使用ORDER BY和GROUP BY子句进行检索数据时,可以显著减少查询中分组和排序的时间。(5)使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能,8.2.1 创建索引,SQL Server 2005提供了如下几种创建索引

35、的方法:1.利用SQL Server管理平台创建索引;2.利用Transact-SQL语句中的CREATE INDEX命令创建索引。另外,可以在创建表的PRIMARY KEY或UNIQUE约束时自动创建索引。,8.2.1 创建索引,1.利用SQL Server管理平台创建索引。(1)展开指定的服务器和数据库,选择要创建索引的表,展开该表,选择“索引”选项(如图5-26所示),右键单击索引,从弹出的快捷菜单中选择“新建索引”,就会出现新建索引对话框,如图5-27所示。,图5-26 选择新建索引选项对话框,图5-27 创建索引对话框,8.2.1 创建索引,1.利用SQL Server管理平台创建索

36、引。(2)点击“添加”按钮,可选择用于创建索引的字段,如图5-28所示。(3)打开创建索引对话框的选项页框,在此还可以设定索引的属性,如图5-29所示。,图5-28 选择用于创建索引的字段,图5-29 索引对话框的选项页框,8.2.1 创建索引,2.利用Transact-SQL语句中的CREATE INDEX命令创建索引 CREATE INDEX命令既可以创建一个可改变表的物理顺序的聚集索引,也可以创建提高查询性能的非聚集索引,其语法形式如下:CREATE UNIQUE CLUSTERED|NONCLUSTERED INDEX index_name ON table|view(column A

37、SC|DESC,.n)with PAD_INDEX,FILLFACTOR=fillfactor,IGNORE_DUP_KEY,DROP_EXISTING,STATISTICS_NORECOMPUTE,SORT_IN_TEMPDB ON filegroup,8.2.1 创建索引,2.利用Transact-SQL语句中的CREATE INDEX命令创建索引 例5-19为表employees创建了一个惟一聚集索引。程序清单如下:CREATE UNIQUE CLUSTERED INDEX number_ind ON employees(number)with pad_index,fillfactor=

38、20,ignore_dup_key,drop_existing,statistics_norecompute,8.2.2 查看、修改和删除索引,利用SQL Server管理平台查看、修改和删除索引。(1)在SQL Server管理平台中,展开指定的服务器和数据库项,并展开要查看的表,从选项中选择“索引”选项,则会出现表中已存在的索引列表。双击某一索引名称,则出现索引属性对话框,如图5-30所示。索引碎片管理页框如图5-31所示。,图5-30 索引属性对话框,图5-31 索引碎片数据管理对话框,8.2.2 查看、修改和删除索引,1.利用SQL Server管理平台查看、修改和删除索引。(2)扩展

39、属性对话框,如图5-32所示,主要包含数据库名称,校对模式等。通过右键单击索引名称,选择“创建索引脚本到新的查询分析器窗口”,则可以查看创建索引的SQL脚本语句,如图5-33所示。,图5-32 索引扩展属性对话框,图5-33 索引的SQL脚本对话框,8.2.2 查看、修改和删除索引,2.用系统存储过程查看和更改索引名称 系统存储过程sp_helpindex可以返回表的所有索引信息,其语法形式如下;sp_helpindex objname=name 其中,objname=name参数用于指定当前数据库中的表的名称。另外,系统存储过程sp_rename可以用来更改索引的名称,其语法形式如下:sp_

40、renameobjname=object_name,newname=new_name,objtype=object_type,8.2.2 查看、修改和删除索引,2.用系统存储过程查看和更改索引名称例5-21 使用系统存储过程sp_helpindex 来查看表authors的索引信息。运行结果如下图所示。,例5-22 将employees表中的索引名称employees_name_index名称更改为employees _name_ind。程序清单如下:exec sp_rename employees.employees_name_index,employees_name_ ind,index,

41、8.2.2 查看、修改和删除索引,3.使用Transact-SQL语句中的DROP INDEX命令删除索引 当不再需要某个索引时,可以将其删除,DROP INDEX命令可以删除一个或者多个当前数据库中的索引,其语法形式如下:DROP INDEX table.index|view.index,.n 其中,table|view用于指定索引列所在的表或索引视图;index用于指定要删除的索引名称。例5-23删除表employees中的索引employees_name_index。程序清单如下:drop index employees.employees_name_index,8.2数据库对象脚本,数

42、据库是由许多数据库对象构成的,如常用的表、视图、存储过程等。通常在设计这些数据库对象时,一般采用“SQL Server Management Studio”实现。相反,可以通过“SQL Server Management Studio”功能,将这些对象生成便于处理的文本格式的SQL脚本(SQL Script)。通过编写或修改这些脚本文件,可以在“SQL编辑器”上运行这些脚本,从而可以在服务器上重新创建这些对象,并可以在其他服务器上运行这些脚本,从而实现数据库对象的移植,这对于数据库开发和维护阶段是非常方便实用的。,生成SQL Script的步骤如下,(1)打开“SQL Server Manag

43、ement Studio”中的“对象资源管理器”,选择服务器,并展开数据库对象夹,然后选择要生成SQL Script的数据库,如AdventureWorks,单击右键,在弹出的菜单中,选择【任务(T)】|【生成脚本(E)】,如图3-14所示。,(2)在接下来的“脚本向导”窗口中,选择要生成脚本的数据库,如图3-15所示,如果没有选择“为所选数据库中的所有对象编写脚本”选项,则会在后面的窗口中,对每个需要生成脚本的子对象选择是否生成脚本,这里选中“为所选数据库中的所有对象编写脚本”,然后选择【下一步(N)】。,(3)在弹出的“选择脚本选项”窗口中,可以更改需要生成脚本的对象项目,如图3-16所示

44、,然后选择【下一步(N)】。,(4)在“输出选项”窗口中,输入要保存数据库脚本的路径和文件名,并选择保存文件的代码格式,然后选择【下一步(N)】或【完成(F)】。(5)在“脚本向导摘要”窗口中,可以展开浏览各个对象和子对象,然后选择【完成(F)】,弹出“生成脚本速度”窗口,动态显示各子对象生成脚本的状态。,用脚本重建数据库对象,生成的脚本文件可以通过“SQL编辑器”打开,并可以修改和运行该脚本内容。,8.3 数据类型 data type,在SQL Server2005 中,每个列、局部变量、表达式和参数都有其各自的数据类型。指定对象的数据类型相当于定义了该对象的四个特性:(1)对象所含的数据类

45、型,如字符、整数或二进制数。(2)所存储值的长度或它的大小。(3)数字精度(仅用于数字数据类型)。(4)小数位数(仅用于数字数据类型)。SQL Server提供系统数据类型集,定义了可与SQL Server一起使用的所有数据类型;另外用户还可以使用Transact-SQL或.NET框架定义自己的数据类型,它是系统提供的数据类型的别名。每个表可以定义至多250个字段,除文本和图像数据类型外,每个记录的最大长度限制为1962个字节。,8.3.1 系统数据类型,1、精确数字类型;2、近似数字类型;3、日期和时间类型;4、字符数据类型;5、Unicode 字符数据类型;6、二进制字符数据类型;7、其它

46、数据类型。,8.3.1 系统数据类型,1、精确数字类型(1)精确数字类型包括:整数类型;Bit(位类型);Decimal和Numeric(数值类型);Money和SmallMoney(货币类型)。,8.3.1 系统数据类型,1、精确数字类型(2)整数类型:整数类型是最常用的数据类型之一,它主要用来存储数值,可以直接进行数据运算,而不必使用函数转换。整数类型包括以下四类:(1)Bigint:Bigint数据类型可以存储从(-9223372036854775808)到(9223372036854775807)范围之间的所有整型数据。每个Bigint数据类型值存储在8个字节中。(2)Int(Inte

47、ger):Int(或integer)数据类型可以存储从(-2147483648)到(2147483647)范围之间的所有正负整数。每个Int数据类型值存储在4个字节中。(3)Smallint:可以存储从(-32768)到32767范围之间的所有正负整数。每个smallint类型的数据占用2个字节的存储空间。(4)Tinyint:可以存储从0255范围之间的所有正整数。每个tinyint类型的数据占用1个字节的存储空间。,8.3.1 系统数据类型,1、精确数字类型(3)位数据类型Bit称为位数据类型,其数据有两种取值:0和1,长度为1字节。在输入0以外的其他值时,系统均把它们当1看待。这种数据类

48、型常作为逻辑变量使用,用来表示真、假或是、否等二值选择。(4)Decimal数据类型和Numeric数据类型Decimal数据类型和Numeric数据类型完全相同,它们可以提供小数所需要的实际存储空间,但也有一定的限制,可以用217个字节来存储-1038+1到1038-1之间的固定精度和小数位的数字。也可以将其写为Decimal(p,s)的形式,p和s确定了精确的总位数和小数位。其中p表示可供存储的值的总位数,默认设置为18;s表示小数点后的位数,默认设置为0。例如:decimal(10,5),表示共有10位数,其中整数5位,小数5位。,8.3.1 系统数据类型,1、精确数字类型 pricis

49、e number type(5)货币数据类型货币数据类型包括Money和SmallMoney两种:(1)Money:用于存储货币值,存储在money数据类型中的数值以一个正数部分和一个小数部分存储在两个4字节的整型值中,存储范围为()到(),精确到货币单位的千分之十。(2)Smallmoney:与money数据类型类似,但范围比money数据类型小,其存储范围为-2147483468到2147483467之间,精确到货币单位的千分之十。当为money或smallmoney的表输入数据时,必须在有效位置前面加一个货币单位符号。,8.3.1 系统数据类型,2、近似数字类型 approximate

50、number type近似数字类型包括Real和Float两大类。(1)Real:可以存储正的或者负的十进制数值,最大可以有7位精确位数。它的存储范围从-3.40E-383.40E+38。每个Real 类型的数据占用4个字节的存储空间。(2)Float:可以精确到第15位小数,其范围从-1.79E-3081.79E+308。如果不指定Float 数据类型的长度,它占用8个字节的存储空间。Float数据类型也可以写为Float(n)的形式,n指定Float数据的精度,n为115之间的整数值。当n取17时,实际上是定义了一个Real 类型的数据,系统用4个字节存储它;当n取815时,系统认为其是F

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号