数据库表学习教案.pptx
数据库表数据库表第一页,共65页。数据库表10.1 创建数据库表10.2 修改数据库表10.3 使用(shyng)约束 10.4 建立索引10.5 删除数据库表第1页/共65页第二页,共65页。10.1 创建(chungjin)数据库表 数据库表的形式数据库表的形式(xngsh)(xngsh)第2页/共65页第三页,共65页。创建(chungjin)数据库表的指令格式 CREATE TABLE 表名(列名(列名1 1 数据类型数据类型 identity|NOT NULL|NULL,identity|NOT NULL|NULL,列名列名2 2 数据类型数据类型 identity|NOT NULL|NULL,identity|NOT NULL|NULL,)例:Create table demotable(user_id numeric(10,0)identity,Name varchar(30)not NULL,Comments varchar(100)null)第3页/共65页第四页,共65页。10.1.1 表名 表名是惟一的 可以使用中文,也可以使用西文符号最多64个字符 建立(jinl)临时表 临时表的表名必须以#打头 仍然使用CREATE TABLE命令例:Create table#demotable (user_id numeric(10,0)identity,Name varchar(30)not NULL)第4页/共65页第五页,共65页。10.1.2 列名 表中的每一列也称为字段,所以列名也叫字段名字段名的命名方式基本同数据表名的命名字段名在数据表中要求是惟一的,但在整个数据库中可以(ky)重名 第5页/共65页第六页,共65页。NULL:可以无值,默认值NOT NULL:必须输入值identity:计数器每个表只能有一个identity列不允许为空使用整型或精确数型,受数据类型取值限制用户(yngh)不能修改identity的值第6页/共65页第七页,共65页。例10-1 确定(qudng)期刊采编系统数据库中各数据表的表名 关系模式名关系模式名数据库表名数据库表名部门部门mag_dept人员人员mag_emp期刊期刊mag_info稿件稿件mag_doc第7页/共65页第八页,共65页。10.1.3 数据类型 T-SQL中支持的、常用的数据类型 字符型 日期时间类型 数值(shz)类型 二进制型 位型 文本型 图像型 时间戳型 第8页/共65页第九页,共65页。字符(z f)型 字符(z f)型变量应定义长度允许定义的最大长度是255 有两种固定长度的char()类型可变长度的varchar()类型 输入字符(z f)型数据时必须用单引号将数据括起来 第9页/共65页第十页,共65页。日期(rq)时间类型 datetime和smalldatetime是用来存储(cn ch)日期和时间数据 比较内容比较内容 Datetime Smalldatetime 最小值最小值 Jan 1,1753 Jan 1,1900 最大值最大值 Dec 31,9999 Jun 6,2079 占用存储空间占用存储空间 8byte 4byte 精度精度 3.33毫秒毫秒 1分钟分钟 第10页/共65页第十一页,共65页。整数(zhngsh)类型 整数类型(lixng)的比较 比较内容比较内容 Int Smallint Tinyint 最小值最小值-231-215 0 最大值最大值 231-1 215-1 255 占用存储空间占用存储空间 4byte 2byte 1byte 第11页/共65页第十二页,共65页。浮点数类型(lixng)比较内容比较内容FloatReal最小值最小值-1.79E+308-3.40E+38最大值最大值1.79E+3083.40E+38占用存储空间占用存储空间8Byte4Byte精度精度最多最多15位位最多最多7位位第12页/共65页第十三页,共65页。精确(jngqu)数类型 精确数类型有两种形式(xngsh)DecimalNumeric 与浮点类型数据的区别 可以自定义精度的位数例 num_col(5,2)第13页/共65页第十四页,共65页。货币(hub)型 货币类型(lixng)的比较 比较内容比较内容MoneySmallmoney最小值最小值-922,337,203,685,477.5808-214,748.3648最大值最大值922,337,203,685,477.5807214,748.3647占用存储空间占用存储空间8Byte4Byte精度精度小数点后小数点后4位位小数点后小数点后4位位第14页/共65页第十五页,共65页。位数据类型 位数据类型bit是一种逻辑数据类型 只有1和0两种数值一般常用作true/false使用(shyng)定义bit列时,不允许为NULL,也不能建立索引 多个bit列可占用一个字节第15页/共65页第十六页,共65页。文本(wnbn)型和图像型 文本类型text 图像(t xin)类型image 每行可以存储2GB的二进制大型对象 第16页/共65页第十七页,共65页。时间(shjin)戳型 时间戳型表示Timestamp由系统自动赋值的一个计数器数据 记录了数据行的操作顺序 时间戳列的数据保持惟一,它可以惟一标识表中的列 时间戳列的值实际来自于事务(shw)日志 第17页/共65页第十八页,共65页。例例10-2 10-2 确定期刊确定期刊(qkn)(qkn)采编系统数据库中各采编系统数据库中各数据表中字段的字段名和数据类型数据表中字段的字段名和数据类型 数据表Mag_dept第18页/共65页第十九页,共65页。数据表mag_emp第19页/共65页第二十页,共65页。数据表Mag_info第20页/共65页第二十一页,共65页。数据表mag_doc第21页/共65页第二十二页,共65页。例10-3 建立(jinl)期刊采编系统数据库中各数据表 创建(chungjin)mag_dept表 第22页/共65页第二十三页,共65页。创建(chungjin)mag_emp表 第23页/共65页第二十四页,共65页。创建(chungjin)mag_info表 第24页/共65页第二十五页,共65页。创建(chungjin)mag_doc表 第25页/共65页第二十六页,共65页。10.2 修改(xigi)数据库表 添加或删除(shnch)列修改列的属性 更改列名和表名 第26页/共65页第二十七页,共65页。10.2.1 添加(tin ji)或删除列 增加列的语句(yj)格式 Alter table 表名 add 列名 数据类型 identity|NOT NULL|NULL,删除列的语句(yj)格式 Alter table 表名 drop column 列名 第27页/共65页第二十八页,共65页。例10-4 向数据表mag_emp中添加一新属性ID(身份证号码),数据类型为字符型,固定(gdng)长度18 第28页/共65页第二十九页,共65页。例10-5 删除(shnch)数据表mag_emp中属性ID 第29页/共65页第三十页,共65页。10.2.2 修改(xigi)列的属性 命令(mng lng)格式 alter table 表名 alter column列名 数据类型 identity|NOT NULL|NULL 第30页/共65页第三十一页,共65页。例10-6 将数据表mag_info中PubDate的数据类型更改为(i wi)smalldatetime 第31页/共65页第三十二页,共65页。10.2.3 更改(gnggi)列名和表名 更改(gnggi)列名 sp_rename 表名.原列名,新列名 更改(gnggi)表名sp_rename 原表名 新表名 第32页/共65页第三十三页,共65页。例例10-7 10-7 数据库数据库usedb1usedb1中建有数据表中建有数据表testtest,包,包含含(bohn)number(bohn)number、stu_namestu_name和和classclass三个字三个字段,请将段,请将classclass更名为更名为class_no class_no 第33页/共65页第三十四页,共65页。例10-8 将数据库usedb1中数据表test更名(n mn)为student 第34页/共65页第三十五页,共65页。10.3 使用(shyng)约束 约束的作用实现数据(shj)的完整性实体完整性参照完整性用户自定义完整性约束的类型 建立约束 删除约束 第35页/共65页第三十六页,共65页。参照(cnzho)完整性学号学号姓名姓名S256S257S258王丹王丹章华章华李力李力性别性别系号系号男男女女男男D23D25D30系号系号D23D25D30系名系名负责人负责人物理物理机械机械计算机计算机王娟王娟杨华杨华张天张天关系关系S关系关系DEPT第36页/共65页第三十七页,共65页。10.3.1 约束(yush)的类型 名称名称作用作用实现的完整性实现的完整性Primary key定义主键定义主键,保证主键列无重复值保证主键列无重复值实体完整性实体完整性Unique保证该列无重复值保证该列无重复值实体完整性实体完整性Foreign key定义外键定义外键,保证数据表间数据的保证数据表间数据的一致性一致性参照完整性参照完整性Check定义表中某些列的数据范围定义表中某些列的数据范围自定义完整性自定义完整性Default为列的数据提供默认值为列的数据提供默认值自定义完整性自定义完整性第37页/共65页第三十八页,共65页。10.3.2 建立(jinl)约束 定义(dngy)约束时使用Create table语句或使用Alter table语句即可以在定义(dngy)数据表的数据列时直接定义(dngy)约束,也可以对已定义(dngy)的数据表添加约束 第38页/共65页第三十九页,共65页。使用Alter table语句添加约束的基本(jbn)格式 Alter table 表名 Add Constraint 约 束(yush)名 约束(yush)定义第39页/共65页第四十页,共65页。使用(shyng)Create table语句建立约束 Create table Create table 表名表名 (列名(列名1 1 数据类型数据类型 identity|NOT NULL|NULL identity|NOT NULL|NULL Constraint Constraint 约束约束(yush)(yush)名名 约束约束(yush)(yush)定义定义,列名列名2 2 数据类型数据类型 identity|NOT NULL|NULL identity|NOT NULL|NULL Constraint Constraint 约束约束(yush)(yush)名名 约束约束(yush)(yush)定义定义,Constraint Constraint 约束约束(yush)(yush)名名 约束约束(yush)(yush)定义)定义)第40页/共65页第四十一页,共65页。PRIMARY KEY定义主键约束的基本(jbn)格式为:Constraint 约束名 primary key(列名1,列名2,)第41页/共65页第四十二页,共65页。例10-9 向数据表map_dept中添加(tin ji)主键约束 第42页/共65页第四十三页,共65页。例例10-10 10-10 在数据库在数据库usedb2usedb2中建立中建立(jinl)(jinl)数据表数据表map_deptmap_dept,同时定义主键约束,同时定义主键约束 第43页/共65页第四十四页,共65页。例例10-11 10-11 在数据库在数据库usedb1usedb1中建立数据表中建立数据表gradegrade,表中,表中包括包括(boku)(boku)学号学号snosno(charchar)、课程号)、课程号cnocno(charchar)、成绩)、成绩gmarkgmark(numericnumeric)属性)属性主键由学号和课程号构成主键由学号和课程号构成 第44页/共65页第四十五页,共65页。UNIQUE定义数据表中非主键的列在各行记录中不能出现相同(xin tn)的非空值 定义格式:Constraint 约束名 UNIQUE (列名1,列名2,)第45页/共65页第四十六页,共65页。例10-12 向数据库usedb2中数据表mag_dept属性DepManager增加(zngji)UNIQUE约束 第46页/共65页第四十七页,共65页。FOREIGN KEY 定义外键的命令(mng lng)基本格式 Constraint 约束名 foreign key(列名1,列名2,)references 表名(列名1,列名2,)第47页/共65页第四十八页,共65页。例10-13 向数据库MagDb中数据表mag_emp的属性DepId添加(tin ji)外键约束 第48页/共65页第四十九页,共65页。例例10-14 10-14 在数据库在数据库usedb2usedb2中建立中建立(jinl)(jinl)数数据表据表mag_empmag_emp,同时定义主键和外键,同时定义主键和外键 第49页/共65页第五十页,共65页。CHECK 定义(dngy)约束check的命令基本格式 Constraint 约束名 check(逻辑表达式)第50页/共65页第五十一页,共65页。例例10-15 10-15 将数据库将数据库MagDbMagDb中数据表中数据表mag_empmag_emp的属性的属性EmpAgeEmpAge取值范围限定取值范围限定(xindng)(xindng)在在1-1001-100之间(含之间(含1 1和和100100),并将此约束命名为),并将此约束命名为ck_age ck_age 第51页/共65页第五十二页,共65页。DEFAULT 定义约束default的命令(mng lng)基本格式为 Constraint 约束名 default 常量表达式 for 字段名第52页/共65页第五十三页,共65页。例10-16 将数据库MagDb中数据表mag_emp的属性EmpRole的默认值指定(zhdng)为“编辑”第53页/共65页第五十四页,共65页。10.3.3 删除(shnch)约束 删除约束(yush)的语句格式 Alter table 表名 Drop Constraint 约束(yush)名 第54页/共65页第五十五页,共65页。例10-17 删除数据库usedb2中数据表mag_dept属性(shxng)DepManager的UNIQUE约束 第55页/共65页第五十六页,共65页。10.4 建立(jinl)索引 索引(suyn)的类型 建立索引(suyn)设计索引(suyn)删除索引(suyn)第56页/共65页第五十七页,共65页。10.4.1 索引(suyn)的类型 聚集索引(clustered)是一种物理存储方式(fngsh)一个数据表只能建立一个聚集索引 非聚集索引(nonclustered)是一种逻辑存储方式(fngsh)索引的次序并不影响数据的物理存储顺序 一个数据表最多可以建立249个非聚集索引 第57页/共65页第五十八页,共65页。10.4.2 建立(jinl)索引 建立索引(suyn)的语法Create unique clustered|nonclustered index 索引(suyn)名 on 表名(列名1,列名2,)第58页/共65页第五十九页,共65页。例10-18 对数据表mag_emp属性EmpAge建立(jinl)非惟一的非聚集索引age_index 第59页/共65页第六十页,共65页。10.4.3 设计(shj)索引创建索引时一般应遵循以下原则创建索引时一般应遵循以下原则 经常要查找的列经常要查找的列经常要按顺序检索的列经常要按顺序检索的列经常用于多个数据表连接的列经常用于多个数据表连接的列经常用于进行统计计算(如求极值、求和等)的列;经常用于进行统计计算(如求极值、求和等)的列;在查询条件中频繁使用的列在查询条件中频繁使用的列如果如果(rgu)(rgu)一个列中只有几个不同的数据值,或者被索引的列多一个列中只有几个不同的数据值,或者被索引的列多于于2020个字节时,通常不应该建立索引个字节时,通常不应该建立索引 第60页/共65页第六十一页,共65页。10.4.4 删除(shnch)索引 删除索引的语法 Drop index 表名.索引名 注 意 使 用 primary key约 束(yush)和unique约束(yush)建立的索引不能删除 第61页/共65页第六十二页,共65页。例10-19 删除(shnch)索引age_index 第62页/共65页第六十三页,共65页。10.5 删除(shnch)数据库表 删除(shnch)数据表的语法 Drop table 表名 第63页/共65页第六十四页,共65页。例10-20 删除(shnch)usedb2中数据表mag_dept 第64页/共65页第六十五页,共65页。