实验三创建和修改数据表[目的和意义]熟悉有关数据表的创建和修改等工作,并了解主键、外键以及约束的创建和应用,熟练掌握使用企业管理器和CREATE TABLE、ALTER TABLE等Transact-SQL语句对数据表的操作方法。
[实验内容]分别使用企业管理器和Transact-SQL语旬按下列要求创建两个数据表: 表B1项目数据表,表B2员工数据表,并按照步骤完成对表的相关修改和约束设置。
项目表(Project)[实现步骤]方法一:使用企业管理器创建数据表并添加约束1.打开企业管理器,在树状目录窗口中找到数据库节点TestDB,并选中下一级节点"表"。
2.单击鼠标右键,从弹出菜单中选择命令"新建表",打开表设计窗口,在窗口中按照"上机任务"中所列的"项目数据表"的字段及要求键入列名、数据类型、长度等属性,并将"项目编号"设置为主键。
如图2-l 所示。
图2-l 创建"项目数据表"3. 单击"保存"按钮,在弹出的对话框中输入表名称"项目数据表",关闭表设计窗口,完成表"项目数据表"的刨建。
4. 重复1-3步,创建另一个数据表"员工数据表",表设计窗口如图2-2所示。
图2-2创建"员工数据表"5. 添加外键约束:在"项目数据表"的"负责人"字段上添加外键约束,参照字 段为"员工数据表"中的字段"编号",约束名为FK_pm 。
实现方法为:首先在企业管理器中选中"项目数据表"并单击鼠标右键,在弹出菜单中选择命令"设计表"打开设计表窗口。
然后在该窗口中单击按钮"表和索引属性"按钮,打开表的"属性"对话框。
最后选择"关系"选项卡,在改选项卡中做如下的操作。
单击"新建"按钮;从"主键表"中选择"员工数据表",并选择字段"编号"; 从"外键表"中选择"项目数据表",并选择字段"负责人"; 在"关系名"中输入FK_pm 。
单击"关闭"按钮,完成外键约束的设置。
6. 添加检查约束:将"员工数据表"中的字段"工资"的值限定在1000-10000,约束名CK_Salary 。
操作方法为:首先在企业管理器中选中"员工数据表"并单击鼠标右键,在弹出菜单中选择命令"设计表"打开设计表窗口。
然后在该窗口中单击按钮"表和索引属性"按钮,打开表的"属性"对话框。
最后选择"CHECK 约束"选项卡,在改选项卡中做如下的操作:单击标签中"新建"按钮;在"约束表达式"文本框中输入一个条件表达式; (工资>=1000 AND 工资<=10000)在"约束名"对话框中输入所建核查约束名"CK_Salary"。
如图2-3所示。
图2-3方法二:使用Transact-SQL 语句创建数据表并添加约束1. 创建项目数据表 USE TestDB GOCREATE TABLE 项目数据表 (项目编号int PRIMARY KEY,名称varchar(50),负责人int,客户int,开始日期datatime,结束日期datatime)2.创建员工数据表USE TestDBGO(编号int PRIMARY KEY,姓名varchar(50),性别varchar(50),所属部门varchar(50)工资money(8)3.添加外键约束ALTER TABLE 项目数据表ADD CONSTRAINT PK_pmFOREIGN KEY(负责人)REFERENCES 员工数据表(编号)添加检查约束ALTER TABLE 员工数据表ADD CONSTRAINT CK_pmCHECK(工资>=1000 AND 工资<=10000)[习题]在SM数据库中,建立学生的基本信息表student、班级class表、课程表course和选修课成绩表sc。
Course表SC[思考题]什么是临时表?什么是数据完整性?关系数据库有几类完整性?怎么通过SQL Server来实现?实验四表的维护[目的与意义]熟练掌握用企业管理器修改表;能够运用T-SQL语句对表结构进行修改;熟练掌握用企业管理器编辑表中的数据;能够运用T-SQL语句对表中的数据进行插入、修改和删除操作。
[实验内容]1.使用企业管理器为表Student增加一列。
2. 用SQL语句修改表course的列属性,将Cname的长度改为40,且不允许空。
Use SMAlter table course alter column cname varchar(40) not null3. 用SQL语句向表Student中增加列Email,且要求输入的电子邮件地址必须包括“@”字符Use smAlter table student add email varchar(40) null constraint ck_ea check(email like ‘%@%’)4. 用SQL语句删除表Student中的列AddressUse smAlter table student drop column address5. 用SQL语句给表student中的sname添加主键约束Use smAlter table student add constraint pk_name primary key(sname)6. 删除Sname列上的主键约束Use smAlter table student drop constraint pk_name7. 使用with nocheck子句对表student的Sage列添加约束,使学生的年龄为18-25岁。
Alter table student with nocheck add constraint ck_age check(sage>=18 and Sage<=25)With nocheck只对以后改变或插入的行发生作用,而不检查已存在的行。
8. 使约束无效或重新有效Alter table student nocheck constraint ck_eaAlter table student check constraint ck_ea9. 使用企业管理器编辑表Student中的数据(1)启动企业管理器,展开sm数据库,选择“表”,用鼠标右键单击右侧窗口中要编辑的表节点“student”,在弹出的快捷菜单中选择“打开表”----“返回所有行”命令,打开“表中数据”对话框。
(2)插入一条记录(‘03007’,’030002’,’梁栋’,’男’,’1984-10-10’);如果要删除记录,可以单击记录第一列前的按钮,按delete键;如果要修改数据,可以将光标移至需要修改的地方,直接修改。
(3)编辑完毕,单击“关闭”按钮,保存编辑结果。
10. 用SQL语句向表中插入数据(1)将学号为06001、姓名为王立、性别为男的学生记录插入表student中。
insert into student(sno,sname,ssex) values(‘06001’,’王立’,’男’)(2)将一条选课记录插入表sc中Insert inot sc values(‘06001’,’00001’,null)(3)在表student中插入一条学生记录,省略insert into后的列名,查看插入结果Insert into student values(‘06002’,’060001’,’要强’,’男’,’1986-12-12’)(4)新建一个表ss,且结构与表student的结构完全相同,把表student中学号为06001的记录插入到表ss中,再把表student中所有男生的记录插入到表ss 中,查看执行结果Insert into ss select * from student where sno=’06001’Insert into ss select * from student where ssex=’男’11. 用SQL语句修改表中的记录(1)将学生06002的年龄改为20岁Update student set sage=20 where sno=’06002’(2)将所有男生的年龄增加一岁Update student set sage=sage+1 where ssex=’男’(3)将所有选修了数字逻辑课程的学生的成绩加5分Update sc set score=score+5 where cno=(select cno from course where cname=’数字逻辑’12. 用SQL语句删除表中的记录(1)删除学号为06001的记录Delete from student where sno=’06001’(2)删除所有学生的选课记录Deleter from sc[思考题]如果一个表被其他表通过外码约束引用,应该怎样删除?对于表student,分别执行drop table student和delete student两条命令,结果有什么不同?。