数据库ppt课件.ppt
资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值数据库表数据库表第十章第十章资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值数据库表数据库表10.1 创建数据库表创建数据库表10.2 修改数据库表修改数据库表10.3 使用约束使用约束 10.4 建立索引建立索引10.5 删除数据库表删除数据库表资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.1 创建数据库表创建数据库表 数据库表的形式数据库表的形式 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值创建数据库表的指令格式创建数据库表的指令格式 CREATE TABLE 表名表名(列名(列名1 数据类型数据类型 identity|NOT NULL|NULL,列名列名2 数据类型数据类型 identity|NOT NULL|NULL,)例:例:Create table demotable(user_id numeric(10,0)identity,Name varchar(30)not NULL,Comments varchar(100)null)资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.1.1 表名表名 表名是惟一的表名是惟一的 可以使用中文,也可以使用西文符号可以使用中文,也可以使用西文符号最多最多64个字符个字符 建立建立临时表临时表 临时表的表名必须以临时表的表名必须以#打头打头 仍然使用仍然使用CREATE TABLE命令命令例例:Create table#demotable (user_id numeric(10,0)identity,Name varchar(30)not NULL)资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.1.2 列名列名 表表中中的的每每一一列列也也称称为为字字段段,所所以以列列名名也也叫字段名叫字段名字字段段名名的的命命名名方方式式基基本本同同数数据据表表名名的的命命名名字段名在字段名在数据表中要求是惟一数据表中要求是惟一的,但在的,但在整个数据库中可以重名整个数据库中可以重名 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值NULL:可以无值,默认值:可以无值,默认值NOT NULL:必须输入值:必须输入值identity:计数器:计数器每个表只能有一个每个表只能有一个identity列列不允许为空不允许为空使用整型或精确数型,受数据类型取值限制使用整型或精确数型,受数据类型取值限制用户不能修改用户不能修改identity的值的值资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例10-1 确定期刊采编系统数据确定期刊采编系统数据库中各数据表的表名库中各数据表的表名 关系模式名关系模式名数据库表名数据库表名部门部门mag_dept人员人员mag_emp期刊期刊mag_info稿件稿件mag_doc资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.1.3 数据类型数据类型 T-SQL中支持的、常用的数据类型中支持的、常用的数据类型 字符型字符型 日期时间类型日期时间类型 数值类型数值类型 二进制型二进制型 位型位型 文本型文本型 图像型图像型 时间戳型时间戳型 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值字符型字符型 字符型变量应定义长度字符型变量应定义长度允许定义的最大长度是允许定义的最大长度是255 有两种有两种固定长度的固定长度的char()类型类型可变长度的可变长度的varchar()类型类型 输入字符型数据时必须用单引号将数据输入字符型数据时必须用单引号将数据括起来括起来 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值日期时间类型日期时间类型 datetime和和smalldatetime是用来存储日期是用来存储日期和时间数据和时间数据 比较内容比较内容 Datetime Smalldatetime 最小值最小值 Jan 1,1753 Jan 1,1900 最大值最大值 Dec 31,9999 Jun 6,2079 占用存储空间占用存储空间 8byte 4byte 精度精度 3.33毫秒毫秒 1分钟分钟 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值整数类型整数类型 整数类型的比较整数类型的比较 比较内容比较内容 Int Smallint Tinyint 最小值最小值-231-215 0 最大值最大值 231-1 215-1 255 占用存储空间占用存储空间 4byte 2byte 1byte 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值浮点数类型浮点数类型 比较内容比较内容FloatReal最小值最小值-1.79E+308-3.40E+38最大值最大值1.79E+3083.40E+38占用存储空间占用存储空间8Byte4Byte精度精度最多最多15位位最多最多7位位资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值精确数类型精确数类型 精确数类型有两种形式精确数类型有两种形式DecimalNumeric 与浮点类型数据的区别与浮点类型数据的区别 可以自定义精度的位数可以自定义精度的位数例例 num_col(5,2)资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值货币型货币型 货币类型的比较货币类型的比较 比较内容比较内容MoneySmallmoney最小值最小值-922,337,203,685,477.5808-214,748.3648最大值最大值922,337,203,685,477.5807214,748.3647占用存储空间占用存储空间8Byte4Byte精度精度小数点后小数点后4位位小数点后小数点后4位位资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值位数据类型位数据类型 位数据类型位数据类型bit是一种逻辑数据类型是一种逻辑数据类型 只有只有1和和0两种数值两种数值一般常用作一般常用作true/false使用使用 定义定义bit列时,不允许为列时,不允许为NULL,也不能,也不能建立索引建立索引 多个多个bit列可占用一个字节列可占用一个字节资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值文本型和图像型文本型和图像型 文本类型文本类型text 图像类型图像类型image 每行可以存储每行可以存储2GB的二进制大型对象的二进制大型对象 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值时间戳型时间戳型 时间戳型表示时间戳型表示Timestamp由系统自动赋值的一个计数器数据由系统自动赋值的一个计数器数据 记录了数据行的操作顺序记录了数据行的操作顺序 时间戳列的数据保持惟一,它可以惟一时间戳列的数据保持惟一,它可以惟一标识表中的列标识表中的列 时间戳列的值实际来自于事务日志时间戳列的值实际来自于事务日志 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-2 确定期刊采编系统数据库中各数据表确定期刊采编系统数据库中各数据表中字段的字段名和数据类型中字段的字段名和数据类型 数据表数据表Mag_dept资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值数据表数据表mag_emp资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值数据表数据表Mag_info资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值数据表数据表mag_doc资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-3 建立期刊采编系统建立期刊采编系统数据库中各数据表数据库中各数据表 创建创建mag_dept表表 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值创建创建mag_emp表表 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值创建创建mag_info表表 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值创建创建mag_doc表表 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.2 修改数据库表修改数据库表 添加或删除列添加或删除列修改列的属性修改列的属性 更改列名和表名更改列名和表名 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.2.1 添加或删除列添加或删除列 增加列的语句格式增加列的语句格式 Alter table 表名表名 add 列名列名 数据类型数据类型 identity|NOT NULL|NULL,删除列的语句格式删除列的语句格式 Alter table 表名表名 drop column 列名列名 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-4 向数据表向数据表mag_emp中添加一新中添加一新属性属性ID(身份证号码),数据类型为(身份证号码),数据类型为字符型,固定长度字符型,固定长度18 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-5 删除数据表删除数据表mag_emp中中属性属性ID 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.2.2 修改列的属性修改列的属性 命令格式命令格式 alter table 表名表名 alter column列名列名 数据类型数据类型 identity|NOT NULL|NULL 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-6 将数据表将数据表mag_info中中PubDate的数据类型更改为的数据类型更改为smalldatetime 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.2.3 更改列名和表名更改列名和表名 更改更改列名列名 sp_rename 表名表名.原原列名列名,新列名新列名 更改更改表名表名sp_rename 原表名原表名 新表名新表名 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-7 数据库数据库usedb1中建有数据表中建有数据表test,包,包含含number、stu_name和和class三个字段,请三个字段,请将将class更名为更名为class_no 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-8 将数据库将数据库usedb1中数据表中数据表test更名为更名为student 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.3 使用约束使用约束 约束的作用约束的作用实现数据的完整性实现数据的完整性实体完整性实体完整性参照完整性参照完整性用户自定义完整性用户自定义完整性约束的类型约束的类型 建立约束建立约束 删除约束删除约束 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值参照完整性参照完整性学号学号姓名姓名S256S257S258王丹王丹章华章华李力李力性别性别系号系号男男女女男男D23D25D30系号系号D23D25D30系名系名负责人负责人物理物理机械机械计算机计算机王娟王娟杨华杨华张天张天关系关系S关系关系DEPT资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.3.1 约束的类型约束的类型 名称名称作用作用实现的完整性实现的完整性Primary key定义主键定义主键,保证主键列无重复值保证主键列无重复值实体完整性实体完整性Unique保证该列无重复值保证该列无重复值实体完整性实体完整性Foreign key定义外键定义外键,保证数据表间数据的保证数据表间数据的一致性一致性参照完整性参照完整性Check定义表中某些列的数据范围定义表中某些列的数据范围自定义完整性自定义完整性Default为列的数据提供默认值为列的数据提供默认值自定义完整性自定义完整性资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.3.2 建立约束建立约束 定义约束时使用定义约束时使用Create table语句语句或使用或使用Alter table语句语句即可以在定义数据表的数据列时直接定即可以在定义数据表的数据列时直接定义约束,也可以对已定义的数据表添加义约束,也可以对已定义的数据表添加约束约束 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值使用使用Alter table语句添加约束的语句添加约束的基本格式基本格式 Alter table 表名表名 Add Constraint 约束名约束名 约束定义约束定义资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值使用使用Create table语句建立约束语句建立约束 Create table 表名表名(列列名名1 数数据据类类型型 identity|NOT NULL|NULL Constraint 约束名约束名 约束定义约束定义,列名列名2 数据类型数据类型 identity|NOT NULL|NULL Constraint 约束名约束名 约束定义约束定义,Constraint 约束名约束名 约束定义)约束定义)资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值PRIMARY KEY定义主键约束的基本格式为:定义主键约束的基本格式为:Constraint 约束名约束名 primary key(列名列名1,列名,列名2,)资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-9 向数据表向数据表map_dept中中添加主键约束添加主键约束 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-10 在数据库在数据库usedb2中建立数据表中建立数据表map_dept,同时定义主键约束,同时定义主键约束 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-11 在数据库在数据库usedb1中建立数据表中建立数据表grade,表,表中包括学号中包括学号sno(char)、课程号)、课程号cno(char)、)、成绩成绩gmark(numeric)属性)属性主键由学号和课程号构成主键由学号和课程号构成 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值UNIQUE定义数据表中非主键的列在各行记录中定义数据表中非主键的列在各行记录中不能出现相同的非空值不能出现相同的非空值 定义格式:定义格式:Constraint 约束名约束名 UNIQUE (列名列名1,列名,列名2,)资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-12 向数据库向数据库usedb2中数据表中数据表mag_dept属性属性DepManager增加增加UNIQUE约束约束 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值FOREIGN KEY 定义外键的命令基本格式定义外键的命令基本格式 Constraint 约束名约束名 foreign key(列名列名1,列名,列名2,)references 表名表名(列名列名1,列名列名2,)资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-13 向数据库向数据库MagDb中数据中数据表表mag_emp的属性的属性DepId添加添加外键约束外键约束 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-14 在数据库在数据库usedb2中建立数据表中建立数据表mag_emp,同时定义主键和外键,同时定义主键和外键 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值CHECK 定义约束定义约束check的命令基本格式的命令基本格式 Constraint 约束名约束名 check(逻辑表达式)(逻辑表达式)资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-15 将数据库将数据库MagDb中数据表中数据表mag_emp的属性的属性EmpAge取值范围限定在取值范围限定在1-100之间(含之间(含1和和100),并),并将此约束命名为将此约束命名为ck_age 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值DEFAULT 定义约束定义约束default的命令基本格式为的命令基本格式为 Constraint 约束名约束名 default 常量表达式常量表达式 for 字段名字段名资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-16 将数据库将数据库MagDb中数据表中数据表mag_emp的属性的属性EmpRole的默认值的默认值指定为指定为“编辑编辑”资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.3.3 删除约束删除约束 删除约束的语句格式删除约束的语句格式 Alter table 表名表名 Drop Constraint 约束名约束名 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-17 删除数据库删除数据库usedb2中数据表中数据表mag_dept属性属性DepManager的的UNIQUE约束约束 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.4 建立索引建立索引 索引的类型索引的类型 建立索引建立索引设计索引设计索引删除索引删除索引 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.4.1 索引的类型索引的类型 聚集索引聚集索引(clustered)是一种物理存储方式是一种物理存储方式 一个数据表只能建立一个聚集索引一个数据表只能建立一个聚集索引 非聚集索引非聚集索引(nonclustered)是一种逻辑存储方式是一种逻辑存储方式 索引的次序并不影响数据的物理存储顺序索引的次序并不影响数据的物理存储顺序 一个数据表最多可以建立一个数据表最多可以建立249个非聚集索引个非聚集索引 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.4.2 10.4.2 建立索引建立索引 建立索引的语法建立索引的语法CreateCreate unique unique clustered|nonclustered clustered|nonclustered indexindex 索引名索引名 on on 表名表名(列名列名1,1,列名列名2,)2,)资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-18 对数据表对数据表mag_emp属性属性EmpAge建立非惟一的非聚集索引建立非惟一的非聚集索引age_index 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.4.3 设计索引设计索引创建索引时一般应遵循以下原则创建索引时一般应遵循以下原则 经常要查找的列经常要查找的列经常要按顺序检索的列经常要按顺序检索的列经常用于多个数据表连接的列经常用于多个数据表连接的列经常用于进行统计计算(如求极值、求和等)的列;经常用于进行统计计算(如求极值、求和等)的列;在查询条件中频繁使用的列在查询条件中频繁使用的列如果一个列中只有几个不同的数据值,或者被索引如果一个列中只有几个不同的数据值,或者被索引的列多于的列多于20个字节时,通常不应该建立索引个字节时,通常不应该建立索引 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.4.4 删除索引删除索引 删除索引的语法删除索引的语法 Drop index 表名表名.索引名索引名 注意使用注意使用primary key约束和约束和unique约束约束建立的索引不能删除建立的索引不能删除 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-19 删除索引删除索引age_index 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值10.5 删除数据库表删除数据库表 删除数据表的语法删除数据表的语法 Drop table 表名表名 资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值例例10-20 删除删除usedb2中数据表中数据表mag_dept