SQL实验参考
- 格式:doc
- 大小:79.50 KB
- 文档页数:7
实验:基本表的定义、删除与修改 注意:SQL命令大小写均可。表名和列名请安照题目要求。 1. 建立基本表 1) 建立表1所示的学生表Students,每个属性名的意义为学号:Sno(5个字符型)、姓名:Sname(8个字符型)、性别:Ssex(2个字符型)、年龄:Sage(小数点为0位数为2的数值型)、所在系:Sdept(8个字符型)。这里要求Sno和Sname不能为空值。 【命令】此处填入你在SQLServer中执行的正确命令 ,以后各题雷同 CREATE TABLE Students (Sno CHAR(5) NOT NULL, Sname CHAR(8) NOT NULL, Ssex CHAR(2), Sage NUMERIC(2,0), Sdept CHAR(8)) 2)建立表2所示的课程表Courses,其属性名意义分别为课程号:Cno(5个字符型), 课程名:Cname(20个字符型), 先修课程号:Pre_Cno(5个字符型), 学分:Credits(整型SMALLINT)。 CREATE TABLE Courses (Cno CHAR(5), Cname CHAR(20), Pre_Cno CHAR(5), Credits SMALLINT) 3)建立表3所示的成绩表Reports。其中的属性名意义分别为学号:Sno(5个字符型),课程号(5个字符型):Cno(5个字符型)和考试成绩:Grade(整型SMALLINT)。这里要求Sno和Cno不能为空值。 CREATE TABLE Reports (Sno CHAR(5) NOT NULL, Cno CHAR(5)NOT NULL, Grade SMALLINT)
表3关系Reports Sno Cno Grade S01 S01 S02 S02 S02 S03 S03 S04 C01 C03 C01 C02 C03 C01 C02 C03 92 84 90 94 82 72 90 75 表2关系Courses Cno Cname Pre_Cno Credits C01 C02 C03 C04 C05 C06 C07 英语 数据结构 数据库 DB_设计 C++ 网络原理 操作系统 C05 C02 C03 C07 C05 4 2 2 3 3 3 3
表1 关系Students Sno Sname Ssex Sage Sdept S01 S02 S03 S04 S05 S06 王建平 刘华 范林军 李伟 黄河 长江 男 女 女 男 男 男 21 19 18 19 18 20
自动化 自动化 计算机 数学 数学 数学 2 2. 修改基本表 1)向基本表Students中增加“入学时间”属性列,其属性名为Sdate,数据类型为日期时间型SMALLDATETIME。 参考命令:ALTER TABLE 表名 ADD 列名 类型 ALTER TABLE Students ADD Sdate SMALLDATETIME 2) 向基本表Students中增加“备注”属性列,其属性名为BB,数据类型为字符型 CHAR。 参考上例 3) 将Sage(年龄)的数据类型改为整型SMALLINT。 ALTER TABLE 表名 ALTER COLUMN 列名 类型 ALTER TABLE Students ALTER COLUMN Sage SMALLINT 4) 从基本表Students中删除BB字段 参考命令:ALTER TABLE DROP COLUMN 字段名 ALTER TABLE Students DROP COLUMN BB 5) 从基本表Students中删除Sdate字段。 参考命令:参考上例 3. 删除基本表 1) 建立一个与Students表完全一样的名为Students_temp的基本表, SELECT * INTO Students_temp FROM Students 2) 删除Students_temp表。 参考命令: DROP TABLE 表名 DROP TABLE Students_temp 4. 向表中添加元组 1) 将一个学生元组(S01,王建平,男,21,计算机)添加到基本表Students中。说明:请大家将其余的 3
信息插入Students表中。 INSERT INTO Students VALUES('S01','王建平','男',21,'自动化') INSERT INTO Students VALUES('S02','刘华','女',19,'自动化') INSERT INTO Students VALUES('S03','范林军','女',18,'计算机') INSERT INTO Students VALUES('S04','例伟','男',19,'数学') INSERT INTO Students VALUES('S05','黄河','男',18,'数学') INSERT INTO Students VALUES('S06','长江','男',20,'数学') 2) 向Courses表插入元组(‘C01’,’英语’,’’,4),说明:请大家将其余6门课程的信息插入Courses表中。 INSERT INTO Courses VALUES('C01','英语','',4) INSERT INTO Courses VALUES('C02','数据结构','C05',4) INSERT INTO Courses VALUES('C03','数据库','C02',4) INSERT INTO Courses VALUES('C04','DB_设计','C03',4) INSERT INTO Courses VALUES('C05','C++','',4) INSERT INTO Courses VALUES('C06','网络原理','C07',4) INSERT INTO Courses VALUES('C07','操作系统','C05',4) 3) 将学习成绩的元组(‘S01’, ’C01’)添加到基本表Reports中。说明:请大家用这个命令将其余7个选课元组也添加到基本表Reports中. INSERT INTO Reports 4
VALUES('S01','C01',92) INSERT INTO Reports VALUES('S01','C03',84) INSERT INTO Reports VALUES('S02','C01',90) INSERT INTO Reports VALUES('S02','C02',94) INSERT INTO Reports VALUES('S02','C03',82) INSERT INTO Reports VALUES('S03','C01',72) INSERT INTO Reports VALUES('S03','C02',90) INSERT INTO Reports VALUES('S04','C03',75)
实验:SQL 数据查询 1 无条件查询 1)查询全体学生的详细记录。 SELECT * FROM Students 2)查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。 SELECT Sname,Sno,Sdept FROM Students 3)查询全体学生的姓名(Sname)、出生年份及学号(Sno)。由于SELECT子句的不仅可以是表中的属性列,也可以是表达式。 SELECT Sname,2009-Sage ,Sno FROM Students 4)查询全体学生的姓名、出生年份(命名为BirthYear)和学号 SELECT Sname,2009-Sage AS BirthYear,Sno FROM Students
5)查询选修了课程的学生学号。 SELECT DISTINCT Sno FROM Reports
2 条件查询 1)查询数学系全体学生的学号(Sno)和姓名 (Sname)。 select Sno,Sname 5
from Students where Sdept='数学' 2)查询所有年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。(用and关键字) select Sname,Sage from Students where Sage>=18 and Sage<=22 3)查询年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。(用BETWEEN关键字) select Sname,Sage from Students where Sage between 18 and 22 4)查询年龄不在18-22岁之间的学生姓名(Sname)及年龄(Sage)。(用BETWEEN关键字) select Sname,Sage from Students where Sage not between 18 and 19 5)查询自动化系、数学和计算机系学生的学号(Sno)、姓名(Sname)和性别(Ssex)。 select Sno,Sname,Ssex from Students where Sdept in ('自动化系','数学','计算机系') 6) 查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。 select Sname,Sno,Ssex from Students where Sname like '刘%' 7)查询姓“刘”且全名为4个汉字的学生的姓名(Sname)和所在系(Sdept)。 select Sname,Sno,Ssex from Students where Sname like '刘______' 8)查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。 select Sname,Sage from Students where Sname not like '刘%'