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、左连接:以左边的数据为基准

  1left 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、右连接:以右边的数据为基准

  1right 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

 

posted @ 2018-05-23 01:08  航松先生  阅读(173)  评论(0)    收藏  举报