用来查询数据库中表的记录(数据)。关键字:select, where 等数据库
select * from 表名;函数
语法:spa
select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组以后的条件 order by 排序 limit 分页限定
select 字段名1,字段名2,... from 表名;3d
注意:code
若是查询全部字段,能够用 * 来代替字段列表
distinctblog
eg: SELECT DISTINCT 列名 FROM 表名;排序
多列名时,保证每行对应列名处彻底同样才能够去除索引
通常可使用四则运算计算一些列的值。it
eg:SELECT name,math,english,math+english FROM 表名;
math + english便是运算,而且新建别名class
IFNULL(表达式1,表达式2):NULL参与的运算,计算结果都为NULL
表达式1:哪一个字段须要判断为NULL 表达式2:替换为哪一个值
SELECT name,math,english,math+ IFNULL(english,0) FROM 表名;
SELECT name,math,english,math+ IFNULL(english,0) AS 总分 FROM 表名;
AS 也能够省略,必定要有空格
1.where字句后跟条件
、< 、<= 、>= 、= 、<>(不等于)
BETWEEN...AND...
IN( 集合)
LIKE:模糊查询
占位符:
_:单个任意字符 %:多个任意字符
IS NULL
and 或 &&
or 或 ||
not 或 !
-- 查询年龄大于20岁
SELECT * FROM student WHERE age > 20; SELECT * FROM student WHERE age >= 20; -- 查询年龄等于20岁 SELECT * FROM student WHERE age = 20; -- 查询年龄不等于20岁 SELECT * FROM student WHERE age != 20; SELECT * FROM student WHERE age <> 20; -- 查询年龄大于等于20 小于等于30 SELECT * FROM student WHERE age >= 20 && age <=30; SELECT * FROM student WHERE age >= 20 AND age <=30; SELECT * FROM student WHERE age BETWEEN 20 AND 30; -- 查询年龄22岁,18岁,25岁的信息 SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25 SELECT * FROM student WHERE age IN (22,18,25); -- 查询英语成绩为null SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 判断 SELECT * FROM student WHERE english IS NULL; -- 查询英语成绩不为null SELECT * FROM student WHERE english IS NOT NULL;
LIKE的模糊查询例子
-- 查询姓马的有哪些? like SELECT * FROM student WHERE NAME LIKE '马%'; -- 查询姓名第二个字是化的人 SELECT * FROM student WHERE NAME LIKE "_化%"; -- 查询姓名是3个字的人 SELECT * FROM student WHERE NAME LIKE '___'; -- 查询姓名中包含德的人 SELECT * FROM student WHERE NAME LIKE '%德%';
语法:order by 字句 order by 排序字段1 排序方式1,排序字段2 排序方式2,..排序字段n 排序方式n; 排序字段:目标列 排序方式: ASC:升序,默认 DESC:降序 注意: 若是有多个排序条件,则只有前面条件值同样时,才执行后面的条件
将一列数据做为一个总体,进行纵向的计算(排除了非空的值)
SELECT 聚合函数(列名) FROM 表名;
若是把null归入计算,要把null的值替换后再计算
解决方案:
①:IFNULL函数 SELECT 聚合函数(IFNULL(列名,替换后的值)) FROM 表名; ②:使用不包含NULL的列进行计算
1. 通常选择非空的列:主键 2. count(*):通常不推荐写 * ,通常写主键
语法:
group by 分组字段;
注意:
1.分组以后查询的字段:分组字段、聚合函数 2.
where:在分组以前限定,若是不知足条件,不参与分组
having:在分组以后限定,若是不知足条件,不会被查询出来(意味着,having有时候在分组后基础上再筛选)
where:后面不能够跟聚合函数
having:后能够进行聚合函数的判断
简化写法,在聚合函数后取一个别名,判断时用别名(通常取英文)进行判断
语法:
<kbd>limit 开始的索引, 每页的条数;(仅仅在MySQL语句)
公式:开始的索引 = (当前的页码-1)* 每页显示的条数
分页操做时一个MySQL的“方言”