--复制表
CREATE TABLE 表名 AS SELECT语句 ;
--添加一列 (要添加not null列,则表必须为空)
ALTER TABLE 表名 ADD 新列名 数据类型 约束;
--添加多列
ALTER TABLE 表名
ADD (
新列名1 数据类型 约束,
新列名2 数据类型 约束
...
);
--填入另一个表的数据
INSERT INTO 表名 SELECT * FROM 表名;
--删除一列
ALTER TABLE 表名 DROP COLUMN 列名;
--删除多列
ALTER TABLE 表名 DROP (列名1,列名2,...);
--修改A表某列=B表某列
update A a set a.列=(select b.列 from B b where b.XXX=a.XXX) 还有其它A表条件则继续添加 where ......
--清空表中某字段值(某列值)
UPDATE 表名 SET 列名 = NULL;
UPDATE 表名 SET 列名 = '';--双引号报错
--工资最低3人
SELECT ROWNUM,e.* FROM(
SELECT * from emp
ORDER BY sal) e WHERE ROWNUM<=3;
--查询各部门工资最低三名员工信息
SELECT deptno,ename,sal FROM emp e1
WHERE
(SELECT COUNT(*) FROM emp e2
WHERE e2.deptno=e1.deptno AND e2.sal<=e1.sal)<=3
ORDER BY deptno ,sal;
--查询各部门工资最高三名员工信息
SELECT deptno,ename,sal FROM emp e1
WHERE
(SELECT COUNT(*) FROM emp e2
WHERE e2.deptno=e1.deptno AND e2.sal>=e1.sal)<=3
--工资比查出来的人多的不超过三人,所以查出来的是工资最高的三人
ORDER BY deptno ,sal DESC;
--查询各职业工资最低的3人
SELECT * FROM emp e1 WHERE(
SELECT COUNT(*) FROM emp e2 WHERE e2.job=e1.job
AND e2.sal<=e1.sal)--查询工资比他少的人数
<=3--工资比查出来的人少的不超过三人,所以查出来的是工资最低的三人
ORDER BY job,sal;
--查询各部门工资最低员工信息及部门名称
SELECT p.*,d.dname FROM practise p
JOIN(SELECT MIN(sal) minsal,deptno FROM practise GROUP BY deptno) s
ON p.deptno=s.deptno AND p.sal = s.minsal
JOIN dept d ON p.deptno=d.deptno ;
--员工最低工资改为100
UPDATE practise SET sal=100
WHERE sal = (SELECT MIN(sal) FROM practise);
-- 将一个表移动到另外一个表空间中:
alter table spaceOne.tablename move tablespace spaceTwo;
ALTER TABLE spaceOne.tablename MOVE TABLESPACE spaceTwo;