1、实验一 创建数据库及关系表、数据完整性约束网工 1203 熊健羲 2012011438一、实验目的1. 掌握 SQL Server 数据库管理系统的使用,能够在该环境中进行日常数据库操作;2. 掌握在 SQL Server 中使用图形化工具创建数据库的方法;3 掌握建立关系表的语句,掌握定义主码约束及外码约束的语句;4 掌握修改表结构的语句。5 掌握数据完整性约束的功能。二、实验内容和步骤1创建符合如下条件的数据库:数据库的名字为:Students数据文件的逻辑文件名为:Students_dat,存放在用户盘某目录下;文件的初始大小为:5MB;增长方式为自动增长,每次增加1MB。实验结果:2在
2、已建立的 Students 数据库中,确定出各表中的数据类型,写出创建满足下述条件的四张表的 SQL 语句,并查看执行结果。实验结果:3 写出实现如下操作的 SQL 语句,并查看执行结果:(1) 在选课表中添加一个新的修课类别列:列名为:选课类别,类型为 char(4)。(2) 将课程表中的学分列的类型改为:tinyint(微整型,取值范围在 0255)。(3) 删除学生表的专业列。(4) 为教师表添加主码约束,其主码列为:教师号。实验结果:4在 Students 数据库中,编写建立满足完整性要求的定义表的 SQL 语句,执行并观察执行结果。(1)图书表,结构如下: 书号: 统一字符编码定长类
3、型,长度为 6,主码,书名: 统一字符编码可变长类型,长度为 30,非空,第一作者:普通编码定长字符类型,长度为 10,非空,出版日期: 小日期时间型,小于等于当前系统日期, (用 getdate()实现)印刷数量: 小整型,取值范围:10005000,默认为 4000,价格:定点小数,小数部分一位,整数部分 3 位。实验结果:(2)书店表,结构如下:书店编号: 统一字符编码定长类型,长度为 6,主码,店名:统一字符编码可变长类型,长度为 30,非空,电话: 普通编码定长字符类型,12 位长,取值形式:010-8 位数字地址: 普通编码可变长字符类型,40 位长。前两个字符必须是:北京。实验结
4、果:(3)图书销售表,结构如下:书号: 统一字符编码定长类型,长度为 6,非空,书店编号: 统一字符编码定长类型,长度为 6,非空,销售日期: 小日期时间型,非空,默认值为系统当前日期,销售数量: 微整型,取值大于 0,主码(书号,书店编号,销售日期) ;书号为引用“图书表”的外码;书店编号为引用“书店表”的外码。实验结果:5. 执行下列两条数据插入语句,是否都能执行成功?为什么?INSERT INTO BookVALUES(T0001, 数据库系统基础, 张三, 2010-2-1, 3000,28.0) 实验结果:能执行INSERT INTO Book VALUES(T0002, 计算机网络
5、, 张三, 2010-1-1, 500,36.0)实验结果:不能执行,原因:印刷数量小于 10006. 执行下列数据插入语句,是否执行成功?为什么?INSERT INTO Store VALUES(S001,新华书店 ,12345678,北京市海淀区)实验结果:不能执行,原因:电话号码不符合标准7. 执行一条数据插入语句,是否执行成功?为什么?INSERT INTO Sale(书号,书店编号, 销售数量) VALUES(T0001,S001,20)实验结果:不能执行,原因:store 是 sale 外键,其中 store 并没有添加进数据。三、实验源码CREATE table Student(
6、学号 CHAR(7) primary key,姓名 NCHAR(5) not null,性别 NCHAR(1) ,年龄 TINYINT ,所在系 NVARCHAR(20) ,专业 NVARCHAR(20)CREATE table Course(课程号 CHAR(6) primary key,课程名 NVARCHAR(20) NOT NULL,学时数 TINYINT ,学分 TINYINT )CREATE TABLE SC(学号 CHAR(7) NOT NULL,课程号 CHAR(6) NOT NULL,成绩 TINYINT,PRIMARY KEY (学号,课程号),FOREIGN KEY (学
7、号) REFERENCES Student(学号),FOREIGN KEY (课程号) REFERENCES Course(课程号 )CREATE table Teather(教师号 CHAR(7) not null,教师名 NCHAR(5) not null,所在部门 NVARCHAR(20) ,工资 Smallmoney ,出生日期 Smalldatetime)select * from Studentselect * from Courseselect * from SCselect * from Teather ALTER TABLE SCADD 选课类别 char(4)ALTER T
8、ABLE CourseALTER COLUMN 学分 tinyintALTER TABLE StudentDROP COLUMN 专业ALTER TABLE TeatherADD constraint ys primary key(教师号)CREATE table Book(书号 NCHAR(6) primary key,书名 Nvarchar(30) not null,第一作者 CHAR(10) not null,出版日期 smalldatetime check(出版日期 1000) default (4000),价格 decimal(3,1) )CREATE table Store(书店编
9、号 NCHAR(6) primary key,店名 NVARCHAR(30) NOT NULL,电话 Char(12) check(电话 like 010-0-90-90-90-90-90-90-90-9), 地址 Varchar(40) check(地址 like 北京% ) )Create table Sale(书号 NCHAR(6) not NULL,书店编号 Nchar(6) not NULL,销售日期 Smalldatetime default getdate(),销售数量 tinyint check(销售数量 0),primary key (书号, 书店编号, 销售日期),fore
10、ign key (书号) references Book(书号),foreign key (书店编号) references Store(书店编号 )INSERT INTO Book VALUES(T0001, 数据库系统基础, 张三, 2010-2-1, 3000,28.0)INSERT INTO Book VALUES(T0002, 计算机网络, 张三, 2010-1-1, 500,36.0)INSERT INTO Store VALUES(S001,新华书店 ,12345678,北京市海淀区)INSERT INTO Sale(书号,书店编号, 销售数量) VALUES(T0001,S001,20)四、实验心得经过这次实验 掌握 SQL Server 数据库管理系统的基本使用,复习了建立关系表的语句,定义主码约束及外码约束的语句,和修改表结构的语句。了解了数据完整性约束的功能。希望下次实验能够学到更多数据库的知识。