Mysql基础语法-DML
一、DML
1、插入记录
一次性插入多条记录
insert into tablename(field1,field2,…,fieldn) values
(value1,value2,…,valuen),
(value1,value2,…,valuen),
…
(value1,value2,…,valuen)
;
全字段插入(不用体现列,但是需要按列顺序插入)
insert into dept values(5,'dept5),(6,'dept6');
2、更新记录
update tablename set field1=value1,field2=value2 [where condition]
在mysql中update可以同时更新多个表中的数据,例如:
update emp,dept set a.sal=a.sal*b.deptno,b.deptname=a.ename where a.deptno=b.deptno;
3、删除记录
delete from tablename [where condition]
在mysql中delete可以同时删除多个表中的数据,例如:
delete from emp,dept where a.deptno=b.deptno;
4、查看记录
- 简单查询
select * from tablename [where condition];
- 去重distinct
- 多条件查询
5、排序和限制
排序和限制order by asc,desc
显示行数limit
select ……[limit offset_start,row_count] 其中offset_start表示记录的其实偏移量,默认为0;row_count表示显示的行数
select * from emp order by sal limit 1,3;
6、聚合
聚合函数:count,sum,max,min
with rollup 对聚合后的结果再汇总
having 对聚合后的结果再进行条件过滤
select deptno,count(1) from emp group by deptno having count(1)>0 with rollup;
select sum(sal),max(sal),min(sal) from emp;
7、表连接(内连接,外连接:左连接/右连接)
详见:https://www.cnblogs.com/wzh313/p/9077247.html
SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。
连接类型 定义
内连接 只连接匹配的行
左外连接 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行,a.order_id = b.order_id(+)
右外连接 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行,a.order_id(+) = b.order_id
全外连接 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
1、左连接:以左边的数据为基准 1)left join或left outer join 2)条件a=b(+),以a表数据为基准。 SELECT * FROM TESTA LEFT OUTER JOIN TESTB ON TESTA.A=TESTB.A Oracle 支持另一种写法 SELECT * FROM TESTA,TESTB WHERE TESTA.A=TESTB.A(+) 三个表做左外连接 SELECT * FROM TESTA LEFT OUTER JOIN TESTB ON TESTA.A=TESTB.A LEFT OUTER JOIN TESTC ON TESTA.A=TESTC.A Oracle 支持的另外一种写法 SELECT * FROM TESTA,TESTB,TESTC WHERE TESTA.A=TESTB.A(+) AND TESTA.A=TESTC.A(+) 2、右连接:以右边的数据为基准 1)right join或right outer join 2)条件a(+)=b,以b表数据为基准。 右外连接是在等值连接的基础上加上被连接表的不匹配数据 SELECT * FROM TESTA RIGHT OUTER JOIN TESTB ON TESTA.A=TESTB.A Oracle支持的另一种写法 SELECT * FROM TESTA,TESTB WHERE TESTA.A(+)=TESTB.A 3、全外连接 full outer join 或者 full join 全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上 SELECT * FROM TESTA FULL OUTER JOIN TESTB ON TEST A.A=TESTB.A 全外连接的等价写法,对同一表先做左连接,然后右连接 SELECT TESTA.*,TESTB.* FROM TEST A LEFT OUTER JOIN TESTB ON TEST A.A=TESTB.A UNION SELECT TESTA.*,TESTB.* FROM TESTB LEFT OUTER JOIN TESTA ON TEST A.A=TESTB.A
8、子查询
使用关键字包括in、not in、=、!=、exists、not exists等。
9、记录联合
union 含对结果的distinct
union all

浙公网安备 33010602011771号