SQL 中最常用的 SELECT 用于在表中选择数据的句子。
要记住的知识点如下:
SELECT 语句格式:
SELECT 列名要查询 FROM 表名字 WHERE 限制条件;
WHERE语句后:
数学符号条件:= > = <= between and
逻辑符:AND / OR / IN / NOT IN
通配符:LIKE _ 、%
排序:ORDER BY ASC、DPSC
SQL 内置函数和计算
子查询与连接查询
SELECT 句子的基本格式
SELECT 列名要查询 FROM 表名字 WHERE 限制条件;
--查询一个表的所有内容(如employee表)
select * fromemployee;--查寻表中name、age的信息
select name,age from employee;
WHERE事后(限制条件、逻辑符、通配符、排序)
数学符号条件
=、>、=、<=、between
逻辑符
AND、OR、 IN、NOT IN
--筛选25岁以上的人的名字和年龄
SELECT name,age FROM employee WHERE age>25.-找名字 Mary 的员工的 name,age 和 phone
SELECT name,age,phone FROM employee WHERE name='Mary';--筛选出 age 小于 25,或 age 大于 30
SELECT name,age FROM employee WHERE age<25 OR age>30;--筛选出 age 大于 25,且 age 小于 30
SELECT name,age FROM employee WHERE age>25 and age<30-这种情况可以添加between结合and--筛选出 age 小于 25,或 age 大于 30
SELECT name,age FROM employee WHERE age between 25 and 30;--查询在dpt3或dpt4的人
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN ('dpt3','dpt4);dpt1和dpt3的人
SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt NOT IN ('dpt1','dpt3');
通配符
关键字 LIKE 在SQL与通配符一起使用,通配符代表未知字符。SQL中间的通配符是 _ 和 % 。
其中 _ 代表未指定字符,% 未指定指定的字符。
--前四位数的电话号码是1101,后两位忘记了,可以用两个 _ 替代通配符:
SELECT name,age,phone FROM employee WHERE phone LIKE '1101__另一种情况下,如只记住名字的首字母,不知道名字的长度,则使用 % 通配符代替不定字符
SELECT name,age,phone FROM employee WHERE name LIKE 'J%';
对结果排序
默认情况下,ORDER BY结果是升序排列,使用关键词ASC和DESC升序或降序可以指定。
--我们按salary降序排列,SQL语句为:SELECT name,age,salary,phone FROM employee ORDER BY salary DESC;
SQL内置函数和计算

--取最大值
SELECT MAX(salary) FROMemployee;--并使用最小值as重命名关键字
SELECT MIN(salary) as minminmin_salary FROMemployee;--计数:个人工资是多少?
SELECT COUNT(salary) FROMemployee;--求和
SELECT SUM(salary) FROMemployee;--求平均值
SELECT AVG(salary) FROM employee;
子查询
上面讨论的 SELECT 句子只涉及一个表中的数据,但有时需要处理多个表来获取所需的信息。例如:想知道它的名字 "Tom" 员工部门做了几个项目。存储员工信息 employee 但工程信息存储在表中,project 表中。
SELECT of_dpt,COUNT(proj_name) AS count_project FROM project GROUP BYof_dptHAVING of_dpt IN(SELECT in_dpt FROM employee WHERE name='Tom');
连接查询
在处理多个表时,子查询只有在结果来自一个表时才有用。但如果需要显示两个或多个表中的数据,则必须使用连接 (join) 操作。 连接的基本思想是将两个或两个以上的表作为的表来操作,如下:
SELECTid,name,people_numFROMemployee,departmentWHERE employee.in_dpt =department.dpt_nameORDER BY id;
学习资源来源:实验楼