数据库sql语句练习(二)

简介: 数据库sql语句练习(二)

例题:


fdf9182012eb44ad8801883fa7704392.png

检索出生年份比杜甫早的诗人


1. select name
2. from poets
3. where birth <( select birth from poets where name ='杜甫’)


f221b19345bc473a97393c57c8da8113.png

重点:ALL,SOME,ANY(对于any,有些系统用some)


使用all或者any时。必须同时使用比较运算符


注:


●小于所有值等价于小于最小值,下面两个查询语句等价


查询其他系中比(cs)所有学生年龄都小的学生姓名及年龄


SELECT Sname,Sage
FROM Student
WHERE Sage<
ALL(SELECT Sage FROM Student
WHERE Sdept='CS')
AND Sdept <> 'CS';
SELECT Sname,Sage
FROM Student
WHERE Sage<
(SELECT MIN(Sage)FROM Student
WHERE Sdept='CS')
AND Sdept <> 'CS';


●小于任意值等价于小于最大值,下面两个查询语句等价:


查询其他系中比(cs)某一学生年龄小的学生姓名和年龄


SELECT Sname,Sage
FROM Student
WHERE Sage<
ANY(SELECT Sage FROM Student
WHERE Sdept='CS')
AND Sdept<>'CS';


SELECT Sname,Sage
FROM Student
WHERE Sage<
(SELECT MAX(Sage) FROM Student
WHERE Sdept='CS')
AND Sdept <> 'CS';


●any.....in


检索供应零件给工程J1,且零件颜色为红色的供应商编号SNO


SELECT DISTINCT SNO
FROM
SPJ,P
WHERE SPJ.PNO=P.PNO
AND
JNO='J1'
AND
COLOR='红';
SELECT DISTINCT SNO
FROM
SPJ
WHERE JNO='J1'
AND
PNO =SOME(
SELECT PNO FROM P
WHERE COLOR='红');
SELECT DISTINCT SNO
FROM
SPJ
WHERE JNO='J1'
AND
PNO=ANY(
SELECT PNO FROM P
WHERE COLOR='红');
SELECT DISTINCT SNO
FROM
SPJ
WHERE JNO ='J1'
AND
PNO IN(
SELECT PNO FROM P
WHERE COLOR='红');


●not in......<>all


求不使用编号为P3零件的工程编号JNO和JNAME


SELECT JNO.JNAME FROM J
WHERE JNO NOT IN
(SELECT JNO FROM SPJ
WHERE PNO='P3');
SELECT JNO. JNAME FROM J
WHERE JNO <> ALL
(SELECT JNO FROM SPJ
WHERE PNO='P3');


●top(1).....>=all


查询最昂贵的商品的编号和单价


SELECT DISTINCT PNO,PRICE
FROM
SPJ
WHERE PRICE>=ALL(
SELECT PRICE FROM SPJ);
SELECT DISTINCT PNO,PRICE
FROM SPJ
WHERE PRICE >=(
SELECT MAX(PRICE) FROM SPJ);
SELECT TOP(1) PNO,PRICE
FROM SPJ
ORDER BY PRICE DESC;


补充:(between....and)


between 的英语意思是介于两者之间,在sql中的意思是两个值之间的数据范围。这些值可以是数值、文本或者日期。与and 一起使用


例句1:(筛选出一张表中以某个字段两个值之间的数据范围)


select * from tab1    where name      between value1 and value2


(筛选出的条件中包括value1,但是不包括vaule2,也就是说并不是包括两个边界值,(sql server))


例句2:(筛选出一张表中以某个字段两个值之间的除外的数据范围,在条件中加not)


select * from tab1    where name    not  between value1 and value2


查询出生年份比唐朝的任何诗人晚的诗人


1. select name
2. from poets
3. where birth > ALL( select birth from poets where dynasty='唐’)

99fac44be7f149ada02254c5a1cef14a.png


检索寿命最长的诗人的姓名


一个元素可以用’=‘


1. select name
2. from poets
3. where dead - birth =( select max(dead-birth)from poets)


a547fc9fad314334bf8545fd7487ad7d.png

查询最早出生的诗人的姓名及其出生年份


两个或两个以上’in‘


注:如果确切知道只返回一个元素,则可以使用‘=’


1. select name,birth from poets
2. where birth in (select min(birth from poets);


2eb9449f3334413a889ddbdfb2b9a864.png

● 找出所有这样的诗人A和诗人B满足诗人A比诗人B晚出生但是早去世。


select p1.name’晚出生但早去世’,p2.name"早出生但晚去世
from poets pl, poets p2
where pl.birth > p2.birth
and pldead<p2.dead

86d230919a2c4757813d9d22e5c7a109.png


按照同朝代诗人的平均年龄从大到小的顺序列出所有的朝代及该朝代诗人的平均年
龄。


重点:构造一个新表


select * from
(select dynasty'朝代’,avg(dead - birth)"平均年龄
from poets
group by dynasty) a
order by 2 desc;

6eccb1a1c8cf4900b894aa6874a698f4.png


相关文章
|
8天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
51 10
|
25天前
|
SQL 存储 BI
【软件设计师备考 专题 】数据库语言(SQL)
【软件设计师备考 专题 】数据库语言(SQL)
89 0
|
8天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
68 6
|
5天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
5天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
32 3
|
8天前
|
SQL 监控 数据库
数据库管理与电脑监控软件:SQL代码优化与实践
本文探讨了如何优化数据库管理和使用电脑监控软件以提升效率。通过SQL代码优化,如使用索引和调整查询语句,能有效提高数据库性能。同时,合理设计数据库结构,如数据表划分和规范化,也能增强管理效率。此外,利用Python脚本自动化收集系统性能数据,并实时提交至网站,可实现对电脑监控的实时性和有效性。这些方法能提升信息系统稳定性和可靠性,满足用户需求。
32 0
|
8天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
16天前
|
数据库 SQL 索引
什么是数据库 SQL Execution Plan
什么是数据库 SQL Execution Plan
10 0
|
16天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
|
16天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)