SQL数据库DQL语句

DQL语言-数据查询语言

DQL(Data Query Language)语言是用来检索表中数据的语言

语法

  		   			     执行顺序 

SELECT 子句 6
FROM 子句 1
JOIN… ON… 子句 2
WHERE 子句 3
GROUP BY 子句 4
HAVING 子句 5
ORDER BY 子句 7
LIMIT子句 8

基础查询

一条DQL语句中至少要包含的子句有两个:SELECT子句和FROM 子句

SELECT子句用来指定检索表中哪些字段
FROM 子句用来指定检索哪些表
具体语法

SELECT 字段1[,字段2,…] 字段可以是具体字段名,也可以是"*",也可以是函数或表达式 FROM 表1[,表2]

SELECT * FROM 表名,可以检索表中所有记录,并且结果集会列出该表每条记录所有字段

检索teacher表中所有记录

SELECT * FROM teacher
上述SQL中SELECT子句中我们使用"“,”"表达查询该表中的所有字段.

注:

> 实际开发中,我们不要使用SELECT > > 原因: 当数据库看到SELECT * 时,会去检索数据字典了解该表的表结构,从而确定表中的字段名然后进行检索.这会消耗不必要的性能开销. > > 如果是临时手动执行SQL可以使用SELECT

**后期我们都是在JAVA代码中执行SQL语句,此时不能使用SELECT ***

检索表中某些字段的值

WHERE子句

在DQL中添加WHERE子句时,可以仅将满足WHERE子句要求的记录检索出来
连接多个条件

  • AND:“与”,都为真时才为真
  • OR:“或”,都为假时才为假

AND优先级高于OR的
为了提高OR的优先级,可以使用"()"

IN(列表)

IN(列表):判断是否等于列表中的其中之一

NOT IN(列表)

NOT IN(列表):判断不在列表中

BETWEEN…AND….

BEWTEEN…AND…用于判断是否在一个区间范围内

DISTINCT去重

DISTINCT关键字要紧跟在SELECT关键字之后

作用:可以将DISTINCT后面指定的字段值相同的记录从结果集中去除.

LIKE,模糊查询

LIKE中有两个通配符:

  • _:下划线表示任意一个字符(1个)
  • %:百分号表示任意个字符(0-多个) 组合示范

LIKE ‘%X%’:字符串中含有X(X前面可以有任意个字符,后面也可以有任意个字符)
LIKE ‘_X%’:字符串中第二个字符是X
LIKE ‘X%’ :字符串以X开头
LIKE ‘%X’ :字符串以X结尾
LIKE ‘%X_Y’:字符串倒数第三个字符是X,最后一个字符是Y

NULL值判断
判断一个字段的内容是否为空:

IS NULL:判断字段值为空
IS NOT NULL:判断字段值不为空

不可以使用=或<>判断NULL值

ORDER BY-排序

ORDER BY子句,用于对结果集按照指定的字段进行升序或降序排序.

  • ORDER BY 字段名 [ASC]:将结果集按照指定的字段升序排(从小到大)
  • ORDER BY 字段名 DESC:将结果集按照指定的字段降序排(从大到小)
  • 可以按照多字段排序,排序存在优先级,有线按照第一个字段排序结果集,当第一个字段值相同的记录再按照第二个字段排序以此类推.
  • 不指定排序方式时,默认为升序 ORDER BY
  • 子句应当是DQL中最后一个子句(由于方言的存在,在Mysql,MariaDB中分页使用时会在其后追加LIMIT子句)

分页查询

将一个DQL的查询结果集分段查询出来.

场景
当一个DQL语句查询的结果集记录数很多时,我们就可以分段将数据查询数来,提高查询速度减少资源开销

方言

分页没有在SQL92中定义规定的语法,因此分页是方言,不同的数据库分页语法可能完全不一样.

在Mysql和MariaDB中使用LIMIT子句来完成,而ORACLE则是使用ROWNUM伪列来完成.

语法

ORDER BY 字段
LIMIT M,N
M表示跳过结果集中的多少条记录
N检索出多少条记录
在分页中常见的两个参数:

每页显示的记录数
当前要显示第几页
分页的计算公式:

*M:(当前页数-1)每页显示的记录数
N:每页显示的记录数

当前显示第3页,每页显示5条记录
M:(当前页数-1)*每页显示的记录数 -> m=(3-1)*5 m=10 跳过10条记录
N:每页显示的记录数 n=5 LIMIT 10,5

DQL中使用函数或表达式

在SELECT子句中使用表达式

查看每个老师的工资和年薪

SELECT salary,salary*12
FROM teacher

在SELECT子句中使用函数

IFNULL函数
定义:
IFNULL(arg1,arg2)

当arg1不为NULL时,函数返回arg1的值,如果arg1为NULL则函数返回arg2的值.

IFNULL的功能就是将一个NULL值替换为一个非NULL值

内部逻辑,用java代码示意

IFNULL(arg1,arg2){
	if(arg1!=null){
		return arg1;
	}else{
		return arg2;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值