数据库中SQL查询语句习题含答案
数据库常用SQL语句练习(含答案)

Emp(员工表)和Dept(部门表)简单题1. 案例:查询没有上级领导的员工的编号,姓名,工资select empno,ename,sal from emp where mgr is null;2. 案例:查询emp表中没有奖金的员工的姓名,职位,工资,以及奖金select ename,job,sal,comm from emp where comm is null or comm=0;既可以是null,也可以是03. 案例:查询emp表中含有奖金的员工的编号,姓名,职位,以及奖金select ename,job,sal,comm from emp where comm>0;4. 案例:查询含有上级领导的员工的姓名,工资以及上级领导的编号select ename,sal,mgr from emp where mgr is not null;5. 案例:查询emp表中名字以‘S’开头的所有员工的姓名select ename from emp where ename like 's%'6. 案例:查询emp表中名字的最后一个字符是'S'的员工的姓名select ename from emp where ename like '%s'7. 案例:查询倒数的第2个字符是‘E’的员工的姓名select ename from emp where ename like '%e_'8. 案例:查询emp表中员工的倒数第3个字符是‘N’的员工姓名select ename from emp where ename like '%n__'9. 案例:查询emp表中员工的名字中包含‘A’的员工的姓名select ename from emp where ename like '%a%'10. 案例:查询emp表中名字不是以'K'开头的员工的所有信息select * from emp where ename not like 'k%';11. 案例:查询emp表中名字中不包含‘A’的所有员工的信息select * from emp where ename not like '%a%'12. 案例:做文员的员工人数(job= CLERK 的)select count(*) from emp where job='clerk';13. 案例:销售人员job: SALESMAN 的最高薪水select max(sal) from emp where job='salesman';14. 案例:最早和最晚入职时间select min(hiredate),max(hiredate) from emp;15. 案例:查询emp表中员工的编号,姓名,职位,工资,并且工资在1000~2000之间。
2023 SQL 数据库查询练习题及答案

2023 SQL 数据库查询练习题及答案数据库查询是数据管理和处理的重要环节,熟练的SQL查询技巧对于数据库工程师和数据分析师来说至关重要。
为了提升大家的SQL 查询能力,以下是一些2023年的SQL数据库查询练习题及答案,希望能够对大家的学习和实践有所帮助。
练习题1:学生成绩表考虑一个学生成绩表(Students)和课程信息表(Courses),请使用SQL查询语句完成以下操作。
1. 查询所有学生的姓名和学号;2. 查询所有参加了"C3"课程的学生的姓名和学号;3. 查询所有选择了至少两门课程的学生的姓名和学号;答案1:SELECT 学号, 姓名FROM 学生成绩表;答案2:SELECT 学生成绩表.学号, 学生成绩表.姓名FROM 学生成绩表, 课程信息表WHERE 学生成绩表.课程编号 = 课程信息表.课程编号AND 课程信息表.课程名称 = "C3";答案3:SELECT 学号, 姓名FROM 学生成绩表GROUP BY 学号, 姓名HAVING COUNT(*) >= 2;练习题2:库存管理考虑一个库存管理系统的数据库,包含了商品表(Products)、仓库表(Warehouses)和库存表(Inventory)。
请使用SQL查询语句完成以下操作。
1. 查询商品表中单价不低于100元的商品的名称和单价;2. 查询所有位于“北京”仓库中的商品的名称和库存量;3. 查询库存量最多的商品的名称和库存量;答案1:SELECT 名称, 单价FROM 商品表WHERE 单价 >= 100;答案2:SELECT 商品表.名称, 库存表.库存量FROM 商品表, 仓库表, 库存表WHERE 商品表.商品ID = 库存表.商品IDAND 仓库表.仓库ID = 库存表.仓库IDAND 仓库表.所在地 = "北京";答案3:SELECT 商品表.名称, 库存表.库存量FROM 商品表, 库存表WHERE 商品表.商品ID = 库存表.商品IDORDER BY 库存表.库存量 DESCLIMIT 1;练习题3:订单管理考虑一个订单管理系统的数据库,包含了客户表(Customers)、订单表(Orders)和订单详情表(OrderDetails)。
数据库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 的影星。
50条数据库sql语句及答案

select teaid from tblTeacher where teaname = '叶平')))
--练习
select stuid from tblScore where courseid in (
--11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
------运用连接查询
SELECT DISTINCT ST.* FROM tblStudent ST, tblScore SC WHERE ST.STUID = SC.STUID
AND SC.COURSEID IN
select stuid from tblScore GROUP BY STUID HAVING max(SCORE)<60)
--10、查询没有学全所有课的同学的学号、姓名;
--练习
SELECT TS.STUID,TS.STUNAME,COUNT(TSC.SCORE) FROM tblStudent TS
TC.COURSEID INNER JOIN tblTeacher TT ON TC.TEAID = TT.TEAID
WHERE TT.TEANAME ='叶平')
--对
SELECT STUID, STUNAME FROM tblStudent WHERE STUID NOT IN(
where A.SCORE > B.SCORE
--老师讲的方法
SELECT T.* FROM tblScore T WHERE T.COURSEID = 1 AND
SQL查询习题及答案

36.设教学用的四个基本表(S,C,T,SC)(2)查询年龄大于23岁的女同学的学号和姓名select 姓名,学号from swhere 性别='女' and 年龄>23(3)查询至少选修了刘老师所讲授课程中的一门课程的女同学姓名select s.姓名from s,scwhere s.性别='女'and s.学号=sc.学号and sc.课程编号in(select c.课程编号from c,twhere c.教师编号=t.教师编号and t.姓名='刘%')(4)查询至少选修了2门课程的学生学号select sc.学号from scgroup by 学号having count(课程编号)>2(5)查询全部学生都选修的课程号与课程名select c.课程编号,c.课程名称from c,scwhere sc.课程编号=c.课程编号and sc.学号=(select distinct s.学号from s)(6)计算机系每个教师讲授的课程号select t.教师编号,课程编号from c,twhere t.所在系='计算机系(7)查询没有选修过任何一门课程的学生的学号select s.学号from swhere s.学号not in(select distinct sc.学号from sc)(10)统计个系教师的人数select count (教师编号)from tgroup by 所在系(11)统计出教师人数超过10人的系的名称select t.所在系from tgroup by 所在系having count(教师编号)>10(12)在选课表SC中查询成绩为NULL的学生的学号和课程号select 学号课程编号from scwhere 成绩='NULL'(13)姓王的同学的年龄、姓名、选课名称、成绩select 年龄,姓名,课程名称,成绩from s,c,scwhere s.学号=sc.学号and c.课程编号=sc.课程编号and s.姓名='王%'(14)查询年龄大于女同学平均年龄的男同学姓名和年龄select 姓名,年龄from swhere 性别='男' and 年龄>(select avg(年龄)from swhere 性别='女')37.在数据库{USER、ORDER}中,用户需要查询“所有于2009年5月25日下订单的女顾客姓名”。
数据库中SQL查询语句习题含答案

数据库中SQL查询语句习题含答案查询问题:设教学数据库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的学⽣学号;(5)检索⾄少选修课程号为C2和C4的学⽣学号; SELECT SnoFROM SC X ,SC YWHERE = AND =‘C2’ AND =‘C4’ ;(6)检索不学C2课的学⽣姓名和年龄;(7)检索学习全部课程的学⽣姓名;在表S 中找学⽣,要求这个学⽣学了全部课程。
sql查询举例(含答案)

sql查询举例(含答案)查询练习⼀、简单查询(⽆条件查询):1、查询“学⽣档案”表中所有的记录SELECT * FORM 学⽣档案2、查询“学⽣档案”表中全体学⽣的姓名、学号、家庭地址SELECT 姓名, 学号, 家庭地址 FROM 学⽣档案⼆、有条件查询1、查询“成绩管理”表中语⽂成绩在80分以下的学⽣的学号。
SELECT 学号 FROM 成绩管理 WHERE 语⽂<802、查询“成绩管理”表中语⽂成绩在80分到90分之间的学⽣的学号,语⽂,数学,英语成绩。
SELECT 学号,语⽂,数学,英语FROM成绩管理WHERE 语⽂ >= 80 AND 语⽂<=90==(语⽂ BETWEEN 80 AND 90)3、查询“成绩管理”表中数学成绩不在75分到85分之间的学⽣的学号,语⽂,数学,英语成绩。
SELECT 学号,语⽂,数学,英语FROM 成绩管理WHERE 数学 NOT BETWEEN 75 AND 854、查询“学⽣档案”表中李成刚,刘艺梅,郑莉三名学⽣的信息。
SELECT *FROM 学⽣档案WHERE 姓名 IN (“李成刚”,“刘艺梅”,“郑莉”)==(姓名 =“李成刚” OR 姓名=“刘艺梅” OR 姓名=“郑莉”)5、查询“学⽣档案”表中所有姓张的学⽣的姓名、学号和性别SELECT 姓名,学号,性别 FROM学⽣档案WHERE 姓名 LIKE “张*”6、查询“学⽣档案”表中所有姓张且全名为三个汉字的学⽣的姓名SELECT 姓名FROM 学⽣档案WHERE姓名 LIKE “张??”7、查询“学⽣档案”表中第⼆个字符为“建”字的学⽣的学号和姓名SELECT 学号,姓名FROM 学⽣档案WHERE姓名 LIKE “?建*”8、查询“学⽣档案”表中家庭住址为“⼈民路”和“育才路”的学⽣学号,姓名,性别和家庭住址。
SELECT 学号,姓名,性别,家庭住址FROM 学⽣档案WHERE家庭住址 LIKE “⼈民路*” OR家庭住址 LIKE “育才路*”9、查询“学⽣档案”表中所有团员的学⽣班级和姓名。
sql查询语句学习测试答案

第一部分SQL查询语句的学习单表查询1、--查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、客户ID和雇员ID等字段的值use eeeSELECT订购日期,订单ID,客户ID,雇员IDFROM订单WHERE订购日期BETWEEN'1996-7-1 00:00:00'AND'1996-7-15 23:59:59'2、--查询“Northwind”示例数据库中供应商的ID、公司名称、地区、城市和电话字段的值。
条件是“地区等于华北”并且“联系人头衔等于销售代表”。
use eeeSELECT供应商ID,公司名称,地区,城市,电话FROM供应商WHERE地区='华北'AND联系人职务='销售代表'3、--查询“Northwind”示例数据库中供应商的ID、公司名称、地区、城市和电话字段的值。
其中的一些供应商位于华东或华南地区,另外一些供应商所在的城市是天津use eeeSELECT供应商ID,公司名称,地区,城市,电话FROM供应商WHERE地区IN('华东','华南')OR城市='天津'4、--查询“Northwind”示例数据库中位于“华东”或“华南”地区的供应商的ID、公司名称、地区、城市和电话字段的值use eeeSELECT供应商ID,公司名称,地区,城市,电话FROM供应商WHERE地区IN('华东','华南')多表查询5、--查询订购日期在1996年7月1日至1996年7月15日之间的订单的订购日期、订单ID、相应订单的客户公司名称、负责订单的雇员的姓氏和名字等字段的值,并将查询结果按雇员的“姓氏”和“名字”字段的升序排列,“姓氏”和“名字”值相同的记录按“订单ID”的降序排列use eeeSELECT订购日期,订单ID,公司名称,姓氏,名字FROM订单,雇员,客户WHERE订购日期BETWEEN'1996-7-1 00:00:00'AND'1996-7-15 23:59:59' AND订单.雇员ID =雇员.雇员IDAND订单.客户ID =客户.客户IDORDER BY姓氏,名字ASC,订单ID DESC6、--查询“10248”和“10254”号订单的订单ID、运货商的公司名称、订单上所订购的产品的名称use eeeSELECT订单.订单ID,公司名称,产品名称FROM订单,运货商,产品,订单明细WHERE订单.订单ID IN('10248','10254')AND订单.订单ID =订单明细.订单IDAND订单明细.产品ID =产品.产品IDAND订单.运货商=运货商.运货商ID7、--查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称、数量、单价和折扣use eeeSELECT订单.订单ID,产品名称,数量,订单明细.单价,折扣FROM订单,产品,订单明细WHERE订单.订单ID IN('10248','10254')AND订单.订单ID =订单明细.订单IDAND订单明细.产品ID =产品.产品ID8、--查询“10248”和“10254”号订单的订单ID、订单上所订购的产品的名称及其销售金额use eeeSELECT订单.订单ID,产品名称,数量*订单明细.单价*(1-折扣)AS销售金额FROM订单,产品,订单明细WHERE订单.订单ID IN('10248','10254')AND订单.订单ID =订单明细.订单IDAND订单明细.产品ID =产品.产品ID综合查询9、--查询所有运货商的公司名称和电话use eeeSELECT公司名称,电话FROM运货商10、--查询所有客户的公司名称、电话、传真、地址、联系人姓名和联系人头衔use eeeSELECT公司名称,电话,传真,地址,联系人姓名,联系人职务FROM客户11、--查询单价介于10至30元的所有产品的产品ID、产品名称和库存量use eeeSELECT产品ID,产品名称,库存量FROM产品WHERE单价BETWEEN 10 AND 3012、--查询单价大于20元的所有产品的产品名称、单价以及供应商的公司名称、电话use eeeSELECT产品名称,单价,公司名称,电话FROM产品,供应商WHERE单价> 20AND产品.供应商ID =供应商.供应商ID13、--查询上海和北京的客户在1996年订购的所有订单的订单ID、所订购的产品名称和数量use eeeSELECT订单.订单ID,产品名称,数量FROM产品,订单,订单明细,客户WHERE城市IN('上海','北京')AND YEAR(订购日期)=1996AND产品.产品ID =订单明细.产品IDAND订单.订单ID =订单明细.订单IDAND订单.客户ID =客户.客户ID14、--查询华北客户的每份订单的订单ID、产品名称和销售金额use eeeSELECT订单.订单ID,产品名称,数量*订单明细.单价*(1-折扣) AS销售金额FROM产品,订单,订单明细,客户WHERE地区='华北'AND产品.产品ID =订单明细.产品IDAND订单.订单ID =订单明细.订单IDAND订单.客户ID =客户.客户ID15、--按运货商公司名称,统计1997年由各个运货商承运的订单的总数量use eeeSELECT公司名称,COUNT(订单ID)AS订单总数量FROM订单,运货商WHERE YEAR(发货日期)= 1997AND订单.运货商=运货商.运货商IDGROUP BY公司名称16、--统计1997年上半年的每份订单上所订购的产品的总数量use eeeSELECT订单.订单ID,SUM(数量)AS总数量FROM订单,订单明细WHERE订购日期BETWEEN'1997-1-1 00:00:00'AND'1997-6-30 23:59:59' AND订单.订单ID =订单明细.订单IDGROUP BY订单.订单ID17、--统计各类产品的平均价格use eeeSELECT类别名称,SUM(单价*库存量)/SUM(库存量)AS平均价格FROM产品,类别WHERE产品.类别ID =类别.类别ID GROUP BY类别名称18、--统计各地区客户的总数量use eeeSELECT地区,COUNT(客户ID)AS客户数量FROM客户GROUP BY地区第二部分SQL查询强化测试1.找出供应商名称,所在城市use eeeSELECT公司名称,城市FROM供应商2.找出华北地区能够供应海鲜的所有供应商列表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,SexFROM 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,SnameFROM SWHERE Sno IN(SELECT SnoFROM SCWHERE Cno IN(SELECT CnoFROM CWHERE Cname=‘DS’));(4)检索选修课程号为C2或C4的学生学号;SELECT SnoFROM 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 SnameFROM SWHERE NOT EXISTS(SELECT *FROM CWHERE NOT EXISTS(SELECT *FROM SCWHERE = AND =));(8)查询所学课程包含学生S3所学课程的学生学号。
分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。
SELECT DISTINCT SnoFROM SC AS XWHERE 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)FROM SWHERE Ssex='M'GROUP BY SageHAVING COUNT(*)> 50ORDER BY 2,Sage DESC;二、多表查询1、联接查询例23:查询每个学生及其选修课程的情况。
SELECT ,Sname,Sage,Ssex,Sdept,Cno,GradeFROM S, SCWHERE =;例24:查询选修了C2课程且成绩在90分以上的所有学生。
SELECT ,SnameFROM S,SCWHERE =AND =‘C2’AND > 90;例25:查询每个学生选修的课程名及其成绩。
SELECT ,Sname,Cname,FROM S,SC,CWHERE = AND =例26:统计每一年龄选修课程的学生人数。