一、MySQL高级进阶SQL 语句

1、SELECT

2、DISTINCT

3、WHERE

 4、AND、OR

5、IN

6、BETWEEN

7、通配符、LIKE

8、ORDER BY

9、| | 连接符

  10、GROUP BY

  11、HAVING

二、函数

1、数学函数

  2、聚合函数

3、字符串函数

准备工作

1、安装MySQL数据库

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

 1 mysql -uroot -p
2 show databases;
3
4 create database train_ticket;
5 use train_ticket;
6 create table REGION(region varchar(10),site varchar(20));
7 create table FARE(site varchar(20),money int(10),date varchar(15));
8
9 desc REGION;
10 desc FARE;
11
12 insert into REGION values ('south','changsha');
13 insert into REGION values ('south','nanchang');
14 insert into REGION values ('north','beijing');
15 insert into REGION values ('north','tianjin');
16
17 insert into FARE values ('changsha',1000,'2021-01-30');
18 insert into FARE values ('nanchang',700,'2021-01-30');
19 insert into FARE values ('beijing',1500,'2021-01-30');
20 insert into FARE values ('tianjin',1200,'2021-01-30');
21 insert into FARE values ('beijing',2200,'2021-02-05');
22
23 select * from REGION;
24 select * from FARE;

一、MySQL高级进阶SQL 语句

1、SELECT

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

select distinct 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];

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

9、| | 连接符

  • 如果sql_mode开启开启了PIPES_AS_CONCAT,"||"视为字符串的连接操作符而非或运算符,和字符串的拼接函数Concat相类似,这和Oracle数据库使用方法一样的
mysql -uroot -p
use train_ticket; select region || ' ' || site from REGION where region = 'north';
select site || ' ' || money || ' ' || date from FARE;

10、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;

11、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;

二、函数

1、数学函数

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、聚合函数

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、字符串函数

SELECT TRIM ([ [位置] [要移除的字符串] FROM ] 字符串);
  • #[位置]:的值可以为 LEADING (起头), TRAILING (结尾), BOTH (起头及结尾)。
  • #[要移除的字符串]:从字串的起头、结尾,或起头及结尾移除的字符串。缺省时为空格。
 1 select trim(leading 'na' from 'nanchang');
2 select trim(trailing '--' from 'nanchang--');
3 select trim(both '--' from '--nanchang--');
4
5 select concat(region,site) from REGION where region = 'south';
6 select concat(region,' ',site) from REGION where region = 'south';
7
8 select substr(money,1,2) from FARE;
9
10 select length(site) from FARE;
11
12 select replace(site,'ji','--') from FARE;
13
14 select upper(site) from FARE;
15
16 select lower('HAHAHA');
17
18 select left(site,2) from FARE;
19
20 select right(site,3) from FARE;
21
22 select repeat(site,2) from FARE;
23
24 select space(2);
25
26 select strcmp(100,200);
27
28 select reverse(site) from FARE;

  

  

  

  

  

  

  

  

  

  

  

  

MySQL高级语句(一)的更多相关文章

  1. MySQL高级语句(二)

    目录: 1.别名 2.子查询 3.EXISTS 4.连接查询 5.CREATE VIEW 视图 6.UNION 联集 7.交集值 8.无交集值 9.CASE 10.算排名 11.算中位数 12.算累积 ...

  2. MySQL高级(进阶)SQL语句

    MySQL高级(进阶)SQL语句 目录 MySQL高级(进阶)SQL语句 一.实例准备--制表 1. 表1(商店区域表) 2. 表2(商店销售表) 3. 表3(城市表) 4. 表4(total_sal ...

  3. 29.MySQL高级SQL语句

    MySQL高级SQL语句 目录 MySQL高级SQL语句 创建两个表 SELECT DISTINCT WHERE AND OR IN BETWEEN 通配符 LIKE ORDER BY 函数 数学函数 ...

  4. MySQL高级特性

    MySQL管理 用户管理 CREATE USER username IDENTIFIED BY 'password'; 新建用户 CREATE USER@'%' IDENTIFIED BY 'pass ...

  5. mysql笔记04 MySQL高级特性

    MySQL高级特性 1. 分区表:分区表是一种粗粒度的.简易的索引策略,适用于大数据量的过滤场景.最适合的场景是,在没有合适的索引时,对几个分区进行全表扫描,或者是只有一个分区和索引是热点,而且这个分 ...

  6. Mysql高级之触发器

    原文:Mysql高级之触发器 触发器是一类特殊的事务 ,可以监视某种数据操作(insert/update/delete),并触发相关操作(insert/update/delete). 看以下事件: 完 ...

  7. Mysql高级之事务

    原文:Mysql高级之事务 通俗的说事务: 指一组操作,要么都成功执行,要么都不执行.---->原子性 在所有的操作没有执行完毕之前,其他会话不能够看到中间改变的过程-->隔离性 事务发生 ...

  8. Mysql高级之游标

    原文:Mysql高级之游标 什么是游标?select 语句也许一次性会取出来n条语句,那么游标便可以一次取出来select中的一条记录.每取出来一条,便向下移动一次!可以实现很复杂逻辑! 上面还有有一 ...

  9. Mysql高级之主从复制

    原文:Mysql高级之主从复制 主从复制不就是多台服务器嘛!,一个改变另一个也改变啦,内容其实都一样! 原理: 对数据库进行操作会生成一个文件,binlog(二进制文件),从服务器配置relaylog ...

随机推荐

  1. 在CentOS7下的OpenStack中配置使用Spice协议

    在CentOS7下的OpenStack中配置使用Spice协议 by 无若   1. 需要的包 在计算节点上 #yum install spice-html5   注意:使用yum安装spice-ht ...

  2. ReentrantLock 中的 4 个坑!

    JDK 1.5 之前 synchronized 的性能是比较低的,但在 JDK 1.5 中,官方推出一个重量级功能 Lock,一举改变了 Java 中锁的格局.JDK 1.5 之前当我们谈到锁时,只能 ...

  3. javaScript学习DOM模型

    DOM 全称是 Document Object Model 文档对象模型大白话,就是把文档中的标签,属性,文本,转换成为对象来管理                                   ...

  4. 给 Arm 生态添把火,腾讯 Kona JDK Arm 架构优化实践

    前言 Arm 架构以其兼具性能与功耗的特点,在智能终端以及嵌入式领域得到了广泛的使用,不断扩大其影响力.而在 PC 端以及数据中心,之前往往是 x86 架构在其中发挥着主要的作用.最近,随着人工智能. ...

  5. Mysql聚合函数count(1) sum(1)结果返回0和NULL

    1.count(1) 返回为0 如果所查询的表或者where条件筛选后得到的结果集为空,则 count(1)返回为 0 如: select count(id) from test; select co ...

  6. JunAMS v1.2.1.20190403代码审计笔记

    前言 CNVD-2020-24741 过程 JunAMS是以ThinkPHP为框架的开源内容管理系统,本地搭建受影响版本JunAMS v1.2.1.20190403 前台没有上传功能,进入后台.发现在 ...

  7. java导出excel(easypoi)

    介绍 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 ...

  8. 从一个URL加载一个Document

    存在问题 你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据.你可以使用下面解决方法: 解决方法 使用 Jsoup.connect(String url)方法: Document doc ...

  9. C# 计算文件的MD5

    MD5的作用详见:https://baike.baidu.com/item/MD5/212708?fr=aladdin public static string GetFileMD5(string f ...

  10. redis并发锁

    1.应对并发场景 避免操作数据不一致 将对redis加锁 2.考虑到异常状况无法释放锁,导致死锁 将代码块进行try-catch处理 3.考虑try时宕机依然导致死锁 对锁添加时效性,添加过期时间 4 ...