SQL语言(综合) 课堂练习和习题复习课程

合集下载

sql综合练习

sql综合练习

6 join sc b on a.`SID`=b.`SID`
7 group by a.`SID`
5.2、查询所有(包括有成绩和无成绩)的SQL。
1 select a.`SID`
2
,a.`Sname`
3
,count(b.`CID`) 选课总数
4
,sum(b.score) 总成绩
5 from student a
6 join sc c on a.`SID`=c.`SID`
7 where b.`CID`='01' and c.`CID`='02' and b.score<c.score
结果:
2.2、查询同时存在"01"课程和"02"课程的情况和不存在"01"课程但存在"02"课程的情况
1 select a.*
3、 创建教师表
1 create table Teacher(TID varchar(10),Tname nvarchar(10));
3.1向教师表中插入数据
1 insert into Teacher values('01' , '张三'); 2 insert into Teacher values('02' , '李四'); 3 insert into Teacher values('03' , '王五');
3 from sc a
4 left join student b on a.`SID`=b.`SID`
5 group by a.`SID`
6 having avg_score<60

SQL语言课后练习[大全5篇]

SQL语言课后练习[大全5篇]

SQL语言课后练习[大全5篇]第一篇:SQL语言课后练习岳阳市湖湘认证培训学校学院路504号************SQL语言课后练习题以下练习都是基于数据库XSG,及数据库表XSCJ与XSDA中操作,表结构如下:XSCJ(学号C(10),语文N(4,1),数学N(4,1),英语N(4,1),计算机N(4,1),平均成绩N(4,1))XSDA(学号C(10),姓名C(10),性别C(4),班级C(10),出生日期D,籍贯C(20),家庭情况G,简历M,照片G)1、用SQL语句建立XSDA表,并为学号字段创建为主关键字,约束性别字段的值只能为男或为女,如果在不输入信息的情况下默认值是女。

2、用SQL语句建立XSCJ表,并与XSDA表建立联系。

3、为XSDA表增加一个学费字段,要求为货币型,约束字段有效性规则:学费必须在0至20000元内(含),否则提示:学费错了。

4、修改XSDA表学费字段,要求学费必须在2000-20000间(含),否则提示:学费错了。

5、修改XSDA表学费字段,删除它的字段有效性规则。

6、修改XSDA表学费字段,将其改名为:学杂费。

7、修改XSDA表的籍贯字段的宽度为10。

8、删除XSDA表的学费字段。

9、将XSDA表的姓名字段和性别字段定义为候选索引,索引名为:TEMP。

10、删除XSDA表的候选索引TEMP。

11、删除XSDA表及XSCJ表。

12、在XSCJ表中插入一个元组:学号:19980405,语文:78,数学:68,英语:74,计算机:90,平均成绩:77.50。

13、在XSDA表中插入一个元组:学号:19980405,姓名:王小辉,性别:男,出生日期:1981年12月5日14、在XSCJ表中为所有学生的英语成绩加10分15、在XSDA表中为学号为:19980405的学生的籍贯改为岳阳市16、删除XSDA表中学号为19980405的记录17、将XSDA表复制到XSDABAK表18、从XSG数据库中的XSDA表查找所有学生的学号、姓名和班级的情况19、从XSG数据库的XSDA表查找计981班的学生的学号、姓名和班级的情况20、从XSG数据库中的XSCJ表中查找计算机成绩大于80的学生的学号21、从XSG数据库的XSDA表查找所有学生的学号、姓名和班级的情况,并按学号降序排序22、从XSG数据库中的XSCJ表中查找计算机成绩大于60的学生学号、语文、计算机和平均成绩,并按计算机的降序排序,如计算机成绩相同,按学号的升序排序23、从XSG数据库的XSDA表查找前4个学生的情况,按学号降序排序24、从XSG数据库中的XSCJ表中查找计算机成绩大于70的前40%学生的学生信息,并按计算机的降序排序25、从XSG数据库的XSDA和XSCJ表查找所有学生的姓名、语文、数学、英语和计算机成绩。

sql语言综合练习(一)

sql语言综合练习(一)

SQL语言综合练习(一)【1-1】查询学生的所有信息。

从Student表中我们可以查询到学生的所有数据。

【1_2】查询所有姓张的学生的信息。

【2_1】从student表中检索学号为00000001的同学的姓名(stuname),要求显示学号和姓名。

【2_2】从课程表中检索所有的信息。

【2_3】从student表中检索学生所在的班级编码【2_4】从student表中检索班级编码,要求消除相同的那些行。

【2_5】从student表查询所有信息,要求只显示前6行数据。

【2_6】检索课程表中课程编码、课程名称、教师、上课时间、限制选课人数和报名人数。

【2_7】检索课程表中所有信息,要求检索结果是:课程名称课程编码SQL SERVER2000课程编码为:001【2_8】在课程表中检索“linux 操作系统”的主讲教师【2_9】检索XK数据库的Course表的课程信息,要求显示报名人数与限选人数之比。

【2_10】检索课程表中最少的报名人数、最多的报名人数以及平均报名人数。

【2_11】检索课程表结果按报名人数升序排列。

【2_12】检索课程表中教师名、课程号、课程名,要求检索结果首先按教师名序排列,教师相同时,则按课程号升序排列。

【2_13】检索课程表Course中课程号为004、007、013的课程名称。

【2_14】检索课程表Course中课程号不为004、007、013的课程名称。

【2_15】检索以字母D开头的课程名。

【2_16】检索以“制作”两字结尾的课程名。

【2_17】检索第2个字为“宝”的学生名字。

【2_19】检索课程表Course中教师未定的课程名称和老师。

【2_21】检索报名人数少于25人并且多于15人的课程信息。

【2_23】检索报名人数多于25人或者小于15人的课程名字和报名人数,要求检索结果按照报名人数子降序排序。

【2-24】检索课程表Course中课程分类为“信息技术”课程编码、课程名称、课程分类、报名人数,亲计算平均人数。

SQL语句课堂练习题及答案

SQL语句课堂练习题及答案
第三章 综合练习
设有三个关系:
3、查询学号为S3学生所学课程的课程名 与任课教师名
S(sno,sname,sex,age) 4、查询至少选修LIU老师所授课程中一 SC(sno,cno,grade) 门课程的女学生姓名
C(cno,cname,teacher) 5、查询WANG同学不学的课程的课程
试用SQL语句表示下 号
S(sno,sname,sex,age)
方法二:用IN嵌套查询
Select sno,sname from S where age>23 and sno in (select sno from s where sex=‘男’)
An Introduction to Database System
综合练习答案
综合练习答案
S(sno,sname,sex,age) SC(sno,cno,grade) C(cno,cname,teacher)
5、查询WANG同学不学的课程的课程号
涉及到全部的表:S,SC,C 方法一:NOT EXISTS嵌套查询
Select cno from C where not exists
第三章 综合练习
设有三个关系:
10、求LIU老师所授课程的每门课程的平均 成绩
S(sno,sname,sex,age) 11、检索姓名以L打头的所有学生的姓名和
SC(sno,cno,grade) 年龄。
C(cno,cname,teacher) 12、求年龄大于所有女同学年龄的男学生姓
试用SQL语句表示下 名和年龄。
5、查询WANG同学不学的课程的课程号
涉及到全部的表:S,SC,C 方法二:集合查询
Select cno from C Except Select distinct cno from S, SC where S.sno=SC.sno

课堂练习一:SQL语言练习

课堂练习一:SQL语言练习

广东技术师范学院实验报告学院:计算机科学学院专业:计算机科学与技术班级:成绩:姓名:孔哥哥学号:组别:组员:实验地点:Win 10电脑实验日期:指导教师签名:实验名称:SQL语句练习一、实验目的:二、实验内容:以下查询基于SCOTT模式中的表1.查询每个雇员的编号、姓名、工作,并为这些列各起相应的中文别名。

2.查询所有工种不是MANAGER和CLERK,且工资大于或等于2000的员工的详细信息。

3.查询工资介于1500和3000的雇员信息。

4.查询出雇员姓名中第二个字母为M的雇员信息。

5.查询雇员的信息,并按工资从高到低排序,若工资相同,则按员工编号排序。

6.查询所有雇员的编号、姓名、工资、部门编号、部门名称、工资在公司的等级(salgrade表)信息。

7.查找雇员的编号、姓名,及其领导的编号、姓名。

(注:使用外连接)三、实验步骤:以下查询基于SCOTT模式中的表1.查询每个雇员的编号、姓名、工作,并为这些列各起相应的中文别名。

2.查询所有工种不是MANAGER和CLERK,且工资大于或等于2000的员工的详细信息。

3.查询工资介于1500和3000的雇员信息。

4.查询出雇员姓名中第二个字母为M的雇员信息。

5.查询雇员的信息,并按工资从高到低排序,若工资相同,则按员工编号排序。

6.查询所有雇员的编号、姓名、工资、部门编号、部门名称、工资在公司的等级(salgrade表)信息。

7.查找雇员的编号、姓名,及其领导的编号、姓名。

(注:使用外连接)四、实验问题及原因1.SCOTT用户默认是锁定的解锁同时修改密码:alter user scott identified by tiger account unlock;2.解锁完要记得切换用户3.第二题可以用not in条件是Not in (‘MANAGER’,’CLERK’,)。

SQL语句练习及参考答案(2021年整理精品文档)

SQL语句练习及参考答案(2021年整理精品文档)

SQL语句练习及参考答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(SQL语句练习及参考答案)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为SQL语句练习及参考答案的全部内容。

SQL 语句练习1。

设学生选课数据库有关系S (sno ,sname ,age ,sex )、SC (sno ,cno ,grade )和C (cno,cname,teacher ),分别表示学生、选课和课程,sno 代表学号,sname 代表学生姓名,age 代表年龄,sex 代表性别,grade 代表成绩,cno 代表课程号,teacher 代表任课教师。

试完成表示下列查询。

(1)检索年龄大于21的男学生学号(sno )和姓名(sname)。

(2)建立性别只能为“男”、“女"的约束。

(3)创建一个视图v1,该视图用来查询学生的选课情况,要求包含:学生姓名(sname),课程名(cname),任课教师teacher 和成绩grade 。

(4)检索选修课程号为k1和k5的学生学号(sno ). (5)检索全部学生都选修的课程的课程号(cno)和课程名(cname )。

(6)删除所有男同学的选课记录。

1。

(1)select sno ,snae from s where sex=’男' and age 〉21(2)alter table s add constraint c1 check sex in (‘男’,’女')(3)create view v1 as select sname ,cname,teacher,grade from s ,sc ,c where s 。

sql课后习题答案

sql课后习题答案

sql课后习题答案SQL课后习题答案随着信息技术的快速发展,数据库管理系统(DBMS)在各行各业中扮演着重要的角色。

而SQL(Structured Query Language)作为一种用于管理和操作关系型数据库的语言,被广泛应用于企业和组织的数据管理和分析中。

在学习SQL的过程中,课后习题是巩固知识的重要环节。

下面将为大家提供一些常见SQL课后习题的答案,希望对大家的学习有所帮助。

1. 查询所有学生的姓名和年龄。

答案:SELECT name, age FROM students;2. 查询所有学生的姓名和年龄,并按照年龄降序排列。

答案:SELECT name, age FROM students ORDER BY age DESC;3. 查询学生表中年龄大于20岁的学生信息。

答案:SELECT * FROM students WHERE age > 20;4. 查询学生表中年龄大于20岁并且性别为男的学生信息。

答案:SELECT * FROM students WHERE age > 20 AND gender = '男';5. 查询学生表中年龄大于20岁或者性别为女的学生信息。

答案:SELECT * FROM students WHERE age > 20 OR gender = '女';6. 查询学生表中的学生总数。

答案:SELECT COUNT(*) FROM students;7. 查询学生表中不重复的年龄。

答案:SELECT DISTINCT age FROM students;8. 查询学生表中年龄在20岁到25岁之间的学生信息。

答案:SELECT * FROM students WHERE age BETWEEN 20 AND 25;9. 查询学生表中每个班级的学生数量。

答案:SELECT class, COUNT(*) FROM students GROUP BY class;10. 查询学生表中每个班级的平均年龄。

数据库(sql)课堂练习题(答案)

数据库(sql)课堂练习题(答案)

假设有如下4个样表student(学号,姓名,性别,出生日期,班级) teacher(教工号,姓名,性别,出生日期,职称,所在系) course(课程号, 课程名,教工号) score(学号,课程号,成绩)1、查询学生信息表中所有的姓名、性别和班级select sname,sex,class from student2、查询成绩表中成绩在60到80之间的所有记录select * from score where degree between 60 and 803、查询学生信息表中‘95031’班的学生或性别为‘女’的学生记录select * from student where class=95031 or sex='女'4、以班级降序显示学生信息表的所有记录select * from student order by class desc5、以课程号升序、成绩降序显示成绩表的所有记录select * from score order by cno asc , degree desc6、查询‘95031’班的学生人数select count(sno) 人数 from student where class=950317、查询成绩表中的最高分的学生的学号,课程号select sno,cno from score where degree=(select max(degree) from score)8、查询成绩表中课程号为‘3-105’的平均分*/select avg(degree) 平均成绩 from score where cno='3-105'9、显示成绩表中至少有5名学生选修的并以3开头的课程号的平均分数select avg(degree) 平均分数 from score where cno like '3%' group by cno having count(sno)>=510、列出95033班和95031班全体学生的记录select * from student where class in('95031','95033')11、显示所有学生的姓名、课程号和成绩select sname,cno,degree from student,score where student.sno=score.sno12、列出所有同学的姓名、课程名和成绩select sname,cname,degree from student,score,course where student.sno=score.sno and o=o13、显示'张旭'教师任课的学生成绩select student.sno, sname,degree from student,scorewhere student.sno=score.sno and cno in(select cno from coursewhere tno in (select tno from teacher where name='张旭' ) )14、列出存在有85分以上成绩的课程号select distinct cno from score where degree in (select degree from score where degree>85)15、列出最高分同学的学号、课程号和成绩*/select * from score where sno=(select sno from score where degree=(select max(degree) from score))16、列出所有未讲课的教师的姓名和系别select name,depart from teacher where not exists (select * from course where course.tno=teacher.tno)17、列出成绩比该课程平均成绩低的同学的成绩表select * from score x where degree<(select avg(degree) from score y where o=o)18、列出所有选修‘计算机导论’课程的‘男’同学的成绩表select student.sno,sname,degreefrom score,studentwhere student.sno=Score.sno and cno=( select cnofrom coursewhere cname='计算机导论' )and sex='男'第三章习题5.试用SQL语言完成以下各项操作:四个关系模式:S(SNO,SNAME,STATUS,CITY)P(PNO,PNAME,COLOR,WEIGHT)J(JNO,JNAME,CITY)SPJ(SNO,PNO,JNO,QTY)(1) 找出所有供应商的姓名和所在城市。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SQL语言课堂练习和习题一、选择题1. SQL语言是( )的语言,容易学习.A.过程化B. 非过程化C.格式化D. 导航式2. SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE,DELETE等.其中最重要的,也是使用最频繁的语句是( ) .A. SELECTB. INSERTC. UPDATED. DELETE3. 在视图上不能完成的操作是( ) .A. 更新视图B. 查询C. 在视图上定义新的表D. 在视图上定义新的视图4. SQL语言集数据查询,数据操纵,数据定义和数据控制功能于一体,其中,CREATE,DROP,ALTER语句是实现哪种功能( ).A. 数据查询B. 数据操纵C. 数据定义D. 数据控制5. SQL语言中,删除一个视图的命令是( ).A.DELETEB.DROPC.CLEARD.REMOVE6. 在SQL语言中的视图VIEW是数据库的( ) .A. 外模式B. 模式C. 内模式D. 存储模式7. 下列的SQL语句中,( )不是数据定义语句.A. CREATE TABLEB. DROP VIEWC. CREATE VIEWD. GRANT8. 若要撤销数据库中已经存在的表S,可用( ).A. DELETE TABLE SB. DELETE SC. DROP TABLE SD. DROP S9. 若要在基本表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 SB. ALTER TABLE S DROP AgeC. UPDATE S AgeD. 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子句的内容是( ).A. S.S# = SC.S# and C.C# = SC.C# and SAGE>=20 and CNAME='ACCESS'B. S.S# = SC.S# and C.C# = SC.C# and SAGE in>=20 and CNAME in 'ACCESS'C. SAGE in>=20 and CNAME in 'ACCESS'D. SAGE>=20 and CNAME=' ACCESS'12. 设关系数据库中一个表S的结构为S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100.若要把"张二的化学成绩80分"插入S中,则可用( ).A. ADD INTO S V ALUES('张二','化学','80')B. INSERT NTO S V ALUES('张二','化学','80')C. ADD INTO S V ALUES('张二','化学',80)D. INSERT INTO S V ALUES('张二','化学',80)13. 设关系数据库中一个表S的结构为:S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100.若要更正王二的化学成绩为85分,则可用( ) .A. UPDATE S SET grade=85 WHERE SN='王二' AND CN='化学'B. UPDATE S SET grade='85' WHERE SN='王二' AND CN='化学'C. UPDATE grade=85 WHERE SN='王二' AND CN='化学'D. UPDATE grade='85' WHERE SN='王二' AND CN='化学'14. 在SQL语言中,子查询是( ) .A. 返回单表中数据子集的查询语言B. 选取多表中字段子集的查询语句C. 选取单表中字段子集的查询语句D. 嵌入到另一个查询语句之中的查询语句15. SQL是一种( )语言.A. 高级算法B. 人工智能C. 关系数据库D. 函数型16. 有关系S(S#,SNAME,SEX),C(C#,CNAME),SC(S#,C#,GRADE).其中S#是学生号,SNAME是学生姓名,SEX是性别, C#是课程号,CNAME是课程名称.要查询选修"数据库"课的全体男生姓名的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句.这里的WHERE子句的内容是( ).A.S.S# = SC.S# and C.C# = SC.C# and SEX='男' and CNAME='数据库'B.S.S# = SC.S# and C.C# = SC.C# and SEX in'男'and CNAME in'数据库'C.SEX '男' and CNAME ' 数据库'D.S.SEX='男' and CNAME=' 数据库'17. 若用如下的SQL语句创建了一个表SC:CREATE TABLE SC (S# CHAR(6) NOT NULL,C# CHAR(3) NOT NULL,SCORE INTEGER,NOTE CHAR(20));向SC表插入如下行时,( )行可以被插入.A.('201009','111',60,必修)B.('200823','101',NULL,NULL)C.(NULL,'103',80,'选修')D.('201132',NULL,86,' ')18. 假设学生关系S(S#,SNAME,SEX),课程关系C(C#,CNAME),学生选课关系SC(S#,C#,GRADE).要查询选修"Computer"课的男生姓名,将涉及到关系( ).A. SB. S,SCC. C,SCD. S,C,SC19.SQL Server2000的字符型系统数据类型主要包括()。

A. int、money、charB. char、varchar、textC. datetime、binary、intD. char、varchar、int20. 如果要在SQL Server2000中存储图形图像、Word文档文件,不可采用的数据类型是()。

A. binaryB. varbinaryC. imageD. text21. 不属于SQL Server2000系统全局变量的是()。

A. @@ErrorB. @@ConnectionsC. @@Fetch_StatusD. @Records22.SQL Server2000提供的单行注释语句是使用()开始的一行内容。

A. “/*”B.“--”C. “{”D. “/”23. 下列标识符可以作为局部变量使用()。

A. [@Myvar]B. My varC. @MyvarD. @My var24.在SQL Server 中,WAITFOR 语句中的DELAY参数是指()。

A. 要等待的时间B. 指示SQL Server 一直等到指定的时间过去C. 用于指示时间D. 以上都不是25.下面()组命令,将变量count值赋值为1。

A.DECLARE @countSELECT @count=1B.DIM count=1C.DECLARE countSELECT count=1D.DIM @countSELECT @count=126.下列()赋值语句是错误的。

A.SELECT @C=1 B. SET @C=1C.SELECT @DJ=单价FROM bookORDER BY 单价DESCD.SET @DJ=单价FROM bookORDER BY 单价DESC27.在SQL Server 编程中,可使用()将多个语句捆绑。

A.{} B. BEGIN-ENDC.( ) D. [ ]28.在SQL Server 2000中,下列变量名正确的是()。

A.@sum B.j C.sum D.4kk选择题答案:(1) B (2) A (3) C (4) C (5) B (6) A (7) D (8) C (9) C (10) B(11) A (12) D (13) A (14) D (15) C (16) A (17) B (18) D (19)B(20)D(21)D(22)B(23)C(24)A(25)A(26)D(27)B(28)A二、填空题1.在T-SQL编程语句中,WHILE结构可以根据条件多次重复执行一条语句或一个语句块,还可以使用()和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行。

2.在T-SQL编程语句中,()用于使语句在某一时刻或在一段时间间隔后继续执行。

1.break2.waitfor三、简答题1. 试述SQL语言的特点.答:(1)综合统一. SQL语言集数据定义语言DDL,数据操纵语言DML,数据控制语言DCL的功能于一体.(2)高度非过程化.用SQL语言进行数据操作,只要提出"做什么",而无须指明"怎么做",因此无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成.(3)面向集合的操作方式.SQL语言采用集合操作方式,不仅操作对象,查找结果可以是元组的集合,而且一次插入,删除,更新操作的对象也可以是元组的集合.(4)以同一种语法结构提供两种使用方式.SQL语言既是自含式语言,又是嵌入式语言.作为自含式语言,它能够独立地用于联机交互的使用方式,也能够嵌入到高级语言程序中,供程序员设计程序时使用.(5)语言简捷,易学易用.2. 试述SQL的定义功能.答: SQL的数据定义功能包括定义表,定义视图和定义索引.SQL语言使用CREATE TABLE语句定义建立基本表,;ALTER TABLE语句修改基本表定义,DROP TABLE语句删除基本表;建立索引使用CREATE INDEX语句建立索引, DROP INDEX语句删除索引表;SQL语言使用CREA TE VIEW命令建立视图,DROP VIEW语句删除视图.3. 用SQL语句建立“关系数据库和关系代数课堂练习和习题”中的四个表.答: 对于S表:S( SNO,SNAME,STA TUS,CITY);建S表:CREATE TABLE S(SNO CHAR(3),SNAME CHAR(10),STA TUS CHAR(2),CITY CHAR(10));P(PNO,PNAME,COLOR,WEIGHT);建P表:CREATE TABLE P(PNO CHAR(3),PNAME CHAR(10),COLOR CHAR(4),WEIGHT INT);J(JNO,JNAME,CITY);建J表:CREATE TABLE J(JNO CHAR(3),JNAME CHAR(10),CITY CHAR(10));SPJ(SNO,PNO,JNO,QTY);建SPJ表:CREATE TABLE SPJ(SNO CHAR(3),PNO CHAR(3),JNO CHAR(3),QTY INT);4. 针对上题中建立的四个表试用SQL语言完成“关系数据库和关系代数课堂练习和习题”的查询.答: (1) 求供应工程J1零件的供应商号码SNO;SELECT SNOFROM SPJWHERE JNO='J1';(2) 求供应工程J1零件P1的供应商号码SNO;SELECT SNOFROM SPJWHERE JNO='J1' AND PNO='P1';(3) 求供应工程J1零件为红色的供应商号码SNO;SELECT SNOFROM SPJWHERE JNO='J1'AND PNO IN(SELECT PNOFROM PWHERE COLOR='红');或SELECT SNOFROM SPJ,PWHERE JNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红';*(4) 求没有使用天津供应商生产的红色零件的工程号JNO;解析:用SQL语言表示如下:SELECT JNOFROM JWHERE NOT EXISTS(SELECT *FROM SPJWHERE SPJ.JNO=J.JNOAND SNO IN(SELECT SNOFROM SWHERE CITY='天津')AND PNO IN(SELECT PNOFROM PWHERE COLOR='红'));或SELECT JNOFROM JWHERE NOT EXISTS(SELECT *FROM SPJ, S, PWHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO AND S.CITY='天津' AND P. COLOR='红');注意:从J 表入手,以包含那些尚未使用任何零件的工程号.*(5) 求至少用了供应商S1所供应的全部零件的工程号JNO .解析:用SQL语言表示如下:SELECT DISTINCT JNOFROM SPJ SPJZWHERE NOT EXISTS(SELECT *FROM SPJ SPJXWHERE SNO='S1'AND NOT EXISTS(SELECT *FROM SPJ SPJYWHERE SPJY.PNO=SPJX.PNOAND SPJY.JNO=SPJZ.JNOAND SPJY.SNO='S1'))5. 针对习题3中的四个表试用SQL语言完成以下各项操作:(1)找出所有供应商的姓名和所在城市.(2)找出所有零件的名称,颜色,重量.(3)找出使用供应商S1所供应零件的工程号码.(4)找出工程项目J2使用的各种零件的名称及其数量.(5)找出上海厂商供应的所有零件号码.(6)找出使用上海产的零件的工程名称.(7)找出没有使用天津产的零件的工程号码.(8)把全部红色零件的颜色改成蓝色.(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改.(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录.(11)请将(S2,J6,P4,200) 插入供应情况关系.答: (1) 找出所有供应商的姓名和所在城市.SELECT SNAME, CITYFROM S;(2) 找出所有零件的名称,颜色,重量.SELECT PNAME, COLOR, WEIGHTFROM P;(3) 找出使用供应商S1所供应零件的工程号码.SELECT JNOFROM SPJWHERE SNO='S1';(4) 找出工程项目J2使用的各种零件的名称及其数量.SELECT P.PNAME, SPJ.QTYFROM P, SPJWHERE P.PNO=SPJ.PNOAND SPJ.JNO='J2';(5) 找出上海厂商供应的所有零件号码.SELECT DISTINCT PNOFROM SPJWHERE SNO IN(SELECT SNOFROM SWHERE CITY='上海');(6) 找出使用上海产的零件的工程名称.SELECT JNAMEFROM J, SPJ, SWHERE J. JNO=SPJ. JNOAND SPJ. SNO=S.SNOAND S.CITY='上海';或SELECT JNAMEFROM JWHERE JNO IN(SELECT JNOFROM SPJ, SWHERE SPJ. SNO=S.SNOAND S.CITY='上海');(7) 找出没有使用天津产的零件的工程号码.SELECT JNOFROM JWHERE NOT EXISTS(SELECT *FROM SPJWHERE SPJ.JNO=J.JNO AND SNO IN(SELECT SNOFROM SWHERE CITY='天津'));或SELECT JNOFROM JWHERE NOT EXISTS(SELECT *1FROM SPJ, SWHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND S.CITY='天津');(8) 把全部红色零件的颜色改成蓝色.UPDA TE PSET COLOR='蓝'WHERE COLOR='红' ;(9) 由S5供给J4的零件P6改为由S3供应,请作必要的修改.UPDA TE SPJSET SNO='S3'WHERE SNO='S5' AND JNO='J4' AND PNO='P6';(10) 从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录.DELETEFROM SPJWHERE SNO='S2';或DELETEFROM SWHERE SNO='S2';解析:注意删除顺序,应该先从SPJ表中删除供应商S2所供应零件的记录,然后从从S表中删除S2.(11) 请将(S2,J6,P4,200) 插入供应情况关系.INSERT INTO SPJ(SNO, JNO, PNO, QTY)V ALUES (S2,J6,P4,200);或INSERT INTO SPJV ALUES (S2,P4,J6,200);6.针对系统示例数据库中的相应表,写出满足要求的SQL语句。

相关文档
最新文档