当前位置:文档之家› 学生选课数据库SQL语句练习题(附详细分解答案)

学生选课数据库SQL语句练习题(附详细分解答案)

学生选课数据库SQL语句练习题(附详细分解答案)
学生选课数据库SQL语句练习题(附详细分解答案)

一、设有一数据库,包括四个表:学生表(Student)、课程表

(Course)、成绩表(Score)以及教师信息表(Teacher)。

四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。

表1-1数据库的表结构

表(一)Student

属性名数据类

型可否为

含义

Sno Char(3) 否学号(主

键)Sname Char(8) 否学生姓名Ssex Char(2) 否学生性别Sbirthday datetime 可学生出生年

Class Char(5) 可学生所在班

表(二)Course

属性名数据类型可否为

含义Cno Char(5) 否课程号(主

键)Cname Varchar(10) 否课程名称Tno Char(3) 否教师编号

(外键)

表(三)Score

属性名数据类型可否为

含义Sno Char(3) 否学号(外

键)

Cno Char(5) 否课程号(外

键)Degree Decimal(4,1) 可成绩

主码:Sno+ Cno

表(四)Teacher

属性名数据类型可否为

含义

Tno Char(3) 否教师编号

(主键)Tname Char(4) 否教师姓名Tsex Char(2) 否教师性别Tbirthday datetime 可教师出生年

Prof Char(6) 可职称Depart Varchar(10) 否教师所在部

表1-2数据库中的数据

表(一)Student

Sno Sname Ssex Sbirthday class

108 曾华男1977-09-

95033

01

105 匡明男1975-10-

95031

02

107 王丽女1976-01-

95033

23

95033

101 李军男1976-02-

20

95031

109 王芳女1975-02-

10

95031

103 陆君男1974-06-

03

表(二)Course

Cno Cname Tno

3-105 计算机导论825

3-245 操作系统804

6-166 数字电路856

9-888 高等数学831

表(三)Score

Sno Cno Degree

103 3-245 86

105 3-245 75

109 3-245 68

103 3-105 92

105 3-105 88

109 3-105 76

101 3-105 64

107 3-105 91

108 3-105 78

101 6-166 85

107 6-166 79

108 6-166 81

表(四)Teacher

Tno Tname Tsex Tbirthday Prof Depart

804 李诚男1958-12-

02 副教

计算机系

856 张旭男1969-03-

12 讲师电子工程

825 王萍女1972-05-

05

助教计算机系

831 刘冰女1977-08-

14 助教电子工程

-- 1、查询Student表中的所有记录的Sname、Ssex和Class列。 select sname,ssex,class from student;

-- 2、查询教师所有的单位即不重复的Depart列。

select distinct depart from Teacher;

-- 3、查询Student表的所有记录。

select * from student;

-- 4、查询Score表中成绩在60到80之间的所有记录。

select * from score where degree between 60 and 80;

-- 5、查询Score表中成绩为85,86或88的记录。

select * from score where degree in(85,86,88);

-- 6、查询Student表中“95031”班或性别为“女”的同学记录。 select * from student where class = '95031' or ssex='女';

-- 7、以Class降序查询Student表的所有记录。

select * from student order by class desc;

-- 8、以Cno升序、Degree降序查询Score表的所有记录。 select * from score order by cno,degree desc;

-- 9、查询“95031”班的学生人数。

select class,count(*) as 学生人数 from student

group by class having class='95031';

-- 10、查询Score表中的最高分的学生学号和课程号。(子查询或者排序)

select sno,cno,degree,

(select max(degree) from score) as maxscore--计算最高分

from score where degree= (select max(degree) from score);

-- 11、查询…3-105?号课程的平均分。

select avg(degree) as avgdegree

from score group by cno having cno='3-105';

-- 12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。

select avg(degree) as avgdegree from score group by cno --按照课程分组取平均值

having cno= (select cno from score group by cno having count(*)>=5)--至少有5名学生选修的课程

and cno like '3%';--以3开头的课程

-- 13、查询最低分大于70,最高分小于90的Sno列。

select sno,max(degree)as maxdegree,min(degree) as mindegree from Score group by sno

having max(degree)<90 and min(degree)>70

-- 14、查询所有学生的Sname、Cno和Degree列。

select sname,cno,degree from student

join score on student.sno=score.sno;

-- 15、查询所有学生的Sno、Cname和Degree列。

select sno,cname,degree from Score

join course on https://www.doczj.com/doc/4c15711670.html,o=https://www.doczj.com/doc/4c15711670.html,o;

-- 16、查询所有学生的Sname、Cname和Degree列。

select sname,cname,degree from student

join score on student.sno=score.sno

join course on https://www.doczj.com/doc/4c15711670.html,o=https://www.doczj.com/doc/4c15711670.html,o;

-- 17、查询“95033”班所选课程的平均分。

select avg(degree) as avgdegree from score where sno in(select sno from student where class='95033')

18、假设使用如下命令建立了一个grade表:

create table grade(low int(3),upp int(3),rank char(1))

insert into grade values(90,100,’A’)

insert into grade values(80,89,’B’)

insert into grade values(70,79,’C’)

insert into grade values(60,69,’D’)

insert into grade values(0,59,’E’)

--现查询所有同学的Sno、Cno和rank列。

select sno,cno,

(case when degree between 90 and 100 then 'A'

when degree between 80 and 89 then 'B'

when degree between 70 and 79 then 'C'

when degree between 60 and 69 then 'D'

when degree between 0 and 59 then 'E'

END) as rank from score;

-- 19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。

select * from score where cno='3-105'and degree>(select degree from score where sno='109' and cno='3-105');

-- 20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。

select * from score where sno in--选学多门课程的同学中分数为非最高分成绩的同学的全记录

(select sno from score group by sno having count(cno)>1--选学多门课程的同学

intersect--取交集为选学多门课程的同学中分数为非最高分成绩的同学。

select distinct sno from score where sno not in( --分数为非最高分成绩的同学

select sno from score where degree=(select max(degree) from score)))--分数最高成绩的同学

-- 21、查询score中选学多门课程的同学中分数为非同课程最高分成绩的记录。

方法1:select * from score where sno in--选学多门课程的同学中分数为非同课程最高分成绩的同学的全记录

(select sno from score group by sno having count(cno)>1--选学多门课程的同学

intersect--取交集为选学多门课程的同学中分数为非同课程最高分成绩的同学。

select distinct sno from score where sno not in(--非同课程分数最高成绩的同学

select distinct sno from score where degree in (--同课程分数最高成绩的同学

select max(degree)from score group by cno)))--同课程分数最高成绩

方法2:select * from score where sno in--选学多门课程的同学中分数为非同课程最高分成绩的同学的全记录

(select sno from score group by sno having count(cno)>1-- 选学多门课程的同学

intersect -- 取交集为选学多门课程的同学中分数为同课程非最高分成绩的同学

select distinct sno from score where sno not in -- 选出非同课程最高分成绩的同学

(select distinct sno from score as s1

where degree=(select max(degree) from score as s2 where https://www.doczj.com/doc/4c15711670.html,o=https://www.doczj.com/doc/4c15711670.html,o group by cno)));-- 使用关联子查询选出同课程最高分成绩的同学

-- 22、查询1975年之后出生的学生的所学课程以及成绩。

select sname,Cname,degree from student

join score on student.sno=score.sno

join course on https://www.doczj.com/doc/4c15711670.html,o=https://www.doczj.com/doc/4c15711670.html,o

where sbirthday>='1975-01-01';

-- 23、查询和学号为107的同学同年出生的所有学生的Sno、Sname和Sbirthday列。

select sno,sname,sbirthday from student where

datepart(year,sbirthday)=

(select datepart(year,sbirthday) from student where sno='107')--学号为107的同学的出生年份

and sno not in('107');--排除学号为107的同学

-- 24、查询“张旭”教师任课的学生成绩。

select degree from score where cno=

(select cno from course

join teacher on teacher.tno=course.tno

where tname='张旭');--张旭老师所任课程

-- 25、查询选修某课程的同学人数多于5人的教师姓名。

select tname from teacher

join course on teacher.tno=course.tno

where cno in (select cno from score

group by cno having count(*)>5);-- 多于5名同学选修的课程

-- 26、查询95033班和95031班全体学生的记录。

select * from student where class in('95033','95031');

-- 27、查询存在有85分以上成绩的课程Cno.

select distinct cno from score where degree>85;

-- 28、查询出“计算机系”教师所教课程的成绩表。

select https://www.doczj.com/doc/4c15711670.html,o,degree from score

join course on https://www.doczj.com/doc/4c15711670.html,o=https://www.doczj.com/doc/4c15711670.html,o

where tno in

(select tno from teacher where depart='计算机系');--计算机系教师的教师编号

-- 29、查询“计算机系”与“电子工程系”不同职称的教师的Tname和Prof。

select tname,prof from teacher where depart in('计算机系','电子工程系')--“计算机系”与“电子工程系”所有教师Tname和Prof

and prof not in --“计算机系”与“电子工程系”不同职称的教师Prof

(select prof from teacher where depart ='计算机系'

intersect

select prof from teacher where depart ='电子工程系')--“计算机系”与“电子工程系”相同职称的教师Prof

-- 30、查询选修编号为“3-105“课程且成绩至少高于一个选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。

select cno,sno,degree from score where

cno='3-105'--选修编号为“3-105”课程的同学

and degree>any -- 大于任意一个选修编号为“3-245”的同学的成绩

(select degree from score where cno='3-245')--选修编号为“3-245”

的同学的成绩

order by degree desc

-- 31、查询选修编号为“3-105“课程且成绩高于所有选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。

select cno,sno,degree from score where

cno='3-105'--选修编号为“3-105”课程的同学

and degree>all -- 大于所有选修编号为“3-245”的同学的成绩

(select degree from score where cno='3-245')--选修编号为“3-245”

的同学的成绩

order by degree desc

-- 32、查询所有教师和同学的name、sex和birthday.

select sname as name,ssex as sex,sbirthday as birthday from student

union

select tname as name,tsex as sex,tbirthday as birthday from teacher

-- 33、查询所有“女”教师和“女”同学的name、sex和birthday. select sname as name,ssex as sex,sbirthday as birthday from student where ssex='女'

union

select tname as name,tsex as sex,tbirthday as birthday from teacher where tsex='女'

-- 34、查询成绩比该课程平均成绩低的同学的成绩表。

select * from score as s1 where degree<

(select avg(degree) from score as s2 group by cno having https://www.doczj.com/doc/4c15711670.html,o=https://www.doczj.com/doc/4c15711670.html,o)

-- 35、查询所有任课教师的Tname和Depart.

select tname,depart from teacher where tno in

(select tno from course)-- 课程表中存在的教师编号

-- 36、查询所有未讲课的教师的Tname和Depart.

数据库练习题答案

第四章练习题 一、选择题 1、设有两个关系R(A,B)和S(B,C),与下列SELECT语句 SELECT A,B FROM R WHERE B NOT IN(SELECT B FROM S WHERE C='C56'); 等价的关系代数表达式是 [ C] A.πA,B(σC≠'C56'(R?S))B.πA,B(R ? S) C≠'C56' C.R-πA,B(σC= 'C56'(R?S))D.R-πA,B(σC≠'C56'(R?S)) 2、嵌入式SQL的预处理方式,是指[ B] A.识别出SQL语句,加上前缀标识和结束标志 B.把嵌入的SQL语句处理成函数调用形式 C.对源程序进行格式化处理 D.把嵌入的SQL语句编译成目标程序 3、SQL中,“DELETE FROM 表名”表示 [ A] A.从基本表中删除所有元组B.从基本表中删除所有属性 C.从数据库中撤消这个基本表D.从基本表中删除重复元组 4、SQL中,聚合函数COUNT(列名)用于[ C] A.计算元组个数B.计算属性的个数 C.对一列中的非空值计算个数D.对一列中的非空值和空值计算个数 5、在传统SQL技术中,使用“ORDER BY”子句的SELECT语句查询的结果,实际上为 [ B] A.数组 B.列表 C.包 D.集合 6、在数据库中,能提高查询速度的是(C ) A. 数据依赖 B. 视图 C. 索引 D. 数据压缩 7、语句 delete from sc 表明( A ) A. 删除sc中的全部记录 B. 删除基本表sc C. 删除基本表sc中的列数据 D. 删除基本表sc中的部分行 8、在DB应用中,一般一条SQL 语句可产生或处理一组记录,而DB主语言语句一般一次只能处理一条记录,其协调可通过( B )实现。 A. 指针 B. 游标 C. 数组 D. 栈 9、在下列基本表的定义中,数值5表示( C ) CREATE TABLE student (Sno char(5) not null unique,Sname char(2)); A. 表中有5条记录 B. 表中有5列 C. 表中字符串Sno 的长度 D. 表格的大小 10、在视图上不能完成的操作是( C )

数据库SQL语句

1、select x.商品代号,分类名,数量,品牌 From 商品表现1 x,商品表2 y Where x.商品代号=y.商品代号 (从商品库中查询出每一种商品的商品代号、分类名、数量和品牌等信息。)2、select distinct 产地 From商品表2 (从商品库中查询出所有商品的不同产地。) 3、select distinct 品牌 From 商品表2 (从商品库中查询出所有商品的不同品牌) 4、select count(distinct产地)as产地数From商品表2 (从商品库中查询出所有商品的不同产地的总数。) 5、select x.商品代号,分类名,产地,品牌 From商品表1 x.,商品表2 y Where x,商品代号=y.商品代号and (品牌=‘熊猫’or品牌=‘春兰’) (从商品库中查询出品牌为熊猫或春兰的所有商品的商品代号、分类名、产地和品牌。) 19、select 商品表1.商品代号,单价,数量,产地 From 商品表1,商品表2 Where 商品表达式1.商品代号=商品表达式2.商品代号 (从商品库中查询出每种商品的商品代号、单价、数量和产地。) 20、select count(*) From 商品表1 Where数量》10 (从商品库中查询出数量大于10的商品种数。) 21、select * From商品表1 Where数量between 10 and20 (从商品库中查询出数量在10和20之间的所有商品。) 22、select分类名,max(单价)as最高单价 From商品表1 Group by 分类名 (从商品库中查询出每类(即类名相同)商品的最高单价)23、select分类名,avg(数量)as平均 数量 From商品表1 Group by分类名 (从商品库中查询出每类(即分类名相 同)商品的平均数量) 24、select分类名,sum(数量)as总 数量 From商品表1 Group by分类名 (从商品库中查询出每类(即分类名相 同)商品的总数量。) 25、select* From商品表1 Where单价>all(select单价 From商品表1 Where分类名’电视机’) (从商品库中查询出比所有电视机的 单价都高的每种商品) 26、select* From商品表1 Where单价>all(select avg(单价) From商品表1) (从商品库中查询出比所有商品单价 的平均值要高的全部商品) 27、select* From商品表1 Where数量=some(select max(数量) From商品表1) (从商品库中查询出数量最多的一种 商品) 28、select distinct分类名 From商品表1. Group by 分类名having count(*)>1 (从商品库中查询出同一类商品多于一 种的所有分类名) 29、select商品表1.*,产地 From商品表1,商品表2 Where商品表1.商品代号=商品表2.商 品代事情and产地in( Select 产地 From商品表1 x ,商品表2 y Where x.商品代号=y.商品代号 Group by产地having count(*)=1) (从商品库中查询出同一产地的商品 只有一种的所有商品) 30、select*,单价*数量as总价值 From商品表1 Order by总价值desc (从商品库中查询出每种商品的总价 值,并按降序排列出来 6、select 学生。学生号,count(*)as选 课门数 From学生,选课 Where学生.学生号=选课.学生号 Group by 学生。学生号 (从教学库中查询出互个学生选课的 门数。) 7、select distinct x.* From 学生产x,选课y,选课z Where y.学生号=z.学生号and y .课程 号<>z.课程号and x.学生号=y.学生号 (从教学库中查询出至少选修了两门 课程的全部学生。) 8、select * From 学生 Where 学生号in (select 学生号 From 选课 Group by 学生号having coount (*)=1) (从教学库中查询出只选修了一门课 程的全部学生。) 9、select x.学生号,y.学生号,y.课程号 From 选课x,选课y Where x.学生号=@sl and y.学生号=@ s2 and x.课程号=y.课程号 (从教学库中查询出学生号为@s1的学 生和学生号为@s2的学生所选修的共 同课程的课程号。) 10、select x.* From 课程x,选课y Where x.课程号=y.课程号and y .学生 号=@s1 and y.课程号not in( select 课程号 from 选课 where 选课.学生号=@s2) (从教学库中查询出学生号为@S1的学 生所选修、而学生号为@s2的学生没有 选修的全部课程。) 11、select * From 课程 Where not exists( select * from 选课 where 课程.课程号=选课.课程号) (从教学库中查询出所有未被学生选 修的课程。) 12、select * From 课程 Where exists(Select * From 选课 Where 课程.课程号=选课.课程号) (从教学库中查询出所有已被学生选 修的课程。)

第三章 SQL语言练习题和答案

第三章SQL语言 一、选择题 1. SQL语言是(B )的语言,容易学习。 A.过程化 B. 非过程化 C.格式化 D. 导航式 2. SQL语言的数据操纵语句包括SELECT、INSERT、UPDATE、DELETE等。其中最重要的,也是使用最频繁的语句是(A)。 A. SELECT B. INSERT C. UPDATE D. DELETE 3. 在视图上不能完成的操作是()。 A. 更新视图 B. 查询 C. 在视图上定义新的表 D. 在视图上定义新的视图 4. SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功能()。 A. 数据查询 B. 数据操纵 C. 数据定义 D. 数据控制 5. SQL语言中,删除一个视图的命令是()。 A.DELETE B.DROP C.CLEAR D.REMOVE 6. 在SQL语言中的视图VIEW是数据库的()。 A. 外模式 B. 模式 C. 内模式 D. 存储模式 7. 下列的SQL语句中,()不是数据定义语句。 A. CREATE TABLE B. DROP VIEW C. CREATE VIEW D. GRANT 8. 若要撤销数据库中已经存在的表S,可用()。 A. DELETE TABLE S B. DELETE S C. DROP TABLE S D. DROP S 9. 若要在基本表S中增加一列CN(课程名),可用()。 A.ADD TABLE S(CN CHAR(8)) B.ADD TABLE S ALTER(CN CHAR(8)) C.ALTER TABLE S ADD(CN CHAR(8)) D.ALTER TABLE S (ADD CN CHAR(8)) 10. 学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。要在表S中删除一个属性“年龄”,可选用的SQL语句是()。 A. DELETE Age from S B. ALTER TABLE S DROP Age C. UPDATE S Age D. ALTER TABLE S ‘Age’ 11. 有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄,C#是课程号,CNAME是课程名称。要查询选修“ACCESS”课的年龄不小于20的全体学生姓名的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句。这里的WHERE子句的内容是()。

sql语句大全1

SQL语句大全 --语句功能 --数据操作 SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 --数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域 --数据控制 GRANT --授予用户访问权限 DENY --拒绝用户访问 REVOKE --解除用户访问权限 --事务控制 COMMIT --结束当前事务 ROLLBACK --中止当前事务 SET TRANSACTION --定义当前事务数据访问特征--程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标 FETCH --检索一行查询结果 CLOSE --关闭游标 PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句 DESCRIBE --描述准备好的查询

学生选课数据库SQL语句练习题(详细分解答案)

学生选课数据库SQL语句练习题(详细分解答案)

一、设有一数据库,包括四个表:学生表(Student)、课程表 (Course)、成绩表(Score)以及教师信息表(Teacher)。 四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。 表1-1数据库的表结构 表(一)Student 含义 属性名数据类型可否为 空 Sno Char(3) 否学号(主键) Sname Char(8) 否学生姓名 Ssex Char(2) 否学生性别 Sbirthday datetime 可学生出生年 月 Class Char(5) 可学生所在班 级 表(二)Course 含义 属性名数据类型可否为 空 Cno Char(5) 否课程号(主 键) Cname Varchar(10) 否课程名称 Tno Char(3) 否教师编号(外 键) 表(三)Score 含义 属性名数据类型可否为 空 Sno Char(3) 否学号(外键) Cno Char(5) 否课程号(外 键) Degree Decimal(4,1) 可成绩

主码:Sno+ Cno 表(四)Teacher 含义 属性名数据类型可否为 空 Tno Char(3) 否教师编号(主 键)Tname Char(4) 否教师姓名Tsex Char(2) 否教师性别Tbirthday datetime 可教师出生年 月 Prof Char(6) 可职称Depart Varchar(10) 否教师所在部 门 表1-2数据库中的数据 表(一)Student Sno Sname Ssex Sbirthday class 108 曾华男1977-09-01 95033 105 匡明男1975-10-02 95031 107 王丽女1976-01-23 95033 101 李军男1976-02-20 95033 109 王芳女1975-02-10 95031 103 陆君男1974-06-03 95031 表(二)Course Cno Cname Tno 3-105 计算机导论825 3-245 操作系统804 6-166 数字电路856

数据库图书信息管理数据库SQL语句

实验 SQL语言 一、实验目的 1、理解数据库以及数据表的设计; 2、熟悉SQL Server2005中的数据类型; 3、熟悉使用SQL语句创建和删除模式和索引; 4、掌握使用SQL语句创建、修改和删除数据表; 5、掌握使用SQL语句查询表中的数据; 6、掌握使用SQL语句插入、修改和删除数据表中的数据; 7、掌握使用SQL语句创建、删除、查询和更新视图。 二、实验容 (一)创建数据库和模式 1、通过SQL语句创建图书信息管理数据库,命名为“db_Library”,数据文件和日志文件放在D盘下以自己学号和命名的文件夹中,数据文件的逻辑名为db_Library_data,数据文件的操作系统名为db_Library_data.mdf,文件初始大小为10MB,最大可增加至300MB,增幅为10%;日志文件的逻辑名为db_Library_log,日志文件的操作系统名为db_Library_data.ldf,文件初始大小为5MB,最大可增加至200MB,增幅为2MB。 2、通过SQL语句在该数据库中创建模式L-C。 (二)创建和管理数据表 要求为各数据表的字段选择合适的数据类型及名称;为各数据表设置相应的完整性约束条件。 1、通过SQL语句将以下数据表创建在L-C模式下: 课程信息表(tb_course)——课程编号Course number 、课程名Course name 、先修课The first course 、学分credit 2、通过SQL语句将以下数据表创建在该数据库的默认模式dbo下: 图书类别信息表(tb_booktype)——类别编号Type number 、类别名称Category name 图书信息表(tb_book)——图书编号ISBN 、类别编号Type number、书名title 、作者author、BookPublic、定价BookPrice、库存数Inventory number 读者信息表(tb_reader)——读者编号Reader ID 、、性别、学号Student ID 、班级、系部pastern 借阅信息表(tb_borrow)——图书编号、读者编号、借阅日期Borrowing date 、归还日期Return date 3、通过SQL语句对读者信息表进行修改:删除系部字段、添加所在系字段。 4、通过SQL语句对图书信息表进行修改:将定价的数据类型改为REAL。 5、通过SQL语句删除课程信息表。 (三)创建和删除索引 1、使用SQL语句在图书信息表上创建一个非聚簇索引IX_S_QUANTITY,要求按照该表中库存数字段的降序创建。 2、使用SQL语句在读者信息表上创建一个唯一的非聚簇索引IX_S_NAME,要求按照该表中的字段的升序创建。 3、使用SQL语句删除之前创建的两个索引。 (四)数据库及数据表设计

sql语句练习题及答案

一在数据库 school 中建立student , sc, course 表。 学生表、课程表、选课表属于数据库School ,其各自的数据结构如下:学生Student (Sno,Sname,Ssex,Sage,Sdept) 课程表course(Cno,Cname,Cpno,Ccredit) 学生选课SC(Sno,Cno,Grade) 二设定主码 1 Student表的主码:sno 2 Course表的主码:cno 3 Sc表的主码:sno,cno 1写出使用 Create Table 语句创建表 student , sc, course 的SQL语句2 3 删除student表中的元组 4在数据库school中删除关系student 5在student表添加属性sbirthdate 类型datetime

Delete 1 删除所有JSJ 系的男生delete from Student where Sdept=’JSJ’ and Ssex=’男’; 2 删除“数据库原理”的课的选课纪录 delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’); Update 1 修改0001 学生的系科为: JSJ 2 把陈小明的年龄加1岁,性别改为女。 2 修改李文庆的1001课程的成绩为9 3 分 3 把“数据库原理”课的成绩减去1分 Select 查询语句 一单表 1查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。 2查询姓名中第2个字为“明”字的学生学号、性别。 3查询 1001课程没有成绩的学生学号、课程号 4查询JSJ 、SX、WL 系的年龄大于25岁的学生学号,姓名,结果按系排列 5按10分制查询学生的sno,cno,10分制成绩 (1-10分为1 ,11-20分为2 ,30-39分为3,。。。90-100为10) 6查询 student 表中的学生共分布在那几个系中。(distinct) 7查询0001号学生1001,1002课程的成绩。 二统计 1查询姓名中有“明”字的学生人数。 2计算‘JSJ’系的平均年龄及最大年龄。 3查询学生中姓名为张明、赵英的人数 4计算每一门课的总分、平均分,最高分、最低分,按平均分由高到低排列 5 计算 1001,1002 课程的平均分。 6 查询平均分大于80分的学生学号及平均分 7 统计选修课程超过 2 门的学生学号 8 统计有10位成绩大于85分以上的课程号。 9 统计平均分不及格的学生学号 10 统计有大于两门课不及格的学生学号 三连接 1查询 JSJ 系的学生选修的课程号 2查询选修1002 课程的学生的学生姓名 (不用嵌套及嵌套2种方法) 3查询数据库原理不及格的学生学号及成绩 4查询选修“数据库原理”课且成绩 80 以上的学生姓名(不用嵌套及嵌套2种方法) 5查询平均分不及格的学生的学号,姓名,平均分。 6查询女学生平均分高于75分的学生姓名。 7查询男学生学号、姓名、课程号、成绩。(一门课程也没有选修的男学生也要列出,不能

数据库经典SQL语句大全

数据库经典SQL语句大全 篇一:经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk','testBack', 'c:mssql7backupMyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2? from tab_old definition only 5、说明: 删除新表: tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(col) 说明: 删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col?.) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。

数据库SQL语句练习题含答案

SQL语句练习 练习5. 1. 2: 基于不断滚动的电影数据库的实例: Movie( 电影名title,拍摄年代year ,长度length, inColor ,制片厂名studioName, 制片人证书号producerC# ) StarsIn(电影名movieTitle,拍摄年份movieYear ,影星名starName) MovieStar (姓名name,地址address,性别gender ,生日birthdate) MovieExec( 姓名name,地址address ,证书号cert # ,净资产netWorth ) Studio(姓名name, 地址address,总裁证书号presC# ) 请写出下列SQL 查询语句: * ( a) 找出米高梅制片公司(MGM studios)的地址。 SELECT address AS Studio_Address FROM Studio WHERE name = 'MGM'; ( b) 找出桑德拉·布洛克( Sandra Bullock ) 的出生日期( birthdate) 。SELECT birthdate AS Star_Birthdate FROM MovieStar WHERE name = 'Sandra Bullock'; * ( c) 找出在1980 年拍摄过电影的所有影星, 或者拍摄过电影名中含有“Love”的电影的所有影星。 SELECT starName FROM StarsIn WHERE movieYear = 1980 OR movieTitle LIKE '%Love%'; ( d) 找出净资产至少1 000 万美元的所有行政长官。

数据库基本SQL语句大全

数据库基本SQL语句大全 数据库基本----SQL语句大全 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1、d at' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 typ e2 [not null],、、) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definit ion only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的就是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col…、) 删除索引:drop index idxname 注:索引就是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement

数据库期末考试复习题(附答案)

数据库期末考试复习题(附答案) 数据库系统概论 2011年期末考试复习题 一、选择题 ? 第(1)至(3)题基于以下的叙述:有关系模式A(C,T,H,R,S),基中各属性的含义是: ? C:课程T:教员H:上课时间R:教室S:学生 ? 根据语义有如下函数依赖集:? F={C→T,(H,R)→C,(H,T)→R,(H,S)→R} ? 1、关系模式A的码是(D) ? A. C B. (H,R)C.(H,T)D.H,S) ? 2、关系模式A的规范化程度最高达到(B) ? A. 1NF B. 2NF C. 3NFD. BCNF ? 3、现将关系模式A分解为两个关系模式A1(C,T),A2(H,R,S),则其中A1的规范化程度达到(D) ? A. 1NF B. 2NF C. 3NF D. BCNF ? 4.设有关系R(A,B,C)和S(C,D)。与SQL语句? select A,B,D from R,S where R.C=S.C ? 等价的关系代数表达式是(B) ? A. σR.C=S.C(πA,B,D(R×S)) ? B. πA,B,D(σR,C= S.C (R×S)) ? C. σR.C=S.C((πA,B R)×(πDS)) ? D. σR,C=S.C(πD((πA,BR)×S) ? 5、设关系R和关系S的元数分别是3和4,关系T是R与S的广义笛卡尔积,即:T=R×S,则关系T的元数是(C) ? A. 7 B. 9 C. 12 D. 16 ? 6、数据库设计阶段分为(B) ? A. 物理设计阶段、逻辑设计阶段、编程和调试阶段 ? B. 概念设计阶段、逻辑设计阶段、物理设计阶段、实施和调试阶段 ? C. 方案设计阶段、总体设计阶段、个别设计和编程阶段 ? D. 模型设计阶段、程序设计阶段和运行阶段 ? 7、设U是所有属性的集合,X、Y、Z都是U的子集,且Z=U-X-Y。下面关于多值依赖的叙述中,不正确的是(C) ? A. 若X→→Y,则X→→Z B. 若X→Y,则X→→Y ? C. 若X→→Y,且Y′?Y,则X→→Y′ D. 若Z=Φ,则X→→Y ? 8、查询优化策略中,正确的策略是(D) A.尽可能早地执行笛卡尔积操作B.尽可能早地执行并操作 C.尽可能早地执行差操作D.尽可能早地执行选择操作 ? 9、语句delete from sc 表明(A) A. 删除sc中的全部记录 B. 删除基本表sc? C. 删除基本表sc中的列数据 D. 删除基本表sc中的部分行 ? 10、在DB应用中,一般一条SQL 语句可产生或处理一组记录,而DB主语言语句一般一次只能处理一条记录,其协调可通过哪种技术实现(B) ? A. 指针 B. 游标 C. 数组 D. 栈 11、五种基本关系代数运算是( A ) ? A. ∪,-,×,π和σ B. ∪,-,?,π和σ

数据库SQL语句实验报告

《数据库原理及应用》实验报告SQL语句部分 :绩成总

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 2.创建学生关系表S : 3.创建课程关系表C : 课程名学分先行课课程号Cno ccreditCname Cpno 4.创建课程关系表SC : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 ; Studend create database2.创建学生关系表S : S create table(, 9Sno CHAR()PRIMARYKEY UNIQUE,)(Sname CHAR20CHAR Ssex (2), smallint Sage ,

char Sdept 20(), ); .创建课程关系表C 3: 课程号课程名先行课学分 ccredit Cpno CnoCname table C create (primary key,) Cno char(4Cname CHAR(40 ),char(), 4Cpno ,Ccredit SMALLINT); 4.创建课程关系表SC : 学号课程号成绩 grade Sno Cno createtable SC(9),Sno char(),char Cno (4, Grade smallint); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 ;datetimeadd Sbirthday alter table S 7、删除表S的“年龄”属性列。

Oracle的sql语句练习题含复习资料

Oracle的sql语句练习题含答案(二)Oracle_SQL练习题1 1.选择部门30中的所有员工. 2.列出所有办事员(CLERK)的姓名,编号和部门编号. 3.找出佣金高于薪金的员工. 4.找出佣金高于薪金的60%的员工. 5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料. 6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料. 7.找出收取佣金的员工的不同工作. 8.找出不收取佣金或收取的佣金低于100的员工. 9.找出各月倒数第3天受雇的所有员工. 10.找出早于12年前受雇的员工. 11.以首字母大写的方式显示所有员工的姓名. 12.显示正好为5个字符的员工的姓名. 13.显示不带有"R"的员工的姓名. 14.显示所有员工姓名的前三个字符. 15.显示所有员工的姓名,用a替换所有"A" 16.显示满10年服务年限的员工的姓名和受雇日期. 17.显示员工的详细资料,按姓名排序. 18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面. 19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序. 20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面. 21.显示在一个月为30天的情况所有员工的日薪金,忽略余数. 22.找出在(任何年份的)2月受聘的所有员工。 23.对于每个员工,显示其加入公司的天数. 24.显示姓名字段的任何位置包含"A"的所有员工的姓名. 25.以年月日的方式显示所有员工的服务年限. 答案: 1.select ename,job,mgr,hiredate,sal,comm ,deptno from emp where deptno=30; 2.select ename,empno,deptno from emp where job='CLERK'; 3.select * from emp where comm>sal; 4.select * from emp where comm>sal*0.6; 5.select empno ,ename, job,hiredate,sal,comm,deptno from emp where( job='MANAGER' and deptno=10) or( job='CLERK' and deptno=20); 6.select empno,ename,job, hiredate,sal, deptno from emp where ( job='MANAGER' and deptno=10) or( job='CLERK' and deptno=20) or((job <>'MANAGER' and job<>'CLERK') and sal>=2000);

数据库SQL语句大全

SQL语句大全--语句功能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 -数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引 DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器 CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域 --数据控制 GRANT --授予用户访问权限 DENY --拒绝用户访问 REVOKE --解除用户访问权限 --事务控制 COMMIT --结束当前事务 ROLLBACK --中止当前事务 SET TRANSACTION --定义当前事务数据访问特征 --程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标

SQL语句练习及答案

sql语句练习题1 数据库有如下四个表格: student(sno,sname,sage,ssex,sdpt) 学生表 系表(dptno,dname) course(cno,cname, gradet, tno) 课程表 sc(sno,cno,score) 成绩表 teacher(tno,tname) 教师表 要求:完成以下操作 1.查询姓"欧阳"且全名为三个汉字的学生的姓名。 select sname from student where sname like “欧阳__?; 2.查询名字中第2个字为"阳"字的学生的姓名和学号。 select sname,sno from student where sname like '_阳%';3.查询所有不姓刘的学生姓名。 select sname,sno,ssex from student where sname not like “刘%”; 4.查询db_design课程的课程号和学分。 select cno,ccredit from course where cname like 'db_design' 5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。 select * from course where cname like 'db%i_ _'; 6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查 询缺少成绩的学生的学号和相应的课程号。

select sno,cno from sc where grade is null; 7.查所有有成绩的学生学号和课程号。 select sno,cno from sc where grade is not null; 8.查询计算机系年龄在20岁以下的学生姓名。 select sname from student where sdept= 'cs' and sage<20; 9.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。 select sno, grade from sc where cno= ' 3 ' order by grade desc;10.查询学生总人数。 select count(*) from student; 11.查询选修了课程的学生人数。 select count(distinct sno) from sc; 12.计算1号课程的学生平均成绩。 select avg(grade) from sc where cno= ' 1 '; 13.查询选修1号课程的学生最高分数。 select max(grade) from sc where cno= ' 1 '; 14.查询学生200215012选修课程的总学分数。 select sum(grade) from sc,course where sno= ' 200215012 ' and https://www.doczj.com/doc/4c15711670.html,o=https://www.doczj.com/doc/4c15711670.html,o;

学生选课数据库SQL语句练习题(附详细分解答案)

一、设有一数据库,包括四个表:学生表(Student)、课程表 (Course)、成绩表(Score)以及教师信息表(Teacher)。 四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。 表1-1数据库的表结构 表(一)Student 属性名数据类 型可否为 空 含义 Sno Char(3) 否学号(主 键)Sname Char(8) 否学生姓名Ssex Char(2) 否学生性别Sbirthday datetime 可学生出生年 月 Class Char(5) 可学生所在班 级 表(二)Course 属性名数据类型可否为 空 含义Cno Char(5) 否课程号(主 键)Cname Varchar(10) 否课程名称Tno Char(3) 否教师编号 (外键) 表(三)Score 属性名数据类型可否为 空 含义Sno Char(3) 否学号(外 键) Cno Char(5) 否课程号(外

键)Degree Decimal(4,1) 可成绩 主码:Sno+ Cno 表(四)Teacher 属性名数据类型可否为 含义 空 Tno Char(3) 否教师编号 (主键)Tname Char(4) 否教师姓名Tsex Char(2) 否教师性别Tbirthday datetime 可教师出生年 月 Prof Char(6) 可职称Depart Varchar(10) 否教师所在部 门 表1-2数据库中的数据 表(一)Student Sno Sname Ssex Sbirthday class 108 曾华男1977-09- 95033 01 105 匡明男1975-10- 95031 02 107 王丽女1976-01- 95033 23 95033 101 李军男1976-02- 20 95031 109 王芳女1975-02- 10 95031 103 陆君男1974-06- 03 表(二)Course

SQL数据库语句总结

数据库 T-SQL语句 1、创建数据库create database 数据库名 2、选择数据库use 数据库名 3、删除数据库drop database 数据库名 用SSMS 1、创建数据库 2、查看可修改数据库参数 3、删除数据库 基本表(仅仅是对表结构(属性和约束)的操作,而非表中数据) T-SQL语句 1、创建基本表<重在约束> 2、修改基本表(约束或属性) 3、删除基本表 4、基本表的索引 用SSMS 1、创建基本表(课本137) 2、建立表的约束条件和索引(课本138) 3、修改表结构(课本141) 1、创建基本表<重在约束> 数据(是对表中数据(属性和约束)的操作(增删改查),而非表结构) T-SQL语句 1、数据插入 2、数据修改 3、数据删除 4、数据查找 视图 T-SQL语句 1、建立视图 2、删除视图 3、查询视图 4、更新视图 用SSMS(课本167) 1、建立视图 2、删除视图 3、查询视图 4、更新视图 别名 可能破坏参照完整性的情况及违约处理 In和exist的区别 1、创建基本表<重在约束> CREATE TABLE [〈库名〉]〈表名〉(

〈列名〉〈数据类型〉[〈列级完整性约束条件〉] , 〈列名〉〈数据类型〉[〈列级完整性约束条件〉]] [,…n] [,〈表级完整性约束条件〉] [,…n] ) 针对属性值设置的限制条件《列级》 1) NOT NULL或NULL约束。NOT NULL约束不允许字段值为空,而NULL约束允许字段值为空。 2) UNIQUE约束。惟一性约束,即不允许列中出现重复的属性值。 3)PRIMARAY KEY [CLUSTERED|NON CLUSTERED]:定义该字段为主码并建立聚集(非)索引 Not null unique和primary key的区别:DBMS会给primary key建立索引 多个属性构成的主码只能通过表级约束条件定义PRIMARY KEY (Sno,Cno) 单个属性构成的主码可通过列级或表级约束条件定义Sno CHAR(9) PRIMARY KEY 或PRIMARY KEY (Sno) 4) DEFAULT约束。默认值约束。DEFAULT〈约束名〉〈默认值〉FOR〈列名〉 5) CHECK约束。检查约束。CONSTRAINT〈约束名〉CHECK (〈约束条件表达式〉) 单一属性设限 CONSTRAINT C2 CHECK(性别IN (‘男’,‘女’)) CONSTRAINT C3 CHECK(成绩BETWEEN 0 AND 100) CHECK (Sage < 30) 多属性之间设限 CHECK (Ssex='女' OR Sname NOT LIKE 'Ms.%') ?性别是女性的元组都能通过该项检查,因为Ssex=‘女’成立; ?当性别是男性时,要通过检查则名字一定不能以Ms.打头 6)identity(初值,步长):定义字段为数值型数据,并指出它的初始值和逐步增加的步长值 7)reference 参照表(对应字段):定义该字段为外码,并指出被参照表及对应字段 涉及到关系中一个或多个列或表间的限制条件《记录/字段》《表级》 格式:CONTRAINT〈约束名〉<约束式> Sname CHAR(20) CONSTRAINT C2 NOT NULL 1) UNIQUE约束。惟一性约束。 2) PRIMARY KEY[CLUSTERED|NON CLUSTERED]定义主码,保证惟一性和非空性。建立聚集(非)索引。 CONTRAINT〈约束名〉PRIMARY KEY [CLUSTERED] (〈列组〉) 3)check(条件表达式):定义记录应满足的条件 4) FOREIGN KEY约束。用于定义参照完整性。 CONTRAINT〈约束名〉FOREIGN KEY(〈外码〉) REFERENCES〈被参照表名〉(〈与外码 对应的主码名〉) 2、修改基本表(约束或属性) ALTER TABLE〈表名〉 [alter column(〈列名〉〈新类型〉[完整性约束] [,…n])]修改字段定义或约束条件 [ADD(〈新列名〉〈数据类型〉[完整性约束] [,…n])]增加字段或者字段和表的约束 [DROP〈完整性约束名〉]删除字段或约束 {check|nocheck}constraint{all|约束名组}使约束有效或无效(check使之有效,nocheck使 之无效,all指全部约束)

相关主题
文本预览
相关文档 最新文档