oracle创建与管理表
1、一。表的命名规则
1。必须以字符开头
2。表名的长度必须在30个字符以内
3。只能包含A-Z,a-z,0-9,_,$,#
4。不能和同一用户下的其它表名相同
5。不能是Orcle数据库本身保留的关键字(select,table,create。。。。)
6。另外还有一种特殊用法,如果表名想包含任意字符 例如 @ & 中文 oracle的保留关键字之类的特殊字符,那么表名 必须要加 双引号 才可以进行使用 不过不建议使用因为不规范
二。建表的前提条件
1。要有建表的权限
2。要有建表的空间
三。建表的方式
1。使用子查询建立
create table 表名 as (子查询语句);
在表中有数据的情况下,是不能够理改表结构的,但是不更改表结构的情况下可以增加其它条件

2、从上图上看出通过了查询创建了emp06表,但emp05表中 现在是有外键约束和非空约束的,从下图中可以看出除了非空约束在创建表的时候可以传承过来,其它约束一律没有。
而且emp05表中的数据也会被创建进来


3、如果在子查询中带有一个不会成立的条件,那么再通过子查询建立表的时候只会把表结构拷贝过来,而表中的数据是不会拷贝过来的。例如where 1=0;

4、2。通过建表语法建立
语法
create table 用户名.表名(表名) (字段1 字段类型,字段2 字段类型,.......);也可以直接使用 表名 不加前面的用户名也可以 看下面图2


5、3。创建表使用约束条件
(1)创建表emp01 字段emono 非空约束

6、查看约束需要查看user_constraints;表 但是下图的显示方式是系统自定义的显示方式,并不能直观的看到约束类型属于哪一种约束

7、自定义约束
在创建表的时候可以通过constraint 约束名来自定义约束名字,下图中可以看到我们定义过的约束,在查看约束表的时候也能查看到我们定义的约束名 这样查看比较直观

8、(2)使用唯一约束创建表
从下图可以看出创建的非空约束 已经在约束表中可以看到了,约束的命名方式可以 约束类型_表名_字段名 这种格式 比较规范 对于唯一约束的字段是不允许相同内容的

9、(3)使用主键约束创建表 主键约束要求字段不能为空而且唯一的双重约束

10、(4)使用外键约束创建表
创建外键约束的时候,必须要参照一个已经存在的主键,这个主键可以是其它表的中的主键也可以是自身表中的主键,外键约束的类型是参照型的references
现在创建上图中 emp04一个外键 从下图可以看到外键已经创建成功(可以依据主键创建多个外键)


11、(4.1)现在向表中插入数据来验证外键约束的效果,在主键表emp04中如果主键表中没有数据,在外键表emp06中是无法插入数据的。主键表中的主键必须要比外键表中的外键先有数据才可以。但有一种情况例外,那就是空值,当向外键表中插入空值是可以成功的。

12、(4.2)现在通过删除表中的数据操作来验证主外键的效果。从下图中可以看出在进行删除的时候必须要先删除外键表中相应的数据后才可以删除主键表中的数据。如果直接删除主键表中的数据是无法进行删除的

13、但是通过另外的方式可以可以达到直接删除的效果
(4.2.1)删除主键表中的数据,把外键表中与主键相应的字段设置为空
先删除外键,再重新创建外键,在创建外键的语句结尾加上 on delete set null
alter table emp05 drop constraint FON_EMP05_EMPNO;

14、现在再进行对表中的数据进行删除操作,可以看出可以直接删除数据了,而且外键表中的约束与相对应的的主键表的约束已经变为空值

15、(4.2.2)删除主键表中的数据,连同外键表中的数据一并删除,也称为联级删除
先删除外键,再重新创建外键,在创建外键的语句结尾加上 on delete cascade;

16、现在执行删除操作,可以看到下图中的数据已经被删除,而且外键表中的数据也一并被删除了

17、(4.3)通过删除表的操作来验证主外键盘效果。在进行删除表操作的时候也需要先将外键表删除才可以进行主键表的删除操作,这里我是在emp05中也建立了一个依据emp04表的外键 所以emp05表也删除后 才可以对emp04表进行删除操作

18、(4.4)如何在表已经存在的情况下添加和删除外键约束
删除刚刚创建的约束re_emp05_empno ,在下图中第一次执行操作的时候,出现了错误,那是因为在另外一个窗口choy用户也登录了数据库所以无法执行删除操作,当另一窗口用户退出后即可删除成功了。


19、在已经存在emp05表中重新添加外键,从下图中看出外键已经添加

20、(4.5)使用检测约束创建表 有检测约束的表不能进行子查询
先向emp表中增加一个字段 salary number(7,2) 这个含义是 类型为数字 长度为7 小数点为2 也就相当于小数点前面的整数是5位

21、现在向emp表中增加一个检测约束 让salary=>1000 从下图中可以看出,字段已经添加上了。在向表中插入数据的时候,第一条成功了,因为满足检测约束条件(salary>=1000且满足number(7,2)),第二条数据可以看到小于1000的数据是无法插入的

22、(4.6)对于有约束的表,在进行删除表操作的时候如果使用drop table 表名;的方式 那么约束条件是不会被删除掉的

23、如果想彻底删除表,要使用drop table 表名 purge; 表中的约束也一起被删除了

24、四。更改表结构
1。向表中增加字段
语法:
alter table 表名 add (字段名 字段类型,字段名 字段类型.....);

25、2。对表中的字段进行修改
如果表中已经存在有数据,那么表结构的数据类型是无法进行修改的。如果在不改变字段类型的情况下,只是增加字段类型的长度的话是可以进行更改的。

26、3。删除表中的字段,在表中有数据的情况下也是可以进行删除操作的
