MySQL高级(进阶)SQL语句

这篇具有很好参考价值的文章主要介绍了MySQL高级(进阶)SQL语句。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#显示一个字段或者多个字段的所有内容

SELECT “字段” FROM 表名 ;

#distinct对字段去重查询 (最好只对单个字段进行去重)

SELECT DISTINCT 字段名 FROM 表名

#where 有条件查询

SELECT “字段” FROM 表名 WHERE 条件(例如:sales <=>!= 100);

#and or 查看多个条件

SELECT “字段” FROM 表名 WHERE 条件(例如:sales <=>!= 100)or/and sales <=>500 ;

SELECT “字段” FROM 表名 WHERE 条件(例如:sales <=>!= 100)or (sales >200 and sales <500 ); #查找销售额大于1000或者大于200小于500的

#in 显示已知的值的数据记录

SELECT “字段” FROM “表名” WHERE ‘字段名’ in ('xxx',''yyy');

SELECT “字段” FROM “表名” WHERE ‘字段名’not in ('xxx',''yyy');

#between 显示两个值范围内的数据

SELECT 字段 FROM 表名 WHERE 字段 BETWEEN xxx and yyy ; #包含xxx和yyy的值,也可以是时间 (SELECT 字段 FROM 表名 WHERE DATE BETWEEN '2020-12-05' and '2020-12-08')

---------通配符-------通常与LIKE一起使用

%:百分号表示零个、一个或者多个字符

_: 下划线表示单个字符

'A-Z':所有以‘A’起头,另一个任何值的字符,且以‘Z’为结尾的字符串。例如‘ABZ’和‘A2Z’

‘ABC%’:所有以ABC开头的字符串

‘%XYZ’:所有以XYZ结尾的字符串

‘%ABC%’:所有含有ABC字符的的字符串

‘_AN%’:所有第二个字母为A,第三个字母为N的字符串,例如‘SAN FRANCISCO’

SELECT STORE_NAME,DATE,SALES FROM STORE_INFO WHERE STORE_NAME LIKE 'LO%';

----------ORDER BY -----------按关键排序

SELECT “字段” FROM “表名” [WHERE '条件'] ORDER BY ‘字段’[ASC,DESC]

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

#DESC 是按照降序进行排序的

--------------------函数-------------------------

数学函数:

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,x3...):返回集合中最大的值,也可以返回多个字段的最大的值

♢least(x1,x2,x3...):返回集合中最小的值,也可以返回多个字段的最小的值

聚合函数:

♢avg():返回指定列的平均值

♢count():返回指定列中非NULL值的个数

♢min():返回指定列的最小值

♢max():返回指定列的最大值

♢sum(x):返回指定列的所有值纸盒

♢count(*):所有字段行数,不忽略NULL行

字符串函数:

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的所有字母变成大写字母

left(x,y):返回字符串x前y个字符

right(x,y):返回字符串x后y个字符

repeat(x,y):将字符串x重复y次

space(x):返回x个空格

srcmp(x,y):比较x和y,返回的值可以为-1,0,1

reverse(x):将字符串x反转

字符串分片 select substr('123456789',4,3); 为456,第四个开始后面三个

select trim (leading ' xx ' from 'xx yy'); 从xx yy中移除xx

select trim (trailing' yy ' from 'xx yy'); 从xx yy中移除yy

--------------GROUP BY ---------------------

group by 有一个原则,凡是在group by后面出现的字段,必须在select后面出现;

凡是在select后面出现的,且未在聚合函数中出现的字段,必须出现在group by后面

SELECT STORE_NAME,SUM(SALES) FROM STORE_INFO GROUP BY STORE_NAME ORDER BY SALES DESC;

#分组也有去重功能

#group by分组之后,不再能使用where语句进行过滤

----------------HAVING------------------------

通常和group by一起使用,对group by语句之后再进行过滤

select store_name,sum(sales) from store_info where sales < 2000 group by store_name having sum(sales) > 1000;

顺序:先sales小于2000,然后进行分组,然后对sales进行求和,最后having对求和大于1000进行过滤

SQL语句执行顺序:

MySQL高级(进阶)SQL语句

--------------别名---------------------

select region,replace(region,'st','stion') as new_region,store_name from location as A;

原字段 as 别名 , 可以空格代替as

-----------子查询-------------------

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

select “字段1”FROM “表格1” WHERE “字段2” [比较运算符]like in between #外查询

(select "字段1" FROM“表格2” WHERE “条件”);

#内查询

select sum(sales) from store_info where store_name in (select store_name from location where region='west'); #求西部城市的销售总额

where exists 测试内查询是否有结果,有结果的话,就会执行外查询,并且返回外查询执行结果

----------------连接查询----------------------

inner join(内连接):只返回两个表中联结字段相等的行

MySQL高级(进阶)SQL语句

left join(左连接):返回包括左表中的所有记录和右表中联结字段相等的记录MySQL高级(进阶)SQL语句

right join(右连接):返回包括右表中的所有记录和坐标中联结字段相等的记录MySQL高级(进阶)SQL语句

select * from location A inner join store_info B on A.store_name=B.store_name;

-----------------UNION---------------联集---

将两个SQL语句合并起来,两个SQL语句所产生的字段需要是同样的数据记录种类

UNION:生成结果的数据记录值将没有重复,自动排序

UNION ALL:将生成结果的记录值全合并,不管是否有重复,也不排序

派生表别名:

select A.store_name ,count(A.store_name) from (select distinct store_name from location union all select distinct store_name from store_info) as A group by A.store_name having count(A.store_name) =1; #求无交集

今日总结:

select 字段 ... from 表 where 字段1=/!=/</>/<=/>= [and/or]多条件判断

in/not in (值1,值2,... )/between 值1 and 值2

like '%xxx_'通配符

select 字段....from 表 order by 字段 ASC/DESC

数学函数 round(x,y) truncate(x,y) greatest/least(值1,值2,.... )

聚合函数 sum() avg() max() min() count()

字符串函数 concat()字段拼接 || 开启mode

substr()字符串分片 replace() length()

select 字段,聚合函数(字段) from 表 where xxxx group by 字段 having 条件

别名:select 字段 as别名 from 表 as 别名

select 字段....from 表 where 字段 运算符 (select 字段....from 表 where 字段);

表连接:inner join 、left join 、right join

交集: select 字段 from 左表 A inner join 右表 B on A.字段=B.字段;

using(字段)

select 字段 from 左表 A,右表 B where A.字段=B.字段

select 字段 from左表 where 字段 in (select 字段 fron 右表);

select A.字段 from 左表 left join on A.字段=B.字段 where B.字段 is not null

select A.字段 from (select distinct 字段 from 左表 union all select distinct 字段 from 右表)as A group by A.字段 having count (A.字段)=1;

无交集:select A.字段 from 左表 left join on A.字段 =B.字段 where B.字段 is null

select A.字段 from (select distinct 字段 from 左表 union all select distinct 字段 from 右表) as A group by A.字段 having count (A.字段) =1;文章来源地址https://www.toymoban.com/news/detail-447831.html

到了这里,关于MySQL高级(进阶)SQL语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux5.7 MySQL 高级(进阶) SQL 语句

    第四章 LINUX MySQL 高级(进阶) SQL 语句 一、高级SQL 语句 1.SELECT 显示表格中一个或数个字段的所有数据记录 2.DISTINCT 不显示重复的数据记录 3.WHERE 有条件查询 4.AND OR 且 或 5.IN 显示已知的值的数据记录 6.BETWEEN 显示两个值范围内的数据记录 7.通配符 通常通配符都是跟 LIKE 一起使用

    2024年02月09日
    浏览(50)
  • mysql表添加字段sql语句

    使用ALTER TABLE向MySQL数据库的表中添加字段 语法规则 语句内容: table_name :表名; column_name:需要添加的字段名; VARCHAR(100):字段类型为varchar,长度100; DEFAULT NULL:默认值NULL; AFTER old_column:新增字段添加在old_column字段后面,不写会默认表尾部; 例子:

    2024年02月10日
    浏览(44)
  • MySQL 根据多字段查询重复数据 MySQL根据某一个或者多个字段查找重复数据

    在实际的数据库应用中,我们经常需要根据多个字段来查询重复的数据。MySQL 提供了一些方法来实现这个功能,让我们能够快速准确地找到和处理重复数据。本文将介绍如何使用 MySQL 来根据多字段查询重复数据,并提供相应的代码示例。 什么是重复数据? 重复数据指的是在

    2024年02月12日
    浏览(42)
  • mysql高级sql语句-全面

    显示表格中一个或数个字段的所有数据记录 在已知的字段数据取值范围内取值 在两个字段数据值之间取值,包含两边字段的数据 通常通配符都是与like配合使用的 % :百分号表示零个、一个或多个字符 _ :下划线表示单个字符 名称 作用 举例 ‘A_Z’ 所有以 ‘A’ 起头,另一

    2024年02月11日
    浏览(37)
  • MySQL中的SQL高级语句[一](上篇)

    使用语言  MySQL 使用工具  Navicat Premium 16 代码能力快速提升小方法,看完代码自己敲一遍,十分有用 拖动表名到查询文件中就可以直接把名字拉进来 以下是使用脚本方法,也可以直接进行修改 中括号,就代表可写可不写  目录 1.修改数据表结构 1.1 修改数据库的表名  1.

    2024年04月14日
    浏览(48)
  • 【MySQL数据库】MySQL 高级SQL 语句一

    ) % :百分号表示零个、一个或多个字符 _ :下划线表示单个字符 ‘A_Z’:所有以 ‘A’ 起头,另一个任何值的字符,且以 ‘Z’ 为结尾的字符串。例如,‘ABZ’ 和 ‘A2Z’ 都符合这一个模式,而 ‘AKKZ’ 并不符合 (因为在 A 和 Z 之间有两个字符,而不是一个字符)。 ‘ABC%’

    2024年02月09日
    浏览(241)
  • MySQL进阶SQL语句(二)

    视图跟表格的不同是,表格中有实际储存数据记录,而视图是建立在表格之上的一个架构,它本身并不实际储存数据记录。 临时表在用户退出或同数据库的连接断开后就自动消失了,而视图不会消失。 视图不含有数据,只存储它的定义,它的用途一般可以简化复杂的查询。

    2024年02月11日
    浏览(41)
  • MySQL相关的SQL语句、数据库、数据表、字段、类型

    1、 SQL 语句不区分大小写。 SQL语句 用途 描述 mysql -u root -p 连接 MySQL 在命令行窗口中输入 mysql -u root -p 命令,回车,然后输入 MySQL 密码(不要忘记了密码,找回麻烦),再回车就连接上 MySQL 了。最初都是使用 root 用户登录,工作中不能一直使用 root 用户登录。因为 root 权限太

    2024年02月13日
    浏览(95)
  • MySQL进阶SQL语句2之表连接

    目录 1.连接查询 1.1inner(内连接) 1.2left join(左连接)  1.3right join(右连接) 1.4直接查询两个表相同的字段值的数据 2. VIEW(视图) 2.1create view(创建视图)  2.2修改源表数据,视图数据也随之改变 2.3视图数据是否能修改 3. UNION(联集) 4.交集值 5.无交集值 6.CASE 7.空值

    2024年02月10日
    浏览(36)
  • Oracle或者MySQL 将一个表中的数据插入到另外一个表中(表名不同,表字段也可能不同)

    在Oracle或者MySQL中,如何将一个表中的数据插入到另外一个表中(表名不同,字段名可能也不同),以Oracle数据库为例。 (1)创建一个包含所需字段的新表 (2)使用INSERT INTO SELECT将数据从旧表复制到新表。在SELECT语句中,选择需要从旧表中复制的字段。

    2024年02月15日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包