文档库 最新最全的文档下载
当前位置:文档库 › (完整版)sql练习题+答案

(完整版)sql练习题+答案

(一) 新建以下几个表

student(学生表):

其中约束如下:

(1)学号不能存在相同的

(2)名字为非空

(3)性别的值只能是’男’或’女’

(4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系

(5)出生日期为日期格式

(6)年龄为数值型,且在0~100之间

cs(成绩表):

其中约束如下:

(1)sno和cno分别参照student和course表中的sno,cno的字段

(2)cj(成绩)只能在0〜100之间,可以不输入值

create table cs (

sno smallint not null references

student ( sno ), ----定义成外键

cno smallint not null references

course ( cno ), ----定义成外键

cj smallint constraint e check (cj between

0 and 100 ),---- 检查约束一—j(成绩)只能在~100

之间,可以不输入值

constraint f primary key ( sno , cno )---- 定

义学生学号和课程号为sc表的主键

)

course(课程表)

其约束如下:

(1)课程号(cno)不能有重复的

(2)课程名(cname非空

(三)针对学生课程数据库查询

(1)查询全体学生的学号与姓名。

Select sno , sname from student

(2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。

(3)查询全体学生的详细记录。

select * from student

(4)查全体学生的姓名及其出生年份。

select sname , birth from student

(5)查询学校中有哪些系。

select distinct dept from student

(6)查询选修了课程的学生学号。

select sno from cs where eno is not null

(7)查询所有年龄在20岁以下的学生姓名及其年龄。

select sname , age from student where age < 20

(8)查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。

(9)查询年龄不在20~23岁之间的学生姓名、系别和年龄。

(10)查询信息系、数学系和计算机科学系生的姓名和性别。

(11)查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。

(12)查询所有姓刘学生的姓名、学号和性别。

(13)查询学号为2009011的学生的详细情况。(具体的学号值根据表中数据确定)

select * from student where sno =5

(14)查询姓“欧阳”且全名为三个汉字的学生姓名

(15)查询名字中第2个字为“晨”字的学生的姓名和学号

(16)查询所有不姓刘的学生姓名。

(17)查询sql课程的课程号和学分

(18)查询以"DB_"开头,且倒数第3个字符为i的课程的详细情况。

(19)查询缺少成绩的学生的学号和相应的课程号。

(20)查所有有成绩的学生学号和课程号。

(22)查询信息系、数学系和计算机科学系学生的姓名和性别。(使用多个条

件表达式)

select sname , sex from student where dept =' 信息系’or dept ='数学系’or dept ='计算机科学系

(23)查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。

(使用多个条件表达式)

(24)查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列select sno , cj from cs where eno =3 order by cj desc

(25)查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按

年龄降序排列。

(26)查询学生总人数。

select count (*) from student

(27)查询选修了课程的学生人数。

select count (sno ) from cs where cno is not null

(28)计算1号课程的学生平均成绩。

select avg ( cj ) from cs where cno = 1

(29)查询选修1号课程的学生最高分数。

select max( cj ) from cs where cno =1

(30)求各个课程号及相应的选课人数。

(31)查询选修了3门以上课程的学生学号。

select sno , count ( eno ) from es group by sno having count ( eno )> 3

(32)查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数。

select sno , count (eno ) as '课程数'from cs

where cj >90

group by sno having count ( eno )>= 3

(33)查询学生2006011选修课程的总学分。

select sum( course ) from course , cs where

course . eno =cs . sno and cs . sno =2006011

(34)查询每个学生选修课程的总学分。

(35)查询每个学生及其选修课程的情况。

select cs . sno , course .* from cs , course where cs . cno =course . cno

(36)查询选修2号课程且成绩在90分以上的所有学生的学号、姓名

select sno , sname from student where

sno =( select sno from cs where cno =2 and cj >90)

(37)查询每个学生的学号、姓名、选修的课程名及成绩

select

student .sno , sname , course . course , cs . cj

from student ,course ,cs where

student .sno =cs . sno and cs . cno =course . cno (38)查询与“刘晨”在同一个系学习的学生(分别用嵌套查询和连接查询)

')

连接查询

(39)查询选修了课程名为“信息系统”的学生学号和姓名

(40)查询其他系中比信息系任意一个(其中某一个)学生年龄小的学生姓名和年龄

(41) 查询其他系中比信息系所有学生年龄都小的学生姓名及年龄。分别用

ALL 胃词和集函数

----用 ALL select

sname , age from

student

where

age vail (select age ')

---- 聚合函数 from student where dept

='信息系

select sname ,age from student where age < (select min ( age ) from student

where

dept ='

信息系')

(42)查询所有选修了 1号课程的学生姓名。(分别用嵌套查询和连查询)

---- 嵌套查询

select sname from student where sno

in

(select sno

from cs where

cno =1)

---- 连接查询

select sname from student ,cs

where student

.sno =cs . sno

and cs . cno : =1

(43)查询没有选修1号课程的学生姓名

(44)查询选修了全部课程的学生姓名。

(45)查询至少选修了学生95002选修的全部课程的学生号码

select distinct sno from sc scx where not exists

(select * from cs scy where scy .sno ='95002' and not exists

(select * from sc scz where scz .sno =scx . sno and scz .cno =scy .cno ))

(46)查询计算机科学系的学生及年龄不大于19岁的学生的信息。

(47)查询选修了课程1或者选修了课程2的学生的信息。

(48)查询计算机科学系中年龄不大于19岁的学生的信息。

select * from student where age <= 19 and dept ='

计算机科学系'

(49)查询既选修了课程1又选修了课程2的学生的信息

select * from student where sno in(

select sno from cs where cno ='003' and sno in( select sno from cs where cno = '004'

))

---- 用exists 查询

select * from student where exists (

select * from cs where student .sno =cs . sno and cno ='003' and sno in(

select sno from cs where cno = '004'

))

(50)查询计算机科学系的学生与年龄不大于19岁的学生的差集。

select * from student where dept ='计算机科学系

'and age >19

(51)通过查询求学号为1学生的总分和平均分。

select sum( cj ) as '总分',avg ( cj )'平均分'from cs where sno =1

(52)求出每个系的学生数量

select dept , count (sno ) as '学生个数'from student group by dept

(53)查询平均成绩大于85的学生学号及平均成绩。

select sno , avg ( cj ) from cs group by sno having avg ( cj )> 85

(54)要求查寻学生的所有信息,并且查询的信息按照年龄由高到低排序,如果年龄相等,则按照学号从低到高排序

1.在SELECT 语句中DISTINCT、ORDER BY、GROUP BY 和HAVING 子句的功能各是什么?

答各子句的功能如下。

DISTINCT :查询唯一结果。

ORDER BY :使查询结果有序显示。

GROUP BY :对查询结果进行分组。

HAVING :筛选分组结果。

2.在一个SELECT 语句中,当WHERE 子句、GROUP BY子句和HAVING 子句同时出现在一个查询中时,SQL的执行顺序如何?

答其执行顺序如下:

(1)执行WHERE子句,从表中选取行。

(2)由GROUP BY对选取的行进行分组。

(3)执行聚合函数。

(4)执行HAVING子句选取满足条件的分组。

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.wendangku.net/doc/9f19139556.html,o=https://www.wendangku.net/doc/9f19139556.html,o;

sql练习题及答案

sql练习题及答案 SQL练习题及答案 SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。在数据库管理系统中,SQL被广泛应用于数据的查询、插入、更新和删除等操作。掌握SQL语言对于数据库开发和数据分析非常重要。在这篇文章中,我们将提供一些SQL练习题及其答案,帮助读者巩固和提升SQL的应用能力。 1. 查询员工表中所有员工的姓名和工资。 答案: ```sql SELECT 姓名, 工资 FROM 员工表; ``` 2. 查询员工表中工资大于5000的员工的姓名和工资。 答案: ```sql SELECT 姓名, 工资 FROM 员工表 WHERE 工资 > 5000; ``` 3. 查询员工表中工资在3000到5000之间的员工的姓名和工资。 答案: ```sql SELECT 姓名, 工资 FROM 员工表 WHERE 工资 BETWEEN 3000 AND 5000; ``` 4. 查询员工表中姓"张"的员工的姓名和工资。

```sql SELECT 姓名, 工资 FROM 员工表 WHERE 姓名 LIKE '张%'; ``` 5. 查询员工表中工资最高的员工的姓名和工资。 答案: ```sql SELECT 姓名, 工资 FROM 员工表 WHERE 工资 = (SELECT MAX(工资) FROM 员工表); ``` 6. 查询员工表中每个部门的员工数量。 答案: ```sql SELECT 部门, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门; ``` 7. 查询员工表中每个部门的平均工资。 答案: ```sql SELECT 部门, AVG(工资) AS 平均工资 FROM 员工表 GROUP BY 部门; ``` 8. 查询员工表中工资高于部门平均工资的员工的姓名和工资。 答案:

SQl练习题及答案

18、假设使用如下命令建立了一个grade表: create table grade(low number(3,0),upp number(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 g rade values(0,59,’E’); commit; 现查询所有同学的Sno、Cno和rank列。 19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 20、查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。 31、查询所有教师和同学的name、sex和birthday. 32、查询所有“女”教师和“女”同学的name、sex和birthday. 33、查询成绩比该课程平均成绩低的同学的成绩表。 34、查询所有任课教师的Tname和Depart. 35 查询所有未讲课的教师的Tname和Depart. 36、查询至少有2名男生的班号。 37、查询Student表中不姓“王”的同学记录。 38、查询Student表中每个学生的姓名和年龄。 39、查询Student表中最大和最小的Sbirthday日期值。 40、以班号和年龄从大到小的顺序查询Student表中的全部记录。 41、查询“男”教师及其所上的课程。 42、查询最高分同学的Sno、Cno和Degree列。 43、查询和“李军”同性别的所有同学的Sname. 44、查询和“李军”同性别并同班的同学Sname. 45、查询所有选修“计算机导论”课程的“男”同学的成绩表 参考答案 查询‘3-105’号课程的平均分。 11、select avg(degree)as 课程平均分 from score where cno='3-105'; 查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。 12、select cno,avg(degree) from score where cno like'3%'group by cno having count(*) >5; 查询最低分大于70,最高分小于90的Sno列。 13、select Sno from score group by Sno having min(degree)>70 and max(degree)<90; 查询所有学生的Sname、Cno和Degree列。 14、select student.Sname,https://www.wendangku.net/doc/9f19139556.html,o,score.degree from student,score where student.Sno=score.Sno; 查询所有学生的Sno、Cname和Degree列。 15、select x.Sno,https://www.wendangku.net/doc/9f19139556.html,ame,x.degree from score x,course y where https://www.wendangku.net/doc/9f19139556.html,o=https://www.wendangku.net/doc/9f19139556.html,o;

sql数据库习题与答案

sql数据库习题与答案 SQL数据库习题与答案 SQL(Structured Query Language)是一种用于管理关系型数据库的标准化语言。在数据库管理系统中,SQL可以用于执行各种操作,如插入、更新、删除和查询数据。对于学习SQL的人来说,练习SQL数据库习题是非常重要的。下面将为大家提供一些常见的SQL数据库习题以及相应的答案。 1. 查询所有学生的信息 答案:SELECT * FROM students; 2. 查询所有学生的姓名和年龄 答案:SELECT name, age FROM students; 3. 查询所有学生的姓名,并按照年龄从小到大进行排序 答案:SELECT name FROM students ORDER BY age; 4. 查询学生表中年龄大于18岁的学生信息 答案:SELECT * FROM students WHERE age > 18; 5. 查询学生表中姓“张”的学生信息 答案:SELECT * FROM students WHERE name LIKE '张%'; 6. 查询学生表中的姓名和对应的课程名称 答案:SELECT https://www.wendangku.net/doc/9f19139556.html,, https://www.wendangku.net/doc/9f19139556.html, FROM students INNER JOIN course ON students.course_id = course.id; 7. 查询学生表中每个班级的学生人数 答案:SELECT class, COUNT(*) FROM students GROUP BY class; 通过以上SQL数据库习题与答案的练习,可以帮助大家更好地理解和掌握SQL

(完整版)SQL复习题(附部分答案)

一、单选题 1.根据关系数据基于的数据模型——关系模型的特征判断下列正确的一项:(___) A.只存在一对多的实体关系,以图形方式来表示。 B.以二维表格结构来保存数据,在关系表中不允许有重复行存在。 C.能体现一对多、多对多的关系,但不能体现一对一的关系。 D.关系模型数据库是数据库发展的最初阶段。 答案[B] 2、在“连接”组中有两种连接认证方式,其中在(___)方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。 A、Windows身份验证 B、SQL Server 身份验证 C、以超级用户身份登录时 D、其他方式登录时 答案[B] 3、关系数据库中,主键是(___),当运用Transact-SQL语句创建主键时,可以是(__)。 ⑴ A、为标识表中唯一的实体 B、创建唯一的索引,允许空值 C、只允许以表中第一字段建立 D、允许有多个主键的 ⑵ A、create table table1 (column1 char(13) not null primary key, column2 int not on primary key; B、alter table table1 with nocheck add constraint [PK_table1] primary key nonclustered ( column1) on primary; C、alter table table1 column1 primary key ; 答案[ A C] 4、视图是一种常用的数据对象,可以简化数据库操作,当使用多个数据表来建立视图时,不允许在该语句中包括(___)等关键字。 A、ORDER BY,COMPUTE B、ORDER BY,COMPUTE,COMPUTR BY C、ORDER BY,COMPUTE BY,GROUP BY D、GROUP BY,COMPUTE BY 答案[B ] 5、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但至少包括的部分(_1_),使用关键字(_2_)可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是(_3__),如果在SELECT语句中使用聚合函数时,可以在后面使用(_4_)。 ⑴ A、SELECT,INTO B、SELECT,FROM C、SELECT,GROUP D、仅SELECT ⑵ A、DISTINCT B、UNION C、ALL D、TOP ⑶ A、JOIN B、UNION C、INTO D、LIKE ⑷ A、GROUP BY B、COMPUTE BY C、HAVING D、COMPUTE 答案[B A B A ] 6、SQL Server 2008是一个()的数据库系统。 (A)网状型(B)层次型(C)关系型(D)以上都不是

SQL语言习题参考答案(新)

第3章 SQL语言习题参考答案 1.试述SQL语言的特点。(85页) 答:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式、语言简捷,易学易用。 2.试述SQL的定义功能。(87页) 答:SQL的数据定义功能包括定义表、定义视图和定义索引 3.用SQL语句建立第二章习题5中的四个表。 S(SNO,SNAME,STATUS,CITY); P(PNO,PNAME,COLOR,WEIGHT); J(JNO,JNAME,CITY); SPJ(SNO,PNO,JNO,QTY); 供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成: CREATE TABLE S(Sno C(2) UNIQUE,Sname C(6) ,Status N(2),City C(4)) 零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成: CREATE TABLE P(Pno C(2) UNIQUE,Pname C(6),COLOR C(2),WEIGHT I(2)) 工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、所在城市(CITY)组成: CREATE TABLE J(Jno C(2) UNlQUE,JNAME C(8),CITY C(4))供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目

代码(JNO)、供应数量(QTY)组成: CREATE TABLE SPJ(Sno C(2),Pno C(2),JNO C(2),QTY N(2)) 4.针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询: (1)求供应工程J1零件的供应商号码SNO: SELECT DIST SNO FROM SPJ WHERE JNO=’J1’ (2)求供应工程J1零件P1的供应商号码SNO: SELECT DIST SNO FROM SPJ WHERE JNO='J1' AND PNO='P1' (3)求供应工程J1零件为红色的供应商号码SNO: SELECT SNO FROM SPJ,P WHERE JNO='J1' AND = AND COLOR='红' (4)求没有使用天津供应商生产的红色零件的工程号JNO: SELECT DIST JNO FROM SPJ WHERE JNO NOT IN (SELE JNO FROM SPJ,P,S WHERE ='天津' AND COLOR='红' AND = AND =。 (5)求至少用了供应商S1所供应的全部零件的工程号JNO。 由于VFP不允许子查询嵌套太深,将查询分为两步 A、查询S1供应商供应的零件号 SELECT DIST PNO FROM SPJ WHERE SNO='S1'结果是(P1,P2) B、查询哪一个工程既使用P1零件又使用P2零件。 SELECT JNO FROM SPJ WHERE PNO='P1' AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2') 5.针对习题3中的四个表试用SQL语言完成以下各项操作:

SQL练习题及答案

选择题 (1)如果要查询所藏图书中,各个出版社图书的最高单价、平均单价和册数,所用的SQL 语句是 A)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*); FROM 图书; GROUP BY 出版单位 B)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*); FROM 图书; HAVING 出版单位 C)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*); FROM 图书 GROUP BY 出版单位 D)SELECT 出版单位,MIN(单价), AVG(单价),COUNT(*); FROM 图书; HAVING 出版单位 (2)为"运动员"表增加一个字段"得分"的SQL语句是 A)CHANGE TABLE运动员ADD得分I B)ALTER DATA运动员ADD得分I C)ALTER TABLE运动员ADD得分I D)CHANGE TABLE运动员IN得分I (3)利用SQL数据更新功能,自动计算更新每个"设备总金额"字段的字段值,该字段值等于"单价*设备数量"的值,正确命令为 A)UPDATE 设备表SET 设备总金额=单价*设备数量 B)UPDATE 设备表FOR 设备总金额=单价*设备数量 C)UPDATE 设备表WITH 设备总金额=单价*设备数量 D)UPDATE 设备表WHERE 设备总金额=单价*设备数量 (4)查找教师表中教师最高的工资值,下列SQL语句正确的是 A)SELECT MAX(工资) FROM 教师表 B)SELECT MIN(工资) FROM 教师表 C)SELECT AVG(工资) FROM 教师表 D)SELECT SUM(工资) FROM 教师表 (5)在当前目录下有数据表文件student.dbf,执行如下SQL语句后 SELECT * FORM student INTO DBF student ORDER BY 学号/D A)生成一个按"学号"升序的表文件,将原来的student.dbf文件覆盖 B)生成一个按"学号"降序的表文件,将原来的student.dbf文件覆盖 C)不会生成新的排序文件,保持原数据表内容不变 D)系统提示出错信息 (6)语句"DELETE FROM 成绩表WHERE 计算机<60"的功能是 A)物理删除成绩表中计算机成绩在60分以下的学生记录 B)物理删除成绩表中计算机成绩在60分以上的学生记录 C)逻辑删除成绩表中计算机成绩在60分以下的学生记录

数据库sql课后练习题及答案解析

数据库sql课后练习题及答案解析 第一篇:数据库sql课后练习题及答案解析 先创建下面三个表: (book表) (borrow表) (reader表) 1)找出姓李的读者姓名(NAME)和所在单位(COMPANY)。 2)列出图书库中所有藏书的书名(BOOK_NAME)及出版单位(OUTPUT)。3)查找“高等教育出版社”的所有图书名称(BOOK_NAME)及单价(PRICE),结果按单价降序排序。 4)查找价格介于10元和20元之间的图书种类(SORT),结果按出版单位(OUTPUT)和单价(PRICE)升序排序。 5)查找书名以”计算机”开头的所有图书和作者(WRITER)。 6)检索同时借阅了总编号(BOOK_ID)为112266和449901两本书的借书证号(READER_ID)。 ##7)* 查找所有借了书的读者的姓名(NAME)及所在单位(COMPANY)。8)* 找出李某所借所有图书的书名及借书日期(BORROW_DATE)。 9)* 无重复地查询2006年10月以后借书的读者借书证号(READER_ID)、姓名和单位。 ##10)* 找出借阅了一书的借书证号。 11)找出与”赵正义”在同一天借书的读者姓名、所在单位及借书日期。12)查询2006年7月以后没有借书的读者借书证号、姓名及单位。#13)求”科学出版社”图书的最高单价、最低单价、平均单价。##14)* 求”信息系”当前借阅图书的读者人次数。 #15)求出各个出版社图书的最高价格、最低价格和总册数。#16)分别找出各单位当前借阅图书的读者人数及所在单位。 17)* 找出当前至少借阅了2本图书(大于等于2本)的读者姓名及其所在单位。18)分别找出借书人次数多于1人次的单位及人次数。

sql数据库练习题参考答案

第1章数据库基础 练习题 一、单项选择题 1.C 2.A 3.C 4.D 5.D 6.B 7.A 8.B 9.B 10.D 11.C 12.A 13.C 14.B 15.A 16.B 17.A 18.D 19.B 20.B 21.A; D 22.A 23.C 24.D 25.B 26.B 27.B 28.D 29.B 30.B 二、填空题 1.概念;数据 2.属性 3.码 4.一对一联系;一对多(或多对一)联系;多对多联系 5.候选码 6.候选码 7.关系名(属性1,属性2,…,属性n) 8.关系数据结构;关系操作集合;关系完整性约束 9.实体;参照;用户定义的;实体;参照 10.空值 11.需求分析阶段;概念结构设计阶段;逻辑结构设计阶段;物理结构设计阶段;数据库实施阶段;数据库运行和维护阶段 12.准确了解并分析用户对系统的要求,尤其是用户的信息要求、处理要求、安全性与完整性要求,确定所要开发的应用系统的目标,产生用户和设计者都能接受的需求说明书,做为下一步数据库概念结构设计的依据。 13.将需求分析得到的用户需求抽象为信息结构即概念模型。 14.将概念结构进一步转化为某一DBMS支持的数据模型,并对其进行优化。 15.为逻辑数据模型选取一个最适合应用环境的物理结构,包括数据库在物理设备上的存储结构和存取方法。 三、指出以下各缩写的英文意思和中文意思 1.DB:Database 2.DBMS:Database Management System 3.RDBMS: 4.DBS:Database System 5.DBA:Database Administrator

sql习题参考答案

sql习题参考答案 SQL习题参考答案 SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。在学习SQL时,练习习题是非常重要的,它们可以帮助我们巩固所学的知识,并提供实践的机会。本文将为大家提供一些SQL习题的参考答案,以便读者们在学习过程中参考和对照。 1. 查询所有学生的姓名和年龄 ```sql SELECT name, age FROM students; ``` 2. 查询所有学生的姓名和年龄,并按年龄降序排列 ```sql SELECT name, age FROM students ORDER BY age DESC; ``` 3. 查询所有学生的姓名和年龄,并按年龄升序排列,年龄相同时按姓名升序排列 ```sql SELECT name, age FROM students

ORDER BY age ASC, name ASC; ``` 4. 查询所有学生的姓名和成绩,并显示成绩大于80分的学生 ```sql SELECT name, score FROM students WHERE score > 80; ``` 5. 查询所有学生的姓名和成绩,并显示成绩在70到90之间的学生 ```sql SELECT name, score FROM students WHERE score BETWEEN 70 AND 90; ``` 6. 查询所有学生的姓名和成绩,并显示成绩不在70到90之间的学生 ```sql SELECT name, score FROM students WHERE score NOT BETWEEN 70 AND 90; ``` 7. 查询所有学生的姓名和成绩,并按成绩分组,显示每个分数段的学生数量 ```sql

sql语句练习题及答案

sql语句练习题及答案 一在数据库 school 中建立student , sc, course 表。 学生表、课程表、选课表属于数据库School ,其各自的数据结构如下:学生Student (Sno,Sname,Ssex,Sage,Sdept) 序号列名含义数据类型长度 1 Sno 学号字符型(char) 6 2 Sname 姓名字符型(varchar) 8 3 Ssex 性别字符型(char) 2 4 Sage 年龄整数(smallint) 5 sdept 系科字符型(varchar) 15 课程表course(Cno,Cname,Cpno,Ccredit) 序号列名含义数据类型长度 1 Cno 课程号字符型(char) 4 2 cname 课程名字符型(varchar) 20 3 Cpno 先修课字符型(char) 4 4 Ccredit 学分短整数(tinyint) 学生选课SC(Sno,Cno,Grade) 序号列名含义数据类型长度 1 Sno 学号字符型(char) 6 2 Cno 课程号字符型(char) 4 3 Grade 成绩小数(decimal) 12,2 二设定主码 1 Student表的主码:sno 2 Course表的主码:cno 3 Sc表的主码:sno,cno 1写出使用 Create T able 语句创建表 student , sc, course 的SQL 语句create table student (sno char(6), sname varchar(8),

ssex char(2), sage smallint, sdept varchar(15), primary key(sno)); Create table course( Cno char(4) primary key, Cname varchar(20), Cpno char(4), Ccredit tinyint) create table sc (sno char(6), cno char(4), grade decimal(12,2), primary key(sno,cno)); c 2在student表中插入信息 学号姓名性别年龄系科4001 赵茵男20 SX 4002 杨华女21 JSJ insert into student values( ’4001’,’赵茵’,’男’,20,’SX’) insert into student values( ’4002’,’杨华’,’女’,21,’JXJ’) 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

(完整版)sql练习题+答案

(一)新建以下几个表student(学生表): 其中约束如下: (1)学号不能存在相同的 (2)名字为非空 (3)性别的值只能是'男'或'女' (4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文 系,外语系,法学系 (5)出生日期为日期格式 (6)年龄为数值型,且在0~100 之间 create table student (

age smallint constraint d check ( age between 0

cs(成绩表): 其中约束如下: 1)sno 和cno 分别参照student 和course 表中的sno,cno 的字段2)cj(成绩)只能在0~100之间,可以不输入值 create table cs ( sno smallint not null references student ( sno ), - 定义成外键 cno smallint not null references course ( cno ), - 定义成外键 cj smallint constraint e check ( cj between 0 and 100 ), 检查约束——cj( 成绩) 只能在~100 之间,可以不输入值 constraint f primary key ( sno , cno ) ----- 定 义学生学号和课程号为sc 表的主键 ) course 课程表)

其约束如下: 1)课程号( cno)不能有重复的 2)课程名( cname)非空 三)针对学生课程数据库查询 (1)查询全体学生的学号与姓名。 (2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。 (3)查询全体学生的详细记录。select * from student (4)查全体学生的姓名及其出生年份。 select sname , birth from student (5)查询学校中有哪些系。 select distinct dept from student

SQL数据库练习及答案

(一)现有图书借阅关系数据库如下: 图书(图书号、书名,作者,单价,库存量) 读者(读者号,姓名,工作单位,地址) 借阅(图书号,读者号,借期,还期,备注) 其中:还期为NULL表示该书未还。 用关系代数表达式实现下列1-4小题: 1、检索读者号为R016的读者姓名、工作单位; Π姓名,工作单位(σ读者号=‘R016’(读者)) 2、检索借阅图书号为B5的读者姓名; Π姓名(σ图书号=‘B5’(读者∞借阅)) 3、检索读者“李林”所借图书的书名; Π书名(σ姓名=‘李林’(图书∞借阅∞读者)) 4、检索读者“李林”所借图书中未还的书名; Π书名(σ姓名=‘李林’∧还期=‘NULL’(图书∞借阅∞读者)) 用SQL语言实现下列5-10小题: 5、检索读者号为R016的读者姓名、工作单位; SELECT 姓名,工作单位 FROM 读者 WHERE 读者号=‘R016’ 6、检索借阅图书号为B5的读者姓名; SELECT DISTINCT 姓名 FROM 读者,借阅 WHERE 读者.读者号=借阅.读者号 AND 图书号=‘B5’ 7、检索读者“李林”所借图书的书名; SELECT DISTINCT 书名 FROM 图书,借阅,读者 WHERE 图书.图书号=借阅.图书号 AND 借阅.读者号=读者.读者号 AND 姓名=‘李林’ 8、检索读者“李林”所借图书中未还的书名; SELECT DISTINCT 书名 FROM 图书,借阅,读者 WHERE 图书.图书号=借阅.图书 AND 借阅.读者号=读者.读者号 AND 姓名=‘李林’ AND 还期 IS NULL

9、将读者“李林”所借图书的信息从借阅表中删除; DELETE FROM 借阅 WHERE 读者号 IN (SELECT 读者号 FROM 读者 WHERE 姓名=‘李林’) 10、建立未还图书的读者姓名和单位视图。 CREATE VIEW 未还(姓名,工作单位) AS SELECT 姓名,工作单位 FROM 读者,借阅,图书 WHERE 图书.图书号=借阅.图书号 AND 借阅.读者号=读者.读者号 AND 还期 IS NULL (二)设有一个顾客商品关系数据库,有三个基本表,表结构如下: 商品表:Article (商品号,商品名,单价,库存量) 客户表:Customer (顾客号,顾客名,性别,年龄,电话) 订单表:OrderItem (顾客号,商品号,数量,购买价,日期) 注意:回答时要将答案写到规定的地方;给出的答案要求字迹必须清楚;不允许改变程序结构和随意添加子查询。 1.请用SQL语言创建一个视图GM_VIEW,检索顾客的顾客号、顾客名和订购商品的商品名、金额和日期。(金额等于数量*购买价)(4分) CREAT VIEW GM_VIEW(顾客号,顾客名,商品名,金额,日期) AS SELECT _ Customer.顾客号,Customer.顾客名,Article.商品名,OrderItem.购买价* OrderItem.数量,OrderItem.日期 FROM Artcle, Customer, OrderItem WHERE Artcle.商品号= OrderItem.商品号AND OrderItem.顾客号= Customer.顾客号; 2.请用SQL语言找出女顾客购买的商品号、商品名和数量合计。(6分)SELECT OrderItem.商品号AS商品号, OrderItem.商品名AS商品名,SUM(OrderItem.数量) AS数量合计 FROM OrderItem, Artcle, Customer, WHERE Artcle.商品号= OrderItem.商品号AND OrderItem.顾客号= Customer.顾客号AND Customer. 性别='女' GROUP BY OrderItem.商品号,商品名; 3.请用SQL语言ALTER TABEL命令给商品表Article增加一个字段,字段名为:产地,数据类型为:CHAR,长度为:30,命令如下:(4分) ALTER TABLE Article ADD产地char(30) (三)设有四个关系 S(SNO,SNAME, ADDRESS,TEL) SNO:供应商代码 SNAME:姓名 ADDRESS:地址 TEL:电话 J(JNO,JNAME,LEADER,BG) JNO:工程代码 JNAME:工程名 LEADER:负责人 BG:预算 P(PNO,PNAME,SPEC,CITY,COLOR) PNO:零件代码 PNAME:零件名 SPEC:规格 CITY:产地 COLOR:颜色

(完整版)第三章SQL练习题参考答案

11、针对以上四个表,用SQL语言完成以下各项操作: ①给学生表增加一属性Nation(民族),数据类型为Varchar(20); Alter table student add Nation Varchar(20); ②删除学生表中新增的属性Nation; Alter table student drop column Nation; ③向成绩表中插入记录(”2001110”,”3”,80); insert into Grade values('2001103','3',80); ④修改学号为”2001103”的学生的成绩为70分; update Grade set Gmark=70 where Sno='2001103'; ⑤删除学号为”2001110”的学生的成绩记录; delete Grade where Sno='2001110'; ⑥为学生表创建一个名为,以班级号的升序排序; create index IX_Class on student(Clno ASC); ⑦删除IX_Class索引 Drop index IX_Class 12、针对以上四个表,用SQL语言完成以下各项查询: ①找出所有被学生选修了的课程号; select distinct cno from grade; ②找出01311班女学生的个人信息; select * from student where clno=01311 and ssex='女'; ③找出01311班、01312班的学生姓名、性别、出生年份; Select sname,ssex, year(getdata())-sage as ‘出生年份’from student where clno in('01311','01312'); ④找出所有姓李的学生的个人信息; Select * from student where sname like ’李%’; ⑤找出学生李勇所在班级的学生人数; Select count(*) from student where clno in (select clno from student where sname= '李勇');

(完整版)SQL答案

1. 查询客户表中的所有记录; 2. 从订购单表中查询客户号信息(哪些客户有订购单)。 3. 查询单价在X 元以上(含)的产品信息。 4. 查询单价在X 元以上(不含)的某产品(按产品名称查询)信息。 5. 查询单价在X 元以上(不含)的某两种产品(按产品名称查询)信息。 6. 查询有某年某月订购单的客户名称、联系人、电话号码和订单号信息。 7. 查询有某产品(按产品名称查询)订货的客户的名称、联系人和电话号码信息。 8. 查询有某产品(按产品名称查询)订购需求的订购单明细记录。 9. 查询所有订购数量(即订购明细中每个订购项目的数量)都在X 元以上的订购单的 信息。 10. 找出和某产品(按产品名称查询)同等价位的所有产品信息。 11. 查询单价范围在X 元到Y 元范围内的产品信息。 12. 从客户表 中查询出客户名称中有“XX‘二字的客户信息(使用LIKE 运算符)。 13. 从客户表 中查询出客户名称中没有“XX‘二字的客户信息(使用NOT LIKE 运算符)。 14. 按产品的单价升序列出全部产品信息。 15. 先按产品名称排序,在按单价排序列出全部产品信息。 16. 从产品表中查出共有几种产品。 17. 从订购明细表中查询某产品(按产品名称)的订购总数。 18. 计算某产品(按产品名称)所有订购的总金额。 19. 求所有订购单的平均金额,在查询结果中列出订购单的个数和平均金额。 20. 求每个订购单订购的项目数和总金额。 21. 求每个客户包含了某产品(按产品名称)订购的订单号及其最高金额和最低金额。 22. 求至少有两个订购项目的订购单的平均金额。 23. 找出尚未最后确定订购单(即订购日期为空值的记录)的有关客户信息(客户的名 称、联系人和电话号码)和订单号。 24. 找出在某年某月某日之后签定的订购单的客户信息(客户名称、联系人和电话号码)、 订单号和订购日期。 25. 列出每类产品(相同名称)具有最高单价的产品信息(产品号,名称,规格说明和 单价),提示:使用内外层互相关嵌套查询。 26. 确定哪些客户目前没有订购单(使用谓词NOT EXISTS )。 27. 确定目前有订购单的客户信息(使用谓词EXISTS )。 28. 查询符合条件的某产品(按产品名称)信息,产品的单价达到了任意一款某产品(按 产品 图1 订单管理数据库

SQL练习及答案

第1章数据库系统与数据库概念设计 思考与练习 一、选择题 1.数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是(A )。 A.DBS包括DB和DBMS B.DBMS包括DB和DBS C.DB包括DBS和DBMS D.DBS就是DB,也就是DBMS 2.下面列出的数据库管理技术发展的3个阶段中,没有专门的软件对数据进行管理的阶段是(D)。 I.人工管理阶段II.文件系统阶段III.数据库阶段 A.I 和II B.只有II C.II 和III D.只有I 3.描述数据库全体数据的全局逻辑结构和特性的是(A )。 A.模式 B.内模式 C.外模式 4.要保证数据库的数据独立性,需要修改的是(C )。 A.模式与外模式 B.模式与内模式 C.三级模式之间的两层映射 D.三级模式 5.E-R方法的三要素是(C)。 A.实体、属性、实体集 B.实体、键、联系 C.实体、属性、联系 D.实体、域、候选区 6.概念设计的结果是(B )。 A.一个与DBMS相关的要领模型 B.一个与DBMS无关的概念模型 C.数据库系统的公用视图

数据库应用技术(SQL Server 2005) D.数据库系统的数据字典 7.下列四项中,不属于数据库系统特点的是(C )。 A.数据共享 B.数据完整性 C.数据冗余度高 D.数据独立性高 第2章关系模型与数据库逻辑设计思考与练习 一、选择题 1.关系数据模型是目前最重要的一种数据模型,它的三个要素是(A )。 A.实体完整性、参照完整性、用户自定义完整性 B.数据结构、关系操作、完整性约束 C.数据增加、数据修改、数据查询 D.外模式、模式、内模式 2.一个关系中,能唯一标识元组的属性集称为关系的(B)。 A.副键B.关键字C.从键D.参数 3.现有如下关系:患者(患者编号,患者姓名,性别,出生日期,所在单位)、医疗(患者编号,医生编号,医生姓名,诊断日期,诊断结果),其中,医疗关系中的外码是(A )。 A.患者编号 B.患者姓名 C.患者编号和患者姓名 D.医生编号和患者编号 4.关系数据库管理系统应能实现的专门关系运算包括(B )。 A.排序、索引、统计 B.选择、投影、连接 C.关联、更新、排序 D.显示、打印、制表 5.一个关系中取出满足某个条件的所有元组形成一个新的关系的操作是(C )操作。 A.投影 B.连接 C.选择 D.复制 6.如果采用关系数据库实现应用,在数据库逻辑设计阶段需将(A )转换为关系数 -2-

SQL语句练习及答案

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.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查

9.(select sno from sc where cno in (select cno from course where cname=”信息系统‟)); 10.找出每个学生超过他选修课程平均成绩的课程号。 select sno,cno from sc x where grade>= (select avg(grade) from sc y where y.sno=x.sno); 11.将一个新学生记录(学号:200215128;姓名:陈冬;性别:男;所在系: is;年龄:18岁)插入到student表中。 insert into student values ('200215128','陈冬','男','is',18); 12.将学生200215121的年龄改为22岁。 update student setsage=22 where sno='200215121'; 13.将所有学生的年龄增加1岁。 update student setsage=sage+1; 14.将计算机科学系全体学生的成绩置零。 update sc set grade=0 where exits (selete * from student where student.sno=sc.sno and sdept=”计算机科学系”); 15.删除学号为20021528的学生记录 delete from student where sno=”200215128'; 16.删除所有的学生选课记录。 delete from sc;

相关文档