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