oracle创建表与增删改
- 格式:docx
- 大小:25.38 KB
- 文档页数:10
-- 数据准备:创建工资等级表
CREATE TABLE salgrade_test (
grade NUMBER (2),
lowsal NUMBER (7, 2),
hisal NUMBER (7, 2)
);
-- 查看工资等级表结构
DESC salgrade;
-- 查看工资等级表数据
SELECT
*
FROM
salgrade_test;
-- 插入数据
INSERT INTO salgrade_test
VALUES
(1, 10001, 99999);
INSERT INTO salgrade_test
VALUES
(2, 8001, 10000);
INSERT INTO salgrade_test
VALUES
(3, 6001, 8000);
INSERT INTO salgrade_test
VALUES
(4, 4001, 6000);
INSERT INTO salgrade_test
VALUES
(5, 1, 4000);
-- 计算员工的薪水等级
SELECT
NAME,
salary,
grade
FROM
emp_test,
salgrade_test
WHERE
emp_test.salary BETWEEN salgrade_test.lowsal
AND salgrade_test.hisal;
-- ------------------------------------------------------SELECT
NAME,
salary,
grade
FROM
emp_test
FULL JOIN salgrade_test ON emp_test.salary BETWEEN
salgrade_test.lowsal
AND salgrade_test.hisal;
-- 复制表:只复制结构 , 不复制数据
CREATE TABLE salgrade_copy AS (
SELECT
*
FROM
salgrade_test
WHERE
1 <> 1
);
SELECT
*
FROM
salgrade_copy;
-- 复制表:复制一部分数据----通过设置别名的方式 , 指定新表中的列名(year_sal) CREATE TABLE emp_test_copy AS (
SELECT
emp_id,
NAME,
salary * 12 year_sal
FROM
emp_test
WHERE
dept_test_id = 10
);
SELECT
*
FROM
emp_test_copy;
-- 复制表:复制一部分数据 -- 新表中的列名
CREATE TABLE emp_count (did, emp_num) AS (
SELECT
dept_test_id,
COUNT (*)
FROM
emp_test
GROUP BY
dept_test_id
);
SELECT
*
FROM
emp_count;
-- 创建一个同 emp 表结构相同的空表 , 将部门号为 10 的员工信息放入该表
-- 如果有一张表 emp 的数据量为一百万条 , 此时需要建立 1 张测试表只放入少量测试数据( 如 100条 ) , 执行步骤如下所示:
-- 第 1 步创建一个空表
CREATE TABLE emp_copy AS (
SELECT
*
FROM
emp_test
WHERE
1 <> 1
);
-- 第 2 步揑入少量测试数据
INSERT INTO emp_copy (
SELECT
*
FROM
emp_test
WHERE
dept_test_id = 10
);
SELECT
*
FROM
emp_copy;
-- 把表中的数据换为部门 20 和 30 的员工记录DELETE
FROM
emp_copy;
INSERT INTO emp_copy (
SELECT
*
FROM
emp_test
WHERE
dept_test_id IN (20, 30)
);
SELECT
*
FROM
emp_copy;
-- 向新表中揑入指定记录数的数据,比如前 8 条DELETE
FROM
emp_copy;
INSERT INTO emp_copy (
SELECT
*
FROM
emp_test
WHERE
ROWNUM <= 8
);
SELECT
*