[宋吉兵]第4章 数据库表管理

上传人:kms****20 文档编号:51639371 上传时间:2018-08-15 格式:PPT 页数:39 大小:1.42MB
返回 下载 相关 举报
[宋吉兵]第4章 数据库表管理_第1页
第1页 / 共39页
[宋吉兵]第4章 数据库表管理_第2页
第2页 / 共39页
[宋吉兵]第4章 数据库表管理_第3页
第3页 / 共39页
[宋吉兵]第4章 数据库表管理_第4页
第4页 / 共39页
[宋吉兵]第4章 数据库表管理_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《[宋吉兵]第4章 数据库表管理》由会员分享,可在线阅读,更多相关《[宋吉兵]第4章 数据库表管理(39页珍藏版)》请在金锄头文库上搜索。

1、第二章SQL Server数据库表管理1回顾q使用企业管理器创建组、注册q用两种方法创建、修改、查看数据库q移动和配置数据库的选项2本章目标q使用企业管理器创建数据库表 q设置表的主键、外键和建立表之间的关系 q为表增加约束3再论数据完整性 2-1数据完整性可靠性准确性4再论数据完整性 2-2q 数据存放在表中q “数据完整性的问题大多是由于设计引起的”q 创建表的时候,就应当保证以后数据输入是正确的错误的数据、不符合要求的数据不允许输入创建表:保证数据的完整性 = 实施完整性约束5完整性包括2-1q 输入的类型是否正确? 年龄必须是数字 q 输入的格式是否正确? 身份证号码必须是18位 q

2、是否在允许的范围内? 性别只能是”男”或者”女” q 是否存在重复输入? 学员信息输入了两次 q 是否符合其他特定要求? 信誉值大于5的用户才能够加入会员列表 q 列值要求(约束)整行要求(约束)6完整性包括2-2域完整性实体完整性引用完整性自定义完整性7实体完整性河南新乡赵可以0010016河南新乡张丽鹃0010015江西南昌雷铜0010014湖南新田吴兰0010013山东定陶李山0010012.地址姓名学号江西南昌雷铜0010014思考:能否将学号为思考:能否将学号为 00100140010014的记录插入学生表中?的记录插入学生表中?约束方法:唯一约束、主键约束、标识列8域完整性河南新乡

3、赵可以0010016河南新乡张丽鹃0010015江西南昌雷铜0010014湖南新田吴兰0010013山东定陶李山0010012.地址姓名学号湖北江门李亮8700000000约束方法:限制数据类型、检查约束、外键约束、 默认值、非空约束9引用完整性河南新乡赵可以0010016河南新乡张丽鹃0010015江西南昌雷铜0010014湖南新田吴兰0010013山东定陶李山0010012地址姓名学号980010021数学 约束方法:外键约束科目学号分数 数学001001288数学001001374 语文001001267 语文001001381 数学00100169810自定义完整性AV121322乔峰

4、CV0016AV372133玄痛CV0015AV378291沙悟净AV0014AV378290猪悟能AV0013AV378289孙悟空AV0012.会员证用户姓名用户编号约束方法:规则、存储过程、触发器帐号姓名信用.00192孙悟空7 00288猪悟能6 12333段誉8 90111虚竹40 93000岳不群-10触发器:检查信用值11表操作在企业管理器中演示打开表、数据输入等操作12创建数据库表-113SQL Server的数据类型分类类备备注和说说明数据类类型说说明 二进进制数据类类 型存储储非子符和文本的数据Image可用来存储图储图 像文本数据类类型字符数据包括任意字母、符 号或数字字

5、符的组组合Char固定长长度的非 Unicode 字 符数据 Varchar可变长变长 度非 Unicode 数据 Nchar固定长长度的 Unicode 数据 Nvarchar可变长变长 度 Unicode 数据 Text存储长储长 文本信息Ntext存储储可变长变长 度的长长文本 日期和时间时间日期和时间时间 在单单引号内输输入Datetime 日期和时间时间数字数据该该数据仅仅包含数字,包括正 数、负负数以及分数int smallint整数float real数字货币货币 数据类类型用于十进进制货币值货币值Money Bit数据类类型表示是/否的数据Bit存储储布尔数据类类型14思考q

6、电话号码一般使用什么数据类型存储?q 性别一般使用什么数据类型存储?q 年龄信息一般使用什么数据类型存储?q 照片信息一般使用什么数据类型存储?q 薪水一般使用什么数据类型存储?15创建数据库表-216思考q 学员姓名允许为空吗?q 家庭地址允许为空吗?q 电子邮件信息允许为空吗?q 考试成绩允许为空吗?17创建数据库表-318思考q 在主键列输入的数值,允许为空吗?q 一个表可以有多个主键吗?q 在一个学校数据库中,如果一个学校内允许重名的学员, 但是一个班级内不允许学员重名,可以组合班级和姓名两 个字段一起来作为主键吗?19选择主键的原则q最少性 q尽量选择单个键作为主键q稳定性 q尽量选

7、择数值更新少的列作为主键20创建数据库表-4q表中没有合适的列作为主键怎么办?21思考q 标识列允许为字符数据类型吗? q 如果标识列A的初始值为1,增长量为2,则输入三行数据 以后,再删除两行,下次再输入数据行的时候,标识值从 多少开始?22创建数据库表-523创建数据库表-6演示建立主-外键关系24关系图演示关系图25主表和从表q 1、当主表中没有对应的记录时,不能将记录添加到子表 成绩表中不能出现在学员信息表中不存在的学号;q 2、不能更改主表中的值而导致子表中的记录孤立 把学员信息表中的学号改变了,学员成绩表中的学号也应当随之 改变;q 3、子表存在与主表对应的记录,不能从主表中删除该

8、行 不能把有成绩的学员删除了q 4、删除主表前,先删子表 先删学员成绩表、后删除学员信息表26创建数据库表-7演示建立检查约束27创建数据库表完毕!输入数据项,验证主键、主外键关系、检查约束28创建表q建表的语法CREATE TABLE 表名(字段1 数据类型 列的特征,字段2 数据类型 列的特征,. )列的特征:包括该列是是否为空(NULL)、是否是标识列( 自动编号)、是否有默认值、是否为主键等。 29建表示例 1USE stuDB -将当前数据库设置为stuDB GO CREATE TABLE stuInfo /*-创建学员信息表-*/ (stuName VARCHAR(20) NOT

9、NULL , -姓名,非空(必填)stuNo CHAR(6) NOT NULL, -学号,非空(必填)stuAge INT NOT NULL, -年龄,INT类型默认为4个字节stuID NUMERIC(18,0), -身份证号stuSeat SMALLINT IDENTITY (1,1), -座位号,自动编号stuAddress TEXT -住址,允许为空,即可选输入 ) GONUMERIC (18,0) 代表18位数字,小数位数为0演示:创建学员信息表stuInfoIDENTITY(起始值,递增量) 30建表示例 2CREATE TABLE stuMarks (ExamNo CHAR(7)

10、 NOT NULL, -考号stuNo CHAR(6) NOT NULL, -学号writtenExam INT NOT NULL, -笔试成绩LabExam INT NOT NULL -机试成绩 ) GO演示:创建学员成绩表 stuMarks 31删除表q 如果当前数据库中已存在stuInfo表,再次创建时系统将提 示出错 。如何解决呢?32删除表q删除表的语法:DROP TABLE 表名USE stuDB -将当前数据库设置为stuDB ,以便在stuDB数据库中建表 GO IF EXISTS(SELECT * FROM sysobjects WHERE name=stuInfo )DRO

11、P TABLE stuInfo CREATE TABLE stuInfo /*-创建学员信息表-*/ ( ) GO33SQL Server的约束q 约束的目的:确保表中数据的完整型 q 常用的约束类型: q主键约束(Primary Key Constraint):要求主键列数据唯 一,并且不允许为空q唯一约束(Unique Constraint):要求该列唯一,允许为 空,但只能出现一个空值。q检查约束(Check Constraint):某列取值范围限制、格式 限制等,如有关年龄的约束q默认约束(Default Constraint):某列的默认值,如我们 的男性学员较多,性别默认为“男”q

12、外键约束(Foreign Key Constraint):用于两表间建立关 系,需要指定引用主表的那列34添加约束 q 添加约束的语法:ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型 具体的约束说明q 约束名的取名规则推荐采用:约束类型_约束字段 q主键(Primary Key)约束:如 PK_stuNo q唯一(Unique Key)约束:如 UQ_stuID q默认(Default Key)约束:如 DF_stuAddress q检查(Check Key)约束:如 CK_stuAge q外键(Foreign Key)约束:如 FK_stuNo 35添加约束示例

13、ALTER TABLE stuInfo ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo) ALTER TABLE stuInfo ADD CONSTRAINT UQ_stuID UNIQUE (stuID) ALTER TABLE stuInfo ADD CONSTRAINT DF_stuAddress DEFAULT (地址不详) FOR stuAddress ALTER TABLE stuInfo ADD CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40) ALTER TABLE stuMarksA

14、DD CONSTRAINT FK_stuNo FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo) GO演示:给学员信息表stuInfo添加约束添加主键约束(stuNo作为主键)添加唯一约束(因为每人的身份证号全国唯一)添加默认约束(如果地址不填,默认为“地址不详”)添加检查check约束,要求年龄只能在1540岁之间添加外键约束(主表stuInfo和从表stuMarks 建立关系,关联字段为stuNo)36删除约束q如果错误地添加了约束,我们还可以删除约束 q删除约束的语法ALTER TABLE 表名 DROP CONSTRAINT 约束名 例如:删除st

15、uInfo表中地址默认约束 ALTER TABLE stuInfo DROP CONSTRAINT DF_stuAddress37总结q SQL Server创建表的过程是规定数据列的属性的过程,同 时也是实施数据完整性(包括实体完整性、引用完整性和 域完整性等)保证的过程q 实体完整性数据行不能存在重复,引用完整性要求子表中 的相关项必须在主表中存在q 域完整性实现了对输入到特定列的数值的限制 q SQL Server中存在五种约束,分别是:主键约束、外键约 束、检查约束、默认约束和唯一性约束(唯一性约束将在 后续课程中使用SQL语句实现)38总结q 创建数据库表需要:确定表的列名、数据类型、是否允许 为空,还需要确定主键、必要的默认值、标识列和检查约 束q 如果建立了主表和子表的关系,则:子表中的相关项目的数据,在主表中必须存在;主表中相关项的数据更改了,则子表对应的数据项也应 当随之更改;在删除子表之前,不能够删除主表;39

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号