linux MySQL高阶语句

linux MySQL高阶语句

  • 1、MySQL高级语言
    • 1.1order by排序
    • 1.2group by分组
    • 1.3limit前几行
    • 1.4as别名
    • 1.5通配符
    • 1.6子查询
    • 1.7in
    • 1.8not in
    • 1.9exists
  • 2、视图
    • 2.1视图概念
    • 2.2功能
    • 2.3应用场景
    • 2.4视图和表的区别和联系
    • 2.5创建视图
  • 3、null值
    • 3.1null值
    • 3.2null值与空值的区别
    • 3.3验证null和空值
  • 4、连接
    • 4.1连接概念
    • 4.2连接分类
    • 4.3主连接
    • 4.4左连接
    • 3.5右连接
  • 5、总结

1、MySQL高级语言

MySQL高级语句可以用在查询复合语句,可以更好的完成需求,主要采用嵌套和通配符方式。

1.1order by排序

ASC 是按照升序进行排序的,是默认的排序方式,即 ASC 可以省略。SELECT 语句中如果没有指定具体的排序方式,则默认按ASC方式进行排序。
DESC 是按降序方式进 行排列。当然 ORDER BY 前面也可以使用 WHERE 子句对查询结果进一步过滤。

原表:
linux MySQL高阶语句_第1张图片

默认顺序排序:默认正序排列

linux MySQL高阶语句_第2张图片

倒叙排列

linux MySQL高阶语句_第3张图片

条件排序

linux MySQL高阶语句_第4张图片

双层排序

linux MySQL高阶语句_第5张图片

条件双层排序

先按照条件找到address为nanjing的,按照id进行正序排列,在按照score正序排列
linux MySQL高阶语句_第6张图片

简单区间判断:and和or(并且和或)

linux MySQL高阶语句_第7张图片
linux MySQL高阶语句_第8张图片

条件嵌套区间

linux MySQL高阶语句_第9张图片

查询不重复记录

distinct查询不重复字段
linux MySQL高阶语句_第10张图片

1.2group by分组

计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN)

count计数

address属性有7各字段
linux MySQL高阶语句_第11张图片

count计数分组

按照hobbid重复的分为一组,每组多少个
linux MySQL高阶语句_第12张图片

条件count计数分组

先筛选出成绩大于50的,在进行分组
linux MySQL高阶语句_第13张图片

count分组排序

先进行分组,在进行排序
linux MySQL高阶语句_第14张图片

1.3limit前几行

limti前3行

linux MySQL高阶语句_第15张图片

显示第三行到第五行

linux MySQL高阶语句_第16张图片

查询排序后的前三行

linux MySQL高阶语句_第17张图片

查询排序后三行

linux MySQL高阶语句_第18张图片

1.4as别名

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

打印属性别名的表

linux MySQL高阶语句_第19张图片

无as别名

linux MySQL高阶语句_第20张图片

as复制表

同样是没有key属性
linux MySQL高阶语句_第21张图片

条件判断复制

linux MySQL高阶语句_第22张图片

1.5通配符

通常通配符都是跟 LIKE 一起使用的,并协同 WHERE 子句共同来完成查询任务。常用的通配符有两个,分别是:
%:百分号表示零个、一个或多个字符 *
_:下划线表示单个字符 .

查询指定开头未知位数

linux MySQL高阶语句_第23张图片

查询指定位数

查询指定位数l开头,后跟三位
linux MySQL高阶语句_第24张图片

查询中间字符

linux MySQL高阶语句_第25张图片

组合使用%_

查询第二位是a的未知位数
linux MySQL高阶语句_第26张图片

1.6子查询

子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语 句。子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一 步的查询过滤。

子查询当hobbid大于2

在这里插入图片描述

子查询score大于50

linux MySQL高阶语句_第27张图片

查询name从student查,id从a表查

linux MySQL高阶语句_第28张图片

先查数据作为表

linux MySQL高阶语句_第29张图片
linux MySQL高阶语句_第30张图片
linux MySQL高阶语句_第31张图片
linux MySQL高阶语句_第32张图片
linux MySQL高阶语句_第33张图片
linux MySQL高阶语句_第34张图片

1.7in

查询成绩大于50的

linux MySQL高阶语句_第35张图片

添加数据

在这里插入图片描述
linux MySQL高阶语句_第36张图片

修改数据

linux MySQL高阶语句_第37张图片

大批量修改数据

在这里插入图片描述
id大于3的全部修改
linux MySQL高阶语句_第38张图片

删除数据

在这里插入图片描述
id大于3的全部删除
linux MySQL高阶语句_第39张图片

1.8not in

查询id不是1的数据

linux MySQL高阶语句_第40张图片

添加数据

在这里插入图片描述
linux MySQL高阶语句_第41张图片

更新数据

将id不为1的成绩改为99

在这里插入图片描述
linux MySQL高阶语句_第42张图片

删除数据

删除除id为1的数据
linux MySQL高阶语句_第43张图片

1.9exists

这个关键字在子查询时,主要用于判断子查询的结果集是否为空。如果不为空, 则返回 TRUE;反之,则返回 FALSE

判断id是否有大于1的,有返回所有数据,统计个数

linux MySQL高阶语句_第44张图片

判断id没有小于1的,返回空表

linux MySQL高阶语句_第45张图片

2、视图

2.1视图概念

数据库中的虚拟表,这张虚拟表中不包含真实数据,只是做了真实数据的映射。
视图可以理解为镜花水月/倒影,动态保存结果集(数据)
视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。
视图是基本表的抽象和在逻辑意义上建立的新关系。

2.2功能

简化查询结果集、灵活查询、可以针对不同用户呈现不同结果集、相对有更高的安全性
本质而言视图是一种select(结果集的呈现)

2.3应用场景

视图适合于多表连接浏览时使用!不适合增、删、改
而存储过程适合于使用较频繁的SQL语句,这样可以提高执行效率!

2.4视图和表的区别和联系

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

2.5创建视图

创建视图

linux MySQL高阶语句_第46张图片

查看表结构

linux MySQL高阶语句_第47张图片

查看表状态

在这里插入图片描述
linux MySQL高阶语句_第48张图片

查询视图

linux MySQL高阶语句_第49张图片

多表创建视图

从多张表提取数据,创建视图
在这里插入图片描述

修改原表数据

视图数据会变
修改原表数据
linux MySQL高阶语句_第50张图片
视图数据也变化
linux MySQL高阶语句_第51张图片

修改视图数据

linux MySQL高阶语句_第52张图片
原表也发生变化
linux MySQL高阶语句_第53张图片

3、null值

3.1null值

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

3.2null值与空值的区别

空值长度为0,不占空间,NULL值的长度为null,占用空间
 is null无法判断空值
 空值使用"=“或者”<>"来处理(!=)
 count()计算时,NULL会忽略,空值会加入计算

3.3验证null和空值

先查看表结构可以为null

linux MySQL高阶语句_第54张图片
可以看到null不被计算
linux MySQL高阶语句_第55张图片

添加空值

linux MySQL高阶语句_第56张图片
会被计算
linux MySQL高阶语句_第57张图片
可以查询到null值数据
linux MySQL高阶语句_第58张图片

查询不为空的数据

linux MySQL高阶语句_第59张图片

4、连接

4.1连接概念

MySQL 的连接查询,通常都是将来自两个或多个表的记录行结合起来,基于这些表之间的 共同字段,进行数据的拼接。首先,要确定一个主表作为结果集,然后将其他表的行有选择 性的连接到选定的主表结果集上。

4.2连接分类

(1)内连接:显示相同内容
(2)左连接:显示左表和相同部分
(3)右连接:显示右表和相同部分

4.3主连接

使用inner join连接,一般在from之后
显示两表name相同部分数据
linux MySQL高阶语句_第60张图片

4.4左连接

左连接也可以被称为左外连接,在 FROM 子句中使用 LEFT JOIN 或者 LEFT OUTER JOIN 关键字来表示。左连接以左侧表为基础表,接收左表的所有行,并用这些行与右侧参 考表中的记录进行匹配,也就是说匹配左表中的所有行以及右表中符合条件的行。
linux MySQL高阶语句_第61张图片
左连接中左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录,右表记录不足的地方均为 NULL。

3.5右连接

右连接也被称为右外连接,在 FROM 子句中使用 RIGHT JOIN 或者 RIGHT OUTER JOIN 关键字来表示。右连接跟左连接正好相反,它是以右表为基础表,用于接收右表中的所有行,并用这些记录与左表中的行进行匹配
linux MySQL高阶语句_第62张图片
只显示右表所有数据和相同数据

5、总结

MySQL数据库高级语句可以完成排序,分组,通配符,子程序,视图。可以更好的完成管理数据库需求。

你可能感兴趣的:(linux,mysql,运维)