MySQL查询语句
一、单表查询
1. 基本查询
(1)查询所有列:select * from 表名;
其中*表示查询所有列,而不是所有行的意思。
(2)查询指定列:select 列1,列2,列n from 表名;
(3)完全重复的记录只显示一次:在查询的列之前添加distinct
(4)列运算
a. 数量类型的列可以做加、减、乘、除:SELECT sal*5 from 表名;
说明:
1.遇到null加任何值都等于null的情况,需要用到ifnull()函数。
2.将字符串做加减乘除运算,会把字符串当作0。
b. 字符串累类型可以做连续运算(需要用到concat()函数):select concat(列名1,列名2) from 表名;其中列名的类型要为字符串。
c. 给列名起别名:select 列名1 (as) 别名1,列名2 (as) 别名2 from 表名;
(5)条件控制
a. 条件查询:在后面添加where指定条件:select * from 表名 where 列名=指定值;
b. 模糊查询:当你想查询所有姓张的记录。用到关键字like。
select * from 表名 where 列名 like ‘张_’;
(_代表匹配任意一个字符,%代表匹配0~n个任意字符)。
2. 特殊查询
- 1.查询字段为空的行:
select * form 表名 where 列名 is null;
- 2.查询字段不为空的行:
select * form 表名 where 列名 is not null;
- 3.查询某条件多个值时用in,例如:查询课程id为1,3,5的课程。
select * from course where c_id in (1,3,5);
- 4.排除该范围的值用not in
select * from course where c_id not in (1,3,5);
3. 排序
- 1.升序:
select * form 表名 order by 列名 (ASC);
()里面的内容为缺省值,默认为升序,可省略。 - 2.降序:
select * from 表名 order by 列名 DESC;
- 3.使用多列作为排序条件: 当第一列排序条件相同时,根据第二列排序条件排序(当第二列依旧相同时可视情况根据第三例条件排序)。eg:
select * from 表名 order by 列名1 (ASC), 列名2 DESC;