DDL 数据库表定义语言
2020-03-09 本文已影响0人
风中小酌
数据库定义语言,用于创建、修改、删除数据库对象,如表、视图、索引、序列等。
create
alter
drop
rename
用户表
由用户自己创建和维护的表的集合,包含用户信息。
数据字典
由数据库创建和维护的表的集合,包含用户信息。
常见的数据字典有:
- user_tables 本用户拥有的表名称
- user_objects 本用户拥有的不同对象类型
SQL> select distinct object_type from user_objects;
OBJECT_TYPE
-------------------
SEQUENCE
PROCEDURE
TRIGGER
TABLE
INDEX
VIEW
6 rows selected
- user_catalog 本用户拥有的表、视图、同义词和序列
CREATE TABLE 创建表
- 普通创建
CREATE TABLE 表名(
列名1 数据类型 描述,
列名2 数据类型,
...
) - 使用查询创建
CREATE TABLE 表名 AS 查询语句
SQL> create table dept as select em.employee_id, em.last_name name, em.salary, em.hire_date from employees em where job_id='IT_PROG';
SQL> s
Table created
ALTER TABLE 修改表
增加、修改或删除列
- ADD 增加列
alter table 表名 ADD(列名1 类型, 列名2 类型, ...)
新增加的列将保存在最后的位置
SQL> alter table dept ADD(remark varchar2(255), job_id number(3) default 10);
Table altered
SQL> desc dept;
Name Type Nullable Default Comments
----------- ------------- -------- ------- --------
EMPLOYEE_ID NUMBER(6) Y
NAME VARCHAR2(25)
SALARY NUMBER(8,2) Y
HIRE_DATE DATE
REMARK VARCHAR2(255) Y
JOB_ID NUMBER(3) Y 10
- MODIFY 修改列
修改数据类型
SQL> alter table dept MODIFY(name varchar2(40));
Table altered
SQL> desc dept;
Name Type Nullable Default Comments
----------- ------------- -------- ------- --------
EMPLOYEE_ID NUMBER(6) Y
NAME VARCHAR2(40)
SALARY NUMBER(8,2) Y
HIRE_DATE DATE
REMARK VARCHAR2(255) Y
JOB_ID NUMBER(3) Y 10
修改列的默认值
SQL> alter table dept MODIFY(name varchar2(40) default '');
Table altered
SQL> desc dept;
Name Type Nullable Default Comments
----------- ------------- -------- ------- --------
EMPLOYEE_ID NUMBER(6) Y
NAME VARCHAR2(40) ''
SALARY NUMBER(8,2) Y
HIRE_DATE DATE
REMARK VARCHAR2(255) Y
JOB_ID NUMBER(3) Y 10
删除列的默认值
SQL> alter table dept MODIFY(name varchar2(40) default null);
Table altered
SQL> desc dept;
Name Type Nullable Default Comments
----------- ------------- -------- ------- --------
EMPLOYEE_ID NUMBER(6) Y
NAME VARCHAR2(40) null
SALARY NUMBER(8,2) Y
HIRE_DATE DATE
REMARK VARCHAR2(255) Y
JOB_ID NUMBER(3) Y 10
DROP COLUMN 删除列
SQL> alter table dept drop column date_hire;
Table altered
- RENAME 修改列名
ALTER TABLE 表名 RENAME column 原列名 to 新列名
SQL> alter table dept RENAME column hire_date to date_hire;
Table altered
SQL> desc dept;
Name Type Nullable Default Comments
----------- ------------- -------- ------- --------
EMPLOYEE_ID NUMBER(6) Y
NAME VARCHAR2(40) null
SALARY NUMBER(8,2) Y
DATE_HIRE DATE
REMARK VARCHAR2(255) Y
JOB_ID NUMBER(3) Y 10
RENAME 修改表
rename 原表名 to 新表名
SQL> rename dept to departs;
Table renamed
TRUNCATE TABLE 清空表中数据
truncate table 表名
数据删除效率高于delete,删除时不记录回滚日志。
SQL> truncate table emp;
Table truncated
DROP TABLE 删除表
drop table 表名
SQL> drop table emp;
Table dropped