MySQL高级语句(一)

news/2024/11/23 13:39:48/

一、SQL高级语句

1、 SELECT

显示表格中一个或数个栏位的所有资料

语法:SELECT "字段" FROM "表名";

select * from test1;
select name from test1;
select name,sex from test1;

2、DISTINCT

不显示重复的内容

语法:SELECT DISTINCT "字段" FROM "表名";

select distinct age from test1;

3、WHERE

条件查询

语法:SELECT "字段" FROM "表名" WHERE "条件";

select name,age from test1 where age < 21;
select name,age from test1 where name='nancy';


 

4 、AND OR

代表且、或、和的意思

语法:SELECT "字段" FROM "表名" WHERE "条件1" {[AND|OR] "条件2"};

select * from test1 where sex='女' and age > 21;
select * from test1 where age > 21 or age < 20;
select * from test1 where (age > 21 and sex='男') or age < 20;    

5、IN

显示已知的值的内容

语法:SELECT "字段" FROM "表名" WHERE "栏位" IN ('值1', '值2', ...);

select * from test1 where age in (18,20,35);


 

6、BETWEEN

显示两个值范围内的资料

语法:SELECT "字段" FROM "表名" WHERE "栏位" BETWEEN '值1' AND '值2';  

select * from test1 where age between 19 and 30;


  

7 通配符

通常通配符都是跟 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’ 则不符合这个模式

8 LIKE

匹配一个模式来找出我们要的资料

语法:SELECT "栏位" FROM "表名" WHERE "字段" LIKE {模式};

select * from test1 where name like '小%';
select *from test1 where name like '%小%';
select *from test1 where name like '李_';


 

9 ORDER BY

按关键字排序

语法:SELECT "字段" FROM "表名" [WHERE "条件"] ORDER BY "字段" [ASC, DESC];

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

#DESC 是按降序方式进行排序。

select *from test1 where sex='男' order by age;
select *from test1 where sex='男' order by age desc;


  

二、SQL函数

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(-2),rand(),mod(10,3),power(2,3),round(5.66);


  

select round(5.445636,4),sqrt(3),truncate(8.456547,4);

2 聚合函数:

数学函数返回的结果
avg()返回指定列的平均值
count()返回指定列中非 NULL 值的个数
min()返回指定列的最小值
max()返回指定列的最大值
sum(x)返回指定列的所有值之和

count

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

4 GROUP BY

对GROUP BY 后面的查询结果进行汇总分组,通常是结合聚合函数一起使用

GROUP BY有个原则,select 后面的所有列中,没有用聚合函数的列,必须出现在GROUP BY后面

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


  

5 HAVING

用来过滤由GROUP BY语句返回的记录集,通常与GROUP BY语句联合使用

HAVING的存在弥补了WHERE关键字不能和聚合函数联合使用的不足,如果被select的只有函数,那就不需要GROUP BY语句

HAVING只是条件过滤,用来筛选前面GROUP BY的结果 

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

select sex,avg(age) from test1 group by sex;
select sex,avg(age) from test1 group by sex having avg(age)>25;

6 别名

字段別名 表格別名

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


  

7 连接查询

7.1 inner join(等值相连)

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

select * from test2 A inner join test1 B on A.name = B.name;


  

7.2 left join(左联接)

返回包括左表中的所有记录和右表中联结字段相等的记录

select * from test2 A left join test1 B on A.name = B.name;   


  

7.3 right join(右联接)

返回包括右表中的所有记录和左表中联结字段相等的记录

select * from test2 A right join test1 B on A.name = B.name; 


 

8 子查询

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

语法:SELECT "字段1" FROM "表格1" WHERE "字段2"  [比较运算符]          #外查询
(SELECT "字段2" FROM "表格2" WHERE "条件");                           #内查询   

可以是符号的运算符,例如 =、>、<、>=、<=;也可以是文字的运算符,例如 LIKE、IN、BETWEEN

先进行内查询,查询结果再交给外查询进行进一步过滤

select xueke from test2 where name in (select name from test1 where age=22);   

9 EXISTS

用来测试内查询有没有产生任何结果,类似布尔值是否为真

如果有的话,系统就会执行外查询的SQL语句,若是没有的话,那整个SQL语句就不会产生任何结果  

语法:SELECT “字段” FROM “表格1” WHERE EXISTS (SELECT * FROM "表格2" WHERE “条件”);

select name,xueke from test2 where name in (select name from test1 where age=22);
select name,xueke from test2 where name in (select name from test1 where age=100);


http://www.ppmy.cn/news/68566.html

相关文章

Xilinx FPGA DDR3设计(三)DDR3 IP核详解及读写测试

引言&#xff1a;本文我们介绍下Xilinx DDR3 IP核的重要架构、IP核信号管脚定义、读写操作时序、IP核详细配置以及简单的读写测试。 01.DDR3 IP核概述 7系列FPGA DDR接口解决方案如图1所示。 图1、7系列FPGA DDR3解决方案 1.1 用户FPGA逻辑&#xff08;User FPGA Logic&#…

二叉搜索树、AVL树、红黑树底层源码以及迭代器模拟实现,map/set的封装

这次给大家分享的还是关于二叉树部分的内容&#xff0c;之前的文章已经分享过一些二叉树的基础知识&#xff0c;如果不了解的朋友可以看看&#xff1a;二叉树以及堆和堆排序。普通的二叉树其实是没有什么实际的应用价值的&#xff0c;而map和set大家用过或者听过吗&#xff1f;…

外贸人如何精准开发客户?Facebook开发客户全攻略

现在做跨境的都了解的一个社媒平台就是Facebook了&#xff0c;因为很多人都会拿Facebook来开发客户&#xff0c;忙里偷闲&#xff0c;今天东哥就来聊聊用Facebook开发客户的一些心得。 用Facebook开发客户的心得 1、利用关键词搜索 使用行业相关的关键词、产品特定的关键词、相…

通俗理解git和github是什么,30分钟速通版

文章目录 安装 git配置 git第一个 git 仓库git 基本功能 / 本地仓库add 修改跟踪文件并放入暂存区commit 提交暂存区&#xff0c;产生新版本status 查看文件的修改和暂存状态diff 查看已修改而未进入暂存区的文件状态log 查看过去的提交日志 git 远程仓库remote 链接远程仓库pu…

AutoDL使用百度网盘来进行数据的交互

文章目录 1. 简介 2. 操作2.1. 设置密码2.1.1. 登录网盘 2.2. 访问网盘中的数据2.3. 将数据放入到网盘中 1. 简介 AutoDL上面其实是可以直接使用百度网盘、阿里云盘等公共网盘的&#xff0c;这样传资料的时候就不用通过Xshell慢悠悠的传输了&#xff0c;如果有百度网盘会员的话…

隐私计算论文合集「多方安全计算系列」第一期

当前&#xff0c;隐私计算领域正处于快速发展的阶段&#xff0c;涌现出了许多前沿的SOTA算法和备受关注的顶会论文。为了方便社区小伙伴学习最新算法、了解隐私计算行业最新进展和应用&#xff0c;隐语开源社区在GitHub创建了Paper推荐项目awesome-PETs&#xff08;PETs即Priva…

工厂人员定位系统源码,支持智能考勤、工时统计、行为检测、历史轨迹回放、人员管理、电子围栏功能

系统概述&#xff1a; 工厂人员定位系统&#xff0c;采用UWB定位技术&#xff0c;通过在厂区内部署一定数量的定位基站&#xff0c;以及为人员、车辆、物资佩戴标签卡的形式&#xff0c;实时获取人员精确位置&#xff0c;精度高达10cm。 工厂人员定位系统可实现物资/车辆实时定…

c高级day4作业

有m1.txt m2.txt m3.txt m4.txt&#xff0c;分别创建出对应的目录&#xff0c;m1 m2 m3 m4 并把文件移动到对应的目录下使用break关键字打印九九乘法表&#xff0c;提示&#xff1a;printf "%d * %d %d" $i $j $((i*j)) #!/bin/bash for i in m1 m2 m3 m4 do#文件夹…