起别名
目的:为了简化列名称单词过长 使用AS 或者使用空格
例如: SELECT emptName AS ename FROM table;
SELECT emptName ename FROM table;
查
查询全表:
SELECT * FROM table;
查询特定的列:
SELECT column FROM table;
查询,除去重复记录 DISTINCT:
SELECT DISTINCT * FROM table;
条件查询 WHERE :
WHERE子句后跟条件
运算符:&& (AND),|| (OR),! (NOT),BETWEEN...AND,IN,LIKE,IS NULL,IS NOT NULL,
>,<, <=, >=, !=, <>
排序查询 ORDER BY:
SELECT * FROM table ORDER BY id DESC ; #降序 descendant
SELECT * FROM table ORDER BY id ASC; #升序 ascendant
注意:字符串排序按照Unicode来排序;如果排序规则默认为空,默认升序排列ASC.
模糊条件查询 LIKE:
%:表示任意多个字符 _:表示任意单个字符
例:查询姓名中包含 e 的员工有哪些
SELECT * FROM table WHERE name LIKE '%e%'
查询姓名第二个字母是 e 的员工有哪些
SELECT * FROM table WHERE name LIKE '_e%'
分页查询 LIMIT:
查询结果集一页展示不完可以用分页展示
要有两个已知条件 :分页大小(size),页码(page);
start 每页开始查询的值, start=(page-1)*size;
格式: SELECT * FROM table LIMIT start,size;
例: SELECT * FROM table LIMIT 0,10; #查询第一页的十条记录
注意:start和size必须是数值型,否则会报错
分组查询 GROUP BY:
按性别分组,求数序平均分:SELECT sex ,AVG(math) FROM table GROUP BYsex;
聚合函数
将一列数据作为一个整体进行纵向计算
count :个数 ;max:最大值 ;min:最小值 ;sum: 总和;avg:平均值。
聚合函数排除null 1.IFNULL函数 2.选择不为空的列计算
例:1.SELECT count (IFNULL(math)) FROM table;
2.count(id)
查询的时候执行运算
练习:查询出所有员工的姓名及其年薪
SELECT ename,salary*12 FROM emp;
子查询
加上条件:两表之间的关联。
例:查询研发部的员工有哪些。(部门表:dept;员工表:emp)
1.查询研发部部门的编号 2.查询该编号下的所有员工
SELECT * FROM emp WHERE deptId=(SELECT dId FROM dept WHERE dName='研发部');
以上查询无法查找到没有部门的员工,无法查找到没有员工的部门
解决:1.内连接 2.外连接 3.全连接(MySQL不支持)
1.
SELECT eName,dName FROM emp INNER JOINdept ON deptId=dId;
(返回两个表的交集部分)
2.
左外连接
SELECT eName ,dName FROM emp LEFT (OUTER 可省略 )JOIN DEPT ON deptId=dId
左(外)连接,左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录。 右表记录不足的地方均为NULL。
右外连接
SELECT eName ,dName FROM emp RIGHT(OUTER 可省略 )JOIN dept ON deptId=dId;
与左(外)连接相反
3.
FULL JOIN
显示左侧右侧所有的记录,(左连接)UNION ALL(右外连接)
把左连接和右连接的结果联合起来。
UNION ALL:联合后不合并相同记录;UNION 联合后合并相同记录。
删
删除数据
DELETE FROM table WHERE 条件;
如果不加条件删除表中所有数据。要删除所有数据使用 TRUNCATE TABLE 表名;
不推荐使用 delete 删除表,因为一条一条删除影响效率。
删除字段名 :
alter table 表名 drop 列类型;
改
修改表信息
UPDATE table SET colums1= value1,colums2= value2.. WHERE 条件;
修改字段名 :alter table 表名 modify 字段 列类型;
增
添加数据
INSERT INTO table (columns)VALUSE (, , , , );
列表和值一一对应
如果表明后不写列名,默认给所有列添加值 INSERT INTO table VALUSE (, , , , );
除了数字列其他都要带上引号