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 on
outer可以不写

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

特点:
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语句,称为子查询或内查询
外部的查询语句,称为主查询或外查询

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值