DQL数据查询语言
数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
查询返回的结果集是一张虚拟表。查询关键字:SELECT
语法:
SELECT selection_list /*要查询的列名称*/
FROM table_list /*要查询的表名称*/
WHERE condition /*行条件*/
GROUP BY grouping_columns /*对结果分组*/
HAVING condition /*分组后的行条件*/
ORDER BY sorting_columns /*对结果分组*/
LIMIT offset_start, row_count /*结果限定*/
基础查询
查询所有的列
SELECT * FROM [表名];
查询指定的列
SELECT [列名1,列名2,...] FROM [表名];
条件查询
条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:
=、!=、<>、<、<=、>、>=;
BETWEEN…AND;
IN(set);
IS NULL; IS NOT NULL
AND;
OR;
NOT;
语法:
SELECT * FROM [表名] WHERE [条件];
模糊查询
模糊查询需要使用关键字LIKE
。
通配符:
- _ 任意一个字符
- %:任意0~n个字符
字段控制查询
去除重复记录
去除重复记录(两行或两行以上记录中系列的上的数据都相同),或者党激烈相同时去除改行记录。当只查询emp表的sal字段时,那么会出现重复记录,那么想去除重复记录,需要使用DISTINCT:
SELECT DISTINCT [列名] FROM [表名];
SELECT DISTINCT [列名1],[列名2] FROM [表名];
滤空函数
在进行计算时,需要对null值进行滤空操作(把空值当做0进行计算)关键字IFNULL
SELECT IFNULL([列名],0) FROM [表名];
给列名添加别名
SELECT [列名] AS [新列名] FROM [表名];
附录:(示例代码)
-- 查询所有列
SELECT * FROM stu;
-- 查询指定的列
SELECT sid,sname FROM stu;
-- 查询性别为女,并且年龄大于50
SELECT * FROM stu WHERE gender = "female" AND age>=50;
-- 查询学号为s_1001,S_1002,S_1003
SELECT *FROM stu WHERE sid IN('s_1001','S_1002','S_1003');
-- 查询学号不是s_1001,S_1002,S_1003
SELECT *FROM stu WHERE sid NOT IN('s_1001','S_1002','S_1003');
-- 查询学号为s_1001或者名字为liSi的
SELECT *FROM stu WHERE sid='s_1001' OR sname='liSi';
-- 查询年龄为null
SELECT * FROM stu WHERE age IS NULL;
-- 查询年龄不为null
SELECT * FROM stu WHERE age IS NOT NULL;
-- 查询年龄在20到40之间的学生记录
SELECT * FROM stu WHERE age BETWEEN 20 AND 40;
-- 查询性别非男的学生记录
SELECT * FROM stu WHERE gender!='male';
-- 查询姓名由5个字母构成,并且第5个字母为“i”的学生记录
SELECT * FROM stu WHERE sname LIKE '____i';
-- 查询姓名以“z”开头的学生记录
SELECT *FROM stu WHERE sname LIKE 'z%';
-- 查询所有的deptno(去掉重复的)
SELECT DISTINCT deptno FROM emp;
-- 查询sal和comm不同的列
SELECT DISTINCT sal,comm FROM emp;
-- 查看雇员的月薪与佣金之和
SELECT IFNULL(comm,0)+deptno FROM emp;
-- 给列名添加别名
SELECT IFNULL(comm,0)+deptno AS total FROM emp;