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;


Last modification:January 31, 2018
If you think my article is useful to you, please feel free to appreciate