DDL指数据定义语言,用来操作数据库中的对象,对象包括了表、用户、视图、索引。
DDL属于隐式事务,执行即提交事务,对于数据库的改变是永久的。
创建对象:create
删除对象:drop
修改对象:alter
重命名对象:rename
一、表对象
分类:
用户表:由用户创建和维护的集合,包含用户信息。
数据字典:由数据库系统创建和维护的集合,包含数据库信息。
Oracle中常用的数据字典:
user_tables,包含本用户拥有的所有的表的信息。
user_objects,包含本用户拥有的所有的数据类型的信息。
user_catalog,包含本用户拥有的表、视图、同义词、序列的信息。
二、操作表
创建:
指定列名列属性创建表:creat table 表名(列名1 数据类型1,列名2 数据类型2.......)
通过结果集创建表:creat table 表名 as 查询语句
修改:
增加列:alter table 表名 add(列名 数据类型)
修改列:alter table 表名 modify(列名 数据类型 default 默认值)
删除列:alter table 表名 drop column 列名
改列名:alter table 表名 rename column 原列名 to 新列名
改名:
rename 原表名 to 新表名
截断:
truncate table 表名,把表中所有数据删除。
删除:
drop table 表名
三、操作约束
约束包括不为空(not null)、唯一(unique)、主键(Primay Key)、外键(Foregin Key)、检查(Check)。
一般都需要给约束取名字,不取的话系统会帮忙取默认名字。
添加:
在创建表时
给列添加约束(除了外键约束):在列后面直接指定约束
creat table 表名(列名 数据类型 constraint 约束名 约束,....)
除了非空约束可以:在列定义完后,定义约束
creat table 表名 (列名 数据类型,......, constraint 约束名 约束(列名))
外键约束:必须在列定义完后单独定义外键,注意外键参照的表和列都存在
create table 表名(列名 数据类型,..... constraint 约束名 foreign key(列名) references 参照表名(参照列名))
在表创建好后
给列添加约束:add
alter table 表名 add(列名 constraint 约束名 约束,.....)
给列修改约束:modify
alter table 表名 modify (列名 constraint 约束名 约束,.....)
查看约束:
使用数据字典可以查看约束。Oracle中查看指定表的所有约束:
select constraint_name,constraint_type,search_condition from user_constraints where table_name = 表名
禁用约束:
当此键为另一个表的外键时,需要加cascade关键字,它声明与此列相关的约束全部禁用。
alter table 表名 disable constraint 约束名 cascade
启用约束:
alter table 表名 enable constraint 约束名
四、视图对象
视图是根据需求保存的一个结果集,它能够作为一个表来被查询,也可通过它进行数据修改(不建议)。
对视图DML操作,实际上是操作数据源的表。
不能DML操作的列:
函数列,表达式列,通过distinct获得的列。
分类:
简单视图:数据来源一个表,列为单独列,无分组,可以进行DML操作。
复杂视图:数据来源多个表,列中可以有函数值、表达式,可以是分组结果,不能进行DML操作。
内建视图:每一个子查询获得的结果集都是一个内建视图,可以通过取别名来引用它的列。(在from子句中使用的子查询)
创建:
通过查询语句创建一个视图,不知道列名时,默认使用查询中投影的列名。
creat view 视图名(列名1,列名2,...) as 查询语句
指定视图为只读视图:在创建视图语句的最后加 with read only
删除:
drop view 视图名
标签:语句,列名,SQL,视图,约束,表名,table,alter,DDL From: https://www.cnblogs.com/lurenjia-bky/p/16982738.html