一、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. python ui自动化之多窗口切换

    wd.current_window_handle #获取当前窗口句柄 wd.window_handles #获取所有窗口句柄 wd.switch_to.window(wd.window_handles ...

  2. 易语言效率与C++究竟差多少(质数和计算)

    文本首发bIlibili,cnblogs为作者补发,如在其他平台看见本文,均为经允许的盗窃 易语言作为款主打 中文 易用 编程的开发软件.但是很多人都在批评易语言的效率. 我们今天通过 质数和计算 来 ...

  3. .Net Core如何优雅的实现中间件

    在.Net Core的源码中,很多地方都有中间件的地方,Kestrel Server和Asp.net Core 等都用了中间件的设计,比如在Kestrel Server中,Http协议的1.0, 1. ...

  4. GitHub不再支持密码验证解决方案:SSH免密与Token登录配置

    今天提交代码,push到GitHub上,突然出现这个问题. remote: Support for password authentication was removed on August 13, ...

  5. Linux 中的虚拟网络接口

    独立博客地址:https://ryan4yin.space/posts/linux-virtual-network-interfaces/ 本文用到的字符画工具:vscode-asciiflow2 L ...

  6. 1051 Pop Sequence (25分)栈

    刷题 题意:栈的容量是5,从1~7这7个数字,写5个测试数据 做法:模拟栈 #include<bits/stdc++.h> using namespace std; const int m ...

  7. 浅谈 SQL 注入(注入篇)

    一.SQL注入简介 1.1 什么是SQL注入 在用户可控制的参数上过滤不严或没有任何限制,使得用户将传入的参数(如URL,表单,http header)与SQL语句合并构成一条 SQL语句传递给web ...

  8. NOIP 模拟 $25\; \rm string$

    题解 \(by\;zj\varphi\) 考虑对于母串的每个字符,它在匹配串中有多少前缀,多少后缀. 设 \(f_i\) 表示 \(i\) 位置匹配上的前缀,\(g_i\) 为后缀,那么答案为 \(\ ...

  9. 算法入门 - 基于动态数组的栈和队列(Java版本)

    之前我们学习了动态数组的实现,接下来我们用它来实现两种数据结构--栈和队列.首先,我们先来看一下栈. 什么是栈? 栈是计算机的一种数据结构,它可以临时存储数据.那么它跟数组有何区别呢? 我们知道,在数 ...

  10. 十七:使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...