MySQL高阶语句
Posted 还行少年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL高阶语句相关的知识,希望对你有一定的参考价值。
一、常用查询
1.按关键字排序
1.1 语法
SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ...
1.2 示例
1.2.1 将下列表按hobbid升序/降序排列
1.2.2 对nanjing的学生进行成绩降序排列
1.2.3 查询学生信息先按hobbid降序排列,相同兴趣的,id也按降序排列
1.2.4 查询学生信息先按hobbid降序排列,相同兴趣的,id也按升序排列
2.区间判断及查询不重复记录
2.1 找出成绩70-90之间的学生
2.2 找出成绩高于90或低于70的学生并降序排列
2.3 查询不重复记录
3.对结果进行分组
3.1 语法
SELECT column_name, aggregate_function(column_name)FROM table_name WHERE column_name operator valueGROUP BY column_name;
3.2 按hobbid相同的分组,计算相同分数的学生个数(基于name个数进行计数)
3.3 结合where语句,筛选分数大于等于80的分组,计算学生个数
3.4 结合order by把计算出的学生个数按升序排列
4.限制结果条目
在使用 mysql SELECT 语句进行查询时,结果集返回的是所有匹配的记录(行)。有时候仅 需要返回第一行或者前几行,
这时候就需要用到 LIMIT 子句
4.1 语法
SELECT column1, column2, ... FROM table_name LIMIT [offset,] number
4.2 查询前4行记录
4.3 从第4行开始,往后显示3行内容
4.4 按id的大小升序排列显示前三行
4.5 输出最后三行
5.设置别名
在 MySQL 查询时,当表的名字比较长或者表内某些字段比较长时,为了方便书写或者 多次使用相同的表,可以给字段列或表设置别名。
使用的时候直接使用别名,简洁明了,增强可读性
5.1 语法
对于列的别名:SELECT column_name AS alias_name FROM table_name;
对于表的别名:SELECT column_name(s) FROM table_name AS alias_name;
5.2 查询info表的字段数量,以number显示
5.3 创建t1表,将info表的查询记录全部插入t1表
6.通配符
通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来。
通常通配符都是跟 LIKE 一起使用的,并协同 WHERE 子句共同来完成查询任务。常用的通配符有两个,分别是:
%:百分号表示零个、一个或多个字符
_:下划线表示单个字符
6.1 查询名字是l开头的记录
6.2 查询l和i之间有两个字符的记录
6.3 查询名字中间有g的记录
6.4 查询名字带i且后最少有三个字符的
7.子查询
子查询也被称作内查询或者嵌套查询,是指在一个查询语句里面还嵌套着另一个查询语 句。
子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一 步的查询过滤。
子语句可以与主语句所查询的表相同,也可以是不同表
7.1 查询和id在test2范围中的info的信息且按id升序排列
7.2 查询分数大于80的记录
7.3 将id为2的成绩改为50
7.4 将其他成绩改为100
8.视图
数据库中的虚拟表,这张虚拟表中不包含真实数据,只是做了真实数据的映射
简化查询结果集、灵活查询、可以针对不同用户呈现不同结果集、相对有更高的安全性
本质而言视图是一种select(结果集的呈现)
8.1 与表的区别
-
视图是已经编译好的sql语句。而表不是
-
视图没有实际的物理记录。而表有。
-
表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改
-
视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
-
表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
-
视图的建立和删除只影响视图本身,不影响对应的基本表。(但是更新视图数据,是会影响到基本表的)
8.2 创建视图
8.3 修改视图数据
8.4 修改表数据
8.5 多表创建视图
9.NULL
9.1 NULL和空值的区别
NULL就是在字段中存储NULL值,空值就是字段中存储空字符(’’)
从上面看出空值(’’)的长度是0,是不占用空间的;而NULL长度是NULL,其实它是占用空间的
使用 COUNT(字段) 统计会过滤掉 NULL 值,但是不会过滤掉空值。
NULL值查询使用is null/is not null查询,而空值(’’)可以使用=或者!=算术运算符查询
9.2 统计数量
9.3 对NULL查询
9.4 查询空值
以上是关于MySQL高阶语句的主要内容,如果未能解决你的问题,请参考以下文章