本章节主要介绍数据库中的“查”。基于的数据库是实验楼提供的,http://github.com/shiyanlou/SQL4
1.最基本的查看:
看数据库:show databases;
看某个数据库中的表:show tables;
查看表employee中的内容:SELECT*FROM employee;
2.SELECT指令
基本格式:SELECT 查询列的名称FROM 表名称 WHERE 限制条件;
上边的*表示一个表中所有的内容。
如果只查询name和age两列:SELECT name,age FROM employee;
3.查询限制条件WHERE:=,<,>,>=,<= AND OR
只显示表employee中的name,age两列中age在(25,30)范围内的数据:
SELECT name,age FROM employeeWHERE age<30 AND age>25;
只显示表employee中的name,age,phone三列中name叫Mary的数据:
SELECT name,age,phone FROMemployee WHERE name=’Mary’;
4.查询限制条件:IN 和NOT IN
翻译过来就是 在 和 不在 两个含义。
查找employee表格中in_dpt为dpt3和dpt4的人:
SELECT name,age,phone,in_dpt FROMemployee WHERE in_dpt IN (‘dpt3’,’dpt4’);
查找employee表格中in_dpt不为dpt3和dpt4的人:
SELECT name,age,phone,in_dpt FROMemployee WHERE in_dpt NOT IN (‘dpt3’,’dpt4’);
5. SELECT的通配符: LIKE %和_
通配符LIKE表示“像”,像是什么什么的样子。
_表示一个未指定的字符。
%表示不确定的未指定的字符,可以是0个字符,也可以是100个字符。
查询表employee中的name,age,phone其中phone的前几位是1101后边有俩别的字符:
SELECT name,age,phone FROMemployee WHERE phone LIKE ‘1101__’;
另一种情况,比如只记名字的首字母,又不知道名字长度,则用 % 通配符代替不定个字符:
SELECT name,age,phone FROMemployee WHERE name LIKE 'J%';
6.对结果进行排序: ORDER BY(ASC升序,DES降序)
表格employee中所有的数据根据salary进行降序排列:
SELECT * FROM employee ORDER BYsalary DESC;
7. 内置函数和计算:
COUNT计数,SUM求和,AVG求平均值,MAX最大值,MIN最小值。
求employee表中的最大值,最小值,平均值:
SELECT MAX(salary) ,MIN(salary),AVG(salary) FROM employee;
这样的写法会让其显示MAX(salary)=3600,MIN(salary)=2500,AVG(salary)=3150
换另一种重命名的写法是SELECTMAX(salary) AS max_salary FROM employee;
这样最后显示的就是max_salary=3600
8. 子查询:
有些时候需要调用多个表,才能获得相应有效的信息,比如:员工Tom所在部门做了几个工程,就需要先找到Tom在找到对应部门的项目数量。
SELECT of_dpt,COUNT(proj_name) AScount_project FROM project
WHERE of_dpt IN
(SELECT in_dpt FROM employeeWHERE name='Tom');
9. 连接查询:把两个表的内容连接到一起,比如A表中有12个数据,B表中的某一列也是12个数据,这样把A和B的12个数据结合成一个新表。
SELECTid,name,people_num
FROM employeeJOIN department
ONemployee.in_dpt = department.dpt_name
ORDER BY id;
把employee中的id和name两列和department中的people_num连接在一起,以id为顺序,升序输出。