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语言课后练习岳阳市湖湘认证培训学校学院路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语言综合练习(一)【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语句课堂练习题及答案
设有三个关系:
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语言练习
广东技术师范学院实验报告学院:计算机科学学院专业:计算机科学与技术班级:成绩:姓名:孔哥哥学号:组别:组员:实验地点: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语句练习及参考答案编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(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课后习题答案随着信息技术的快速发展,数据库管理系统(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)课堂练习题(答案)
假设有如下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) 找出所有供应商的姓名和所在城市。
(完整版)sql语句练习题及答案
一在数据库 school 中建立student , sc, course 表。
学生表、课程表、选课表属于数据库School ,其各自的数据结构如下:学生Student (Sno,Sname,Ssex,Sage,Sdept)课程表course(Cno,Cname,Cpno,Ccredit)学生选课SC(Sno,Cno,Grade)二设定主码1 Student表的主码:sno2 Course表的主码:cno3 Sc表的主码:sno,cno1写出使用 Create Table 语句创建表 student , sc, course 的SQL语句23 删除student表中的元组4在数据库school中删除关系student5在student表添加属性sbirthdate 类型datetimeDelete1 删除所有JSJ 系的男生delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改0001 学生的系科为: JSJ2 把陈小明的年龄加1岁,性别改为女。
2 修改李文庆的1001课程的成绩为93 分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 表中的学生共分布在那几个系中。
第4章SQL语言(练习篇)
[ORDER BY <列名 列名2> [ASC|DESC] 列名
第 4 章 S Q L 语 言
目标列表达式
目标列表达式格式
(1) [ <表名 表名>.] * 表名 (2) [<表名 表名>.]<属性列名表达式 ,[<表名 属性列名表达式>[, 表名 表名 属性列名表达式 >.]<属性列名表达式 属性列名表达式>] … 属性列名表达式 <属性列名表达式 :由属性列、作用于属性列的计 属性列名表达式>: 属性列、作用于属性列的计 属性列名表达式 算函数和常量的任意算术运算( , , , ) 算函数和常量的任意算术运算(+,-,*,/)组 的任意算术运算 成的运算公式。 成的运算公式。
4
第 4 章
条件表达式格式
S (2) ) Q <属性列名 属性列名> <属性列名 属性列名> L 属性列名 属性列名 语 <属性列名 [NOT] BETWEEN <常量 属性列名> 常量> AND <常量 常量> 属性列名 常量 常量 言 (SELECT语句 语句) (SELECT语句 语句) 语句 语句
1.查询学生选课表中的全部数据。 查询学生选课表中的全部数据。 查询学生选课表中的全部数据 SELECT * FROM SC 2.查询计算机系的学生姓名、年龄。 查询计算机系的学生姓名、年龄。 查询计算机系的学生姓名 SELECT Sname,Sage FROM STUDENT WHERE Sdept=‘计算机系’ 计算机系’ 计算机系
13
第 4 章 S Q L 语 言
练习: 练习:
利用P47提供的三张表实现如下操作 利用P47提供的三张表实现如下操作
SQL语句习题课
语言简洁,易学易用
SQL功能极强,完成核心功能只用了9个动词。P106 单选题3,7 表 3.1 SQL 语言的动词
SQL 功 能 数 据 查 询 数 据 定 义 数 据 操 纵 数 据 控 制 动 词 SELECT CREATE, DROP, ALTER INSERT,UPDATE DELETE GRANT,REVOKE
带子查询的修改语句
[例] 将计算机科学系全体学生的成绩置零。 UPDATE SC SET Grade=0 WHERE 'CS'= (SELETE Sdept FROM Student WHERE Student.Sno = SC.Sno);
学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Cpno,Ccredit) 学生选课表:SC(Sno,Cno,Grade)
SQL支持关系数据库三级模式结构
SQL
视图1
视图2
外模式
基本表1
基本表2
基本表3
基本表4
模式
存储文件1
存储文件2
内模式
SQL的基本Βιβλιοθήκη 念基本表 本身独立存在的表 SQL中一个关系就对应一个基本表 一个(或多个)基本表对应一个存储文件 一个表可以带若干索引
存储文件
逻辑结构组成了关系数据库的内模式 物理结构是任意的,对用户透明
谁 维护索引
DBMS自动完成
使用索引
DBMS自动选择是否使用索引以及使用哪些索引
学生-课程 数据库
学生-课程模式 S-T :
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
sql复习题库
sql复习题库SQL复习题库一、概述SQL(Structured Query Language)是一种用于管理关系型数据库的标准化语言。
在数据库管理系统中,SQL被广泛应用于数据查询、数据操作和数据定义等方面。
本文将介绍一些常见的SQL复习题,帮助读者巩固和加深对SQL的理解和应用。
二、基础题1. 请列出学生表(students)中所有的学生姓名。
2. 请列出课程表(courses)中所有的课程名称。
3. 请列出选修了课程编号为001的学生的姓名。
4. 请列出选修了课程名称为数学的学生的姓名。
5. 请列出选修了至少一门课程的学生的姓名。
6. 请列出选修了全部课程的学生的姓名。
7. 请列出选修了课程编号为001和002的学生的姓名。
8. 请列出选修了至少两门课程的学生的姓名。
9. 请列出选修了课程编号为001或002的学生的姓名。
10. 请列出选修了课程编号为001但没有选修课程编号为002的学生的姓名。
三、进阶题1. 请列出每个学生选修的课程数量。
2. 请列出选修了课程数量超过2门的学生的姓名。
3. 请列出选修了课程的学生中,选修课程数量最多的学生的姓名。
4. 请列出选修了课程的学生中,选修课程数量最少的学生的姓名。
5. 请列出选修了课程的学生中,选修课程的平均数量。
6. 请列出选修了课程的学生中,选修课程数量超过平均数量的学生的姓名。
7. 请列出每门课程的选修人数。
8. 请列出选修了课程编号为001的学生选修的其他课程的名称。
9. 请列出选修了课程编号为001和002的学生选修的其他课程的名称。
10. 请列出选修了课程编号为001但没有选修课程编号为002的学生选修的其他课程的名称。
四、总结通过以上的SQL复习题,我们对SQL的基本语法和常见操作有了一定的了解。
SQL是数据库管理系统中非常重要的一部分,掌握好SQL的使用对于数据的查询、操作和定义都非常有帮助。
希望读者能够通过这些题目加深对SQL的理解,并能够熟练运用SQL进行数据处理和管理。
SQL语言(综合)_课堂练习和习题
SQL语言(综合)_课堂练习和习题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的字符型系统数据类型主要包括()。
SQL语句综合练习
SQL语句综合练习要求:创建数据库Stu(由一个数据文件,一个日志文件构成)修改数据库,添加一文件组,再添加两个数据文件,一个日志文件修改数据库名为Student(1)在Student中创建数据表:S(Sno,Sname,Sage,Sdate,Ssex,Saddr,Stel,Snp)C(Cno,Cname,Cperiod)SC(Sno,Cno,Grade)注意:1>其中Cno为课程号,四位,第一位为字母C每列的数据类型及约束条件2>S表中的Snp为学生籍贯(2)在每个表中添加至少十条记录(类型多样化)修改表结构(3)在S中添加新列Spolity(政治面貌),类型为char(4),允许为空(4)删除S中Snp列(5)将S中的Sname列类型修改为varchar(10)(6)1>查询当前SQL Server 的版本信息,语言版本信息2>查询所有学生的学号、姓名、性别、年龄3>查询所有学生的所有信息4>查询所有学生的学号、姓名、性别生成一个新表S15>查找S表中年龄为18岁学生的学号和姓名(7)查找S表中所有男生的全部信息(8)查找S表中的所有女生的信息,显示前三条记录(9)查找S表中的所有18岁学生的学号和姓名,显示前20%(10)把S表中所有男生信息按年龄降序排列(11)使用集函数Count(),统计S表中所有学生的数量(12)在S中使用计算列,以Sdate(出生日期)为依据计算每个学生的当前年龄提示:使用日期函数getdate(),year()(13)对上题产生的计算列命名为“年龄”(14)查找年龄大于(等于)18岁的男生的所有信息(15)以Sno为依据查找所有软件07学生的信息(16)以Sno为依据查找所有年级软件专业学生的学号和姓名(17)以Sno为依据查找所有非软件专业学生的信息(18)以Sno为依据查找所有移动,软件专业各年级的学生信息(19)查找软件07专业年龄大于等于18岁男生的学号和姓名(20)查找没有填写电话号码的学生的信息(既Stel为NULL)(21)查找所有电话号码填写为空的学生的信息(22)查找所有没有填写(或填写为空)的学生的信息(23)查找年龄大于等于18小于等于20,软件专业,家住西安,没有填写电话号码男生的学好和姓名(24)对S中的学生以年龄为依据进行分组,统计各个年龄的学生人数(25)对S中软件专业男生以年龄为依据进行分组,并统计各组的人数,保留人数大于5的分组,各组按照人数降序排列(26)查询选修了课程的学生及所选课程的信息(在where后添加等值连接条件实现)(27)查询选修了课程的学生及所选课程的信息(用FROM 后用JOIN NO连接实现)(28)查询课程关系表中没有学生选修的课程信息(使用外连接实现)(29)查询S中年龄大于所有学生的平均年龄的学生信息(30)查询选修了关系数据库的学生的学号和姓名(用嵌套子查询实现)(31)查询选修课程在3门以上(包含3门的)学生的学号及姓名(32)查询大于家住西安的任何一个学生年龄的学生的姓名及年龄(33)查询大于家住西安的所有学生年龄的学生的姓名及年龄(34)查询软件07级学生的信息及移动06级的学生信息,然后将两个结果集合并为一个(35)对S表中的Sno,Sname列创建索引(降序,升序),命名为S_index(36)删除索引S_index(37)用INSERT动词向表S中插入一新转入学生的信息(表中所有列都有对应数据)(38)用INSERT动词向表S中插入一新转入学生的信息(只插入表中要求的必添项)(39)新建一个毕业学生信息表GS(Sno,Sname,Ssex,Sage),将所有06级学生的相关信息插入其中(40)将S表中学号为"2007501002"的学生的Sage改为15(41)将S表中所有学生的年龄增长一岁(42)删除学号为"2007501007"学生的所有信息(43)删除S表中所有所有06级学生的所有信息答案:use stugo/*修改数据库,再添加两个数据文件*/ALTER DATABASE stuadd file(name=filename=size=maxsize=filegrowth=)ALTER DATABASE stuadd file(name=filename=size=maxsize=filegrowth=/*修改数据库添加一个日志文件*/ALTER DATABASE stuadd log file(name=filename=size=maxsize=filegrowth=)/* 修改数据库名为Student*/exec sp_rename stu student/*(3)在S中添加新列Spolity(政治面貌),类型为char(4),允许为空*/ alter table s add Spolity char(4) null/*(4)删除S中Snp列*/alter table s drop column Snp/*(5)将S中的Sname列类型修改为varchar(10)*/alter table s alter column Sname varchar(10)/*(6)1>查询当前SQL Server 的版本信息,语言版本信息*/ select @@versionselect @@language/* 2>查询所有学生的学号、姓名、性别、年龄*/select Sno,Sname,Ssex,Sage from s/* 3>查询所有学生的所有信息*/select * from s/* 4>查询所有学生的学号、姓名、性别生成一个新表S1*/select Sno,Sname,Ssex into s1 from s/* 5>查找S表中年龄为18岁学生的学号和姓名*/select Sno,Sname from s where Sage=18/*(7)查找S表中所有男生的全部信息*/select * from s where Ssex='男'/*(8)查找S表中的所有女生的信息,显示前三条记录*/select top 3 * from s where Ssex='女'/*(9)查找S表中的所有18岁学生的学号和姓名,显示前20%*/select top 20 percent Sno,Sname from s where Sage='18'/*(10)把S表中所有男生信息按年龄降序排列*/select * from s where Ssex='男' order by Sage desc/*(11)使用集函数Count(),统计S表中所有学生的数量*/select count(*) as '学生数量' from s/*(12)在S中使用计算列,以Sdate(出生日期)为依据计算每个学生的当前年龄提示:使用日期函数getdate(),year()*/select year(getdate())-year(Sdate) as '年龄' from s/*(14)查找年龄大于(等于)18岁的男生的所有信息*/select * from s where Sage>=18 and Ssex='男'/*(15)以Sno为依据查找所有软件07学生的信息*/select * from s where Sno like '200701%'/*(16)以Sno为依据查找所有年级软件专业学生的学号和姓名*/select Sno,Sname from s where Sno like '____01%'/*(17)以Sno为依据查找所有非软件专业学生的信息*/select * from s where Sno not like '____01%'/*(18)以Sno为依据查找所有移动,软件专业各年级的学生信息*/select * from s where Sno like '____01%' or Sno like '____02%'/*(19)查找软件07专业年龄大于等于18岁男生的学号和姓名*/select Sno,Sname from s where Sno like '200701%' and Ssex='男' and Sage>=18/*(20)查找没有填写电话号码的学生的信息(既Stel为NULL)*/select * from s where Stel is null/*(21)查找所有电话号码填写为空的学生的信息*/select * from s where Stel=''/*(22)查找所有没有填写(或填写为空)的学生的信息*//*(23)查找年龄大于等于18小于等于20,软件专业,家住西安,没有填写电话号码男生的学好和姓名*/select Sno,Sname from s where Sage between 18 and 20 and sno like '____01%' and Saddr like '%西安%' and Stel is null/*(24)对S中的学生以年龄为依据进行分组,统计各个年龄的学生人数*/select Sage,count(*) as '人数' from s group by Sage/*(25)对S中软件专业男生以年龄为依据进行分组,并统计各组的人数,保留人数大于5的分组,各组按照人数降序排列*/select Sage,count(*) as '人数' from s where Sno like '____01%' and Ssex='男' group by Sage having count(*)>5 order by 人数desc/*(26)查询选修了课程的学生及所选课程的信息(在where后添加等值连接条件实现)*/ select * from s,sc where s.Sno=sc.Sno/*(27)查询选修了课程的学生及所选课程的信息(用FROM 后用JOIN on 连接实现)*/ select * from s inner join sc on s.Sno=sc.Sno/*(28)查询课程关系表中没有学生选修的课程信息(使用外连接实现)*/select * from c left join sc on o=o/*(29)查询S中年龄大于所有学生的平均年龄的学生信息*/select * from s where Sage>(select avg(Sage) from s)/*(30)查询选修了关系数据库的学生的学号和姓名(用嵌套子查询实现)*/select Sno,Sname from s where Sno in (select Sno from sc where Cno=(select Cno from c where Cname='关系数据库' ))/*(31)查询选修课程在3门以上(包含3门的)学生的学号及姓名*/select Sno,Sname from s where Sno in (select Sno from sc group by Sno having count(*)>=3)/*(32)查询大于家住西安的任何一个学生年龄的学生的姓名及年龄*/select Sname,Sage from s where Sage>any(select Sage from s where Saddr='%西安%' )/*(33)查询大于家住西安的所有学生年龄的学生的姓名及年龄*/select Sname,Sage from s where Sage>all(select Sage from s where Saddr='%西安%' )/*(34)查询软件07级学生的信息及移动06级的学生信息,然后将两个结果集合并为一个*/ select * from s where Sno like '200701%'union/*(35)对S表中的Sno,Sname列创建索引(降序,升序),命名为S_index*/use studentgocreate clusteredindex S_indexon s (Sno desc,Sname asc)/*(36)删除索引S_index*/use studentgodrop index s.S_index/*37,38用insert into 语句完成,自己输入相应数据*//*(39)新建一个毕业学生信息表GS(Sno,Sname,Ssex,Sage),将所有06级学生的相关信息插入*/select Sno,Sname,Ssex,Sage into GS from s where Sno like '2006%'/*(40)将S表中学号为"2007501002"的学生的Sage改为15*/update s set sage=15 where Sno='2007501002'/*(41)将S表中所有学生的年龄增长一岁*/update s set Sage=Sage+1/*(42)删除学号为"2007501007"学生的所有信息*/delete from s where Sno='2007501007'/*(43)删除S表中所有所有06级学生的所有信息*/delete from s where Sno like '2006%'。
第10次课--SQL综合练习_英语_高中教育_教育专区
两表连接的语法格式(JOIN连接)
Select 显示的列 FROM 表1 JOIN 表2 ON <连接条件> Where 查询条件 Group by 分组列 Having 组筛选条件 Order by 排序列
两表连接的语法格式(θ(Theta) 连接)
Select 显示的列 FROM 表1 , 表2 Where <连接条件> Group by 分组列 Having 组筛选条件 Order by 排序列
增删改表中数据
• 插入单行记录的INSERT语句的格式为: INSERT INTO<表名> [(<列名表>)]
VALUES (对应列的值) • 用UPDATE语句实现表中数据的更新。格式:
UPDATE <表名> SET <列名=表达式> [,… n] [FROM <更新条件所在的表>] [WHERE <更新条件>] • 用DELETE语句实现 表中数据的删除。格式:
第10次课--SQL综合练习_英语_高 中教育_教育专区
数据库的数据类型
• 数值型 • 字符型 • 日期型 • 货币型 • 二进制型
• 数据类型在不同数据库产品中有差异,这里是指SQL SERVER中的数据类型
数值型
•准确型 详细介绍见书上相关表格,这里只介绍常用的、需注意的
• 整数
Int:4字节
创建视图
创建视图的SQL语句一般格式为:
CREATE VIEW <视图名> AS SELECT 查询语句 [WITH CHECK OPTION]
[(视图列名表)]
单源表视图,一般可看可改。 多源表视图,一般可看不可改。
SQL复习与练习
说明: 如果完整性约束条件涉及到该表的多个 属性列,则必须定义在表级上,否则既可以定 义在列级也可以定义在表级。
建立视图
CREATE VIEW <视图名> [(<属性名1> [,<属性名2>,…])] AS<子查询> [WITH CHECK OPTION];
建立索引
CREATE [UNIQUE] [CLUSTERED] [nonclustered] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次 序>] ]…);
SELECT [ALL|DISTINCT] <目标列表达式> [别名] [ ,<目标列表达式> [别 多表查询 名]] … FROM <表名或视图名> [别名]
子查询
Байду номын сангаас
[ ,<表名或视图名> [别名]] … [WHERE <条件表达式>] [GROUP BY <列名1> [HAVING <条件表达式>]] [ORDER BY <列名2> [ASC|DESC]
SQL复习与练习
SQL语言动词
表 3.1 SQL 语言的动词 SQL 功 能 数 据 查 询 数 据 定 义 数 据 操 纵 数 据 控 制 动 词 SELECT CREATE, , DROP, ALTER , INSERT,UPDATE , DELETE GRANT,REVOKE ,
查询(检索) 查询(检索)语句的一般格式
9 .将所有选了“数据库”课程的学生 成绩加5分(注:95分以上者不加)
• update score • set score=score+5 • where score<95 and cno in • (select cno from course where cname=’数据库’) 数据库’ 数据库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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语句。