数据库中SQL查询语句习题含答案

合集下载

(完整版)sql语句练习题及答案

(完整版)sql语句练习题及答案

(完整版)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 表中的学⽣共分布在那⼏个系中。

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,ssexfrom studentwhere sname not like “刘%”;4.查询db_design课程的课程号和学分。

select cno,ccredit from coursewhere 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号课程的学生的学号及其成绩,查询结果按分数降序排列。

4结构化查询语言SQL习题与答案

4结构化查询语言SQL习题与答案

第四章结构化查询语言SQL一、选择题1. 在SQL包含的功能中,最重要的功能是_______。

A) 数据查询B) 数据操纵C) 数据定义D) 数据控制2. 使用SQL语言有两种方式,它们是_______。

A) 菜单式和交互式B) 嵌入式和程序式C) 交互式和嵌入式D) 命令式和解释式3. SQL的全部功能可以用9个动词概括,其中动词INSERT是属于下列__ ____功能。

A) 数据查询B) 数据操纵C) 数据定义D) 数据控制4. SQL语言支持数据库的三级模式结构,其中模式对应于______。

A) 存储文件B) 视图C) 基本表D) 视图和基本表5. 在创建数据表时,可以给字段规定NULL或NOT NULL值,NULL值的含义是______。

A) 0 B) 空格C) NULL D) 不确定6. 在SQL的ALTER语句中,用于删除字段的子句是______。

A) ALTER B) DELETE C) DROP D) MODIFY7. SQL中的INSERT语句可以用于______。

A) 插入一条记录B) 插入一个字段C) 插入一个索引D) 插入一个表8. 下列描述错误的是______。

A)用INSERT-SQL语句可以插入一条记录B)用INSERT-SQL语句可以插入多条记录C)使用INSERT-SQL语句可以插入记录的部分数据D)使用INSERT-SQL语句插入记录时列名的排列顺序必须与表定义时的顺序一致9. INSERT-SQL语句中所使用的数据不能来自于______。

A) 数组B) 变量C) 查询D) 索引10. SQL中的UPDATE语句可以用于______。

A) 更新数据表的结构B) 更新数据表的值C) 更新索引D) 更新查询11. 下列描述错误的是______。

A)SQL中的UPDATE语句可以修改一条记录B)SQL中的UPDATE语句可以修改多条记录C)SQL中的UPDATE语句可以用子查询提供要修改的值D)SQL中的UPDATE语句可以修改子查询的结果12. SQL中的DELETE语句可以用于______。

数据库查询语言(SQL)测试

数据库查询语言(SQL)测试

数据库查询语言(SQL)测试(答案见尾页)一、选择题1. SQL的全称是什么?A. Simplified Query LanguageB. Structured Query LanguageC. Standard Query LanguageD. Streamlined Query Language2. 在SQL中,哪个关键字用于从数据库表中检索数据?A. INSERTB. SELECTC. UPDATED. DELETE3. 以下哪个语句用于在SQL中创建一个新的数据库表?A. CREATE TABLEB. ALTER TABLEC. CREATE DATABASED. ALTER DATABASE4. 在SQL中,哪种数据类型用于存储文本字符串?A. INTB. VARCHARC. FLOATD. BOOLEAN5. 在SQL中,哪个函数用于计算某个字段的平均值?A. COUNTB. SUMC. AVGD. MIN6. 在SQL中,哪个语句用于从一个表中删除一行数据?A. DELETEB. UPDATEC. INSERTD. SELECT7. 在SQL中,哪个关键字用于在查询结果中显示行号?A. ROW_NUMBER()B. ROWNUMC. NUMBERD. SERIAL8. 在SQL中,哪个关键字用于将两个表的数据进行连接?A. JOINB. UNIONC. INTERSECTD. EXCEPT9. 在SQL中,哪个关键字用于限制查询结果的行数?A. LIMITB. TOPC. OFFSETD. FETCH10. 在SQL中,哪个关键字用于在查询中使用通配符来匹配多个值?A. INB. LIKEC. BETWEEND. AND11. 在SQL中,用于修改表中数据的命令是:A. INSERTB. SELECTC. UPDATED. DELETE12. 在SQL中,用于删除表中数据的命令是:A. INSERTB. SELECTC. UPDATED. DELETE13. 在SQL中,用于创建新表的命令是:A. CREATE TABLEB. ALTER TABLEC. DROP TABLED. CREATE DATABASE14. 在SQL中,用于修改现有表结构的命令是:A. INSERTB. SELECTC. UPDATED. ALTER TABLE15. 在SQL中,用于从多个表中联合查询数据的命令是:A. JOINB. UNIONC. INTERSECTD. EXCEPT16. 在SQL中,用于对查询结果进行排序的命令是:A. ORDER BYB. GROUP BYC. WHERED. HAVING17. 在SQL中,用于筛选查询结果的命令是:A. WHEREB. ORDER BYC. GROUP BYD. LIMIT18. 在SQL中,用于限制查询结果数量的命令是:A. ORDER BYB. LIMITC. WHERED. GROUP BY19. 哪个语句用于在SQL中添加新的记录到数据库表中?A. INSERT INTOB. SELECTC. UPDATED. DELETE20. 在SQL中,用于修改已有记录的命令是哪个?A. INSERTB. SELECTC. UPDATED. DELETE21. SQL中用于删除数据库表中所有记录的语句是什么?A. DROP TABLEB. DELETE FROMC. ALTER TABLED. TRUNCATE TABLE22. 在SQL中,用于从数据库表中选择特定列的语句是什么?A. SELECT * FROMB. INSERT INTOC. UPDATED. DELETE23. SQL中用于排序查询结果的关键字是什么?A. ORDER BYB. WHEREC. GROUP BYD. LIMIT24. 在SQL中,用于筛选满足特定条件的记录的关键字是什么?A. WHEREB. SELECTC. FROMD. ORDER BY25. SQL中用于创建新数据库的语句是什么?A. CREATE DATABASEB. ALTER DATABASEC. DROP DATABASED. USE26. 在SQL中,用于删除数据库表的语句是什么?A. ALTER TABLEB. DROP TABLEC. CREATE TABLED. DELETE27. 在SQL中,哪种数据类型用于存储文本?A. INTB. VARCHARC. DATED. BOOLEAN28. 在SQL中,用于连接两个表的操作符是什么?A. JOINB. UNIONC. DIFFERENCED. INTERSECT29. 以下哪个语句用于在SQL中插入一条新记录?A. INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);B. SELECT * FROM table_name;C. UPDATE table_name SET column1 = value1 WHERE condition;D. DELETE FROM table_name;30. 在SQL中,用于删除表中所有记录的语句是什么?A. DELETE FROM table_name;B. DROP TABLE table_name;C. TRUNCATE TABLE table_name;D. ALTER TABLE table_name;31. 在SQL中,用于修改表中记录的数据的语句是什么?A. INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);B. SELECT * FROM table_name;C. UPDATE table_name SET column1 = value1 WHERE condition;D. DELETE FROM table_name;32. 在SQL中,用于从表中检索特定列的数据的语句是什么?A. SELECT * FROM table_name;B. INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);C. UPDATE table_name SET column1 = value1 WHERE condition;D. DELETE FROM table_name;33. 在SQL中,用于对查询结果进行排序的语句是什么?A. ORDER BY column1, column2, column3;B. SELECT * FROM table_name;C. UPDATE table_name SET column1 = value1 WHERE condition;D. DELETE FROM table_name;34. 在SQL中,用于限制查询结果数量的子句是什么?A. LIMITB. WHEREC. GROUP BYD. HAVING35. 在SQL中,用于创建新表的命令是什么?A. CREATE TABLEB. ALTER TABLEC. DROP TABLED. UPDATE36. 在SQL中,哪种类型的子句用于修改查询的结果?A. SELECTB. FROMC. WHERED. UPDATE37. 在SQL中,用于定义新表的CREATE TABLE语句中,哪一列是可选的?A. PRIMARY KEYB. FOREIGN KEYC. NOT NULLD. UNIQUE38. 在SQL中,用于在查询结果中包含行数的关键字是?A. LIMITB. TOPC. COUNTD. OFFSET39. 在SQL中,哪个关键字用于在查询结果中包含聚合函数的结果?A. SELECTB. FROMC. WHERED. GROUP BY40. 在SQL中,哪个关键字用于在查询结果中对列进行分组?A. SELECTB. FROMC. WHERED. GROUP BY41. 在SQL中,哪个关键字用于在查询结果中过滤行?A. SELECTB. FROMC. WHERED. GROUP BY42. 在SQL中,哪个关键字用于在查询结果中排序行?A. SELECTB. FROMC. WHERED. ORDER BY43. 在SQL中,哪个关键字用于在查询结果中连接两个或多个表的列?A. JOINB. WHEREC. SELECTD. FROM二、问答题1. 什么是SQL,它的主要功能是什么?2. SQL中有哪些基本表结构?3. 如何在SQL中创建表?4. SQL中索引的作用是什么?5. SQL中SELECT语句用于执行哪些操作?6. 如何使用JOIN语句将两个表连接起来?7. 什么是事务?请解释ACID属性。

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

数据库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_AddressFROM Studio WHERE name = 'MGM';( b) 找出桑德拉·布洛克( Sandra Bullock ) 的出生日期( birthdate) 。

SELECT birthdate AS Star_BirthdateFROM MovieStar WHERE name = 'Sandra Bullock';* ( c) 找出在1980 年拍摄过电影的所有影星, 或者拍摄过电影名中含有“Love”的电影的所有影星。

SELECT starName FROM StarsInWHERE movieYear = 1980 OR movieTitle LIKE '%Love%';( d) 找出净资产至少1 000 万美元的所有行政长官。

SELECT name AS Exec_NameFROM MovieExec WHERE netWorth >= 10000000;( e) 找出所有的男影星或者是住址中含有Malibu 的影星。

大一sql数据库考试题及答案

大一sql数据库考试题及答案

大一sql数据库考试题及答案一、单项选择题(每题2分,共20分)1. SQL(Structured Query Language)是一种用于_______的语言。

A. 数据库管理B. 操作系统C. 网络通信D. 编程开发答案:A2. 在SQL中,用于查询数据库中数据的语句是_______。

A. INSERTB. UPDATEC. DELETED. SELECT答案:D3. 如果需要向数据库表中插入新的数据行,应使用_______语句。

A. SELECTB. INSERTC. UPDATED. DELETE答案:B4. 在SQL中,用于修改表中数据的语句是_______。

A. INSERTB. UPDATEC. DELETED. SELECT5. 用于删除数据库表中数据的SQL语句是_______。

A. INSERTB. UPDATEC. DELETED. SELECT答案:C6. SQL中的_______关键字用于定义查询结果中返回的列。

A. WHEREB. FROMC. SELECTD. INTO答案:C7. 在SQL查询中,使用_______关键字可以对结果进行排序。

A. ORDER BYB. GROUP BYC. HAVINGD. WHERE答案:A8. 当需要从多个表中查询数据时,应使用_______语句。

A. SELECTB. INSERTC. UPDATED. JOIN答案:D9. SQL中的_______子句用于指定查询条件。

B. FROMC. GROUP BYD. HAVING答案:A10. 在SQL中,使用_______关键字可以将查询结果存储到一个新表或现有表中。

A. INTOB. FROMC. SELECTD. INSERT答案:A二、多项选择题(每题3分,共15分)1. SQL支持的数据类型包括_______。

A. 整型B. 浮点型C. 字符型D. 日期型答案:A, B, C, D2. 在SQL中,以下哪些操作可以用于数据的更新?A. INSERTB. UPDATEC. DELETED. SELECT答案:B, C3. 下列哪些关键字用于SQL查询中分组数据?A. WHEREB. GROUP BYC. HAVINGD. ORDER BY答案:B, C4. 在创建数据库表时,以下哪些约束是常用的?A. PRIMARY KEYB. FOREIGN KEYC. UNIQUED. CHECK答案:A, B, C, D5. SQL中用于数据聚合的函数包括_______。

3-SQL语句练习题参考答案

3-SQL语句练习题参考答案

标准SQL语言一、选择题1、下面关于SQL标准的叙述中,不正确的是(B )。

A.SQL语言是集数据定义、数据操纵、数据控制功能为一体的语言。

B.SQL语言是一种高度过程化的语言。

C.SQL标准规定数据库是按三级模式结构构建。

D.SQL语言是关系型数据库的标准语言。

E.SQL语言是面向集合的语言。

2、SQL语言中,修改基本表结构的语句是( B )。

A.UPDATE B.ALTER C.DROP D.CREATE3、SQL语言中,删除基本表结构的语句是( C )。

A.DELETE B.ALTER C.DROP D.CREATE4、下面关于“视图”的叙述中,不正确的是( C )。

A.视图是一种“虚表”,它的数据被存放在基本表中。

B.视图提供了逻辑数据独立性。

C.不能通过视图来更新数据库中的数据。

D.视图能提供对数据的安全保护。

5、下面关于SELECT语句的叙述中,不正确的是(C)。

A.SELECT产生的结果是一个集合。

B.HA VING子句必须与GROUP BY子句一起使用。

C.可以省略FROM子句。

D.可以省略WHERE子句。

二、填空题1、在使用INSERT语句向一个表中插入元组时,“值列表”中值的个数、(顺序)、类型必须与“列名表”保持一致。

2、在向一个表中插入元组时,对于未指定默认值且(不能取空值)的字段必须赋值。

3、向表中插入元组时,主键的值不能取(NULL )值。

4、在使用DELETE语句时,如果不指定(where 条件)就会将整个表的数据删除。

5、视图是从一个或几个基本表或(视图)导出的表,它与基本表不同,是一个虚表。

三、判断题1、SQL语言是面向集合操作的语言。

√2、可以通过视图来查询数据,但不能通过视图来更新数据库中的数据。

×3、在SQL Server数据库系统中,向表中插入元组时,系统自动为具有标识属性的列赋值。

√4、在SQL Server数据库系统中,向表中插入元组时,对取值类型为timestamp(时间戳)的列不能赋值,系统自动赋值。

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 addconstraint [PK_table1] primary key nonclustered ( column1) on primary;C、alter table table1 column1 primary key ;答案[ A C]4、视图是⼀种常⽤的数据对象,可以简化数据库操作,当使⽤多个数据表来建⽴视图时,不允许在该语句中包括(___)等关键字。

A、ORDER BY,COMPUTEB、ORDER BY,COMPUTE,COMPUTR BYC、ORDER BY,COMPUTE BY,GROUP BYD、GROUP BY,COMPUTE BY答案[B ]5、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但⾄少包括的部分(_1_),使⽤关键字(_2_)可以把重复⾏屏蔽,将多个查询结果返回⼀个结果集合的运算符是(_3__),如果在SELECT语句中使⽤聚合函数时,可以在后⾯使⽤⑴ A、SELECT,INTO B、SELECT,FROMC、SELECT,GROUPD、仅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是⼀个()的数据库系统。

数据库查询练习题

数据库查询练习题

数据库查询练习题1.SQL是那几个英文单词的缩写_B____。

2.A. Standard Query Language B. Structured Query LanguageC. Select Query Language D.以上都不是3.SQL语句中条件短语的关键字是__A____。

A. WHERE B. FOR C. WHILE D.CONDITIO4.与表达式:成绩 BETWEEN 0 AND 100等效率的表达式是______。

A.成绩>0 and 100 B.成绩>=0 and <=100C.成绩>=0 and 成绩<=100 D.成绩>0 and 成绩<1005.LIKE短语中”%”代表的意思是______。

A.一个字符 B.2个字符C.3个字符D.多个字符6.LIKE短语中”_”代表的意思是______。

A.一个字符 B.2个字符C.3个字符 D.多个字符7.查询姓名中含有丽字的表达式对的是_____。

A.姓名 =’*丽*’B.姓名 =’_丽_’C.姓名 like ’%丽%’ D.姓名 like ’_丽_’8.查询不姓王的正确表达式______。

A.姓名<>’王’B.姓名 like ‘王_’C.姓名 not like ‘王%’ D.left(姓名,1)<>‘王’9.Distinct的作用是______。

A.去掉重复值B.修改值C.增加值D.删除值10.去掉重复值的短语是______。

A.DISTINCTB.GROUP BYC.ORDER BYD.REPEAT11.以下函数中求和的函数是______。

A)SUM() B)COUNT() C)AVG() D)MAX()12.求平均值的函数是______。

A)SUM() B)COUNT() C)AVG() D)MAX()13.求最大值的函数是______。

14.A)SUM() B)COUNT() C)AVG()D)MAX()15.求最小值的函数是______。

数据库的sql语句练习题

数据库的sql语句练习题

数据库的sql语句练习题1. 练习题一:查询语句基础在学生表(students)中,包含以下字段:学号(id)、姓名(name)、年龄(age)、性别(gender)、班级(class)、成绩(score)。

请编写SQL语句实现以下需求:a) 查询学生表中所有学生的信息。

b) 查询学生表中的男性学生信息。

c) 查询学生表中年龄为18岁的学生信息。

d) 查询学生表中成绩大于等于90分的学生信息。

e) 查询学生表中姓“张”的学生信息。

2. 练习题二:修改语句练习在学生表(students)中,某个学生的学号为1001,需要将该学生的年龄修改为20岁,请编写相应的SQL语句实现此操作。

3. 练习题三:插入语句练习在学生表(students)中添加一条新纪录,学号为1002,姓名为李明,年龄为19岁,性别为男,班级为三年级,成绩为87分,请编写相应的SQL语句实现此操作。

4. 练习题四:删除语句练习在学生表(students)中,某个学生的学号为1003,需要将该学生的信息从表中删除,请编写相应的SQL语句实现此操作。

5. 练习题五:使用多表查询存在两张表,学生表(students)和课程表(courses)。

学生表包含字段:学号(id)、姓名(name)、班级(class);课程表包含字段:课程编号(course_id)、课程名称(course_name)。

已知约德尔学院中,学号为1001的学生参加了编号为1的课程,请编写SQL语句查询学号为1001的学生所选的课程及课程名称。

6. 练习题六:排序查询练习在学生表(students)中,查询所有学生的信息,并按照成绩从高到低进行排序。

以上是数据库的SQL语句练习题,请按照上述要求编写相应的SQL语句进行解答。

祝你练习愉快,取得好成绩!。

实验5 sql语句练习——图书馆数据库答案

实验5  sql语句练习——图书馆数据库答案

实验5sql语句练习——图书馆数据库实验5sql语句练习——图书馆数据库实验目得(1)了解SQLServer数据库得逻辑结构与物理结构;(2)了解表得结构特点;(3)了解SQL Server得基本数据类型;(4)了解空值概念;(5)学会在企业管理器中创建数据库与表;(6)学会使用T—SQL语句创建数据库与表。

(7)学会使用T-SQL语句更新数据。

(7)学会使用T—SQL语句创建多种查询.实验准备首先要明确,能够创建数据库得用户必须就是系统管理员,或就是被授权使用CREATE DA TABASE语句得用户。

其次创建数据库必须要确定数据库名、数据库大小(最初得大小、最大得大小、就是否允许增长及增长方式)与存储数据库得文件.然后,确定数据库包含哪些表,以及所包含得各表得结构,还要了解SQL Server得常用数据类型,以创建数据库得表。

此外还要了解两种常用得创建数据库、表得方法,即在企业管理器中创建与使用T-SQL得CREATE DAT ABASE语句.实验内容假设有5本书设有一图书馆数据库,其中包括3个表,即图书表、读者表与借阅表。

三个表得结构如图:图书表结构列名说明数据类型约束说明书号图书唯一得编号定长字符串,长度为10 主键书名图书得名称定长字符串,长度为50 空值作者图书得编著者名定长字符串,长度为30 空值出版社图书得出版社定长字符串,长度为30 空值单价出版社确定得图书得单价浮点型,Float 空值读者表结构列名说明数据类型约束说明读者号读者唯一得编号定长字符串,长度为10 主键(1)用Sql语句创建图书馆数据库Create databaseLab05(2)用Sql语句创建上述3个表createtable book(ﻩbookId char(10)primary key,ﻩbookNamevarchar(50),ﻩbookWritervarchar(30),bookPublishvarchar(30),ﻩbookPricefloat)create tablereader(readerId char(10)primarykey,readerName varchar(8)notnull,readerSex char(2)not null,ﻩreaderOfficeTel char(8),readerDepartment varchar(30))create table借阅表(readerIdchar(10),bookIdchar(10),checkOutTime char(8),checkInTime char(8),primarykey(readerId,bookId),ﻩforeignkey (readerId) references reader(readerId),foreignkey (bookId)references book(bookId),)(3)基于图书馆数据库得3个表,用sql语言完成一下操作:1)为图书表增加一列“ISBN”,数据类型为CHAR(10)alter table book add ISBN char(10)2)为刚添加得ISBN列增加缺省值约束,约束名为ISBNDEF,缺省值为‘7111085949'ALTER TABLE bookADDCONSTRAINT ISBNDEFDEFAULT ('7111085949’) FORISBN3)删除图书表中ISBN列增加得缺省值约束alter table bookdrop ISBNDEF4)删除图书表中新增得ISBN列ALTER TABLE book DROPCOLUMNISBN5)查询全体图书得图书号、书名、作者、出版社与单价select bookId,bookName,bookWriter,bookPublish,bookPricefrom book6)查询全体图书得信息,其中单价打8折,并设置该列得别名为‘打折价’select bookId,bookName,bookWriter,bookPublish,(bookPrice*0、8)as打折价from book7)显示所有借阅者得读者号,并去掉重复行selectdistinct readerIdfrom 借阅表8)查询所有单价在20-30元之间得图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPrice between 20and309)查询机械工业出版社、科学出版社、人民邮电出版社得图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwherebookPublish in('机械工业出版社’, '科学出版社',’人民邮电出版社’)10)查询既不就是机械工业出版社、人民邮电出版社、也不就是科学出版社出版得图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPublish not in(’机械工业出版社’, '科学出版社','人民邮电出版社’)11)查询姓名得第二个字符就是'建’,并且只有2个字得读者得读者号及姓名select readerId,readerNamefromreaderwhere readerName like’_建'12)查询姓名不就是以‘王’、‘张'或‘李’开头得所有读者得读者号及姓名【方式一】查询出来得结果有问题!select readerId,readerNamefrom readerwhere readerName not in('王%','张%','李%')【方式二】select readerId,readerNamefrom readerwhere readerName not in(selectreaderNameﻩfromreaderwhere readerName like’王%’or readerName like'张%’orreaderNamelike'李%')13)查询无归还日期得借阅信息selectﻩbook、bookId,book、bookName,reader、readerId,reader、readerName,借阅表、checkOutTime as 借书时间,ﻩ借阅表、checkInTimeas 还书时间from借阅表,book,readerwhereﻩ借阅表、bookId = book、bookIdand借阅表、readerId=reader、readerIdand ﻩﻩ借阅表、checkInTimeisnull14)查询机械工业出版社图书得平均价格、最高价、最低价select avg(bookPrice)as 平均价格,max(bookPrice)as 最高价,min(bookPrice)as 最低价from bookwhere bookPublish =’机械工业出版社图书’15)查询读者得基本信息及借阅情况ﻩﻩselect reader、readerId,reader、readerName ,借阅表、bookId,book、bookName,book、bookPublishfrom reader ,借阅表,bookwherereader、readerId = 借阅表、readerIdﻩﻩﻩﻩandbook、bookId = 借阅表、bookIdﻩﻩand 借阅表、readerId='1000000007'16)查询至少借阅过1本机械工业出版社出版得图书得读者得读者号、姓名、书名及借阅本数,并按借阅本书多少降序排列selectr、Rno,Rname,count(borrow、Bno)借阅册数from borrow,b,rwhere b、bno=borrow、bnoand press='机械工业出版社' and borrow、rno=r、rnogroup by r、rno,Rnameorderbycount(borrow、Bno) desc17)查询与‘王小平'得办公电话相同得读者得姓名/* 使用“自连接方式”求解*/ﻩﻩselect b、readerName,b、readerId,a、readerOfficeTelfrom readera,reader bwhere a、readerName like ’王小平'anda、readerOfficeTel=b、readerOfficeTel/*18)查询所有单价小于平均单价得图书得书号、书名及出版社select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice <(ﻩselectavg(bookPrice)as averagePriceﻩfrom book)19)查询‘科学出版社’得图书单价比‘机械工业出版社’最高单价还高得图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPublish like’科学出版社’and bookPrice〉(ﻩselectmax(bookPrice)ﻩfrom bookwhere bookPublish='机械工业出版社')20)查询‘科学出版社’得图书中单价比‘机械工业出版社'最低单价高得图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice 〈(ﻩselect max(bookPrice)ﻩfrom bookﻩwhere bookPublish ='机械工业出版社’ﻩ)and bookPublish like’科学出版社'21)创建机械工业出版社图书得视图CREATE VIEW 机械工业出版社ViewASSELECT bookId,bookName,bookPriceFROM bookWHERE bookPublish=’机械工业出版社'22)创建一个借阅统计视图,名为CountView,包含读者得读者号与总借阅本数CREATEVIEW CountViewASSELECT readerId as读者号,count(*) as 总借阅本数FROM借阅表GROUPBY readerId23)创建一个借阅统计视图,名为CountView10,包含借阅总本数打于2得读者号与总借阅本数CREATE VIEW借阅统计视图ViewASSELECT readerIdas读者号,count(*) as总借阅本数FROM 借阅表GROUP BY readerIdHAVINGCOUNT(*)〉2。

学生选课数据库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数据库中的数据表(一)StudentSno Sname Ssex Sbirthday class95033108曾华男1977-09-01105匡明男1975-10-950310295033107王丽女1976-01-2395033101李军男1976-02-20109王芳女1975-02-950311095031103陆君男1974-06-03表(二)CourseCno Cname Tno3-105计算机导论8253-245操作系统8046-166数字电路8569-888高等数学831表(三)ScoreSno Cno Degree1033-245861053-245751093-245681033-105921053-105881093-105761013-105641073-105911083-105781016-166851076-166791086-16681表(四)TeacherTno Tname Tsex Tbirthday Prof Depart804李诚男1958-12-02副教授计算机系856张旭男1969-03-12讲师电子工程系825王萍女1972-05-05助教计算机系831刘冰女1977-08-14助教电子工程系-- 1、查询Student表中的所有记录的Sname、Ssex和Class列。

sql面试题目汇总(3篇)

sql面试题目汇总(3篇)

第1篇第一部分:基础SQL查询1. 如何使用SELECT语句从数据库中查询数据?- 答案:SELECT语句用于从数据库表中查询数据。

基本语法如下:```sqlSELECT column1, column2, ... FROM table_name;```2. 如何使用WHERE子句对查询结果进行过滤?- 答案:WHERE子句用于过滤查询结果,只返回满足特定条件的行。

语法如下: ```sqlSELECT column1, column2, ... FROM table_name WHERE condition;```3. 如何使用ORDER BY子句对查询结果进行排序?- 答案:ORDER BY子句用于对查询结果进行排序。

语法如下:```sqlSELECT column1, column2, ... FROM table_name ORDER BY column1ASC|DESC;```4. 如何使用LIMIT子句限制查询结果的数量?- 答案:LIMIT子句用于限制查询结果的数量。

语法如下:```sqlSELECT column1, column2, ... FROM table_name LIMIT row_count;```5. 如何使用DISTINCT关键字去除查询结果中的重复值?- 答案:DISTINCT关键字用于去除查询结果中的重复值。

语法如下:```sqlSELECT DISTINCT column1, column2, ... FROM table_name;```第二部分:高级SQL查询6. 如何使用JOIN子句进行多表查询?- 答案:JOIN子句用于连接两个或多个表,并返回满足连接条件的行。

常见的JOIN类型包括:- INNER JOIN:返回两个表中匹配的行。

- LEFT JOIN(或LEFT OUTER JOIN):返回左表的所有行,即使右表中没有匹配的行。

- RIGHT JOIN(或RIGHT OUTER JOIN):返回右表的所有行,即使左表中没有匹配的行。

数据库期末考试题SQL及答案

数据库期末考试题SQL及答案

数据库期末考试题SQL及答案一、单项选择题(每题2分,共10分)1. 在SQL中,用于创建新表的语句是:A. CREATE TABLEB. CREATE DATABASEC. INSERT INTOD. SELECT答案:A2. 如果想要查询所有学生的姓名和成绩,应该使用以下哪个SQL语句?A. SELECT name, score FROM students;B. SELECT * FROM students;C. SELECT name FROM students;D. SELECT score FROM students;答案:A3. 在SQL中,用于更新表中数据的语句是:A. INSERTB. UPDATEC. DELETED. SELECT答案:B4. 下列哪个函数用于计算字段值的平均值?A. AVG()B. SUM()C. COUNT()D. MAX()答案:A5. 如果想要删除名为“students”的表,应该使用以下哪个SQL语句?A. DROP TABLE students;B. REMOVE TABLE students;C. DELETE TABLE students;D. DESTROY TABLE students;答案:A二、多项选择题(每题3分,共15分)1. 下列哪些SQL语句用于查询数据?A. SELECTB. INSERTC. UPDATED. DELETE答案:A2. 在SQL中,以下哪些选项是数据类型?A. INTB. VARCHARC. DATED. BOOLEAN答案:A, B, C3. 以下哪些关键字用于连接表?A. JOINB. UNIONC. INTERSECTD. EXCEPT答案:A4. 在SQL中,哪些语句用于删除数据?A. DELETEB. DROPC. REMOVED. TRUNCATE答案:A, B, D5. 下列哪些函数用于字符串操作?A. CONCAT()B. LENGTH()C. SUBSTRING()D. SUM()答案:A, B, C三、填空题(每题3分,共15分)1. 在SQL中,使用________关键字来定义主键。

SQL复习题(附部分答案)

SQL复习题(附部分答案)

语句。
(A)保存 (B)编写 (C)解释 (D)编译
答案[ D]
29、数据管理发展的三个阶段不包括(
)。
(A)人工管理阶段 (B)文件管理阶段
(C)数据库管理阶段 (D)智能管理阶段
答案[ D]
30、SQL 语言按照用途可以分为三类,不包括下面选项中的( )。
(A)DML (B)DCL (C)DQL (D)DDL
B.UPDATE,INSERT
C、DELETE,UPDATE
D.CREATE,INSERT INTO
答案[ A]
47、创建表的命令是( )。
A、 Create database 表名
B.Create VIEW 表名
C、 Create TABLE 表名
D.Alter TABLE 表名
答案[ C]
48、在 Transact-SQL 语法中,SELECT 语句的完整语法较复杂,但至少包括的部分
答案[ D]
19、 聚合函数的返回值是( )。
A、一个标量值 B、一组值 C、表达式 D、表
答案[ A]
20、关于主键描述正确的是:(

(A)包含一列
(B)包含两列
(C)包含一列或者多列 (D)以上都不正确
答案[ ]
22、在 SELECT 语句的 WHERE 子句的条件表达式中,可以匹配 0 个到多个字符的
(C).mdf (D).idf
答案[B ]
27、表示职称为副教授同时性别为男的表达式为(
)
A.职称=‘副教授' OR 性别=‘男'
B.职称=‘副教授' AND 性别=’男'
C.BETWEEN‘副教授' AND ’男'

数据库查询练习题

数据库查询练习题

数据库查询练习题一、选择题(每题2分,共10分)1. 在SQL中,用于查询数据的关键字是:A. SELECTB. INSERTC. UPDATED. DELETE2. 下列哪个选项不是SQL数据类型?A. INTB. FLOATC. DATED. BOOLEAN3. 在SQL中,使用哪个关键字可以对查询结果进行排序?A. ORDER BYB. SORT BYC. RANK BYD. ARRANGE BY4. 以下哪个不是SQL聚合函数?A. COUNTB. AVGC. SUMD. DISTINCT5. SQL语句中,用于指定查询条件的关键字是:A. WHEREB. IFC. CASED. WHEN二、填空题(每空2分,共20分)6. 在SQL查询中,使用________关键字可以限制查询结果的数量。

7. 要查询员工表中工资最高的员工,可以使用聚合函数________和________。

8. SQL中的________子句允许我们对查询结果进行分组。

9. 使用________函数可以返回查询结果中的唯一值。

10. 在SQL查询中,________关键字用于连接两个或多个表。

三、简答题(每题10分,共30分)11. 解释SQL中的内连接(INNER JOIN)和外连接(OUTER JOIN)的区别。

12. 描述SQL中使用子查询(Subquery)的场景及其优势。

13. 阐述SQL中事务(Transaction)的概念及其重要性。

四、应用题(每题15分,共30分)14. 假设有一个名为“Employees”的表,包含以下列:EmployeeID, FirstName, LastName, DepartmentID, Salary。

编写一个SQL查询,列出每个部门的平均工资。

15. 给定一个名为“Orders”的表,包含以下列:OrderID, CustomerID, OrderDate, TotalAmount。

sql数据库试题及答案

sql数据库试题及答案

sql数据库试题及答案# SQL数据库试题及答案一、选择题1. SQL代表什么?- A. Structured Query Language- B. Simple Query Language- C. Standard Query Language- D. System Query Language答案:A2. 在SQL中,用于查询数据的语句是:- A. INSERT- B. UPDATE- C. SELECT- D. DELETE答案:C3. 下列哪个不是SQL的数据类型?- A. INT- B. FLOAT- C. CHAR- D. TEXT答案:D二、填空题4. SQL中的主键(_______)是用来唯一标识表中每一行数据的字段。

答案:PRIMARY KEY5. 在SQL中,使用(_______)语句可以增加新的数据记录到表中。

答案:INSERT INTO6. SQL中的(_______)用于删除表中的记录。

答案:DELETE三、简答题7. 简述SQL中的事务是什么,并说明其四个基本特性。

答案:事务是SQL中用来保证数据一致性的操作序列。

事务具有以下四个基本特性:- 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个点。

- 一致性(Consistency):事务必须保证数据库从一个一致的状态转移到另一个一致的状态。

- 隔离性(Isolation):并发执行的事务之间不会互相影响。

- 持久性(Durability):一旦事务提交,它对数据库的改变就是永久性的,即使系统发生故障也不会丢失。

8. 解释什么是SQL的联接(JOIN)操作,并给出内联接(INNER JOIN)的例子。

答案:联接操作是SQL中用于结合两个或多个表中的行的一种操作。

内联接根据两个表中的共同字段来选择记录。

例如:```sqlSELECT Orders.OrderID, Customers.CustomerNameFROM OrdersINNER JOIN Customers ON Orders.CustomerID =Customers.CustomerID;```这个例子中,`Orders` 表和 `Customers` 表通过 `CustomerID` 字段进行内联接。

SQL课后练习题(1-9章答案)

SQL课后练习题(1-9章答案)

第一章1、数据完整性是指( D )A.数据库存中的数据不存在重复B.数据库中所有的数据格式是一样的C.所有的数据全部保存在数据库中D.数据库中的数据能够正确反映情况2、SQL中pubs数据库属于(A )A.用户数据库B.系统数据库C.数据库模板D.数据库管理系统3、数据冗余指的是( D )A.数据与数据之间没有联系B.数据有丢失C.数据量太大D.存在重复的数据4、SQL Server数据库的主数据文件的扩展名为( B )A. .sqlB. .mdfC. .mdbD. .ldf5、下列关于关系数据库叙述错误的是(B )A.关系数据库的结构一般保持不变,但也可根据需要进行改变B.一个数据表组成一个关系数据库,多种不同数据则需要创建多个数据库C. 关系数据库表中的所有记录的关键字字段的值互不相同D. 关系数据库表中的外部关键字不能用于区别该表中的记录6、创建数据库时,需要指定( C )属性。

A.数据库初始大小B.数据库的存放位置C.数据库的物理名和逻辑名D.数据库的访问权限7、以下说法正确的是( A )A.通过SQL Server服务器对SQL Server的启动、停止和通过服务管理器对SQL Server的启动、停止是同等功效B.必须先启动服务管理器中的SQL Server服务之后才能通过SQL Server服务管理器启动SQL ServerC.必须先通过SQL Server服务管理器启动SQL Server之后才能启动服务管理器中的SQL Server服务D.只能通过服务管理器对SQL S erver进行启动和停止8、SQL Server提供的4个系统数据库,以下说法正确的是( D )A.tempdb数据库是一个空数据库,完全可以删除B.adventure works是用来做模板的一个数据库C.msdb数据库是用来做例子的数据库D.创建新的空白数据库时,将使用Model数据库所规定的默认值9、以下说法错误的是(C)A.数据完整性是指存储在数据库中数据的准确性B.SQL Server是一个DBMSC.ERP、CRM、MIS等都是DBMSD.设计数据库时允许必要的冗余第二章1、创建银行的贷款情况表时,“还款日期”默认为当天,且必须晚于“借款日期”,应采用(A)约束。

SQL语句练习题

SQL语句练习题

一、对于学生和课程之间的学习关系,有如下的属性:学生(学号,姓名,性别,出生日期,民族,班级,家庭住址,联系电话)课程(课程ID,课程名称)学习(学号,课程ID,成绩)1.画出这种关系的E-R图。

2.指出各表的主键字段。

3.在此数据库的基础上,写出SQL语句。

(1)查出所有男同学的基本信息(2)查出学生的学号,姓名,班级,课程名称,成绩(3)查出成绩表中成绩大于平均成绩的信息(4)查出民族为汉族或者回族的学生的所有基本信息(5)查出成绩在70-80分之间的学生姓名,课程名称和成绩二、.设职工社团数据库有三个基本表:职工(职工号,姓名,年龄,性别);社会团体(编号,名称,负责人,活动地点);参加(职工号,编号,参加日期)。

其中:1)职工表的主码为职工号。

2)社会团体表的主码为编号;外码为负责人,被参照表为职工表,对应属性为职工号。

3)参加表的职工号和编号为主码;职工号为外码,其被参照表为职工表,对应属性为职工号;编号为外码,其被参照表为社会团体表,对应属性为编号。

试用SQL语句表达下列操作:l)定义职工表、社会团体表和参加表,并说明其主码和参照关系。

2)建立下列两个视图。

社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别);参加人情况(职工号,姓名,社团编号,社团名称,参加日期)3)查找参加唱歌队或篮球队的职工号和姓名。

4)查找没有参加任何社会团体的职工情况。

5)查找参加了全部社会团体的职工情况。

6)查找参加了职工号为“1001”的职工所参加的全部社会团体的职工号。

7)求每个社会团体的参加人数。

8)求参加人数最多的社会团体的名称和参加人数。

9)求参加人数超过100人的社会团体的名称和负责人。

10)把对社会团体和参加两个表的数据查看、插入和删除数据的权力赋给用户李平,并允许他再将此权力授予其他用户。

建立一个数据库表student,数据表computer,字段名name,number,sex,SQL2000,flash,net ,其中SQL2000,flash,net设置为浮点型float.1、输出所有男生的成绩use studentselect yuyan as SQL数据库,flash as 网络动画,net as 计算机网络from computerwhere sex='男'2、输出所有SQL成绩在90以上的女生的成绩use studentselect SQL2000 as SQL数据库from computerwhere sex='女'and SQL2000>=903、输出某一科目不合格所有的男生的成绩use studentselect yuyan as SQL数据库,flash as 网络动画,net as 计算机网络from computerwhere sex='男'and SQL2000<60 or flash<60 or net<604、计算并显示每位同学各科的总分和平均分,并按总分从高到低排序use studentselect SQL2000+flash+net as 总分,(SQL2000+flash+net/3)as 平均分from computerorder by SQL2000+flash+net desc5、输出所有计算机网络成绩在70-79之间的同学use studentselect * from computerwhere flash between 70 and 796、输出所有姓“陈”和姓“李”的男生use studentselect * from computerwhere sex='男'and left(name,1) in ('李', '陈')或者use studentselect * from computerwhere sex='男' (and name like '李__'or name like '陈__')7、输出所有学号为偶数的同学成绩use studentselect num as 学号,SQL2000 as SQL数据库,flash as 网络动画,net as 计算机网络from computerwhere num%2=08、输出Flash成绩最好的5位同学use studentselect top 5 * from computerorder by flash desc9、更新同学的成绩,把计算机网络成绩在55-59之间的同学该科的成绩调整为60分use studentupdate computerset net=60where net between 55 and 5910、删除平均分最低的3位同学use studentselect top 3 *,(SQL2000+flash+net)/3 as 平均分from computerorder by (SQL2000+flash+net)/3delete from computerwhere number in(033001,033003,033011)11、统计成绩表中平均分为90以上(含90分)人数use studentselect count(*) from computerwhere (SQL2000+flash+net)/3>=9012、用SQL命令向成绩表添加一个新字段——C语言use studentalter table computeradd c语言float1. 找出没有选修过“李明”老师讲授课程的所有学生姓名--实现代码:select sname from swhere not exists(select * from sc,cwhere o=oand c.cteacher='李明'and sc.sno=s.sno)2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩--实现代码:select s.sno,s.sname,avg_scgrade=avg(sc.scgrade)from s,sc,(select snofrom scwhere scgrade<60group by snohaving count(distinct cno)>=2)a where s.sno=a.sno and sc.sno=a.snogroup by s.sno,s.sname3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名--实现代码:select s.sno,s.snamefrom s,(select sc.snofrom sc,cwhere o=oand ame in('1','2')group by snohaving count(distinct cno)=2)sc where s.sno=sc.sno4. 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号--实现代码:select s.sno,s.snamefrom s,sc sc1,sc sc2where o='1'and sc2.sno='2'and o=oand sc1.scgrade>sc2.scgrade5. 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩--实现代码:select sc1.sno,[1号课成绩]=sc1.scgrade,[2号课成绩]=sc2.scgradefrom sc sc1,sc sc2where o='1'and o='2'and sc1.sno=sc2.snoand sc1.scgrade>sc2.scgrade创建表和输入数据CREATE TABLE STUDENT(SNO VARCHAR(3) NOT NULL,SNAME VARCHAR(4) NOT NULL,SSEX VARCHAR(2) NOT NULL,SBIRTHDAY DATETIME,CLASS VARCHAR(5))goCREATE TABLE COURSE(CNO VARCHAR(5) NOT NULL,CNAME VARCHAR(10) NOT NULL,TNO VARCHAR(10) NOT NULL)goCREATE TABLE SCORE(SNO VARCHAR(3) NOT NULL,CNO VARCHAR(5) NOT NULL,DEGREE NUMERIC(10, 1) NOT NULL)goCREATE TABLE TEACHER(TNO VARCHAR(3) NOT NULL,TNAME VARCHAR(4) NOT NULL, TSEX VARCHAR(2) NOT NULL, TBIRTHDAY DATETIME NOT NULL, PROF VARCHAR(6),DEPART VARCHAR(10) NOT NULL)INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,'曾华' ,'男' ,1977-09-01,95033);INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,'匡明' ,'男' ,1975-10-02,95031);INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,'王丽' ,'女' ,1976-01-23,95033);INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,'李军' ,'男' ,1976-02-20,95033);INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,'王芳' ,'女' ,1975-02-10,95031);INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,'陆君' ,'男' ,1974-06-03,95031);GOINSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-105' ,'计算机导论',825) INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-245' ,'操作系统' ,804); INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('6-166' ,'数据电路' ,856); INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('9-888' ,'高等数学' ,100);GOINSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-245',86);INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-245',75);INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-245',68);INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-105',92);INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-105',88);INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-105',76);INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'3-105',64);INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'3-105',91);INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'3-105',78);INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'6-166',85);INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'6-106',79);INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'6-166',81);GOINSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)VALUES (804,'李诚','男','1958-12-02','副教授','计算机系');INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)VALUES (856,'张旭','男','1969-03-12','讲师','电子工程系');INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)VALUES (825,'王萍','女','1972-05-05','助教','计算机系');INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART)VALUES (831,'刘冰','女','1977-08-14','助教','电子工程系');练习题目1、查询Student表中的所有记录的Sname、Ssex和Class列。

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

查询问题:设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME )(1)检索计算机系的全体学生的学号,姓名和性别;(2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS ”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名;(8)查询所学课程包含学生S3所学课程的学生学号。

(1)检索计算机系的全体学生的学号,姓名和性别;SELECT Sno ,Sname ,Sex FROM SWHERE Sdept =’CS ’;(2)检索学习课程号为C2的学生学号与姓名;(3)检索选修课程名为“DS ”的学生学号与姓名 本查询涉及到学号、姓名和课程名三个属性,分别存放在S 和C 表中,但S 和C 表没有直接联系,必须通过SC 表建立它们二者的联系。

C → SC → S基本思路:(1)首先在C 表中找出“DS ”课程的课程号Cno ;(2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ;(3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。

SELECT Sno ,Sname FROM SWHERE Sno IN (SELECT Sno FROM SCWHERE Cno IN (SELECT Cno FROM CWHERE Cname=‘DS ’));(4)检索选修课程号为C2或C4的学生学号;SELECT Sno FROM SCWHERE Cno=‘C2’ OR Cno=‘C4’;(5)检索至少选修课程号为C2和C4的学生学号; SELECT SnoFROM SC X ,SC YWHERE = AND =‘C2’ AND =‘C4’ ;(6)检索不学C2课的学生姓名和年龄;(7)检索学习全部课程的学生姓名;在表S 中找学生,要求这个学生学了全部课程。

换言之,在S 表中找学生,在C 中不存在一门课程,这个学生没有学。

SELECT Sname FROM SWHERE NOT EXISTS (SELECT * FROM CWHERE NOT EXISTS (SELECT * FROM SCWHERE = AND =));(8)查询所学课程包含学生S3所学课程的学生学号。

分析:不存在这样的课程Y ,学生S3选了Y ,而其他学生没有选。

SELECT DISTINCT Sno FROM SC AS X WHERE NOT EXISTS (SELECT *FROM SC AS YWHERE =‘S3’ AND NOT EXISTS (SELECT *FROM SC AS ZWHERE = AND =));设教学数据库Education有三个关系:学生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME)查询问题:1:查所有年龄在20岁以下的学生姓名及年龄。

2:查考试成绩有不及格的学生的学号3:查所年龄在20至23岁之间的学生姓名、系别及年龄。

4:查计算机系、数学系、信息系的学生姓名、性别。

5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别6:查所有姓“刘”的学生的姓名、学号和性别。

7:查姓“上官”且全名为3个汉字的学生姓名。

8:查所有不姓“张”的学生的姓名。

9:查DB_Design课程的课程号。

10:查缺考的学生的学号和课程号。

11:查年龄为空值的学生的学号和姓名。

12:查计算机系20岁以下的学生的学号和姓名。

13:查计算机系、数学系、信息系的学生姓名、性别。

14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。

15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

16:查询学生总人数。

17:查询选修了课程的学生人数。

18:计算选修了C1课程的学生平均成绩。

19:查询学习C3课程的学生最高分数。

20:查询各个课程号与相应的选课人数。

21:查询计算机系选修了3门以上课程的学生的学号。

22:求基本表S中男同学的每一年龄组(超过50人)有多少人要求查询结果按人数升序排列,人数相同按年龄降序排列。

23:查询每个学生及其选修课程的情况。

24:查询选修了C2课程且成绩在90分以上的所有学生。

25:查询每个学生选修的课程名及其成绩。

26:统计每一年龄选修课程的学生人数。

27:查询选修了C2课程的学生姓名。

28:查询与“张三”在同一个系学习的学生学号、姓名和系别。

29:查询选修课程名为“数据库”的学生学号和姓名。

30:查询与“张三”在同一个系学习的学生学号、姓名和系别。

31:查询选修课程名为“数据库”的学生学号和姓名。

32:查询选修了C2课程的学生姓名。

33:查询所有未选修C2课程的学生姓名。

34:查询与“张三”在同一个系学习的学生学号、姓名和系别。

35:查询选修了全部课程的学生姓名。

36:查询所学课程包含学生S3所学课程的学生学号(1)比较例1:查所有年龄在20岁以下的学生姓名及年龄。

SELECT Sname,SageFROM SWHERE Sage<20; (NOT age>=20)例2:查考试成绩有不及格的学生的学号SELECT DISTINCT SnoFROM SCWHERE grade<60;(2)确定范围例3:查所年龄在20至23岁之间的学生姓名、系别及年龄。

SELECT Sname,Sdept,SageFROM SWHERE Sage BETWEEN 20 AND 23;(3)确定集合例4:查计算机系、数学系、信息系的学生姓名、性别。

SELECT Sname,SsexFROM SWHERE Sdept IN (’CS’, ‘IS’, ‘MATH’);例5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别SELECT Sname,SsexFROM SWHERE Sdept NOT IN (’CS’, ‘IS’, ‘MATH’);(4)字符匹配例6:查所有姓“刘”的学生的姓名、学号和性别。

SELECT Sname,Sno,SsexFROM SWHERE Sname LIKE ‘刘%’;例7:查姓“上官”且全名为3个汉字的学生姓名。

SELECT SnameFROM SWHERE Sname LIKE ‘上官_ _’;例8:查所有不姓“张”的学生的姓名。

SELECT Sname,Sno,SsexFROM SWHERE Sname NOT LIKE ‘张%’;例9:查DB_Design课程的课程号。

SELECT CnoFROM CWHERE Cname LIKE ‘DB\_Design’ ESCAPE ‘\’;(5)涉及空值的查询例10:查缺考的学生的学号和课程号。

SELECT Sno,CnoFROM SCWHERE Grade IS NULL;(不能用=代替) { 有成绩的 WHERE Grade IS NOT NULLL;}例11:查年龄为空值的学生的学号和姓名。

SELECT Sno,SnameFROM SWHERE Sage IS NULL;(6)多重条件查询例12:查计算机系20岁以下的学生的学号和姓名。

SELECT Sno,SnameFROM SWHERE Sdept=‘CS’ AND Sage<20;例13:查计算机系、数学系、信息系的学生姓名、性别。

SELECT Sname,SsexFROM SWHERE Sdept =’CS’ OR Sdept =‘IS’ OR Sdept =’MATH’);3、对查询结果排序例14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。

SELECT Sno,GradeFROM SCWHERE Cno=‘C3’ORDER BY Grade DESC;例15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

SELECT *FROM SORDER BY Sdep,Sage DESC;4.聚合函数的使用例16:查询学生总人数。

SELECT COUNT(*)FROM S例17:查询选修了课程的学生人数。

SELECT COUNT(DISTINCT Sno)FROM SC例18:计算选修了C1课程的学生平均成绩。

SELECT AVG(Grade)FROM SCWHERE Cno=‘C1’;例19:查询学习C3课程的学生最高分数。

SELECT MAX(Grade)FROM SCWHERE Cno=‘C3’;5、对查询结果分组例20:查询各个课程号与相应的选课人数。

SELECT Cno,COUNT(Sno)FROM SCGROUP BY Cno;该SELECT语句对SC表按Cno的取值进行分组,所有具有相同Cno值的元组为一组,然后对每一组作用聚合函数COUNT以求得该组的学生人数。

如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件组,则可以使用HAVING 短语指定筛选条件。

例21:查询计算机系选修了3门以上课程的学生的学号。

SELECT SnoFROM SCWHERE Sdept=‘CS’GROUP BY SnoHAVING COUNT(*)>3;WHERE子句与HAVING短语的根本区别在于作用对象不同。

WHERE子句作用于基本表或视图,从中选择满足条件的元组。

HAVING短语作用于组,从中选择满足条件的组。

例22:求基本表S中男同学的每一年龄组(超过50人)有多少人要求查询结果按人数升序排列,人数相同按年龄降序排列。

SELECT Sage,COUNT(Sno)F ROM SW HERE Ssex='M'G ROUP BY SageH AVING COUNT(*)> 50O RDER BY 2,Sage DESC;二、多表查询1、联接查询例23:查询每个学生及其选修课程的情况。

SELECT ,Sname,Sage,Ssex,Sdept,Cno,Grade FROM S, SCWHERE =;例24:查询选修了C2课程且成绩在90分以上的所有学生。

SELECT ,SnameFROM S,SCWHERE =AND =‘C2’AND > 90;例25:查询每个学生选修的课程名及其成绩。

相关文档
最新文档