复习 Mysql

复习 Mysql

这不是一个完整的教程,知识我重新学习 Mysql 的知识,并做了一些零碎笔记。

别名

对于字段别名可以这样:

1
select name as 姓名,age from tb_user;

也可以:

1
select name 姓名,age from tb_user;

多个字段用 , 分隔,字段别名可以不加 as,直接用空格分隔即可。

表别名类似,可以这样:

1
select A.name from tb_user as A;

也可以:

1
select A.name from tb_user A;

DISTINCT

distinct 是对结果去重的,它是作用在所有选择字段上的,而不是单个字段。

例如:

1
select distinct name,age from tb_user;

其效果类似于:

1
select distinct (name,age) from tb_user;

如果我们想要对查询多个字段,且根据某一个字段去重,应该使用 GROUP BY

1
select name,max(age) from tb_user group by name;

BETWEEN AND 边界

下面的语句类似于,age >= 20 && age <= 30

1
select * from tb_user where age BETWEEN 20 AND 30;

下面的语句类似于,age < 20 || age > 30

1
select * from tb_user where age NOT BETWEEN 20 AND 30;

ESCAPE

在使用 like 子句的通配符时,如果字段恰好包含了通配符怎么办呢?

例如:在下面这个查询中,我们确实想查询包含 前5% 关键字的内容,默认情况下 % 会被视为通配符。

1
select * from where tb_user where description like "%前5%%";

此时我们可以使用 ESCAPE,escape 意为避开、避免,在 like 子句中,escape 字符后面的通配符会被视为普通字符:

1
2
select * from where tb_user where description like "%前5!%%" escape '!'; 
select * from where tb_user where description like "%前5#%%" escape '#';

参考链接

name

评论