数据定义语言:用于定义数据库的结构,比如创建、修改或删除数据库对象;
包括:
- CREATE TABLE:创建数据库表;
创建表的命名规则:
- 以字母开头;
- 在 1–30 个字符之间;只能包含 A–Z, a–z, 0–9, _, $, 和 #;
- 不能和用户定义的其他对象重名;
- 不能是Oracle 的保留字
创建表的数据类型:
VARCHAR2(size) 可变长字符数据 CHAR(size) 定长字符数据
NUMBER(p,s) 可变长数值数据 DATE 日期型数据
LONG 可变长字符数据,最大可达到2G CLOB 字符数据,最大可达到4G
RAW (LONG RAW) 原始的二进制数据 BLOB 二进制数据,最大可达到4G
BFILE 存储外部文件的二进制数据,最大可达到4G ROWID 行地址
例1:创建一个表:
例2:使用子查询创建表:将创建表和插入数据结合起来!
- ALTER TABLE:更改表结构、添加、删除、修改列长度;
追加一个新列:新列为表中的最后一列;
例:ALTER TABLE…
ADD…
修改一个列:可以修改列的数据类型, 尺寸和默认值,默认值的修改只影响今后对表的修改;
例:ALTER TABLE…
MODIFY…
删除一个列:删除不再需要的列;
例:ALTER TABLE…
DROP COLUMN…
重命名一个列:给列重新命名;
例:ALTER TABLE…
RENAME COLUMN…TO…
- DROP TABLE:删除表;
删除表:数据和结构都被删除;所有正在运行的相关事务被提交;所有相关索引被删除;不能回滚;
例:删除student_s表
清空表:删除表中所有的数据;释放表的存储空间;不能回滚;
例:清空student_s表的数据
- CREATE INDEX:在表上建立索引;
索引:
- 一种独立于表的模式对象, 可以存储在与表不同的磁盘或表空间中
- 索引被删除或损坏, 不会对表产生影响, 其影响的只是查询的速度
- 索引一旦建立, Oracle 管理系统会对其进行自动维护, 而且由 Oracle 管理系统决定何时使用索引。用户不用在查询语句中指定使用哪个索引
- 在删除一个表时,所有基于该表的索引会自动被删除
- 通过指针加速 Oracle 服务器的查询速度
- 通过快速定位数据的方法,减少磁盘 I/O
创建索引:
自动创建: 在定义 PRIMARY KEY 或 UNIQUE 约束后系统自动在相应的列上创建唯一性索引手动创建: 用户可以在其它列上创建非唯一的索引,以加速查询
什么时候创建索引:
- 列中数据值分布范围很广
- 列经常在 WHERE 子句或连接条件中出现
- 表经常被访问而且数据量很大 ,访问的数据大概占数据总量的2%到4%
例:在表 EMPLOYEES的列 LAST_NAME 上创建索引
- DROP INDEX:删除索引
使用DROP INDEX 命令删除索引,只有索引的拥有者或拥有DROP ANY INDEX 权限的用户才可以删除索引,不可回滚;
例:删除索引EMP_LAST_NAME_IDX
序列: 可供多个用户用来产生唯一数值的数据库对象
- 自动提供唯一的数值
- 共享对象
- 主要用于提供主键值
- 将序列值装入内存可以提高访问效率
创建序列:通过CREATE SEQUENCE 语句 定义序列:
例:创建序列 DEPT_DEPTID_SEQ为表 DEPARTMENTS 提供主键
修改序列:修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入内存;只有将来的序列值会被改变;改变序列的初始值只能通过删除序列之后重建序列的方法实现
例:
删除序列:使用 DROP SEQUENCE 语句删除序列;删除之后,序列不能再次被引用
例: