oracle语句

--复制表
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;
posted @ 2021-03-03 22:44  Fork多梦  阅读(83)  评论(0)    收藏  举报