热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql高级sql

MySQL高阶SQL语句(1)文章目录一、环境准备createdatabasezs;usezs;createtablelocation(Regionchar(20),Store_N

MySQL高阶SQL语句(1)

文章目录

一、环境准备

create database zs;

use zs;

create table location (Region char(20),Store_Name char(20));

insert into location values('East','Boston');

insert into location values('East','New York');

insert into location values('West','Los Angeles');

insert into location values('West','Houston');

select * from location;

create table Store_Info (Store_Name char(20),Sales int(10),Date char(10)); insert into Store_Info values('Los Angeles','1500','2020-12-05');

insert into Store_Info values('Houston','250','2020-12-07');

insert into Store_Info values('Los Angeles','300','2020-12-08');

insert into Store_Info values('Boston','700','2020-12-08');

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

1、SELECT

​ 显示表格中一个或数个字段的所有资料

SELECT 字段 FROM 表名

​ SELECT Store_Name FROM Store_Info;

2、DISTINCT

​ 不显示重复的资料

SELECT DISTINCT "栏位" FROM "表名";

​ SELECT DISTINCT Store_Name FROM Store_Info;

3、WHERE

有条件查询

SELECT "栏位" FROM "表名" WHERE "条件";

​ SELECT Store_Name FROM Store_Info WHERE Sales > 1000;

4、AND OR

且 或

SELECT "栏位" FROM "表名" WHERE "条件1" ([AND|OR] "条件2")+ ;

​ SELECT Store_Name FROM Store_Info WHERE Sales > 1000 OR (Sales <500 AND Sales > 200);

5、IN 显示已知的值的资料

SELECT "栏位" FROM "表名" WHERE "栏位" IN ('值1','值2',...);

​ SELECT * FROM Store_Info WHERE Store_Name IN ('Los Angeles','Houston');

6、BETWEEN 显示两个值范围内的资料

SELECT "栏位" FROM "表名" WHERE "栏位" BETWEEN '值1' AND '值2';

​ SELECT * FROM Store_Info WHERE Date BETWEEN '2020-12-06' AND '2020-12-10';

7、通配符、LIKE

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

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

_:下划线表示单个字符

LIKE:用于匹配模式来查找资料

语法:

SELECT 字段 FROM 表名 WHERE 字段 LIKE ‘模式’;

​ SELECT * FROM Store_Info WHERE Store_Name like '%os%';

8、ORDER BY 按关键字排序

SELECT "栏位" FROM "表名" [WHERE "条件"] ORDER BY "栏位" [ASC,DESC];

​ SELECT Store_Name,Sales,Date FROM Store_Info ORDER BY Sales 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.89);

SELECT round(1.8937,3), truncate(1.235,2), ceil(5.2), floor(2.1), least(1.89,3,6.1,2.1);

2、聚合函数

avg()返回指定列的平均值count()返回指定列中非 NULL 值的个数

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

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

sum(x)返回指定列的所有值之和

SELECT avg(Sales) FROM Store_Info;

SELECT count(Store_Name) FROM Store_Info;

SELECT count(DISTINCT Store_Name) FROM Store_Info;

#DISTINCT为不显示重复信息 #count(*) 包括了所有的列的行数,在统计结果的时候,不会忽略列值为NULL(空)的行; #count(列名) 只包括列名那一行的行数,在统计结果的时候,会忽略列值为NULL(空)的行。

SELECT max(Sales) FROM Store_Info; *查看sales列的最大值*

SELECT min(Sales) FROM Store_Info; *查看sales列的最小值*

SELECT sum(Sales) FROM Store_Info; *查看sales列的数值和*

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 concat(Region,Store_Name) FROM location WHERE Store_Name ='Boston';

SELECT Region || ' ' || Store_Name FROM location WHERE Store_Name = 'Boston';

SELECT substr(Store_Name,3) FROM location WHERE Store_Name = 'Los Angeles';

SELECT substr(Store_Name,2,4) FROM location WHERE Store_Name = 'New York';

select Region,length(Store_name) from location;

4、GROUP BY用法

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

使用的。

​ GROUP BY 有一个原则,就是 SELECT 后面的所有列中,没有使用聚合函数的

列,必须出现在GROUP BY后面。

语法:

SELECT "栏位1",SUM("栏位2") FROM "表名" GROUP BY "栏位1";

SELECT Store_Name,SUM(Sales) FROM Store_Info GROUP BY Store_Name ORDER BY sales desc;

5、HAVING用法

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

HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。如果被

SELECT的只有函数栏,那就不需要GROUP BY子句。

语法:

SELECT "栏位1",SUM("栏位2") FROM "表名" GROUP BY "栏位1" HAVING (函数条件);

SELECT Store_Name,SUM(Sales) FROM Store_Info GROUP BY Store_Name HAVING SUM(Sales) > 1500;

6、别名

字段别名、表格别名

语法: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;

7、子查询

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

语法:

SELECT 字段1 FROM 表格1 WHERE 字段2 [比较运算符]

(SELECT 字段1 FROM 表格2 WHERE 条件)

SELECT SUM(Sales) FROM Store_Info WHERE Store_Name IN

(SELECT Store_Name FROM location WHERE Region = 'West');

来源: https://blog.csdn.net/weixin_44505291/article/details/113849150


推荐阅读
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
author-avatar
Sun
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有