Oracle 创建和处理表
常见的数据库对象:
对象 | 描述 |
---|---|
表 | 基本的数据存储集合,由行和列组成 |
视图 | 从表中抽出的逻辑上相关的数据集合 |
序列 | 提供有规律的数值 |
索引 | 提高查询的效率 |
Oracle 数据库中的表:
- 用户定义的表:
SELECT * FROM user_tables; // 查看用户创建的表 - 数据字典:
Oracle Server 自动创建的一组表,包含数据库信息
//查看用户定义的表:
SELECT table_name FROM user_tables ;
//查看用户定义的各种数据库对象:
SELECT DISTINCT object_type FROM user_objects ;
//查看用户定义的表, 视图, 同义词和序列:
SELECT * FROM user_catalog ;
命名规则:
- 必须以字母开头
- 必须在 1–30 个字符之间
- 必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
- 必须不能和用户定义的其他对象重名
- 必须不能是Oracle 的保留字
CREATE TABLE 语句:
1- 建表必须具备:
CREATE TABLE权限
存储空间
2- 建表语法:
CREATE TABLE [schema.]table (column datatype [DEFAULT expr][, …]);
3- 建表语句必须指定:
表名
列名, 数据类型, 尺寸
4- 数据类型:
数据类型 | 描述 |
---|---|
VARCHAR2(size) | 可变长字符数据 |
CHAR(size) | 定长字符数据 |
NUMBER(p,s) | 可变长数值数据 |
DATE | 日期型数据 |
LONG | 可变长字符数据,最大可达到2G |
CLOB | 字符数据 ,最大可达到4G |
RAW (LONG RAW) | 原始的二进制数据 |
BLOB | 二进制数据,最大可达到4G |
BFILE | 存储外部文件的二进制数据,最大可达到4G |
ROWID | 行地址 |
使用子查询创建表:
create table my_emp
as
select last_name name,employee_id id,hire_date
from employees;
CREATE TABLE my_employee;
AS SELECT employee_id, last_name,
salary*12 ANNSAL,
hire_date FROM employees WHERE department_id = 80;
DESC my_employee; //显示表结构
ALTER TABLE 语句:
- 追加新的列
- 修改现有的列
- 为新追加的列定义默认值
- 删除一个列
- 重命名表的一个列名
//追加一个新列
ALTER TABLE my_employee
ADD (job_id VARCHAR2(9));
新列是表中的最后一列
//修改一个列
ALTER TABLE my_employee
MODIFY (last_name VARCHAR2(30));
ALTER TABLE my_employee
MODIFY (last_name VARCHAR2(30) default 'abc')
对默认值的修改只影响今后对表的修改
//重命名一个列
ALTER TABLE my_employee
RENAME COLUMN job_id TO id;
//删除一个列
ALTER TABLE my_employee
DROP COLUMN id;
删除表:
DROP TABLE my_employee;
- 数据和结构都被删除
- 所有正在运行的相关事务被提交
- 所有相关索引被删除
- DROP TABLE 语句不能回滚
清空表:
TRUNCATE TABLE 语句:
TRUNCATE TABLE my_employee;
- 删除表中所有的数据
- 释放表的存储空间
TRUNCATE语句不能回滚
可以使用 DELETE 语句删除数据,可以回滚
改变对象的名称:
执行RENAME语句改变表, 视图, 序列, 或同义词的名称
RENAME my_employee TO new_employee;
必须是对象的拥有者