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