欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-01-26 11:56:16
oracle中表分为用户自定义表和数据字典(Oracle Server 自动创建的一组表,包含数据库信息). 1.查看用户创建的表 SELECT * FROM user_tab...

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一致。