select {[distinct|all]columns|*}
[into table_name]
from {tables|views|other select}
[where conditions]
[group by columns]
[having conditions]
[order by columns]
筛选查询:
分组查询:
排序查询:
多表关联查询:
单行子查询是指返回一行数据的子查询语句。当在WHERE子句中引用单行子查询时,可以使用单行比较运行符(=、>、<、>=、<=、<>)。
select empno,ename,sal from emp where sal>(select avg(sal) from emp);
多行子查询是指返回多行数据的子查询语句。当在WHERE子句使用多行子查询时,必须使用多行运算符(IN、ANY、ALL)。
select empno,ename,job from emp where deptno IN (select deptno from dept where dname<>’SALES’);
ANY运算符必须与单行比较运算符结合使用,并且返回行只要匹配子查询的任何一个结果即可。
select deptno,ename,sal from emp where sal > ANY (select sal from emp where deptno=10) and deptno<>10;
ALL运算符必须与单行比较运算结合使用,并且返回行必须匹配所有子查询结果。
select deptno,ename,sal from emp where sal > ALL (select sal from emp where deptno=30);
内查询的执行需要借助于外查询,而外查询的执行又离不开内查询的执行。
比如:列出员工工资大于此员工所在岗位的平均工资的清单
select empno,ename,sal from emp f where sal>(select avg(sal) from emp where job=f.job) order by job;
INSERT INTO table_name [(column_name1[,column_name2]…)]
VALUES(express1[,express2]…)
INSERT INTO table_name [(column_name1[,column_name2]...) selectSubquery
UPDATE table_name
SET {column_name1=express1[,column_name2=express2...]
| (column_name1[,column_name2…])=(selectSubquery)}
[WHERE condition]
在将UPDATE语句与SELECT语句组合使用时,必须保证SELECT语句返回单一的值。
DELETE FROM table_name
[WHERE condition]
TRUNCATETABLE table_name