MySQL数据库高级SQL语句(一)

准备工作

use test;
create table city (Region char (20),Name char(20));
insert into city values('south','shanghai');
insert into city values ('south','hunan');
insert into city values ('north','beijing');
insert into city values ('north','tianjin');

create table tickets (Store_Name char(20),Sales int(10),Date char(10));
insert into tickets values('beijing','1250','2021-1-28');
insert into tickets values ('tianjin','750','2021-1-29');
insert into tickets values('beijing','500','2021-1-30');
insert into tickets values('shanghai','1800','2021-1-31');

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

一、MySQL 高级SQL 语句

SELECT

显示表格中一个或数个栏位的所有资料
语法: SELECT “栏位” FROM “表名”;

例:select Store_Name FROM tickets;

在这里插入图片描述

DISTINCT

不显示重复的资料
语法: SELECT DISTINCT “栏位” FROM “表名”;

例:select distinct Store_Name FROM tickets;

在这里插入图片描述

WHERE

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

例:select Store_Name FROM tickets where Sales > 1500;

在这里插入图片描述

AND OR

且或
语法: SELECT “栏位” FROM “表名” WHERE “条件1” { [AND | OR] “条件2”}+ ;

例:select Store_Name FROM tickets where Sales > 1500 or (Sales < 1000 and Sales > 500);

在这里插入图片描述

IN

显示已知的值的资料
语法: SELECT “栏位” FROM “表名” WHERE “栏位” IN (‘值1’,‘值2’, …);

select * from tickets where Store_Name in('tianjin','shanghai');

在这里插入图片描述

BETWEEN

显示两个值范围内的资料
语法: SELECT “栏位” FROM “表名” WHERE “栏位” BETWEEN ‘值1’ AND ‘值2’ ;

select * from tickets where Date between '2021-1-29' and '2021-1-31';

在这里插入图片描述

通配符

通常通配符都是跟LIKE一起使用的
%:百分号表示零个、一个或多个字符
_:下划线表示单个字符
‘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’则不符合这个模式。

LIKE

匹配一个模式来找出我们要的资料
语法: SELECT “栏位” FROM “表名” WHERE “栏位” LIKE {模式};

select * from tickets where Store_Name like '%an%';

在这里插入图片描述

ORDER BY

按关键字排序
语法: SELECT “栏位” FROM “表名” [WHERE “条件”] ORDER BY “栏位” [ASC,DESC];
#ASC是按照升序进行排序的,是默认的排序方式。
#DESC是按降序方式进行排序。

select Store_Name,Sales,Date from  tickets order by Sales desc;
select Store_Name,Sales,Date from  tickets order by Sales asc;

在这里插入图片描述

二、函数

数学函数

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位小数的值(只保留小数点后的y位数)
ceil(x) 返回大于或等于x的最小整数
floor(x) 返回小于或等于x的最大整数
greatest(x1,x2…) 返回集合中最大的值
least(x1,x2…) 返回集合中最小的值

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

聚合函数

avg() 返回指定列的平均值
count() 返回指定列中非NULL值的个数(非空行号)
min() 返回指定列的最小值,
max() 返回指定列的最大值
sum(x) 返回指定列的所有值之和
例:
select avg(Sales) from tickets;
select count(Sales) from tickets;
select min(Sales) from tickets;
select max(Sales) from tickets;
select sum(Sales) from tickets;

在这里插入图片描述

字符串函数

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 反转

例:

select trim(leading 'ab' from 'abcde');
select trim(trailing 'de' from 'abcde');
select trim(both 'a' from 'abcde');
select trim(both 'e' from 'abcde');

**加粗样式**

select concat(Region,Name) from city where Region = 'north';

在这里插入图片描述

select substr(Store_Name,5,2) from tickets;

在这里插入图片描述

select length(Name) from city;

在这里插入图片描述

select replace(Region,'th','abc') from city;

在这里插入图片描述

select upper(Name) from city;

在这里插入图片描述

select lower(ABCDE);

在这里插入图片描述

select left(Name,2) from city;
select right(Name,2) from city;

在这里插入图片描述

select repeat(Name,3) from city;

在这里插入图片描述

select space(3);

在这里插入图片描述

select strcmp(10,50);
select strcmp(50,10);
select strcmp(10,10);

在这里插入图片描述

select reverse(Region) from city;

在这里插入图片描述

未完待续… …

猜你喜欢

转载自blog.csdn.net/weixin_51613313/article/details/113849677