第七章 创建和管理表
1.常见的数据库对象
对象 描述
表 基本的数据存储集合,由行和列组成。
视图 从表中抽出的逻辑上相关的数据集合。
序列 提供有规律的数值。
索引 提高查询的效率
同义词 给对象起别名
2.命名规则
表名和列名:
必须以字母开头
必须在 1–30 个字符之间
必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
必须不能和用户定义的其他对象重名
必须不能是Oracle 的保留字
3.数据类型
数据类型 描述
VARCHAR2(size) 可变长字符数据
CHAR(size) 定长字符数据
NUMBER(p,s) 可变长数值数据
DATE 日期型数据
LONG 可变长字符数据,最大可达到2G
CLOB 字符数据,最大可达到4G
RAW (LONG RAW) 原始的二进制数据
BLOB 二进制数据,最大可达到4G
BFILE 存储外部文件的二进制数据,最大可达到4G
ROWID 行地址
4.创建表
4.1CREATE TABLE 语句:
必须具备:CREATE TABLE权限和存储空间
必须指定:表名,列名, 数据类型, 尺寸
语法:
CREATE TABLE dept(
deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13)
);
4.2使用子查询创建表
使用 AS subquery 选项,将创建表和插入数据结合起来
指定的列和子查询中的列要一一对应,通过列名和默认值定义列
CREATE TABLE table
[(column, column...)]
AS subquery;
复制现有的表:
create table emp1 as select * from employees;
create table emp2 as select * from employees where 1=2;
--创建的emp2是空表。
举例:
CREATE TABLE dept80
AS SELECT employee_id, last_name,
salary*12 ANNSAL,
hire_date
FROM employees
WHERE department_id = 80;
5.ALTER TABLE 语句
使用 ALTER TABLE 语句可以:
追加新的列
修改现有的列
为新追加的列定义默认值
删除一个列
重命名表的一个列名
使用 ALTER TABLE 语句追加, 修改, 或删除列的语法:
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);
ALTER TABLE table
MODIFY (column datatype [DEFAULT expr]
[, column datatype]...);
ALTER TABLE table
DROP COLUMN column_name;
ALTER TABLE table_name RENAME COLUMM old_column_name
TO new_column_name
5.1使用 ADD 子句追加一个新列
ALTER TABLE dept80
ADD (job_id VARCHAR2(9));
5.2可以修改列的数据类型, 尺寸和默认值,其中对默认值的修改只影响今后对表的修改
ALTER TABLE dept80
MODIFY (last_name VARCHAR2(30));
ALTER TABLE dept80
MODIFY (salary number(9,2) default 1000);
5.3使用 DROP COLUMN 子句删除不再需要的列.
ALTER TABLE dept80
DROP COLUMN job_id;
5.4使用 RENAME COLUMN [table_name] TO子句重命名列
ALTER TABLE dept80
RENAME COLUMN job_id TO id;
6.删除表
数据和结构都被删除
所有正在运行的相关事务被提交
所有相关索引被删除
DROP TABLE 语句不能回滚
DROP TABLE dept80;
7.清空表
TRUNCATE TABLE 语句:
TRUNCATE TABLE detail_dept;
删除表中所有的数据
释放表的存储空间
TRUNCATE语句不能回滚
可以使用 DELETE 语句删除数据,可以回滚
对比:
delete from emp2;
select * from emp2;
rollback;
select * from emp2;
8.总结:以下这些DDL的命令,操作外,皆不可回滚
语句 描述
CREATE TABLE 创建表
ALTER TABLE 修改表结构
DROP TABLE 删除表
RENAME TO 重命名表
TRUNCATE TABLE 删除表中的所有数据,并释放存储空间