《表格模板-第三章 数据库中表的管理 精品.ppt》由会员分享,可在线阅读,更多相关《表格模板-第三章 数据库中表的管理 精品.ppt(81页珍藏版)》请在第一文库网上搜索。
1、第一章第一章数据库中表的管理数据库中表的管理 q数据类型数据类型 q创建表创建表 q修改表修改表 q删除表删除表 数据类型数据类型 在在 SQL Server 2005 中,每个列、局部变量、中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。表达式和参数都具有一个相关的数据类型。数据类型是一种属性,用于指定对象可保存数据类型是一种属性,用于指定对象可保存的数据的类型:整数数据、字符数据、货币的数据的类型:整数数据、字符数据、货币数据、日期和时间数据、二进制字符串等。数据、日期和时间数据、二进制字符串等。 数据类型数据类型 SQL Server 2005 中的数据类型归纳为下列中的数据
2、类型归纳为下列类别:类别: 精确数字、近似数字、日期和时间、字符串、精确数字、近似数字、日期和时间、字符串、Unicode 字符串、二进制字符串、其他数据字符串、二进制字符串、其他数据类型。类型。整数类型数据类型数据类型范围范围存储存储bigint-263到 263-18 字节int-231到 231-14 字节smallint-215到 215-12 字节tinyint0 到 2551 字节BIT类型 可以取值为可以取值为 1、0 或或 NULL 的整数数据类型。的整数数据类型。 Microsoft SQL Server 2005 Database Engine 优化优化了了 bit 列的存
3、储。如果表中的列为列的存储。如果表中的列为 8 bit 或更少,或更少,则这些列作为则这些列作为 1 个字节存储。如果列为个字节存储。如果列为 9 到到 16 bit,则这些列作为则这些列作为 2 个字节存储,以此类推。个字节存储,以此类推。 字符串值字符串值 TRUE 和和 FALSE 可以转换为以下可以转换为以下 bit 值:值:TRUE 转换为转换为 1,FALSE 转换为转换为 0。Decimal和numeric类型 带固定精度和小数位数的数值数据类型。带固定精度和小数位数的数值数据类型。 decimal (p , s ) 和和 numeric (p , s ) p(精度)(精度) 最
4、多可以存储的十进制数字的总位数,包括小数点左边和最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。该精度必须是从右边的位数。该精度必须是从 1 到最大精度到最大精度 38 之间的值。之间的值。默认精度为默认精度为 18。 s(小数位数)(小数位数) 小数点右边可以存储的十进制数字的最大位数。小数位数小数点右边可以存储的十进制数字的最大位数。小数位数必须是从必须是从 0 到到 p 之间的值。仅在指定精度后才可以指定小之间的值。仅在指定精度后才可以指定小数位数。默认的小数位数为数位数。默认的小数位数为 0;因此,;因此,0 = s = $1000 AND range $20000;自定
5、义数据类型自定义数据类型 系统存储过程系统存储过程sp_addtype为用户提供了用为用户提供了用T_SQL语句创建自定义数据类型的途径,其语语句创建自定义数据类型的途径,其语法形式如下:法形式如下: sp_addtype typename= 自定义类型名称自定义类型名称, phystype= 对应的系统数据类型名称对应的系统数据类型名称 , nulltype= 是否允许为空是否允许为空 , owner= 所有者所有者2. 创建表创建表 与创建数据库类似,创建表也可以通过与创建数据库类似,创建表也可以通过Management Studio来创建,或者使用来创建,或者使用SQL语句创建。语句创建
6、。使用Management Studio创建表利用利用create命令创建表命令创建表 使用使用create命令创建表非常灵活,它允许对表命令创建表非常灵活,它允许对表设置几种不同的选项,包括表名、存放位置和设置几种不同的选项,包括表名、存放位置和列的属性等。列的属性等。 其完整语法形式如下:其完整语法形式如下: CREATE TABLE 数据库名数据库名.所有者所有者.表名表名 (|列名列名 AS 计算机列表达式计算机列表达式| ,n) ON 文件组名文件组名|DEFAULT TEXTIMAGE_ON 文件组名文件组名|DEFAULT 列定义的写法列定义的写法 其中,列定义的写法如下:其中,
7、列定义的写法如下: 列名列名 列的数据类型列的数据类型 COLLATE 列的排序规则列的排序规则 DEFAULT 默认值默认值|IDENTITY(基数(基数,增量)增量) NOT FOR REPLICATION ROWGUIDCOL .n参数写法参数写法 数据库名:用于指定所创建表的数据库数据库名:用于指定所创建表的数据库名称。名称。 所有者:用于指定新建表的所有者的用所有者:用于指定新建表的所有者的用户名。户名。 表名:用于指定新建表的名称。表名:用于指定新建表的名称。 列名:用于指定新建表的列名。列名:用于指定新建表的列名。参数写法参数写法 计算机列表达式:用于指定计算列的列计算机列表达式
8、:用于指定计算列的列值表达式。值表达式。 ON 文件组名文件组名 | DEFAULT:用于指定:用于指定存储表的文件组名。存储表的文件组名。 TEXTIMAGE_ON:用于指定:用于指定 text、ntext 和和 image 列的数据存储的文件组。列的数据存储的文件组。 列的数据类型:用于指定列的数据类型。列的数据类型:用于指定列的数据类型。参数写法参数写法 默认值:用于指定列的默认值的常量表默认值:用于指定列的默认值的常量表达式,可以为一个常量或达式,可以为一个常量或NULL或系统或系统函数。函数。 IDENTITY:用于将列指定为标识列。:用于将列指定为标识列。 基数:用于指定标识列的初
9、始值。基数:用于指定标识列的初始值。 增量:用于指定标识列的增量值。增量:用于指定标识列的增量值。参数写法参数写法 NOT FOR REPLICATION:用于指定列的:用于指定列的IDENTITY属性,在把从其他表中复制的数据属性,在把从其他表中复制的数据插入到表中时不发生作用,即不生成列值,使插入到表中时不发生作用,即不生成列值,使得复制的数据行保持原来的列值。得复制的数据行保持原来的列值。 ROWGUIDCOL:用于将列指定为全局惟一标:用于将列指定为全局惟一标识行号列。识行号列。 rowguidcol属性不会使列值具有惟一性,也不会自动生成一个新的数据值给插入行。需要在INSERT语句
10、中使用NEWID()函数或指定列的默认值为NEWID()函数。 参数写法参数写法 COLLATE:用于指定表的校验方式。:用于指定表的校验方式。 列级约束:指定列的约束规则。列级约束:指定列的约束规则。 表级约束:指定表的约束规则,通常用表级约束:指定表的约束规则,通常用于涉及多个列的约束。于涉及多个列的约束。标识列标识列 标识列是可以自动增加的列。在表中添加新行标识列是可以自动增加的列。在表中添加新行时,数据库引擎将为标识列提供一个唯一的增时,数据库引擎将为标识列提供一个唯一的增量值。标识列通常与量值。标识列通常与 PRIMARY KEY 主键约主键约束一起用作表的唯一行标识符。可以将束一起
11、用作表的唯一行标识符。可以将 IDENTITY 属性分配给属性分配给 tinyint、smallint、int、bigint、decimal(p,0) 或或 numeric(p,0) 列。列。 每个表只能创建一个标识列。不能对标识列使每个表只能创建一个标识列。不能对标识列使用绑定默认值和用绑定默认值和 DEFAULT 约束。约束。 计算列计算列 计算列是指没有物理地存储在表中的虚计算列是指没有物理地存储在表中的虚拟列。该列由同一表中的其他列通过表拟列。该列由同一表中的其他列通过表达式计算得到。例如,假设表中有两列达式计算得到。例如,假设表中有两列“姓姓”和和“名名”用于保存人员的姓和名,用于保
12、存人员的姓和名,则计算列可以定义为则计算列可以定义为 姓名姓名 AS 姓姓+名名约束约束 约束是约束是SQL Server提供的自动保持数据提供的自动保持数据库完整性的一种方法,它通过限制字段库完整性的一种方法,它通过限制字段中数据、记录中数据和表之间的数据来中数据、记录中数据和表之间的数据来保证数据的完整性。在保证数据的完整性。在SQL SERVER中,中,对于基本表的约束分为列约束和表约束。对于基本表的约束分为列约束和表约束。6种约束种约束 在在SQL Server 2005中有中有6种约束:种约束: 主键约束(主键约束(primary key constraint) 惟一性约束(惟一性约
13、束(unique constraint) 检查约束(检查约束(check constraint) 默认约束(默认约束(default constraint) 外部键约束(外部键约束(foreign key constraint) 空值(空值(NULL)约束)约束主键(主键(PRIMARY KEY)约束)约束 PRIMARY KEY主键约束用于定义基本主键约束用于定义基本表的主键,它是惟一确定表中每一条记表的主键,它是惟一确定表中每一条记录的标识符,其值不能为录的标识符,其值不能为NULL,也不,也不能重复,以此来保证实体的完整性。能重复,以此来保证实体的完整性。 主键(主键(PRIMARY K
14、EY)约束)约束 PRIMARY KEY既可用于列约束,也可既可用于列约束,也可用于表约束。用于表约束。 设置主键的语法形式如下:设置主键的语法形式如下: CONSTRAINT 约束名约束名PRIMARY KEY CLUSTERED|NONCLUSTERED(列(列名)名)主键(主键(PRIMARY KEY)约束)约束 如果是在列级约束中指定主键约束,则直接在如果是在列级约束中指定主键约束,则直接在列的定义后写主键约束的代码,不需要再指定列的定义后写主键约束的代码,不需要再指定列名了。如果是在表级约束中指定主键约束,列名了。如果是在表级约束中指定主键约束,则需要指明列名。如果要将某些列的组合定
15、义则需要指明列名。如果要将某些列的组合定义为主键,只能在表级约束中写,其语法格式如为主键,只能在表级约束中写,其语法格式如下:下: CONSTRAINT 约束名约束名PRIMARY KEY CLUSTERED|NONCLUSTERED(列名(列名1,列名列名2,)主键(主键(PRIMARY KEY)约束)约束主键(主键(PRIMARY KEY)约束)约束 以下代码建立一个以下代码建立一个SC学习选课表,定义学习选课表,定义SNO学生学号,学生学号,CNO课程编号共同组成课程编号共同组成SC的主键:的主键: CREATE TABLE SC ( SNO CHAR(5) NOT NULL, CNO
16、CHAR(5) NOT NULL, SCORE NUMERIC(3), CONSTRAINT SC_PRIM PRIMARY KEY(SNO,CNO) )惟一性约束惟一性约束 惟一性约束用于指定一个或者多个列的惟一性约束用于指定一个或者多个列的组合值具有惟一性,以防止在列中输入组合值具有惟一性,以防止在列中输入重复的值。定义了重复的值。定义了UNIQUE约束的那些约束的那些列称为唯一键,系统自动为唯一键建立列称为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。唯一索引,从而保证了唯一键的唯一性。 惟一性约束惟一性约束 当使用惟一性约束时,需要考虑以下几个因素:当使用惟一性约束时,需要考虑以下几个因素: 使用惟一性约束的字段允许为空值;使用惟一性约束的字段允许为空值; 一个表中可以允许有多个惟一性约束;一个表中可以允许有多个惟一性约束; 可以把惟一性约束定义在多个字段上;可以把惟一性约束定义在多个字段上; 惟一性约束用于强制在指定字段上创建一个惟惟一性约束用于强制在指定字段上创建一个惟一性索引;一性索引; 默认情况下,创建的索引类型为非聚集索引。默认情况下,创建的索引类型