当前位置:首页 > 数据库原理实验答案
实 验 报 告
课程名称: 数据库原理
系部名称: 计算机 专业班级: 网络工程 学生姓名: 学 号: 指导教师:
实验( 一 )
实验名称: 数据库表的建立 实验时间: 2013-3-4
一、实验目的:
本实验的目的是使熟悉SQL SERVER的常用数据类型,加深对SQL和SQL语言的查询语句的理解。
1、熟练掌握简单表的创建。
2、掌握主键约束、外键约束及及check约束的用法; 3、掌握默认值约束的应用; 4、了解规则、触发器的使用。
二、实验内容:
1、 使用查询分析器,用ddl建立studentinfo数据库
2、 在studentinfo 数据库中定义3个表,students, courses,和sc,表的具体要求如下:用
ddl建立上述3个表并增加如下约束:
students,表 列名 Sno Sname Ssex Sage Sdept
Courses表 列名 Cno Cname PreCno Credits
SC表 列名 Sno Cno Grade 具体约束为:
1、 请用至少2种方法定义stu数据库中student表的主键sno;
说明 学号 课程号 成绩 数据类型 字符串,长度为10 字符串,长度为6 整数 约束说明 主键 主键 允许为空值 说明 课程号 课程名 先修课程号 学分 数据类型 字符串,长度为6 字符串,长度为20 字符串,长度为6 整数 约束说明 主键 非空值 允许为空值 允许为空值 说明 学号 姓名 性别 年龄 所在系 数据类型 字符串,长度为10 字符串,长度为8 字符串,长度为2 整数 字符串,长度为15 约束说明 主键 非空值 非空值 允许空值 非空值 2、 为表course中的字段cname添加唯一值约束;
3、 对于数据表sc的sno、cno字段定义为外码,使之与表student的主码sno及表
course的主码cno对应,实现如下参照完整性:
1) 删除student表中记录的同时删除sc表中与该记录sno字段值相同的记录; 2) 修改student表某记录的sno时,若sc表中与该字段值对应的有若干条记录,则拒绝修改;
3) 修改course表cno字段值时,该字段在sc表中的对应值也应修改; 4) 删除course表一条记录时,若该字段在在sc表中存在,则删除该字段对应的记录;
5) 向sc表添加记录时,如果该记录的sno字段的值在student中不存在,则拒绝插入;
4、定义check约束,要求学生学号sno必须为10位字符,且不能以0开头,第二三位皆为0;check(sno like‘[^0]00__________’ )
5、定义stu数据库中student表中学生年龄值在16-25范围内;
6、定义stu数据库中student表中学生姓名长度在2-8之间;check(len(sname)<8) 7、定义stu数据库中student表中学生性别列中只能输入“男”或“女”; 8、定义stu数据库student表中学生年龄值默认值为20;
2. studentinfo数据库的3个表students,courses,sc 表中输入若干纪录,内容为: students sno 20010101 20010102 20010103 20030101 20030102
courses cno C1 C2 C3 Sc Sno 20010101 20010102 20010102 20010102 sname Hone Sue Smith Allen Deepa ssex M F M M F sage 19 20 19 18 21 sdept Computer Computer Math Automation Art cname English Math Database ProCno C1 C2 Credits 4 2 2 Cno C1 C1 C2 C2 Grade 90 88 94 62 4、在上面的基础上分别向studentinfo 数据库中的students, courses, sc 表中添加少5条数据。须满足三大约束条件
三、源程序:
create database students
create table Students( Sno char(10) primary key,
Sname char(8) check(len(Sname)>=2 and len(Sname)<=8), Ssex char(2) check(Ssex in('男','女')),
Sage int check(Sage>=16 and Sage<=25) default 20, Sdept char(15) not null )
create table Courses( Cno char(6) primary key, Cname char(20) unique, PreCno char(6) null, Credits int null )
create table SC( Sno char(10), Cno char(6), Grade int null, primary key(Sno,Cno),
foreign key(Sno) references Students(Sno) on delete cascade,
foreign key(Cno) references Courses(Cno) on delete cascade on update cascade )
四、主要问题和解决方法:
我们都对数据库不陌生,但是使用sql语句来使用数据库的还是第一次,感觉挺新鲜。第一次使用,问题的难度不大,都可以自主完成。
共分享92篇相关文档