1、1,第6章 数据表的创建与管理,2,本章内容,6.1 数据表的建立6.2 数据表的修改,3,6.1 数据表的建立,数据类型 SQL Server支持4种基本数据类型:字符和二进制数据类型、日期时间数据类型、逻辑数据类型、数字数据类型,用于各类数据值的存储、检索和解释。 1.系统数据类型(1)精确数值类型精确数值数据类型用于存储有小数点且小数点后位数确定的实数 。格式:decimal(p, s)numeric(p, s)(2)近似数值类型用于表示浮点数值数据的近似数值数据类型。,4,6.1 数据表的建立,(3)日期和时间类型日期时间数据类型用于存储日期和时间数据。SQL Server支持两种日期
2、时间数据类型:datetime和smalldatetime。 (4)字符串类型字符数据类型用于存储汉字、英文字母、数字符号和其他各种符号。char数据类型 varchar数据类型 text数据类型,5,6.1 数据表的建立,(5)Unicode字符串类型SQL Server允许使用多国语言,采用Unicode标准字符集。为此SQL Server提供多字节的字符数据类型:nchar(n)、nvarchar(n)和ntext。(6)二进制字符串类型SQL Server二进制数据类型用于存储二进制数或字符串。 SQL Server的3种有效二进制数据类型: binary数据类型 varbinary(
3、n)数据类型 image数据类型,6,6.1 数据表的建立,(7)其他数据类型1)cursor。游标是变量或存储过程参数OUTPUT的一种数据类型,这些参数包含对游标的引用。2)sql_variant:可变数据类型。该类型的变量可用来存放大部分SQL Server数据类型的值,最大长度为8016字节,不支持text、ntext、timestamp和sql_variant类型。3)table:表类型。这是一种特殊的数据类型,存储供以后处理的结果集。4)Timestamp:时间戳数据类型,用于自动记录插入或删除操作的时间。注意:服务器不允许用户指定时间戳值。5)uniqueidentifier:G
4、UID类型(Global Unique IDentifier, 全局惟一标识符)。 2. 用户定义数据类型,7,6.1 数据表的建立,使用图形工具创建数据表使用Transact-SQL语句创建表语法格式:CREATE TABLE database_name . schema_name . | schema_name . table_name ( ,.n ),8,6.1 数据表的建立,【例6.1续】利用Transact-SQL创建教学数据库中的三张表。CREATE TABLE student( SNO CHAR(4) PRIMARY KEY,SNAME NCHAR(10) NOT NULL,SE
5、X CHAR(1),AGE SMALLINT,CHECK (SEX=F OR SEX=M),CHECK (AGE BETWEEN 18 AND 25)CREATE TABLE course( CNO CHAR(4),CNAME CHAR(10) NOT NULL,CREDIT SMALLINT,PRIMARY KEY (CNO),CHECK (CREDIT 1 AND 10),9,6.1 数据表的建立,CREATE TABLE s_c( SNO CHAR(4),CNO CHAR(4),GRADE SMALLINT,PRIMARY KEY (SNO,CNO),FOREIGN KEY SNO RE
6、FERENCES student(SNO),FOREIGN KEY CNO REFERENCES course(CNO),CHECK (GRADE 0 AND 100),10,6.2 数据表的修改,查看数据表【例6.2】查看系统当前所有对象的信息。单击工具栏上【新建查询】按钮,输入以下代码:USE masterGOEXEC sp_helpGO【例6.3】查看教学数据库中学生表的信息。USE teachingGOEXEC sp_help studentGO,11,6.2 数据表的修改,使用图形工具修改数据表使用Transact-SQL语句修改表语法格式:ALTER TABLE database_
7、name . schema_name . | schema_name . table_name ALTER COLUMN column_name type_schema_name. type_name ( precision , scale | max ) NULL | NOT NULL | WITH CHECK | NOCHECK | ADD | ,.n | DROP CONSTRAINT constraint_name | COLUMN column_name ,.n ; ,12,6.2 数据表的修改,【例6.4】为教学数据库中的表student添加一个允许空值的列PLACE,而且没有通过
8、DEFAULT定义提供的值。在该新列中,每一行都将有NULL值。USE teachingGOALTER TABLE student ADD PLACE VARCHAR(20) NULLGOEXEC sp_help studentGO,13,6.2 数据表的修改,【例6.5】修改表student以删除列PLACE。USE teachingGOALTER TABLE student DROP COLUMN PLACEGOEXEC sp_help student GO,14,6.2 数据表的修改,【例6.6】将表student中列PLACE的数据类型由VARCHAR(20)更改为VARCHAR(10
9、)。USE teachingGOALTER TABLE student ALTER COLUMN PLACE VARCHAR(10)GOEXEC sp_help studentGO,15,6.2 数据表的修改,【例6.7】为表student添加一个包含UNIQUE约束的新列SCARDID。USE teachingGOALTER TABLE student ADD SCARDID CHAR(18) NULLCONSTRAINT my_constraint UNIQUEGOEXEC sp_help studentGO,16,6.2 数据表的修改,【例6.8】从表student中删除UNIQUE约束
10、。USE teachingGO ALTER TABLE student DROP CONSTRAINT my_constraint GO EXEC sp_help studentGO,17,6.2 数据表的修改,使用图形工具删除数据表使用Transact-SQL语句删除表语法格式如下:DROP TABLE database_name . schema_name . | schema_name . table_name ,.n ; 其中,table_name是要删除的表名。注意:(1) 定义有外键约束的表必须先删除外键约束,才能删除。(2) 系统表不能使用DROP TABLE语句删除。,18,6
11、.2 数据表的修改,【例6.9】从当前数据库中删除test1表及其数据和索引。DROP TABLE test1【例6.10】删除teaching数据库中的test2表。DROP TABLE teaching.dbo.test2,19,本章小结,(1)表的相关概念:表是数据库中数据的实际存储处所,每个表代表一个实体。表由行和列组成,每行标识实体的一个个体,每列代表实体的一个属性。(2)数据类型:数据类型描述并约束了列中所能包含的数据的种类、所存储值的长度或大小、数字精度和小数位数(对数值数据类型)。(3)空值:未对列指定值时,该列将出现空值。空值不同于空字符串或数值零,通常表示未知。空值会对查询命令或统计函数产生影响,应尽量少使用空值。(4)约束:约束是数据库自动保持数据完整性的机制,它是通过限制列中数据、行中数据和表之间数据来保持数据完整性。SQL Server 2005支持Not Null、Default、Check、Primary Key、Foreign Key、Unique 6种约束。(5)可以使用图形工具和Transact-SQL语句创建表并对表进行维护,包括修改和删除等操作。,