本节主要内容:条件查询、模糊查询、字段控制查询及查询结果排序。
1、查询所有列
SELECT * FROM 表名;
2、结果集
数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
结果集:通过查询语句查询出来的数据以表的形式展示我们称这个表为虚拟结果集,存放在内存中;查询返回的结果集是一张虚拟表。
3、查询指定列的数据
SELECT 列名1,列名2 …… from 表名;
例:SELECT name,age from students;
4、条件查询
条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用一些运算符及关键字;
条件查询运行符及关键字:
a. =(等于)、!=(不等于)、<>(不等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于);
b. BETWEEN……AND;
c. IN(set);===>固定的范围值
d. IS NULL(为空); IS NOT NULL(不为空);
e. AND;与
f. OR;或
g. NOT;非
例:查询性别(gender)为男,且年龄为20的学生(students)记录;
SELECT * FROM students WHERE gender='男' and age=20;
例:查询学号为1001或者名为张一的记录;
SELECT * FROM students WHERE id=1001 or name='张一';
例:查询学号为1001,1002,1003的记录;
SELECT * FROM students WHERE id IN(1001,1002,1003);
例:查询年龄为null的记录;
select * from students where age is null;
例:查询年龄在18到20之间的学生记录;
SELECT * FROM students WHERE age>=18 and age<=20;
SELECT * FROM students WHERE age BETWEEN 18 AND 20;
例:查询性别非男的学生记录;
SELECT * FROM students WHERE gender !='男';
例:查询姓名不为null的学生记录;
SELECT * FROM students WHERE name IS NOT NULL;
5、模糊查询
根据制定的关键字进行查询;
使用LIKE关键字后跟通配符;
通配符包括_任意一个字母、%任意0~n个字母;
模糊查询演练:
例:查询姓名由5个字母(name:abcde)构成的学生(students)记录;
SELECT * FROM students WHERE name LIKE '_____';
例:查询姓名由5个字母(name:abcds)构成,并且第5个字母为“s”的学生记录;
SELECT * FROM students WHERE name LIKE '____s';
例:查询姓名以“m”开头的学生记录;
SELECT * FROM students WHERE name LIKE 'm%';
例:查询姓名中第2个字母为“u”的学生记录;
SELECT * FROM students WHERE name LIKE '_u%';
例:查询姓名中包含“s”字母的学生记录;
SELECT * FROM students WHERE name LIKE '%s%';
6、字段控制查询
去除重复记录;
例:查询姓名不重复的学生记录;
SELECT DISTINCT name FROM students;
把查询字段的结果进行运算,必须都要是数据型:
a. SELECT *, 字段1+字段2 FROM 表名;
b. 列有很多记录的值为NULL;
因为任何东西与NULL相加结果还是NULL,所以运算结果可能会出现NULL。下面使用了把NULL转换成数值0的函数IFNULL;
c. SELECT *, age+IFNULL(score,0) FROM students;
例:查询年龄和成绩相加,得出新的字段数据;SELECT * , age+score FROM students;
例:SELECT *, IFNULL(age,1)+IFNULL(score,0) FROM studebts;
对查询结果起别名;
SELECT 字段 AS 别名 FROM 表名;
7、排序
对查询的结果进行排序
使用关键字ORDER BY
排序类型:升序ASC(从小到大,默认)
降序DESC(从大到小)
SELECT * FROM 表名 ORDER BY 字段 ASC/DESC;
例:查询员工记录,按照薪资进行降序,薪资相同按照id降序;
SELECT * FROM students ORDER BY salary desc, id desc;