《数据库原理与应用》实验 实验一 数据库、表的创建与维护
一、实验目的
1.熟悉SQL的数据定义语言,能够熟练使用SQL语句来创建和更改基本表 2.创建和取消索引;
二、实验内容
? 数据定义:
1.创建关系数据库S_T,在数据库中存在四张表格,分别为:
学生表students包括学号(sno)、姓名(sname)、邮箱(email)和年级(grade)四
个属性,每个属性的数据类型、长度及其约束要求如下:
Sno:char(10),主码; Sname:char(8), Email:char(30), Grade:smallint;
教师表Teachers包括教师号(Tno)、教师姓名(Tname)、邮箱(email)和工资(salary)
四个属性,每个属性的数据类型、长度及其约束要求如下:
Tno:CHAR(8) ,主码; Tname:char(8) 非空约束, Email:char(30),
Salary: real 且Salary>=1500; 课程表Courses包括课号(Cno)、课名(Cname)和学时(Chour)三个属性,每个
属性的数据类型、长度及其约束要求如下:
Cno:char(8),且cno取值唯一,将该约束命名uq_cno; cname:char(10), Chour:tinyint;
选课表STC包括学号(Sno)、教师号(Tno)、课号(Cno)和成绩(score)四个属
性,每个属性的数据类型、长度及其约束要求如下:
Sno:char(10), Cno:CHAR(8), Tno:CHAR(8), Score:int,
设置(Sno,cno)为主码,STC表中的Sno属性为外码。
提示:学生表和教师表用对象资源管理创建;课程表和选课表用T-SQL语句创建,并将T-SQL代码保存(保存为*.SQL文件)。
文件名命名规则:sy1-###***.SQL
其中###表示你本人学号的后3位,***表示你本人的姓名(汉字) 2.用T-SQL语句修改Students表,增加性别Ssex属性(类型CHAR,长度2),自定义约束为只能取“男”或“女”;
3.用T-SQL语句把STC表中的score改为smallint型; 4.用T-SQL语句将Course表中的Cno属性的唯一性约束删除。 5.用T-SQL语句为STC表中的cno添加参照完整性约束,参照Courses表中的Cno属性,并回答下列问题:
(1)在添加约束的过程中为什么没有执行成功?根据提示分析原因及解决办法。
(2)将存在的问题解决后,完成该参照完整性约束的添加。 6.用T-SQL语句在Students表的sname属性列上创建普通索引。 回答:到目前为止,students表有几个索引?指出这些索引是在哪些属性上建的,分别是什么类型的索引?
7.将下表中的数据一次输入到已经创建的四个表中。
Students表: sno 200415121 200415122 200415123 200515121 200515122 200515123
Teachers表: Tno 101 102 103 104 课程表Courses Cno B001 Cname 高等数学 Chour 80 Tname 李大伟 刘云 王军 张红霞 email ldw@ncist.edu.cn liuy@ncist.edu.cn zhx@ncist.edu.cn salary 4200 2500 2100 sname 李丽 汪洋 刘晨 王小晨 张放 乔云萍 email lee@163.com wy@sina.com grade 2004 2004 Ssex 女 男 女 男 男 女 liucheng@hotmial.net 2004 Wang111@yahoo.com 2005 zhangf123@sina.com qyp@163.net 2005 2005 Wj666@ncist.edu.cn 1600 B002 B003 B004 B005 B006
课程表STC
Sno 200415121 200415121 200415121 200415121 200415122 200415122 200415123 200415123 200415123 200515121 200515121 200515123 200515123
计算机导论 C程序设计 数据结构 数据库系统 模糊数学 48 64 72 56 56 Cno B001 B002 B003 B004 B002 B003 B001 B003 B004 B002 B004 B001 B002 Tno 101 102 103 104 102 103 101 103 104 102 104 101 102 score 78 85 69 98 89 65 56 68 78 81 60 *8. 查询年级为2005的所有学生的学号、姓名和年级; *9. 查询课时为64或48的课程名称和学时; *10. 查询所有课中含有“数”的课程号及课程名称;

