创建表和管理表包括描述主要的数据库对象、创建表、描述各种数据库类型、修改表的定义、删除、重命名和清空表。常见的数据库对象有:
表:基本的数据存储集合,由行和列组成;
视图:从表中抽取的逻辑上相关的数据集合;
序列:提供有规律的数值;
索引:提高查询的效率;
同义词:给对象起别名。
1.创建表 create table 语句
在创建表的过程中要注意字段及其表名的命名,还要注意字段的数据类型。关于命名规则和字段类型,参考附件一种的内容。
1.1常规的创建表
语法:
CREATE TABLE [schema.]table (column datatype [DEFAULT expr][, ...]);
必须具备create table权限和存储空间;
必须指定表名、列名、数据类型和尺寸;
CREATE TABLE dept (deptno NUMBER(2), dname VARCHAR2(14), loc VARCHAR2(13));
1.2使用子查询创建表
使用as subquery选项,将创建表和插入数据结合起来;
指定的列和子查询的列要一一对应;
通过列名和默认值定义列。
CREATE TABLE table [(column, column...)] AS subquery;
实例:
--复制表 create table emp1 as select * from employees; --创建的emp2是空表。 create table emp2 as select * from employees where 1=2;
2.修改表 alter table 语句
使用alter table 语句可以追加新的列,修改现有的列,为新追加的列定义默认值,删除一个列,重命名表中的一个列。
2.1 追加:
ALTER TABLE table ADD (column datatype [DEFAULT expr] [, column datatype]...);
--给dept80表追加一个新列job_id ALTER TABLE dept80 ADD (job_id VARCHAR2(9));
2.2 修改:
ALTER TABLE table MODIFY (column datatype [DEFAULT expr] [, column datatype]...);
--修改last_name字段的数据类型 ALTER TABLE dept80 MODIFY (last_name VARCHAR2(30)); --修改salary字段的尺寸和默认值 ALTER TABLE dept80 MODIFY (salary number(9,2) default 1000);
2.3 删除:
ALTER TABLE table DROP COLUMN column_name;
--删除dept80表中不在需要的job_id列 ALTER TABLE dept80 DROP COLUMN job_id;
2.4 重命名:
ALTER TABLE table_name RENAME COLUMM old_column_name TO new_column_name
--将dept80表中的job_id字段重命名为id字段 ALTER TABLE dept80 RENAME COLUMN job_id TO id;
3. 删除表
删除表的时候数据和结构都会删除,所有正在运行的相关事务会被提交,表的所有索引会删除,drop语句不能回滚。
--删除表dept80 drop table dept80;
4.清空表
truncate语句不能回滚,delete语句可以回滚。
--清空表 truncate table table_name;
附件一:
1.表名和列名的命名规则:
必须以字母开头
必须在 1–30 个字符之间
必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
必须不能和用户定义的其他对象重名
必须不能是Oracle 的保留字
2.数据类型
数据类型 | 描述 |
varchar2(size) | 可变长度字符串 |
char(size) | 定长字符数据 |
number(m,n) | 可变长数值数据 |
date | 日期型数据 |
long | 可变长字符数据,最大长度可达2G |
clob | 字符数据,最大长度可达到4G |
raw(long raw) | 原始的二进制数据 |
blob | 二进制数据,最大可达到4G |
bfile | 存储外部文件的二进制数据,最大可达到4G |
rowid | 行地址 |
参考资料:尚硅谷