linux下的单表查询、多表查询、MySQL函数、SQL优化

单表查询

查询所有字段的所有行:

在这里插入图片描述
用 ’ \G ’ 代替 ‘ ; ’,表示格式化,数据量大的时候可以这样用,更清晰。
在这里插入图片描述

查询部分字段的所有行

在这里插入图片描述

带条件查询,查询所有字段的部分行

条件查询

SELECT col_name FROM  tb_name  WHERE 条件

查询条件可以是大于等于不等于(>,=,<>)等等(模糊查询),也可以是更加复杂的判断都是可以的。

精确查询

AND 需要满足所有条件才会被查询出来;
OR 只需要满足其中一个条件即可被查询出来
在这里插入图片描述

模糊查询

% 是通配符,后面不限制字符个数,要想限制字符个数,用下划线替代%,一个下划线代表一个字符,两个下划线代表两个字符。
LIKE 是关键字
查询以 ’ t ’ 开头的数据。
在这里插入图片描述

取别名

SELECT col_name AS new_name FROM tab_name AS new_name2

如果列名或者表名太长,可以给它们取一个别名,可以方便取使用
在这里插入图片描述

多表查询

内连接

无条件连接,连接出来的称为笛卡尔集

第一种方式,逗号连接

在这里插入图片描述

第二种方式,INNER JOIN连接

在这里插入图片描述

条件连接

逗号连接

在这里插入图片描述

INNER JOIN 连接

在这里插入图片描述
用INNER JOIN 可以连接n个表,下面演示连接三个表的方法:
先连接两个表:
在这里插入图片描述
连接三个表:
在这里插入图片描述
修改 * 来实现部分显示:
在这里插入图片描述

外连接

左连接

以左边的表为主,返回左表当中全部所有的数据,右表没有匹配到的会以NULL值补全
在这里插入图片描述

右连接

以右边的表为主,返回右表当中全部所有的数据,左表没有匹配到的会以NULL值补全
在这里插入图片描述

全连接

合并两个或者多个查询语句的结果集,并消除重复的行
左连接和右连接之后分别是:
在这里插入图片描述
将左右连接查询后全连接:
本来有十行,通过全连接去重后剩6行。
在这里插入图片描述

子表查询

在一个SQL语句中还有一个SQL语句
把查询到的数据当做一个表来使用:
在这里插入图片描述
把查询到的数据当做一个SQL语句的条件来使用:
在这里插入图片描述
与下面的语句功能相同:
在这里插入图片描述

排序

对查询出来的结果进行排序,ASC升序(默认) DESC降序

SELECT * FROM `students` s JOIN `student_details` sd ON s.`s_id`=sd.`stu_id` ORDER BY  s.`s_id` DESC;

在这里插入图片描述

限制行数

对查询出来的结果限制显示的行数

SELECT * FROM `students` s JOIN `student_details` sd ON s.`s_id`=sd.`stu_id` ORDER BY  s.`s_id` DESC LIMIT 3;

在这里插入图片描述

分组查询

分组是个常见的操作,常用于分组统计,使用GROUP BY后,会按照GROUP BY后面的字段进行分组,且必须是明确的字段,不能是*,因此SELECT后面也不能是*.其次可以使用 HAVING 可以对分组之后的结果进行筛选,注意:HAVING 后的字段必须是SELECT后出现过的

SELECT d.`d_id`,d.`name`,COUNT(*) FROM `department` d LEFT JOIN `students` s ON d.`d_id`=s.`dept_id` GROUP BY d.`d_id`,d.`name`;
SELECT d.`d_id`,d.`name`,COUNT(*) FROM `department` d LEFT JOIN `students` s ON d.`d_id`=s.`dept_id` GROUP BY d.`d_id`,d.`name` HAVING COUNT(*)>1;

在这里插入图片描述

MYSQL函数

字段处理,去重处理

SELECT s.`name`,IFNULL(sd.`id_card`,430) FROM `students` s LEFT JOIN `student_details` sd ON s.`s_id`=sd.`stu_id`;  #处理NULL
SELECT DISTINCT   `name`   FROM  `students` ; # 字段去重

去除空值,将所有的NULL设置为某个值
在这里插入图片描述
DISTINCT(distinct)去重
在这里插入图片描述

字符串截取

截取左边的两个字符:
在这里插入图片描述
截取右边的两个字符:
在这里插入图片描述
从第二个开始,截取三个字符:
在这里插入图片描述

字符串拼接

在这里插入图片描述

SQL优化

显示索引,一般在主外键创建的时候会自动创建索引,增加查询速度。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

哈希True

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

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

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

打赏作者

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

抵扣说明:

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

余额充值