SERVER ——查询(二)

目录

[5. top](#5. top)

[6. null](#6. null)

[7. order by](#7. order by)

[8. 模糊查询:](#8. 模糊查询:)

[9. 聚合函数](#9. 聚合函数)


5. top

top查询:查询表的前几行;下面是代码演示:

--top(前面的几个记录)

select top 2 * from emp; --查询表的前两列

select top 20 percent * from emp; --查询整张表的14行的五分之一,往大了取,即前3行

6. null

null不是一个数值,与0 不同;

另外,null相比之前的 between..and...,distinct相比也是一种过滤;

--null不能参与 = != < > 运算;

select comm from emp where comm = null; --输出为空

select comm from emp where comm<>null;--输出为空

--null不能参加具体数值的运算
select ename ,sal*12+null as "年薪" from emp;--年薪列为全null

--null 可以参与 is ,is not 的运算

select *from emp where comm is null;--表中为空的数据

select * from emp where comm is not null;--表中不为空的数据

此外,可以使用 **isnull (函数)**进行改进;

7. order by

--asc升序,可以默认不写;desc降序

order by a,b:a,b都是升序

order by a,b desc:a升序,b降序

order by a desc, b:a降序,b升序

order by a desc,b desc :a,b,降序

select *from emp order by sal;--默认按照sal升序输出整张表

select * from emp order by deptno,sal;--优先按照 deptno 升序排,在 deptno 相同的情况下,将 sal 升序排;

select * from emp order by sal desc;--按照asc降序排列

select * from emp order by deptno desc,sal;--dedptno降序输出,sal升序输出(asc默认没写)

--desc只对 a 产生产生影响,不会对后面的 b,c,d 产生影响;

--select * from emp order by a desc ,b ,c ,d ;

select * from emp order by deptno,sal desc;--按照deptno升序排列(默认是asc),sal降序排列

--强烈建议对每一个字段指明排序标准

8. 模糊查询:

举一个例子;我在搜索栏输入"雷军"两个字,下面就会出现很多含有"雷军"关键字的选项,这就属于模糊查询:

--通配符

--匹配条件必须使用单引号,双引号通常使用在对象的名称上,单引号则用在字符串上

--%(百分号) 表示0个或多个字符,

--_(下划线) 表示单个字符,

--[a-c] 表示输出含 a,b,c 的任意一个字符

--[a,c] 表示输出含 a 或 c 的任意一个字符

--[^a-c](shift+6就打印出来了) 表示输出不含a,b,c的任意一个字符的记录
select ename from emp where ename like '%A%';--查找ename中含A的所有数据

select ename from emp where ename like '%A';--查找尾字母是A的数据;

select ename from emp where ename like 'A%';--查询首字母是A的数据;

select ename from emp where ename like '_A%';--查询第二个字母是A的数据

select ename from emp where ename like '_[A-C]%';--查询第二个字母是 A 或 B 或 C 的记录

select ename from emp where ename like '_[A,C]%';--查询第二个字母是 A 或 C 的记录

select ename from emp where ename like '_[^A-C]%';--查询第二个字母是 A 或 C 的记录
--如果输出含恰好含 % 的数据呢

select ename from emp where ename like '%\%%' escape '\';--escape表示把"\"当作转义字符的标志,并且escape可以把任何字符当作转义字符的标志

select ename from emp where ename like '%m%%' escape 'm';--比如我把 \ 替换成了 m,也是可以的;

select ename from emp where ename like '%m_%' escape 'm';--把里面含有下划线的数据输出

9. 聚合函数

--聚合函数;max( ),min( ),lower()大写变为小写,avg( )求平均值,count( )求个数;

--单行函数(每行返回一个值):lower

select lower(ename) from emp;--大写变小写;

--多行函数(最终只返回一个值):max(),min(),count()

select max( sal ) from emp;--最后返回一个值,即sal的最大值;

--count

--count(*);

select * from emp;

--count(*);返回整张表的记录个数

select count (*) from emp;--返回表的记录数

--count(字段名),返回不为空的该记录的个数;

select count (deptno) from emp;--返回deptno的记录数

--count (distinct 字段名),返回不重复且不为null的数据的记录的个数

select count (distinct deptno)返回不重复的deptno记录的个数

select count(comm) from emp;--输出值为4 ,而不是14,说明值为null的会被自动过滤

select count(distinct comm) from emp;--输出值也为4
-注意注意注意注意注意注意注意注意

select max( sal ),min (sal) from emp ;--这样也是可以的

select max( sal ) as "最高工资",min(sal) as "最低工资" from emp;--我们重命名就可以了

--单行函数与多行函数不能混合使用

select lower(ename),max(sal),min(sal) from emp;--报错,逻辑上有错误,到底是输出单行还是多行呢?所以单行与多行函数不能混合使用

相关推荐
·云扬·1 小时前
【PmHub后端篇】PmHub 中缓存与数据库一致性的实现方案及分析
数据库·缓存
kaixiang3001 小时前
sqli-labs靶场23-28a关(过滤)
数据库·sql
不剪发的Tony老师2 小时前
数据库行业竞争加剧,MySQL 9.3.0 企业版开始支持个人下载
数据库·mysql
张伯毅2 小时前
Flink SQL 将kafka topic的数据写到另外一个topic里面
sql·flink·kafka
淡定是个好东西2 小时前
springboot连接高斯数据库(GaussDB)踩坑指南
数据库·gaussdb
追风赶月、2 小时前
【Redis】哨兵(Sentinel)机制
数据库·redis·sentinel
悟能不能悟3 小时前
mysql的not exists走索引吗
数据库·mysql
明月与玄武3 小时前
Jmeter -- JDBC驱动连接数据库超详细指南
数据库·jmeter·配置jdbc连接
专注VB编程开发20年3 小时前
VB.NET关于接口实现与简化设计的分析,封装其他类
java·前端·数据库
vvilkim3 小时前
Redis持久化机制详解:保障数据安全的关键策略
数据库·redis·缓存