MySQL_DQL操作
Posted 宋泊然
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL_DQL操作相关的知识,希望对你有一定的参考价值。
DQL(Data Query Language)简单的来说就是数据的查询语言。
1.最简单的查询(显示表中的所有信息)
语法: select * from 表名;
2.普通查询
语法: select 字段列表 from 表名列表 where 条件列表;
注意:这些列表是可以有多个的意思,用逗号隔开,最后一项不加逗号。
这是表的最初始状态
如果想查询11岁的男生,则输入 SELECT age FROM tb1 WHERE sex=\'男\';
创建一个新表
3.基础查询
语法 select 列名1,列名2 from 表名;
注意:查询所有的用*(不推荐),或者在select后面写下全部列名;
再次查询地址
发现有一点问题,如果只显示地址,那么重复的地址被多次显示出来,那么就可以用去重查询。
4.去重查询
语法: select distinct 列名 from 表名;
发现重复的地址全部只留下来了一个;
注意:在向表中插入数据的时候可能会遇到空字符,这样就会导致多个相同的地址存在,这是检查一下自己的代码。
5.利用表中的数据进行计算查询
如果想知道上表的数学英语成绩的和
语法: select 列名1,列名2,列名3 【想要利用列名计算的表达式(支持普通的四则运算)】 from 表名;
发现可以算出来成绩的和,但是列名不合适,并且当英语为NULL的时候,总分也是NULL,本应该是,数学成绩,下面这两个问题一一解决,
(1)算出数据改名
语法:select select 列名1,列名2,列名3 【想要利用列名计算的表达式(支持普通的四则运算)】 as 新表名 from 表名;
注意:as可有可无;
(2)关于NULL的问题
分析,正常情况下,如果英语旷考,那么成绩应该为0
语法:select select 列名1,列名2,列名3 【想要利用列名计算的表达式(支持普通的四则运算)】 as 新表名 from 表名;只需要在表达式里加上ifnull方法;
注意:ifnull方法有两个参数前面是可能会出现NULL值得列名,后面是如果遇到NULL则把他的值改为什么,例如下面例子 SELECT NAME,math,english, math+IFNULL(english,0) AS 总分 FROM tb2;
发现完美的解决了上面的两个问题。
6.条件查询,其中关键字分别由<,>,<=,>=,=,<>,between and,in,like,is NULL,&&(and),||(or),!。
(1)想要查询年龄等于23的人
语法:SELECT * FROM 数据库 WHERE 条件;
注意:在java中如果用iF判断相等需要用==,而在sql中只需要一个=;
(2)想要查询年龄不为23 的人SELECT * FROM tb2 WHERE age !=23;
可见没有年龄等于23的人,还有一种方法,用到mysql专有的不等号<>;
可见结果一模一样
(3)查询一个范围内的人
当然可以用and这两个是一个意思,还可以用另一种方法,那就是between and
注意:两个边界都包含及大于等于和小于等于
结果一模一样。
(4)想查询年龄为23,48,45的,人都比较懒,不想写三行,于是还有一种简便方法。那就是in();
(5)想要查询英语旷考的人,正常的想法就是判断english=null;那么对不对呢?
发现查询不到,也就是不能用等号判断是否为NULL,那就要用is;
发现查到了英语缺考的人。
(6)想要模糊查询;
语法like 条件用\'\'括起,然后有两种字符:%任意个字符,_一个字符,想查,第二个字为三的人,
如愿以偿;
7.排序查询
语法 select * from 表名 order by 排序字段1 排序条件1,排序字段2 排序条件2;
注意:如果有多个条件,当前面的值一样,才会判断后面的条件,并且排除了非空的情况,即不算NULL值;如果不写递增递减,则默认递增(ASC),递减(DESC)。
发现,已经按我们的想法排序出来了
8.聚合函数:将一列数据作为一个整体计算
语法 select 聚合函数 from 表名;结果会呈单行单列的方式显示,其中聚合函数有五个,分别为count()计算个数,max()求最大值,min()求最小值,sum()求和,avg()求平均值,在括号里面写要计算你的列名。仅用算英语总分为例
另外还有一个count方法需要特殊强调,如果用count(*),在所有列中,只要有一个列没有NULL那么就会成为一条记录
9.分组查询
语法: SELECT 列名或者聚合函数 from 表名 group by 列名。
注意:分组之后查询字段为分组字段 或者聚合函数,其他无意义
(1)低分不参与分组,限定分组条件。
注意:分组之后人数要大于两个人,即count(*)的值大于2
注意:having和where 的区别:
(1)作用位置不同:where是分组之前限定,不参与分组。而having是分组之后限定,如果不满足条件,则不会被查询出来
(2)where后不可以跟聚合函数,而having后面可以跟聚合函数。
10.分页查询
语法:开始的索引,每页查询的条数。select * from 表名 limit 开始的索引,每页查询条数。
注意:开始的索引=(当前页码-1)*每页显示条数。分页操作是一种"方言",也就是说只能在MySQL中使用,别的数据库就不可以用limit关键字。
可以发现,数据每页四个在页面中呈现出来,当然最后一页最多有四个数据,最少一个数据。
以上是关于MySQL_DQL操作的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 协程Flow 操作符 ② ( 末端操作符 | collect 操作符 | reduce 操作符 | single 操作符 | first 操作符 | toList 操作符 )
jQuery操作元素属性操作样式操作样式类操作HTML代码以及其他操作 [学完你还不会吗]
Kotlin 协程Flow 操作符 ① ( 过渡操作符 | map 操作符 | transform 操作符 | 限长操作符 | take 操作符 )
Kotlin 协程Flow 操作符 ① ( 过渡操作符 | map 操作符 | transform 操作符 | 限长操作符 | take 操作符 )
C 语言结构体 ( 结构体变量内存操作 | 通过 “ . “ 操作符操作结构体内存空间 | 通过 “ -> “ 操作符操作结构体内存空间 )