目录

前期准备

一. 常用查询

1. 单字段进行排序

1.1 升序,降序

1.2 结合条件排序

2. 多字段进行排序

2.1 相同数值,id降序排列

2.2 相同数值,id升序排列

3. 区间判断

3.1 and/or  且与或的使用

3.2 嵌套/多条件

4. 查询不重复记录 distinct

4.1 查询hobbies有几种类型

二. 对结果进行分组

1. 案例1

2. 案例2

3. 案例3

三. 限制结果条目 limit

1. 显示指定行的内容

2. 结合order by语句,显示指定行的内容

3.  基础select,输出id,name的最后三行

四. 设置别名

1. 使用场景

2. 查询info表的字段数量,以number显示

3. 创建test1表,将test表的查询记录全部插入test1表

五. 通配符

1. %g查询以g结尾,g%查询以g开头

2. %u%查询字段中包含某个字段

3. 使用 _ 匹配字段中的一个字符

4. 使用 % 与 _ 组合使用查询

六. 子查询

1. select

1.1 相同表查询

1.2 多表查询

1.3 NOT 取反,将子查询的结果,进行取反操作

2. insert

3. update

4. delete

5. exists

6. as别名

七. MySql视图

1. 视图与表的区别

2. 视图与表之间联系

3. 示例

3.1 创建视图表

3.2 查看视图与源表结构

3.3 修改视图表数据

3.4 更改源表数据

八. NULL值

1. NULL值与空值区别


前期准备

一. 常用查询

使用 select 语句可以将需要的数据从 MySQL 数据库中查询出来,如果对查询的结果进行排序,可以使用 order by 语句来对语句实现排序,并最终将排序后的结果返回给用户。这个语句的排序不光可以针对某一个字段,也可以针对多个字段

格式

select 字段1,字段2,... from 表名 order by 字段1,字段2,... asc/desc
  • asc 是按照升序进行排序的,是默认的排序方式,即 ASC 可以省略。select 语句中如果没有指定具体的排序方式,则默认按 ASC方式进行排序
  • desc 是按降序方式进 行排列。当然 order by 前面也可以使用 where 子句对查询结果进一步过滤

1. 单字段进行排序

1.1 升序,降序

#按分数排序,不指定默认是升序排列
select id,name,score from test order by score(asc可加可不加);
#按分数排序,指定besc是降序排列
select id,name,score from test order bye score desc;

1.2 结合条件排序

#order by还可以结合where进行条件过滤,筛选address是nanj的学生按分数降序排列
select id,name,address,score from test where address='nanj' order by score desc;

2. 多字段进行排序

order by 语句也可以使用多个字段来进行排序,当排序的第一个字段相同的记录有多条的情况下,这些多条的记录再按照第二个字段进行排序,order 后面跟多个字段时,字段之间使用英文逗号隔开,优先级是按先后顺序而定,但 order by 之后的第一个参数只有在出现相同值时,第二个字段才有意义

2.1 相同数值,id降序排列

#查询学生信息先按兴趣id降序排列,相同分数的,id也按降序排列
select id,name,hobbid from test order by hobbid desc,id desc;

2.2 相同数值,id升序排列

#查询学生信息先按兴趣id降序排列,相同分数的,id按升序排列
select id name hobbies from test order by hobbies desc,id;

3. 区间判断

3.1 and/or  且与或的使用

select * from test where score >60 and score <=90;select * from test where score >60 or score <=90;

3.2 嵌套/多条件

select * from test where score <60 or (score >65 and score <90);

4. 查询不重复记录 distinct

格式

select distinct 字段 from 表名;

4.1 查询hobbies有几种类型

select distinct hobbies from test;

二. 对结果进行分组

通过 SQL 查询出来的结果,还可以对其进行分组,使用 group by 语句来实现 ,group by 通常都是结合聚合函数一起使用的,常用的聚合函数包括:计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),group by 分组的时候可以按一个或多个字段对结果进行分组处理

格式

select 字段,聚合函数 from 表名 (where 字段名(匹配) 数值) group by 字段名;

1. 案例1

#按hobbid相同的分组,计算相同分数的学生个数(基于name个数进行计数)
select count(name),hobbies from test group by hobbies;

2. 案例2

#结合where语句,筛选分数大于等于80的分组,计算学生个数
select count(name),hobbies from test where score <80 group by hobbies;

3. 案例3

#结合order by把计算出的学生个数按降序排列
select count(name),score,hobbies from test where score >=70 group by hobbies by count(name)desc;

三. 限制结果条目 limit

limit 限制输出的结果记录

  • 在使用 MySQL SELECT 语句进行查询时,结果集返回的是所有匹配的记录(行)
  • 有时候仅 需要返回第一行或者前几行,这时候就需要用到 LIMIT 子句

LIMIT 的第一个参数是位置偏移量(可选参数),是设置 MySQL 从哪一行开始显示。 如果不设定第一个参数,将会从表中的第一条记录开始显示。需要注意的是,第一条记录的 位置偏移量是 0,第二条是 1,以此类推。第二个参数是设置返回记录行的最大数目

格式

select 字段1,字段2,... from 表名 limit 举例:3,3;

1. 显示指定行的内容

#查询所有信息显示前4行内容
select * from test limit 3;
#从第4行开始,往后显示3行内容
select * from test limit 3,3;

2. 结合order by语句,显示指定行的内容

#结合order by语句,按id的大小升序排列显示前三行
select id,name,score from test order by id limit 3;

3.  基础select,输出id,name的最后三行

#基础select,输出id,name的最后三行
select id,name from test order by id desc limit 3;

四. 设置别名

在 MySQL 查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者 多次使用相同的表,可以给字段列或表设置别名。使用的时候直接使用别名,简洁明了,增强可读性

1. 使用场景

  • 对复杂的表进行查询的时候,别名可以缩短查询语句的长度
  • 多表相连查询的时候(通俗易懂、减短sql语句)

格式

列的别名 select 字段 as 字段别名 表名表的别名 select 别名.字段 from 表名 as 别名as 可以省略

2. 查询info表的字段数量,以number显示

#查询info表的字段数量,以number显示
select count(*)as number from test;

3. 创建test1表,将test表的查询记录全部插入test1表

#创建test1表,将test表的查询记录全部插入test1表
create table test1 as select * from test;

此处as起到的作用:

  • 创建了一个新表test1 并定义表结构,插入表数据(与test表相同)
  • 但是”约束“没有被完全”复制“过来 #但是如果原表设置了主键,那么附表的:default字段会默认设置一个0

在为表设置别名时,要保证别名不能与数据库中的其他表的名称冲突
列的别名是在结果中有显示的,而表的别名在结果中没有显示,只在执行查询时使用

五. 通配符

  • 通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来
  • 通常通配符都是跟like一起使用,并协同where子句共同来完成查询任务

常用的通配符有两种:

  • % 代表零个或多个字符
  • _ 代表带个字符

1. %g查询以g结尾,g%查询以g开头

2. %u%查询字段中包含某个字段

3. 使用 _ 匹配字段中的一个字符

4. 使用 % 与 _ 组合使用查询

六. 子查询

  • 子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语句
  • 子查询语句是先于主查询进行下一步的查询过滤
  • 在子查询中可以与主语句查询相同的表,也可以是不同的表

1. select

格式

select 字段1,字段2 from 表名1 where 字段 in (select 字段 from 表名 where 条件);

1.1 相同表查询

1.2 多表查询

1.3 NOT 取反,将子查询的结果,进行取反操作

未完待续

2. insert

子查询还可以用在insert语句中,子查询的结果集可以通过insert语句插入到其它表中

3. update

update语句也可以使用子查询,update内的子查询,在set更新内容时,可以是单独的一列,也可以是多列

4. delete

5. exists

  • exists这个关键字在子查询时,主要用于判断子查询的结果集是否为空,如果不为空,则返回true,反之则返回false
  • 在使用exists时,当子查询有结果时,不关心子查询的内容,执行主查询操作;当子查询没有结果时,则不执行主查询操作

6. as别名

将结果集作为一张表进行查询的时候,需要用到别名

七. MySql视图

1. 视图与表的区别

  • 视图是已经编译好的sql语句。而表不是
  • 视图没有实际的物理记录。而表有
  • 表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改
  • 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构
  • 表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表
  • 视图的建立和删除只影响视图本身,不影响对应的基本表。(但是更新视图数据,是会影响到基本表的)

2. 视图与表之间联系

视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系

3. 示例

3.1 创建视图表

3.2 查看视图与源表结构

3.3 修改视图表数据

3.4 更改源表数据

八. NULL值

在 SQL 语句使用过程中,经常会碰到 NULL 这几个字符。通常使用 NULL 来表示缺失的值,也就是在表中该字段是没有值的。如果在创建表时,限制某些字段不为空,则可以使用 NOT NULL 关键字,不使用则默认可以为空。在向表内插入记录或者更新记录时,如果该字段没有 NOT NULL 并且没有值,这时候新记录的该字段将被保存为 NULL。需要注意 的是,NULL 值与数字 0 或者空白(spaces)的字段是不同的,值为 NULL 的字段是没有 值的。在 SQL 语句中,使用 IS NULL 可以判断表内的某个字段是不是 NULL 值,相反的用 IS NOT NULL 可以判断不是NULL值

1. NULL值与空值区别

MySQL 高阶语句相关推荐

  1. MySQL——高阶语句、存储过程(下)

    MySQL--高阶语句(下) 一.数据库函数 1.数学函数 2.聚合函数 3.字符串函数 4.日期时间函数 二.存储过程 1.概述 2.简介 3.优点 4.创建存储过程 调用存储过程 带参数的存储过程 ...

  2. MySQL——高阶语句(中)

    MySQL--高阶语句(中) 一.正则表达式 二.运算符 三.比较运算符 四.逻辑运算符 五.位运算符 六.连接查询 1.内连接 2.左连接 3.右连接 一.正则表达式 MySQL 正则表达式通常是在 ...

  3. MySQL——高阶语句(上)

    MySQL高阶语句(上) 一.MySQL高级语句 1.ORDER BY----按关键字排序 单字段排序 多字段排序 2.OR/AND----或/且 3.DISTINCT----查询不重复记录 4.GR ...

  4. Mysql数据库(九)——mysql高阶语句(下)

    Mysql数据库(九)--mysql高阶语句(下) 一.函数 1.数学函数 2.聚合函数 3.字符串函数 4.日期时间函数 二.存储过程 1.简介 2.优点 3.语法 ①.例 ②.参数分类 ③.带参数 ...

  5. Mysql数据库(八)——mysql高阶语句(中)

    Mysql数据库(八)--mysql高阶语句(中) 一.正则表达式(同shell脚本的正则表达式) 1.以"."代替任意一个字符 2.匹配前面字符多次 3.匹配前面字符至少一次 4 ...

  6. Mysql数据库(七)——mysql高阶语句(上)

    Mysql数据库(七)--mysql高阶语句(上) 一.按关键字排序 1.单字段排序 2.多字段排序 二.或/且的运用 三.查询不重复记录 四.对结果进行分组 五.限制结果条目 六.设置别名 使用场景 ...

  7. mysql高阶语句一

    高阶语句一 1.按关键字排序 (1)按一个字段排序: (2)多字段排序 2.区间判断及查询不重复记录 2.1 AND/OR --且/或 2.2.对结果进行分组统计 3.限制结果条目 4.设置别名(al ...

  8. MYSQL sql 高阶语句 (sequel)

    sql 高阶语句 一.空值(NULL) 和 无值('') 的区别 · 无值的长度为 0,不占用空间的:而 NULL 值的长度是 NULL,是占用空间的. · S NULL 或者 IS NOT NULL ...

  9. 学习笔记:MySQL高阶知识体系(下)——索引、锁、日志、隔离级别与MVCC

    转载自https://www.ydlclass.com/doc21xnv/database/mysqladvance/mysqlAdvance2.html MySQL高阶知识体系(下) 6. 索引 6 ...

  10. Hive建表高阶语句、Hive视图

    Hive建表高阶语句.Hive视图 Hive建表高阶语句 - CTAS and WITH 创建临时表 Hive视图(Views) 视图概述 应用场景 Hive视图操作 Hive侧视图(Lateral ...

最新文章

  1. 华硕飞行堡垒开启虚拟化
  2. mysqlsql varchar类型只取前四个_Apache Doris0.12.0 发布,进入 Apache 孵化器后第四个正式版本...
  3. 秘鲁国家馆中国电商平台 美食周对话国际农民丰收节贸易会
  4. 06_NoSQL数据库之Redis数据库:Redis的高级应用之登录授权和主从复制
  5. 控件与应用程序许可授权的100%托管的先进控件IntelliLock
  6. 姜黄的毒副作用调研汇总(调研手稿二)
  7. Windows:chm 文件打开出现“已取消到该网页的导航”的解决方案
  8. videojs插件的参数解释
  9. android 6.0电池优化,Android 优化——电量优化
  10. java 动态增加线程,java - 在Java中动态停止线程 - SO中文参考 - www.soinside.com
  11. mysql数据绑定listview_将数据库数据用代码绑定到Listview
  12. android学习笔记---60_meta-data的使用,在清单文件中是用meta-data来给activity,service,receiver提供参数
  13. html 多页面合并,让多个HTML页面 使用 同一段HTML代码
  14. QFileInfoList
  15. WiMAX版图不止3G
  16. HDU 1561 The more, The Better (树形dp)
  17. PHP中COOKIE即时生效,php实现cookie即时生效
  18. 邮件的常规备份与恢复存储组备份
  19. 数据清洗与数据预处理浅析
  20. 【sciter】:鼠标移动到字体图标时不变色

热门文章

  1. Idea Java代码生成器使用及模板自定义
  2. 微信小程序Axure元件库(2021最新版)
  3. 蓝牙鼠标windows linux,在Deepin和Windows 10双系统中蓝牙4.0鼠标共享使用的方法
  4. Linkedin领英如何避免封号
  5. 常见的下载工具有哪些?BT下载软件哪个好
  6. component组件基础
  7. pycharm2020版本以上中文版教程
  8. 基于SSM 技术的服装店管理系统
  9. 任务管理与项目管理:哪一个最适合你的团队?
  10. 周志华《机器学习》-所有公式推导集合