MySQL高阶语句(一)

本文详细介绍了MySQL数据库查询的高级技巧,包括按关键字排序、使用ORDER BY进行多字段排序、通过LIMIT限制查询结果条目、设置别名简化查询语句、运用GROUP BY进行数据分组、使用子查询进行复杂查询以及视图的创建与应用。此外,还探讨了NULL值的处理。这些技巧有助于提升数据库查询的效率和灵活性。
摘要由CSDN通过智能技术生成

目录

前言

一、常用查询方式

1.按关键字排序

2.对结果进行分组

3.限制结果条目

4.设置别名(alias —>as) 

5.通配符

6.子查询

7.视图 

8.NULL 值 

总结


前言

对MySQL数据库的查询,需要用到多表查询和SQL语句的查询,下面就介绍一些基本的操作方式。

一、常用查询方式

对MySQL数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。例如只取 10 条数据,对查询结果进行排序或分组等等。

1.按关键字排序

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

格式:SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... 

单字段排序

定义按分数排序,默认不指定是升序排列 asc。

定义分数按降序排列,使用DESC。

条件查询

ORDER BY还可以结合where进行条件过滤。

多字段查询

order by之后的参数,使用","分割,可以使用优先级是按先后顺序而定。

区间判断及查询不重复记录(AND/OR ——且/或)

嵌套/多条件

distinct查询不重复记录

1.distinct必须放在最开头
2.distinct只能使用需要去重的字段进行操作。
----也就是说我dtinct了name , hobby两个字段,我后面想根据id进行排序,是不可以的,因为只能name,age两个字段进行操作.
3.distinct去重多个字段时,含义是:几个字段同时重复时才会被过滤。

格式:select distinct 字段 from 表名;

2.对结果进行分组

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

格式:SELECT 字段(count_名字), 字段 FROM 表名 WHERE 字段 GROUP BY 字段;

分组排序

分组条件

3.限制结果条目

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

格式:SELECT column1, column2, ... FROM table_name LIMIT [offset,] number;

4.设置别名(alias —>as) 

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

对于列的别名:SELECT column_name AS alias_name FROM table_name;
对于表的别名:SELECT column_name(s) FROM table_name AS alias_name;

AS 还可以作为连接语句的操作符。创建t1表,将info表的查询记录全部插入t1表。

也可以加入where 语句判断筛选出来到新的表格里

5.通配符

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

6.子查询

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

主语句:select name,score from info where id
子语句(集合): select id from info where score >80 

子查询还可以用在 INSERT 语句中。子查询的结果集可以通过 INSERT 语句插入到其他的表中。

子查询-exists

EXISTS 这个关键字在子查询时,主要用于判断exists之后的条件是否成立,如果成立,则正常执行主语句的匹配,如不成立,则不会执行主语句查询。
如子查询结果集不成立的话,输出为null

加exists:只是为了判断exists之后的条件是否成立,如果成立,则正常执行主语句的匹配,如不成立,则不会执行主语句查询。
PS: count为计数,sum为求和,使用sum求和结合exists,如子查询结果集不成立的话,输出为null。

7.视图 

视图是从一个或多个表中导出来的表,是一种虚拟存在的表。

视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据。

这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据。

数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中。

使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。

视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变。

视图的作用 

1.使操作简单化,可以对经常使用的查询定义一个视图,使用户不必为同样的查询操作指定条件

2.增加数据的安全性,通过视图,用户只能查询和修改指定的数据。

3.提高表的逻辑独立性,视图可以屏蔽原有表结构变化带来的影响。

8.NULL 值 

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

总结

关键字的排序有单字段、多字段排序、以及用where设置条件的排序。

去重复字段,distinct必须放在最开头、几个字段同时重复时才会被过滤。

对结果进行分组有分组排序和分组条件。

%:百分号表示零个、一个或多个字符,_:下划线表示单个字符。

EXISTS 这个关键字在子查询时,主要用于判断exists之后的条件是否成立,如果成立,则正常执行主语句的匹配,如不成立,则不会执行主语句查询。

使用视图的大部分情况是为了保障数据安全性,提高查询效率。

NULL不会统计到计算中,空值会。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值