千家信息网

MySQL数据库中高阶SQL语句的使用示例

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章主要介绍了MySQL数据库中高阶SQL语句的使用示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、准备工作1、安装MySQ
千家信息网最后更新 2025年02月05日MySQL数据库中高阶SQL语句的使用示例

这篇文章主要介绍了MySQL数据库中高阶SQL语句的使用示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、准备工作

1、安装MySQL数据库

Shell脚本一键部署--源码编译安装MySQL

2、实验准备,数据表配置

mysql -uroot -pshow databases;create database train_ticket;use train_ticket;create table REGION(region varchar(10),site varchar(20));create table FARE(site varchar(20),money int(10),date varchar(15));desc REGION;desc FARE;insert into REGION values ('south','changsha');insert into REGION values ('south','nanchang');insert into REGION values ('north','beijing');insert into REGION values ('north','tianjin');insert into FARE values ('changsha',1000,'2021-01-30');insert into FARE values ('nanchang',700,'2021-01-30');insert into FARE values ('beijing',1500,'2021-01-30');insert into FARE values ('tianjin',1200,'2021-01-30');insert into FARE values ('beijing',2200,'2021-02-05');select * from REGION;select * from FARE;


二、MySQL 高级(进阶) SQL 语句

1、SELECT

显示表格中一个或数个字段的所有资料
语法:SELECT 字段 FROM 表名

select region from REGION;

2、DISTINCT

不显示重复的资料(去重)
语法:SELECT DISTINCT 字段 FROM 表名

select distinct region from REGION;

3、WHERE

有条件查询
语法:SELECT 字段 FROM 表名 WHERE 条件

select site from FARE where money > 1000;select site from FARE where money < 1000;select site from FARE where money = 1000;

4、AND、OR

and(并且)、or(或者)
语法:SELECT 字段 FROM 表名 WHERE 条件1 ([AND|OR] 条件2)+;

select site from FARE where money > 1000 and (money < 1500);select site,money from FARE where money < 500 or (money < 1500 and money >= 700);select site,money,date from FARE where money >= 500 and (date < '2021-02-05' and money < 1000);

5、IN

显示已知的值的资料
语法:SELECT 字段 FROM 表名 WHERE 字段 IN ('值1','值2',……);

select site,money from FARE where money in (700,1000);

6、BETWEEN

显示两个值范围内的资料
语法:SELECT 字段 FROM 表名 WHERE 字段 BETWEEN '值一' and '值二';

select * from FARE where money between 500 and 1000;

7、通配符、LIKE

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

%:百分号表示零个、一个或多个字符
_:下划线表示单个字符

LIKE:用于匹配模式来查找资料
语法:SELECT 字段 FROM 表名 WHERE 字段 LIKE '模式';

select * from FARE where site like 'be%';select site,money from FARE where site like '%jin_';

8、ORDER BY

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

select * from FARE order by money desc;select date,money from FARE order by money desc;

函数

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(-1),rand(),mod(5,3),power(2,3),round (1.579),round(1.734,2);

select sqrt(9),truncate(1.234,2),ceil(1.2),floor(1.9),greatest(1,2,3,4),least(1,2,3,4);

2、聚合函数

avg()返回指定列的平均值
count()返回指定列中非 NULL 值的个数
min()返回指定列的最小值
max()返回指定列的最大值
sum(x)返回指定列的所有值之和
select avg(money) from FARE;select count(money) from FARE;select min(money) from FARE;select max(money) from FARE;select sum(money) from FARE;

#count(*)包括所有列的行数,在统计结果时,不好忽略值为null
#count(字段)只包括那一行的列数,在统计结果的时候,会忽略列值为null的值

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

SELECT TRIM ([ [位置] [要移除的字符串] FROM ] 字符串);

#[位置]:的值可以为 LEADING (起头), TRAILING (结尾), BOTH (起头及结尾)。
#[要移除的字符串]:从字串的起头、结尾,或起头及结尾移除的字符串。缺省时为空格。

select trim(leading 'na' from 'nanchang');select trim(trailing '--' from 'nanchang--');select trim(both '--' from '--nanchang--');select concat(region,site) from REGION where region = 'south';select concat(region,' ',site) from REGION where region = 'south';select substr(money,1,2) from FARE;select length(site) from FARE;select replace(site,'ji','--') from FARE;select upper(site) from FARE;select lower('HAHAHA');select left(site,2) from FARE;select right(site,3) from FARE;select repeat(site,2) from FARE;select space(2); select strcmp(100,200);select reverse(site) from FARE;

4、| | 连接符

如果sql_mode开启开启了PIPES_AS_CONCAT,"||"视为字符串的连接操作符而非或运算符,和字符串的拼接函数Concat相类似,这和Oracle数据库使用方法一样的

mysql -uroot -puse train_ticket;select region || ' ' || site from REGION where region = 'north';select site || ' ' || money || ' ' || date from FARE;

5、GROUP BY

BY后面的栏位的查询结果进行汇总分组,通常是结合聚合函数一起使用的
GROUP BY 有一个原则,就是 SELECT 后面的所有列中,没有使用聚合函数的列,必须出现在GROUP BY后面。

语法:SELECT 字段1,SUM(字段2) FROM 表名 GROUP BY 字段1;

select site,sum(money) from FARE group by site;select site,sum(money),date from FARE group by site order by money desc;select site,count(money),sum(money),date from FARE group by site order by money desc;

6、HAVING

用来过滤由GROUP BY语句返回的记录集,通常与GROUP BY语句联合使用。
HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。如果被SELECT的只有函数栏,那就不需要GROUP BY子句。

语法:SELECT 字段1,SUM(字段2) FROM 表名 GROUP BY 字段1 HAVING(函数条件);

select site,count(money),sum(money),date from FARE group by site having sum(money) >=700;

7、别名

字段别名、表格别名
语法:SELECT "表格別名"."字段1" [AS] "字段1別名" FROM "表格名" [AS] "表格別名";

select RE.region  AS reg, count(site) from REGION AS RE group by reg;select FA.site AS si,sum(money),count(money),date AS da from FARE AS FA group by si;

8、子查询

连接表格,在WHERE 子句或HAVING 子句中插入另一个SQL 语句
语法:SELECT 字段1 FROM 表格1 WHERE 字段2 [比较运算符] (SELECT 字段1 FROM 表格2 WHERE 条件)

可以是符号的运算符
例:=、>、<、>=、<=

也可以是文字的运算符
例:LIKE、IN、BETWEEN

select A.site,region from REGION AS A where A.site in(select B.site from FARE AS B where money<2000);select B.site,money,date from FARE AS B where site in(select A.site from REGION AS A where region = 'north');

感谢你能够认真阅读完这篇文章,希望小编分享的"MySQL数据库中高阶SQL语句的使用示例"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

字段 字符 字符串 语法 函数 表格 语句 条件 数据 资料 数据库 字母 篇文章 运算符 排序 运算 最大 最小 别名 子句 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 神经元网络技术用于物联网 阿坝网络技术怎么样 手机app软件开发教 关于小学生网络安全教育小品 西安华宇万维网络技术有限公司 手机同名数据库在哪找 做软件开发笔记本电脑推荐 平安征文网络安全 网络安全法与民法典 如何用服务器挖矿 软件开发公司销售员个人工作总结 2018网络安全公需课 svn服务器地址变更 已毕业交大访问数据库 boss服务器出了问题吗 软件开发合同应该怎么写 m9000服务器 wan口怎么设置服务器无响应 小米路由器一直无法连接服务器 良明网络技术服务厦门 sql数据库导入备份数据 软件开发专业毕业找什么工作 辽宁网络安全知识考试答案 珠海大唐网络技术有限公司 数据库的数据都可以参与计算吗 数据库与程序的安装 怎么联系服务器管理员 文书档案数据库录入工作 上海朝夕网络技术有限公司电话 护苗 网络安全课一 二
0