MysQL高级SQL语句|进阶语句|select语句(一)【图文细解】
MysQL高级SQL语句
- 一、SQL语句的概述
- SELECT
- DISTINCT
- WHERE
- AND、OR
- IN
- BETWEEN
- 通配符
- LIKE
- ORDER BY
- GROUP BY
- HAVING
- 二、函数
- 1、数学函数
- 2、聚合函数
- 3、字符串函数
一、SQL语句的概述
创建2个表,进行实验操作
use kgc;
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');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');
SELECT
显示表格中一个或数个栏位的所有资料
语法: SELECT "栏位" FROM "表名";
SELECT Store_Name FROM Store_Info;
DISTINCT
不显示重复的资料
语法: SELECT DISTINCT "栏位" FROM "表名";
SELECT DISTINCT Store_Name FROM Store_Info;
WHERE
有条件查询
语法: SELECT "栏位" FROM "表名" WHERE "条件";
SELECT Store_Name FROM Store_Info WHERE Sales > 1000;
AND、OR
且 、或
语法: SELECT "栏位" FROM "表名”WHERE "条件1" { [ANDIOR] "条件2"}+;
SELECT Store_Name FROM Store_Info WHERE Sales > 1000 OR (Sales < 500 AND Sales > 200);
IN
显示已知的值的资料
语法: SELECT "栏位" FROM "表名" WHERE "栏位" IN ('值1', '值2', ...) ;
SELECT * FROM Store_Info WHERE Store_Name IN ('Los Angeles','Houston');where Store_name = 'Los Angeles'or Store_name = 'Houston'
BETWEEN
显示两个值范围内的资料
语法: SELECT "栏位" FROM "表名" WHERE "栏位" BETWEEN '值1 ' AND '值2';
SELECT * FROM Store_Info WHERE Date BETWEEN ' 2020-12-06' AND '2020-12-10';
通配符
通常通配符都是跟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 Store_Info WHERE Store_Name like '%os%';
ORDER BY
按关键字排序
语法: SELECT "栏位" FROM "表名" [WHERE "条件"] ORDER BY "栏位" [ASC,DESC];#ASC是按照升序进行排序的,是默认的排序方式。
#DESC是按降序方式进行排序。SELECT Store_Name, Sales, Date FROM Store_Info ORDER BY Sales DESC;
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;
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;
二、函数
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;
SELECT max(Sales) FROM Store_Info;
SELECT min(Sales) FROM Store_Info;
SELECT sum(Sales) FROM Store_Info;
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(8,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 'Ne' FROM 'New York');
SELECT concat(Region,Store_Name) FROM location WHERE Store_Name='Boston' ;#如sql_ mode开启开启了PIPES_AS_CONCAT,"||"视为字符串的连接操作符而非或运算符,和字符串的拼接函数Concat相类似,这和Oracle数据库使用方法一样的
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;
SELECT REPLACE (Region,'ast', 'astern') FROM location;
select Region,upper(Store_name) from location;
select Region,lower(Store_name) from location;
select Region,left(store_name,5) from location;
select Region,right(store_name,4) from location;
select Region,repeat(store_name,3) from location;
MysQL高级SQL语句|进阶语句|select语句(一)【图文细解】相关推荐
- MySQL高级SQL语句(终章)
目录 一:通配符 1.1查询名字是有开头的记录 1.2查询名字里是贝和摩中间有一个字符的记录 1.3查看贝后面3个字符的名字记录 1.4通配符%和_结合使用 二:子查询 2.1相同表查询 2.2不同表 ...
- 【MySQL数据库】MySQL 高级SQL 语句一
@[TOC](MySQL 高级SQL 语句 一.MySQL 高级SQL 语句 1.1select -显示表格中一个或数个字段的所有数据记录 1.2distinct不显示重复的数据记录 1.3where ...
- SQL语句--INSERT INTO SELECT 语句用法示例
通过 SQL,您可以从一个表复制信息到另一个表. INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中. SQL INSERT INTO SELECT 语句 I ...
- 将insert语句转化为select语句,进行校验,验证是否插入成功
前言 公司的测试和运维不太懂sql,每次将sql文件交给他们到测试或者生产数据库中执行sql的时候,他们都是全部执行,不看是否执行成功.因此,就会导致有些insert语句没有执行成功,等到功能验证 ...
- SELECT语句定义和Select语句完整的执行顺序
SELECT语句定义: 一个完成的SELECT语句包含可选的几个子句.SELECT语句的定义如下:<SELECT clause> [<FROM clause>] [<WH ...
- MySQL高级SQL语句(开端)
目录 一:order by-按关键字排序 1.1语法格式 1.2升序 1.3降序 1.4根据过滤的条件来降序 1.5指定俩条列来进行排序 二:AND/OR-区间判断 2.1语法格式 2.2显示分数大于 ...
- mysql叠加select,MySQL – 有效地将两个select语句组合成一个...
您可以将多个查询与UNION组合,但前提是查询具有相同的列数.理想情况下,列不仅在数据类型中,而且在于它们的语义含义;但是,MySQL并不关心语义,并且会通过强制转换为更通用的东西来处理不同的数据类型 ...
- MySQL导入selectclass文件_MySQL执行Select语句将结果导出到文件的方法 – 疯狂的蚂蚁...
然而也会遇到的场景是,需要执行一个SQL语句,然后将SQL语句的结果输出到文件: 方法一:使用MySQL的select * into outfile '/tmp/rs.txt' from tb_nam ...
- SQL Server 2000优化SELECT语句方法
本文是SQL Server SQL语句优化系列文章的第一篇.该系列文章描述了在Micosoft's SQLServer2000关系数据库管理系统中优化SELECT语句的基本技巧,我们讨论的技巧可在Mi ...
最新文章
- 目标检测推理部署:优化和部署
- active server pages 错误 asp 0126_微信小程序全栈开发课程【视频版】2.1 小程序前端页面初始配置、ESlint格式错误...
- Setting property 'source' to 'org.eclipse.jst.jee.server:hczm' did not find a matching property
- 阮一峰react demo代码研究的学习笔记 - demo5 debug
- 前端学习(3088):vue+element今日头条管理-关于接口的使用(有声版)
- Java 装箱和拆箱
- spring学习笔记02-spring-bean创建的细节问题
- Python reduce 函数 - Python零基础入门教程
- Java图形界面设计——substance皮肤
- 空心点_空心水泥砖的多种花园用途,总有一款GET你的点!
- 如何在服务器中安装mysql 以及安装禅道
- uniapp 打包成微信小程序
- 管家婆辉煌 经营历程 Date exceeds maximum of 19-12-31 报错解决办法
- Docker容器dockerfile构建镜像
- lda指令是什么意思_lda指令什么意思
- pmv计算c语言软件,晨光暖通计算工具
- ueditor编辑器上传图片的显示问题
- 高二计算机水平测试题,2020——2021学年河南省高二学业水平测试信息技术选择判断模拟题(含答案)...
- CISP证书对个人求职有帮助吗?
- 微机原理——8086系统的概述与引脚介绍
热门文章
- caputo分数阶导数程序_基于Caputo导数的分数阶非线性振动系统响应计算
- Git码云安装与使用
- 大话腾讯App性能测试工具GT
- apache常见错误:VC运行库(找不到 VCRUNTIME140.dll)
- 求N分之一序列前N项和
- 上传excel到服务器端,并写入到mssql数据库
- 海外众筹如何通过邮件营销?
- oppoR17手机计算机的隐藏功能,小技巧隐藏大“智慧”,原来OPPO R17还有这些实用功能...
- Maxthon广告猎手规则,简简单单屏蔽广告
- unix服务器系统安装教程,unix ftp服务器安装教程