当前位置:网站首页>MySQL数据库讲解(七)

MySQL数据库讲解(七)

2022-04-23 14:07:00 C和弦~

目录

引言:

一.常用查询

1.1 按单字段排序

1.2 条件查询

 1.3  多字段排序

 四. 区间判断

 嵌套/多条件

五.查询不重复记录

六..对结果进行分组

七.  限制结果条目

 八. 设置别名

 九.连接语句

十.通配符

十一.子查询

定义:

子查询:

子查询(exists)

十二.视图

十三.null值


引言:

在生产环境中使用的很多的语句并不是基础语句,而是高级语句、例如筛选查询、多表查询等。因此MySQL的高级语句是非常重要的。

一.常用查询

1.1 按单字段排序

select 字段1,字段2,字段3 from 表明 order by 字段 ;
asc表示升序(默认)
desc表示降序

 

1.2 条件查询

select 字段1,字段2,字段3 from 表名 where 筛选条件;

 

 1.3  多字段排序

select 字段1,字段2,字段3 from 表明 order by 字段,字段 ;
 order by 之后的第一个参数只有在出现相同的数值,第二个字段才有意义

 四. 区间判断

AND/OR ——且/或

 

 嵌套/多条件

五.查询不重复记录

select distinct 字段 from 表名﹔

1.distinct必须放在最开头
2.distinct只能使用需要去重的字段进行操作。
3.distinct去重多个字段时,含义是:几个字段同时重复时才会被过滤。

六..对结果进行分组

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




group by 通常都是结合聚合函数一起使用的,常用的聚合函数包括:计数(count)、求和(sum)、求平均数(avg)、最大值(max)、最小值(min),group by 分组的时候可以按一个或者多个字段对结果进行分组处理

七.  限制结果条目

select 字段 from 表名 limit [offset,] number


 limit 的第一个参数是位置偏移量(可选参数),是设置 mysql 从哪一行开始
 如果不设定第一个参数,将会从表中的第一条记录开始显示。
 第一条偏移量是0,第二条为1
 offset 为索引下标
 number 为索引下标后的几位

 八. 设置别名

列的别名
select 字段 as 字段别名 表名

表的别名
select 字段 from 表名 as 别名 

as 可以省略


在 mysql 查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者多次使用相同的表,可以给字段列或表设置别名
 方便操作,增强可读性

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

 

 九.连接语句

AS可作为连接语句用
例如: create table info as select * from info1; 

这里的AS起到的作用:
1、创建一个新表lucien,定义表结构,插入表数据(与working表相同)
2、但是“约束"没有被“复制”过来,但是如果原表设置了主键,那么附表的: default字段会默认设置一个0

十.通配符

通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来
 通常通配符都是和 like(模糊查询)一起使用的,并协同 where子句共同来完成查询任务
 常用的通配符有两个
%:百分号表示任意个数的任意字符
_:下划线表示单个字符

十一.子查询

定义:

  • 子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语句
  •  子查询语句是先于主查询语句被执行的,七结果作为外层的条件返回给主查询进行下一步的查询过滤
  •  子语句可以与主语句所查询的表相同,也可以不同
示例:
select id,name from info where hobby in (select hobby from info1 where hobby>3);

in 是将主查询和子查询关联起来的语法

子查询:

例:
select name,hobby from ljm
以上命令可以查询一张表的name和hobby信息

将结果作为“表”进行查询的时候,我们也需要用到别名
比如我们输入:select hobby from (select name,hobby from info);
会报错,因为 select name,hobby from info 得到的是一个结果集,而不是表,mysql 是不能识别的
所以我们需要对结果集设置一个别名,这样mysql就能将结果集视为一张表。

子查询(exists)

select count(*) as num from info where exists(select id from info where id>3);

as num 将 count 统计的结果作为 num 返回
exists 布尔值判断,where之后的语句成立,布尔值则为0,则进行前面的操作,否则返回值为0
当使用 sum求和结合exists ,如果查询结果不成立,返回值为null

十二.视图

  • 视图是从一个或多个表中导出来的表,是一种虚拟存在的表
  • 数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中
  • 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据
  • 视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变
  • 数据库中的虚拟表,这张虚拟表中不包含真实数据,只是做了映射
  • 镜花水月/倒影,动态保存结果集(数据)

作用:

  • 1.使操作简单化,可以对经常使用的查询定义一个视图,使用户不必为同样的查询操作指定条件
  • 2.增加数据的安全性,通过视图,用户只能查询和修改指定的数据
  • 3.提高表的逻辑独立性,视图可以屏蔽原有表结构变化带来的影响
     

总结:

  • 使用视图的大部分情况时为了保障数据安全性,提高查询效率
  • 根据筛选条件创建了一张虚拟表,当修改表中数据时,原表中的数据不再满足筛选条件时,视图中的表将不会再显示此数据


十三.null值

null值与空值的区别(空气与真空)

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

版权声明
本文为[C和弦~]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Ab960311/article/details/120995110