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

合集下载

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

第3章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 SPJ.PNO=P.PNO AND COLOR='红'(4)求没有使用天津供应商生产的红色零件的工程号JNO:SELECT DIST JNO FROM SPJ WHERE JNO NOT IN (SELE JNO FROM SPJ,P,S WHERE S.CITY='天津' AND COLOR='红' AND S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO)。

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.sno=sc.sno and/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o (4)select sno fromsc sc1 where cno=’k1’ and exists (se lect * fromsc sc2 where sc1.sno =sc2.sno and/doc/62176c89fe4733687e21aaca.html o=’k5’)(5)select cno,cnam from c where not exists (select * from s where not exists (select * from sc where/doc/62176c89fe4733687e21aaca.html o=/doc/62176c89fe4733687e21aaca.html o and s.sno=sc.sno)(6)delete from sc where sno in (select sno from s where sex=’男’)或delete sc from sc,s where s.sno=sc.sno and sex=’男’2.设图书借阅数据库有关系图书(图书编号,书名,作者,出版社,出版时间,图书类别)、读者(读者编号,姓名,读者类别)和借阅(读者编号, 图书编号, 借阅⽇期,还期)。

第三章 关系数据库标准语言SQL语言

第三章 关系数据库标准语言SQL语言

第三章关系数据库标准语言SQL语言一、选择题1. 在SQL语言中授权的操作是通过________________语句实现的。

C A.CREATEB.REVOKEC.GRANTD.INSERT2. 假定学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生选课关系是SC(S#,C#,GRADE)。

要查找选修“COMPUTER”课程的“女”学生姓名,将涉及到关系____。

DA.S B.SC,C C.S,SC D.S,C,SC3. 在 MS SQL Server中建立了表 Student(no,name,sex,birthday),no为表的主码,其他属性的默认值为 null。

表中信息如图所示:能够正确执行的插入操作是________。

A No Name Sex Birthday 101 张丽丽女 1967/05/07 102 李芳女 1970/04/14103 王朋男 1982/10/27 A.INSERT INTO student (no,sex) VALUES(102,′男′) B.INSERT INTO student (name,sex) VALUES(′王中′,′男′)D.INSERT INTO student VALUES(106,′王中′,′男′,′1984/03/08′) C.INSERT INTO stude nt VALUES(102,′男′,′王中′,′1984/03/08′) 4. SQL语言中,删除一个表的命令是________。

B A. DELETE B. DROP C. CLEAR D. REMORE 5. 为数据表创建索引的目的是________ AA.提高查询的检索性能B.创建唯一索引C.创建主键D.归类6. 在SQL语言中,条件“RETWEEN 20 AND 30”表示年龄在20到30之间,且________A. 包括20岁和30岁B. 不包括20岁和30岁C. 包括20岁不包括30岁D. 不包括20岁包括30岁7. 为了使索引键的值在基本表中唯一,在建立索引语句中应使用保留字________ AA. UNIQUEB. COUNTC. DISDINCTD. UNION 8. 下面关于SQL语言的说法中,哪一种说法是错误的? ________ AA. 一个SQL数据库就是一个基本表B. SQL语言支持数据库的三级模式结构C. 一个基本表可以跨多个存储文件存放,一个存储文件可以存放一个或多个基本表D. SQL的一个表可以是一个基本表,也可以是一个视图二、简答题1. 什么是基本表?什么是视图?两者的区别和联系是什么?【解答】基本表是本身独立存在的表,在SQL中一个关系就对应一个表。

sql练习题及答案

sql练习题及答案

sql练习题及答案SQL练习题及答案SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。

在数据库管理系统中,SQL被广泛应用于数据的查询、插入、更新和删除等操作。

掌握SQL语言对于数据库开发和数据分析非常重要。

在这篇文章中,我们将提供一些SQL练习题及其答案,帮助读者巩固和提升SQL的应用能力。

1. 查询员工表中所有员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表;```2. 查询员工表中工资大于5000的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 > 5000;```3. 查询员工表中工资在3000到5000之间的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 BETWEEN 3000 AND 5000;```4. 查询员工表中姓"张"的员工的姓名和工资。

```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 姓名 LIKE '张%';```5. 查询员工表中工资最高的员工的姓名和工资。

答案:```sqlSELECT 姓名, 工资 FROM 员工表 WHERE 工资 = (SELECT MAX(工资) FROM 员工表);```6. 查询员工表中每个部门的员工数量。

答案:```sqlSELECT 部门, COUNT(*) AS 员工数量 FROM 员工表 GROUP BY 部门;```7. 查询员工表中每个部门的平均工资。

答案:```sqlSELECT 部门, AVG(工资) AS 平均工资 FROM 员工表 GROUP BY 部门;```8. 查询员工表中工资高于部门平均工资的员工的姓名和工资。

答案:SELECT 姓名, 工资 FROM 员工表 WHERE 工资 > (SELECT AVG(工资) FROM 员工表 GROUP BY 部门);```9. 查询员工表中没有分配部门的员工的姓名和工资。

SQL第三章课后习题答案

SQL第三章课后习题答案

--1):创建数据库并进行一些操作:create database studentonprimary (name=sudent_datafilename='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\student.mdf',size=20,maxsize=50,filegrowth=25%)log on(name=student_log,filename='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\student_log.LDF',size=3,maxsize=10,filegrowth=1)--2):将数据库student的初始分配空间大小扩充到40Muse studentgoalter database studentmodify file(name=student,size=40)--3):将数据库student的空间压缩到最小容量use studentgodbcc shrinkdatabase('student',2)--4):将student数据库重新设置为只读状态EXEC sp_dboption 'student','read only',false--5):将student数据库改名为scholasticexec sp_renamedb 'student','scholastic'--6):删除scholastic数据库drop database scholastic--7):采用系统存储过程分离和附加数据库create database studentexec sp_detach_db @dbname='student' --从服务器分离student数据库exec sp_attach_db @dbname=N'student'@filename1=N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\student_Data.mdf'@filename2=N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\student_log.LDF'--本章习题:--1:--(1)、关系数据库以二维表的形式存储数据--(2)、系统数据库和用户数据库--(3)、master,model,mdb,tempdb--master数据库记录了SQL server 2005的所有系统级信息--madel数据库为用户创建新的数据库提供模板--msdb数据库是SQL Server 2005代理服务使用的数据库--tempdb数据库保存所有的临时表和临时存储过程--(4)、使用对象资源管理器创建跟使用T-SQL语句创建用户数据库--(5)、--举例如下:--create database student 创建一个名为student的数据库--on 指定存储数据库数据部分的磁盘文件--primary (NAME=student, 主要的,命名--FILENAME='D:\student.mdf', 存储位置--size=3, 初始大小--maxsize=10, 最大容量--filegrowth=1) 增长方式--LOG on 指定建立数据库的日志文件--(name=student, 命名--filename='D:\student.ldf', 地址--size=1, 初始大小--maxsize=10, 最大容量--filegrowth=1)增长方式--(6)、--在数据库中创建一个数据表,以及对数据表中的某一数据进行修改等操作都是一个事务--事务日志的作用,根据日志文件信息,可以重新执行某些事务,完成某些未完成的事务,将数据库回滚--到之前的缪戈时间状态、复制事务或服务器等。

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

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 =。

数据库原理第三章练习

数据库原理第三章练习

第三章SQL语言一、选择题:1、SQL语言是的语言,易学习。

A.过程化 B.非过程化C.格式化 D.导航式2、SQL语言是语言。

A.层次数据库 B.网络数据库C.关系数据库 D.非数据库3、SQL语言具有的功能。

2、关系规范化,数据操纵,数据控制B.数据定义,数据操纵,数据控制C.数据定义,关系规范化,数据控制D.数据定义,关系规范化,数据操纵4、SQL语言具有两种使用方式,分别称为交互式SQL和。

A.提示式SQL B.多用户SQLC.嵌入式SQL D.解释式SQL5、SQL语言中,实现数据检索的语句是。

A.SELECT B.INSERTC.UPDATE D.DELETE6、下列SQL语句中,修改表结构的是。

A.ALTER B.CREATEC.UPDATE D.DELETE7、SQL中,与“NOT IN”等价的操作符是。

A.=SOME B.<>SOMEC.=ALL D.<>ALL8、假设有三个基本表:学生表S、课程表C、学生选课表SC,它们的结构如下:S(S#,SN,SEX,AGE,DEPT)C(C#,CN)SC(S#,C#,GRADE)检索所有比“王华”年龄大的学生姓名、年龄和性别。

正确的SQL语句是。

A.SELECT SN,AGE,SEXFROM SWHERE AGE>(SELECT AGE FROM SWHERE SN=”王华”)B.SELECT SN,AGE,SEXFROM SWHERE SN=”王华”C.SELECT SN,AGE,SEXFROM SWHERE AGE>(SELECT AGEWHERE SN=”王华”)D.SELECT SN,AGE,SEXFROM SWHERE AGE>王华.AGE9、检索选修课程”C2”的学生中成绩最高的学生的学号。

正确的SELECT语句是。

A.SELECT S#FROM SCWHERE C#=”C2” AND GRADE>=(SELECT GRADE FROM SCWHERE C#= “C2”)B.SELECT S#FROM SCWHERE C#=”C2” AND GRADE IN(SELECT GRADE FROM SCWHERE C#= “C2”)C.SELECT S#FROM SCWHERE C#=”C2” AND GRADE NOT IN(SELECT GRADE FROM SCWHERE C#= “C2”)D.SELECT S#FROM SCWHERE C#=”C2” AND GRADE>=ALL(SELECT GRADE FROM SCWHERE C#= “C2”)10、检索学生姓名及其所选修课程的课程号和成绩。

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

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

11、针对以上四个表,用SQL语言完成以下各项操作:①给学生表增加一属性Nation(民族),数据类型为Varchar(20);Alter table studentadd Nation Varchar(20);②删除学生表中新增的属性Nation;Alter table studentdrop column Nation;③向成绩表中插入记录(”2001110”,”3”,80);insert into Gradevalues('2001103','3',80);④修改学号为”2001103”的学生的成绩为70分;update Gradeset Gmark=70where Sno='2001103';⑤删除学号为”2001110”的学生的成绩记录;delete Gradewhere Sno='2001110';⑥为学生表创建一个名为,以班级号的升序排序;create index IX_Class on student(Clno ASC);⑦删除IX_Class索引Drop index IX_Class12、针对以上四个表,用SQL语言完成以下各项查询:①找出所有被学生选修了的课程号;select distinct cnofrom grade;②找出01311班女学生的个人信息;select *from studentwhere clno=01311 and ssex='女';③找出01311班、01312班的学生姓名、性别、出生年份;Select sname,ssex, year(getdata())-sage as ‘出生年份’from studentwhere clno in('01311','01312');④找出所有姓李的学生的个人信息;Select *from studentwhere sname like ’李%’;⑤找出学生李勇所在班级的学生人数;Select count(*)from studentwhere clno in (select clnofrom studentwhere sname= '李勇');⑥找出课程名为操作系统的平均成绩、最高分、最低分;Select avg(gmark),max(gmark),min(gmark)from gradewhere cno =(select cnofrom coursewhere cname='操作系统');⑦找出选修了课程的学生人数;Select count(distinct sno)from grade;⑧找出选修了课程操作系统的学生人数;Select count(sno)from gradewhere cno =(select cnofrom coursewhere cname='操作系统');⑨找出2000级计算机软件班的成绩为空的学生姓名。

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

第三章SQL语言一、选择题1. SQL语言是(B )的语言,容易学习。

A.过程化B. 非过程化C.格式化D. 导航式2. SQL语言的数据操纵语句包括SELECT、INSERT、UPDATE、DELETE等。

其中最重要的,也是使用最频繁的语句是(A)。

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 SA GE>=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. ADDINTO SVALUES(’张二’,’化学’,’80’)B. INSERTINTO SVALUES(’张二’,’化学’,’80’)C. ADDINTO SVALUES(’张二’,’化学’,80)D. INSERTINTO SVALUES(’张二’,’化学’,80)13. 设关系数据库中一个表S的结构为:S(SN,CN,grade),其中SN为学生名,CN为课程名,二者均为字符型;grade为成绩,数值型,取值范围0-100。

若要更正王二的化学成绩为85分,则可用()。

A. UPDATE SSET grade=85WHERE SN=’王二’ AND CN=’化学’B. UPDATE SSET grade=’85’WHERE SN=’王二’ AND CN=’化学’C. UPDATE grade=85WHERE 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,SC二、简答题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语言使用CREATE VIEW命令建立视图,DROP VIEW语句删除视图。

3. 用SQL语句建立第3章习题3中的四个表。

答:对于S表:S( SNO,SNAME,STATUS,CITY);建S表CREATE TABLE S(SNO CHAR(3),SNAME CHAR(10),STATUS 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语言完成第3章习题3中的查询。

答:(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.PNOAND 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 *1FROM SPJ, S, PWHERE SPJ.JNO=J.JNOAND SPJ.SNO=S.SNOAND SPJ.PNO=P.PNOAND 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.JNON=SPJZ.JNOAND SPJY.SNO=’S1’));AND SPJY.SNO='S1' ));5. 针对习题3中的四个表试用SQL语言完成以下各项操作:(1)找出所有供应商的姓名和所在城市。

相关文档
最新文档