oracle创建和管理表的常见操作教程

oracle中表分为用户自定义表和数据字典(Oracle Server 自动创建的一组表,包含数据库信息).

1.查看用户创建的表

SELECT * FROM user_tables;

select table_name from user_tables;

2.查看用户定义的各种数据库对象

SELECT DISTINCT object_type FROM user_objects ;

3.查看用户定义的表,视图,同义词和序列

SELECT * FROM user_catalog

4.oracle创建表的操作,基本跟mysql一样,但是没有like创建表。

 1.自定义创建表,指定表明,列名,数据类型,长度

  CREATE TABLE dept(
                deptno NUMBER(2),
		dname 	VARCHAR2(14),
		loc 	VARCHAR2(13));
 2.使用子查询创建表,但是索引会丢失。
  create table emp1 as select * from employees;(包含employees的数据)
  create table emp2 as select * from employees where 1=2;  --创建的emp2是空表。

3. create table emp1 like employees.这种方式oracle没有,oracle不支持like子句 。mysql,hive有。

5.alter table修改表结构,去别update修改表记录。

1.给新表增加一个列,add
ALTER TABLE dept80
ADD  (job_id VARCHAR2(9));

2.修改列的数据类型,尺寸,默认值等,modify
ALTER TABLE	dept80
MODIFY	(last_name VARCHAR2(30));

3.删除一列,drop
ALTER TABLE  dept80
DROP COLUMN  job_id; 

4.重命令列 rename
ALTER TABLE  dept80
RENAME COLUMN  job_id TO id; 

6.删除表,drop.数据和结构都会被删除,事务被提交,索引被删除,无法回滚

DROP TABLE dept80;

7.清空表,truncate和delete.都是删除表中所有数据,保留表的结构,区别是TRUNCATE语句不能回滚.但DELETE 语句删除数据,可以回滚。

 delete   from employees;
 select * from  employees;
 rollback;
 select * from  employees;--数据还在
--------------------
 truncate table employees;
 select *  from employees;

8.RENAME语句改变表, 视图, 序列, 或同义词的名称

RENAME dept TO detail_dept;

9.对表中数据的CRUD,即增删改查,基本和mysql一样

 1.向表中插入数据(插入的数据可以是函数sysdate)
    i.直接插入方式
    INSERT INTO employees (
               employee_id,  email, phone_number,  hire_date )
     VALUES   (
              113,   'LPOPP@qq.com', '515.124.4567',   SYSDATE);
    ii.查询插入   
   INSERTINTO emp2
   SELECT*
   FROM   employees
   WHEREdepartment_id = 90;
 2.update更新表中数条记录
     update employees 
     set   dempartment_id=70
     where employee_id =140;
   -------------------------------------------------
     基于子查询更新记录:让114号员工的job_id,工资和205员工的job_id,salary一样
     UPDATE  employees
     SET   job_id = (SELECT job_id
          FROM  employees
          WHERE  employee_id = 205),
       salary = (SELECT salary
          FROM  employees
          WHERE  employee_id = 205)
     WHERE  employee_id  = 114;

 3.从表中删除数据delete . 
      DELETE  FROM departments 
      WHERE department_name= 'Finance'; 
      --如果删除where子句,则会将整张表数据都会删除,但支持回滚(区别上面清空表达truncate) 
      --同样delete支持基础子查询条件的删除
     DELETE FROM emp1 WHERE department_id =           
                       (SELECT department_id           
                       FROM  dept1            
                       WHERE department_name LIKE '%Public%'); 
 
  4.同样select 查询,支持各种子查询。重点之重点,基本跟mysql一致。


   
(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐