1、基本的SELECT语句
基本格式:
SELECT 要查询的列名 FROM 表名 WHERE 限制条件;
若要查询所有内容,则把“要查询的列名”用*代替,代表要查询表中所有的列。
举个栗子:
栗子1)要查询employee表中的name和age
SELECT name,age FROM employee;
栗子2)要查询employee表中的所有列
SELECT * FROM employee;
从而可以比较下,SELECT 指定列和SELECT * 的区别
2、数学符号条件
SELECT语句常常会有WHERE限制条件,用于达到更加精确的查询。
WHERE限制条件可以有数学符号(=,<,<=,>,>=,<>)
在栗子1的基础上,细化查询条件age>25
SELECT name,age FROM employee WHERE age>25;
3、“AND”和“OR”
WHERE的后面可以有不止一条限制,根据条件之间的逻辑关系,可以用OR(或)和AND(且)连接
在栗子1的基础上,增加查询age小于25或age大于30的数据
SELECT name,age FROM employee WHERE age<25 OR age>30;
或查询年龄在25和30之间的数据
SELECT name,age FROM employee WHERE age>25 AND age<30;
另一种表现方式
SELECT name,age FROM employee WHERE age BETWEEN 25 AND 30;
4、IN和NOT IN
关键词IN和NOT IN,主要用于筛选“在”或“不在”某个范围内的结果
举个栗子:
查询在dpt3或dpt4的人
SELECT * FROM employee WHERE in_dpt IN('dpt3','dpt4');
查询不在dpt1也不在dpt3的数据
SELECT * FROM employee WHERE in_dpt NOT IN('dpt1','dpt3');
5、通配符
通配符与关键字LIKE一起使用,通配符代表未知字符。
主要有“_”和“%”两种。“_”代表一个未指定字符,而“%”代表不定个未指定字符。
举个栗子:
查询电话号码前四位为1101的信息
SELECT * FROM employee WHERE phone LIKE '1101__';
查询首字母为J的人
SELECT * FROM employee WHERE name LIKE'J%';
6、对查询结果进行排序
对查询结果按某一列进行排序,需用到ORDER BY关键词。
默认情况下,ORDER BY的结果是升序排列;若需按某一列倒序排列,则需再加入关键词DESC
举个栗子:
将所有查询结果,按salary倒序进行排序
SELECT * FROM employee ORDER BY salary DESC;
7、SQL内置函数和计算
内置函数
函数名 | COUNT | SUM | AVG | MAX | MIN |
作用 | 计数 | 求和 | 求平均值 | 最大值 | 最小值 |
SUM、AVG函数都只能对数字类数据类型做计算
MAX、MIN可用于数值、字符串或是日期时间数据类型
举个栗子:
计算出salary的最大、最小值
SELECT MAX(salary) AS max_salary, MIN(salary) FROM employee;
8、子查询
直接上栗子:
查询名为Tom的员工所在部门做了几个工程。
SELECT of_dpt,COUNT(proj_name) AS count_project
FROM project
WHERE of_dpt IN
(SELECT in_dpt FROM employee WHERE name='Tom');
9、连接查询
连接的基本思想,就是把两个或多个表当做一个新的表来操作
栗子栗子:
查询各员工所在部门的人数,其中的id和name来自employee表,people_num来自department表
SELECT id,name,people_num
FROM employee,department
WHERE employee,in_dpt=department.dpt_name
ORDER BY id;
或用JOIN ON语法
SELECT id,name,people_num
FROM employee JOIN department
ON employee.in_dpt=department.dpt_name
ORDER BY id;