AI智能
改变未来

MySQL DQL 数据查询语言(二)


DQL语言

多表查询

第一、单表查询:根据WHERE条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的);然后根据SELECT的选择列选择相应的列进行返回最终结果。
第二、两表连接查询:对两表求积(笛卡尔积)并用ON条件和连接连接类型进行过滤形成中间表;然后根据WHERE条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。
第三、多表连接查询:先对第一个和第二个表按照两表连接做查询,然后用查询结果和第三个表做连接查询,以此类推,直到所有的表都连接上为止,最终形成一个中间的结果表,然后根据WHERE条件过滤中间表的记录,并根据SELECT指定的列返回查询结果。
理解SQL查询的过程是进行SQL优化的理论依据。

内连接

内连接分为等值连接、自然连接和自连接三种,这里不说自然连接。

select 查询列表
from 表1 别名
inner join 表2 别名
on 连接条件
inner 可以不写

等值连接

以“=”号连接,列出所有列,包括重复的

自连接

查询同一表格内有关的数据。

join连接

外连接

• 左外连接 left [outer] join on• 右外连接 right [outer] join onouter可以不写

应用场景:用于查询一个表中有,另一个表没有的记录

特点:
1、外连接的查询结果为主表中的所有记录
如果从表中有和它匹配的,则显示匹配的值
如果从表中没有和它匹配的,则显示null
外连接查询结果=内连接结果+主表中有而从表没有的记录
2、左外连接,left join左边的是主表
右外连接,right join右边的是主表
3、左外和右外交换两个表的顺序,可以实现同样的效果
4、全外连接=内连接的结果+表1中有但表2没有的+表2中有但表1没有的

常见函数

1.字符函数

作用 函数 结果
转小写 LOWER(‘SQL Course’) sql course
转大写 UPPER(‘SQL Course’) SQL COURSE
拼接 CONCAT(‘Hello’, ‘World’) HelloWorld
截取 SUBSTR(‘HelloWorld’,5) Hello
长度 LENGTH(‘HelloWorld’) sql 10
长度出现索引值 INSTR(‘HelloWorld’, ‘W’) 6
字符截取后半段 TRIM(‘H’ FROM ‘HelloWorld’) elloWorld
字符替换 REPLACE(‘abcd’,‘b’,‘m’) amcd

2.数字函数

作用 函数 结果
四舍五入 ROUND(45.926, 2) 45.93
截断 TRUNC(45.926, 2) 45.93
求余 MOD(1600, 300) 100

3.日期函数

作用 函数 结果
获取当前日期 now() sql course
将日期格式的字符转换成指定格式的日期 STR_TO_DATE(‘9-13-1999’,’%m-%d-%Y’) 1999-09-13
将日期转换成字符 DATE_FORMAT(‘2018/6/6’,‘%Y年%m月%d日’) 2018年06月06日

分页查询

limit startindex,offset
startindex要显示条目的起始索引(起始索引从0开始)
offset 要显示的条目个数,按表格顺序显示
当startindex为零时可以省略不写

子查询

出现在其他语句中的select语句,称为子查询或内查询
外部的查询语句,称为主查询或外查询

①子查询放在小括号内。
②子查询一般放在条件的右侧。
③标量子查询,一般搭配着单行操作符使用<, >=, <= ,=, <> ,>。
通常的,当一个查询语句查询不到时,就在一个查询里面放入另一个查询或者多个查询。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » MySQL DQL 数据查询语言(二)