Mysql数据库进阶语句(上),路还长着呢小伙子

一,SQL高级语句

1,SELECT
他的作用就是查看显示表格里一个或多个内容。

用法:SELECT “栏位” FROM “表名”;

在这里插入图片描述
这是我随便创的一张表格;
在这里插入图片描述
使用语句后,我用的是单引号也能实现查询;

1.2 DISTINCT

作用:不显示重复的资料

SELECT DISTINCT 【列名】 ‘数据’ FROM 表名;

在这里插入图片描述

1.3 WHERE
作用:实现条件查询

语法:SELECT “栏位” FROM “表名” WHERE “条件”;

在这里插入图片描述
这里我们还可以增加条件,比方说我要除了20岁以外的

我们用OR让它同时筛选两个条件
在这里插入图片描述
用and可以实现下面大于等于20
在这里插入图片描述
进一步筛选名字等于bbb的20岁的人
在这里插入图片描述
1.4 IN

作用,显示已知值的资料

语法:SELECT “栏位” FROM “表名” WHERE “栏位” IN (‘值1’, ‘值2’, …);

在这里插入图片描述
1.5 BETWEEN

作用:显示两个值范围内的资料

语法:SELECT “栏位” FROM “表名” WHERE “栏位” BETWEEN ‘值1’ AND ‘值2’;

显示年龄在20岁到30岁之间的人;

在这里插入图片描述

1.6 通配符
通常通配符都是跟 LIKE 一起使用的

通配符 代表的意思
% 百分号表示零个、一个或多个字符(相当于linux中的“*”号)
_ 下划线表示单个字符(相当于linux中的“?”号)
‘A_Z’ 所有以 ‘A’ 起头,另一个任何值的字符,且以 ‘Z’ 为结尾的字符串。例如,‘ABZ’ 和 ‘A2Z’ 都符合这一个模式,而 ‘AKKZ’ 并不符合 (因为在 A 和 Z 之间有两个字符,而不是一个字符)。
‘ABC%’ 所有以 ‘ABC’ 起头的字符串。例如,‘ABCD’ 和 ‘ABCABC’ 都符合这个模式。
‘%XYZ’ 所有以 ‘XYZ’ 结尾的字符串。例如,‘WXYZ’ 和 ‘ZZXYZ’ 都符合这个模式。
‘%AN%’ 所有含有 'AN’这个模式的字符串。例如,‘LOS ANGELES’ 和 ‘SAN FRANCISCO’ 都符合这个模式。
‘_AN%’ 所有第二个字母为 ‘A’ 和第三个字母为 ‘N’ 的字符串。例如,‘SAN FRANCISCO’ 符合这个模式,而 ‘LOS ANGELES’ 则不符合这个模式。

1.7 LIKE

作用:匹配一个模式筛选条件

语法:SELECT “栏位” FROM “表名” WHERE “栏位” LIKE {模式};

比方说,我要查年龄是8结尾的人

在这里插入图片描述

或者我要找1开头的两位数年龄的人(好像年龄没有三位数哈哈哈)

在这里插入图片描述

1.8 ORDER BY

作用:排序,按关键字排序

#ASC 是按照升序进行排序的,是默认的排序方式。
#DESC 是按降序方式进行排序。

在这里插入图片描述
在这里插入图片描述

二、SQL函数

2.1 数学函数:
数学函数 返回的结果
abs(x) 返回 x 的绝对值
rand() 返回 0 到 1 的随机数
mod(x,y) 返回 x 除以 y 以后的余数
power(x,y) 返回 x 的 y 次方
round(x) 返回离 x 最近的整数
round(x,y) 保留 x 的 y 位小数四舍五入后的值
sqrt(x) 返回 x 的平方根
truncate(x,y) 返回数字 x 截断为 y 位小数的值
ceil(x) 返回大于或等于 x 的最小整数
floor(x) 返回小于或等于 x 的最大整数
greatest(x1,x2…) 返回集合中最大的值
least(x1,x2…) 返回集合中最小的值

select abs(-10),rand(),mod(10,3),power(2,10),round(3.1415);

在这里插入图片描述
在这里插入图片描述
2.2 聚合函数:
数学函数 返回的结果
avg() 返回指定列的平均值
count() 返回指定列中非 NULL 值的个数
min() 返回指定列的最小值
max() 返回指定列的最大值
sum(x) 返回指定列的所有值之和

计算平均年龄:

在这里插入图片描述
查看已经输入年龄的人的个数
在这里插入图片描述
2.3 字符串函数:
数学函数 返回的结果
trim() 返回去除指定格式的值
concat(x,y) 将提供的参数 x 和 y 拼接成一个字符串
substr(x,y) 获取从字符串 x 中的第 y 个位置开始的字符串,跟substring()函数作用相同
substr(x,y,z) 获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串
length(x) 返回字符串 x 的长度
replace(x,y,z) 将字符串 z 替代字符串 x 中的字符串 y
upper(x) 将字符串 x 的所有字母变成大写字母
lower(x) 将字符串 x 的所有字母变成小写字母
left(x,y) 返回字符串 x 的前 y 个字符
right(x,y) 返回字符串 x 的后 y 个字符
repeat(x,y) 将字符串 x 重复 y 次
space(x) 返回 x 个空格
strcmp(x,y) 比较 x 和 y,返回的值可以为-1,0,1
reverse(x) 将字符串 x 反转

例子1:
select trim(’ abc ');
在这里插入图片描述

实例2,concat:
select concat(name,age) from list where id=1;

在这里插入图片描述
select name || age from list where id=1;
#如sql_mode开启 了PIPES_AS_CONCAT, “||” 视为字符串的连接操作符而非或运算符
和字符串的拼接函数Concat相类似,这和Oracle数据库使用方法是一样的
在这里插入图片描述
要是看的不太舒服可以加个分隔符
在这里插入图片描述
2.4 group by
他主要就是对后面的栏位查询结果进行汇总分组,通常是结合聚合函数一起使用的
他还有一个原则,就是select 后面所有列中,没有使用聚合函数的列,必须出现在grouo by后面

select name,sum(age) from list group by name;
select name,sum(age) from list group by name order by age desc;
在这里插入图片描述
执行语句后:
在这里插入图片描述
在这里插入图片描述
用order by降序

2.5Having
用来过滤由group by语句返回的记录集,通常和group by语句联合使用
having语句的存在补足了where语句关键字不能与聚合函数联合使用的不足

语法:SELECT “栏位1”, SUM(“栏位2”) FROM “表格名” GROUP BY “栏位1” HAVING (函数条件);

在这里插入图片描述
2.6别名
栏位别名 表格别名

语法:SELECT “表格別名”.“栏位1” [AS] “栏位別名” FROM “表格名” [AS] “表格別名”;

在这里插入图片描述

2.7连接查询
在这里插入图片描述
在这里插入图片描述
准备两张表

1)inner join(等值相连)

只返回两个表中联结字段相等的行

SELECT * FROM list A INNER JOIN list2 B on A.name = B.name;
在这里插入图片描述
name=name

2)
left join(左连接)
在这里插入图片描述

3)right join(右联接)

返回包括右表中的所有记录和左表中联结字段相等的记录
在这里插入图片描述
和上面一样,不过是换了个方向

2.8 子查询

连接表格,在WHERE 子句或HAVING 子句中插入另一个SQL语句

语法:SELECT “栏位1” FROM “表格1” WHERE “栏位2” [比较运算符] #外查询
(SELECT “栏位1” FROM “表格1” WHERE “条件”); #内查询
SELECT SUM(age) FROM list WHERE name IN (SELECT name FROM list2);
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值