【MySQL初级】

1.显示表结构

例如:describe employees; --------------显示表中字段详细信息
在这里插入图片描述

2.列的别名只能在order by 中使用,不能在where中使用

3. MySQL 8.0 新特性:limit … offset …

select * from table_name limit m offset n
 
# limit 后边跟的是 查询的条数
# OFFSET 后边跟的是 从第几条数据开始查询 。默认从 0 开始。

4. 笛卡尔积

产生原因

  1. 省略多个表的关联条件
  2. 关联条件无效
  3. 所有表所有行互相连接

为了避免产生笛卡尔积,可以在where后面加上有效的关联条件
**结论:如果有n张表实现多表的查询,则需要至少n-1的关联条件 **

5.内连接

内连接:合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行

6.外连接

外连接:合并具有同一列的两个以上的表的行,结果集中除了包含一个表与另一个表匹配的行之外,还查询到左表或右表中不匹配的行。

外连接的分类:左外连接、右外连接、满外连接

7.union 和 union all的区别

  1. union
    在这里插入图片描述
    union操作符取两个结果集的并集,并去除重复的数据

  2. union all
    在这里插入图片描述
    union all操作符返回两个查询结果集的并集,但是不取除重复的部分。相当于公共部分加了两次。

注意:开发中能用union all 的地方就不要用union,应为要去重,所以效率低,可以跟七种连接方式进行搭配使用

8.七种join实现

在这里插入图片描述

  • 中图:内连接
select a.id, b.name
from table_users a
inner join table_departments b
on a.depart_id = b.id

-左上图:左外连接

select a.id, b.name
from table_users a
left join table_departments b
on a.depart_id = b.id

-右上图:右外连接

select a.id, b.name
from table_users a
right join table_departments b
on a.depart_id = b.id

-左中图:

select a.id, b.name
from table_users a
left join table_departments b
on a.depart_id = b.id
where b.id is null

-右中图

select a.id, b.name
from table_users a
left join table_departments b
on a.depart_id = b.id
where a.depart_id is null

-左下图:满外连接
方式一(只列举一个例子):

select a.id, b.name
from table_users a
left join table_departments b
on a.depart_id = b.id
union all
select a.id, b.name
from table_users a
left join table_departments b
on a.depart_id = b.id
where a.depart_id is null
  • 右下图:左中图 union all 右中图(sql略)

9.自然连接和using

了解一下,使用有要求

10.字符串函数

常用的:contact(),能过进行字符串拼接

11.日期和时间函数

  • 获取当前日期和时间
SELECT CURRENT_DATE(), CURRENT_TIME() FROM DUAL

在这里插入图片描述

  • 日期和时间戳转换
SELECT UNIX_TIMESTAMP(), FROM_UNIXTIME(1670405863) FROM DUAL

在这里插入图片描述

12.计算日期和时间函数

SELECT NOW(),DATE_ADD(NOW(),INTERVAL 1 YEAR) FROM DUAL

在这里插入图片描述
date_add(): 日期 +
date_sub(): 日期 -
在这里插入图片描述

13.流程控制函数

  • if(value, value1, value2)
    在这里插入图片描述

14.聚合函数

1. 常见的几个聚合函数

  • AVG / SUM
  • MAX / MIN
  • COUNT,count的作用:计算指定字段在查询结构中出现的个数
  • 计算指定字段的个数的时候是不计算null值的

2.GROUP BY的使用

select中声明的非组函数字段必须声明在group by 中,group by声明的字段可以不出现在select中

3.HAVING 的使用(用来过滤数据的)

结论1:如果过滤条件中使用了聚合函数,则必须使用 having 来替代 where
要求2:having 必须放在 group by 的后面
要求3: where是先筛选后连接,having是先连接后筛选,where的执行效率比having高

4.sql的执行原理

在这里插入图片描述

sql语句的执行过程

在这里插入图片描述

15.自查询

  1. 规则在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只想躺平(已上岸)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值