Linux 环境下Oracle安装与调试(六)之约束(主键,外键,CHECK,非空) 和 索引
2014-04-29 22:43
405 查看
1、约束
===============================================
为什么需要主键 - 主键的唯一性(数据不能出现重复) , 基本上每一张表都会有这个主键
创建一个学生表:
CREATE TABLE xue_sheng( id integer, xing_ming varchar(25),xing_bie number, fen_shu number, b_id integer);
INSERT INTO xue_sheng VALUES(1,'ZhanSan',1,80,1);
INSERT INTO xue_sheng VALUES(2,'LiSi',1,90,2);
INSERT INTO xue_sheng VALUES(3,'ZhanHong',0,75,2);
INSERT INTO xue_sheng VALUES(4,'ChenXiaoMing',1,85,1);
如果不设置学号id 这个唯一性, 那么就会出现学号重复的现象, 2个同学拥有相同的学号。
如果不设置学号id 这个唯一性, 那么就会出现学号重复的现象, 2个同学拥有相同的学号。
INSERT INTO xue_sheng VALUES(1,'test',0,75,1);
把 id 这个字段设置为主键:
ALTER TABLE xue_sheng ADD CONSTRAINT pk_xue_sheng PRIMARY KEY( id );
这样你再插入重复的id ,就会出错
#设置主键
#删除主键
SQL> alter table xue_sheng drop constraint pk_xue_sheng;
Table altered.
#非空
==================================================
修改表中的 xing_ming 字段不能为空
INSERT INTO xue_sheng VALUES(5,'',0,75,1);
增加姓名不为空约束条件
#check约束
性别只能是1或者0
##创建约束
SQL> ALTER TABLE xue_sheng ADD CONSTRAINT ck_xue_sheng CHECK(xing_bie=1 or xing_bie=0);
Table altered.
##删除约束
SQL> alter table xue_sheng drop constraint ck_xue_sheng;
Table altered.
#外键约束:一张表的外键就是另一张表的主键
================================================================
外键的例子演示 :
创建一个班级表:
CREATE TABLE ban_ji( id integer , ban_ji varchar(25));
INSERT INTO ban_ji VALUES(1,'1-(1)');
INSERT INTO ban_ji VALUES(2,'1-(2)');
----------------------------------------------
#在没有外键约束前,可以对xuesheng表进行插入操作;
现在在学生表插入数据,如果不对应 班级表的id也是可以插入的,不过这是没有意义的记录
#得先给banji创建主键ID,然后再给xue_sheng表创建外键,一旦创建了这个外键, 就不能在学生表随意插入数据,要参照班级表的id 。
还有班级表的id 也不能随便修改或者删除, 因为如果修改了,学生表就没有数据参照了。
2、索引
当数据量非常大的时候, 查询速度明显提高,对数据的一个有序排列
其实创建主键的时候已经对主键做了一个唯一索引
还有一个要注意的, 如果你有大量数据要插入表中, 先把数据插入数据表, 再建立索引,
否则会导致插入数据慢。
#位图索引
对于唯一值很少的字段, 可以建立 位图索引, 例如 性别 只有 男,女
SQL> create bitmap index bit_xb on xue_sheng(xing_bie);
Index created.
本文出自 “平哥_Jason” 博客,请务必保留此出处http://jasonliping.blog.51cto.com/471157/1404800
===============================================
为什么需要主键 - 主键的唯一性(数据不能出现重复) , 基本上每一张表都会有这个主键
创建一个学生表:
CREATE TABLE xue_sheng( id integer, xing_ming varchar(25),xing_bie number, fen_shu number, b_id integer);
INSERT INTO xue_sheng VALUES(1,'ZhanSan',1,80,1);
INSERT INTO xue_sheng VALUES(2,'LiSi',1,90,2);
INSERT INTO xue_sheng VALUES(3,'ZhanHong',0,75,2);
INSERT INTO xue_sheng VALUES(4,'ChenXiaoMing',1,85,1);
如果不设置学号id 这个唯一性, 那么就会出现学号重复的现象, 2个同学拥有相同的学号。
如果不设置学号id 这个唯一性, 那么就会出现学号重复的现象, 2个同学拥有相同的学号。
INSERT INTO xue_sheng VALUES(1,'test',0,75,1);
把 id 这个字段设置为主键:
ALTER TABLE xue_sheng ADD CONSTRAINT pk_xue_sheng PRIMARY KEY( id );
这样你再插入重复的id ,就会出错
#设置主键
#删除主键
SQL> alter table xue_sheng drop constraint pk_xue_sheng;
Table altered.
#非空
==================================================
修改表中的 xing_ming 字段不能为空
INSERT INTO xue_sheng VALUES(5,'',0,75,1);
增加姓名不为空约束条件
#check约束
性别只能是1或者0
##创建约束
SQL> ALTER TABLE xue_sheng ADD CONSTRAINT ck_xue_sheng CHECK(xing_bie=1 or xing_bie=0);
Table altered.
##删除约束
SQL> alter table xue_sheng drop constraint ck_xue_sheng;
Table altered.
#外键约束:一张表的外键就是另一张表的主键
================================================================
外键的例子演示 :
创建一个班级表:
CREATE TABLE ban_ji( id integer , ban_ji varchar(25));
INSERT INTO ban_ji VALUES(1,'1-(1)');
INSERT INTO ban_ji VALUES(2,'1-(2)');
----------------------------------------------
#在没有外键约束前,可以对xuesheng表进行插入操作;
现在在学生表插入数据,如果不对应 班级表的id也是可以插入的,不过这是没有意义的记录
#得先给banji创建主键ID,然后再给xue_sheng表创建外键,一旦创建了这个外键, 就不能在学生表随意插入数据,要参照班级表的id 。
还有班级表的id 也不能随便修改或者删除, 因为如果修改了,学生表就没有数据参照了。
2、索引
当数据量非常大的时候, 查询速度明显提高,对数据的一个有序排列
其实创建主键的时候已经对主键做了一个唯一索引
还有一个要注意的, 如果你有大量数据要插入表中, 先把数据插入数据表, 再建立索引,
否则会导致插入数据慢。
#位图索引
对于唯一值很少的字段, 可以建立 位图索引, 例如 性别 只有 男,女
SQL> create bitmap index bit_xb on xue_sheng(xing_bie);
Index created.
本文出自 “平哥_Jason” 博客,请务必保留此出处http://jasonliping.blog.51cto.com/471157/1404800
相关文章推荐
- Oracle:查找表的主键,外键,唯一性约束,索引
- oracle建表的时候同时创建主键,外键,注释,约束,索引
- Oracle:查找表的主键,外键,唯一性约束,索引
- Linux 环境下Oracle安装与调试(五)之事务、触发器
- Oracle:查找表的主键,外键,唯一性约束,索引
- Oracle:查找表的主键,外键,唯一性约束,索引
- ORACLE: 查询(看)表的主键、外键、唯一性约束和索引
- Oracle中主键、外键、索引、序列、唯一性约束的创建
- Oracle中主键、外键、索引、序列、唯一性约束的创建
- SQL Server 创建约束图解(索引,外键,主键,check,唯一)
- Linux 环境下Oracle安装与调试(一)之安装
- ORACLE约束:主键,外键,非空,唯一,条件
- 5.oracle建表的时候同时创建主键,外键,注释,约束,索引
- oracle建表的时候同时创建主键,外键,注释,约束,索引
- Linux 环境下Oracle安装与调试(一)之安装
- Linux 环境下Oracle安装与调试(二)之创建数据库,数据增删改
- Oracle中主键、外键、索引、序列、唯一性约束的创建
- Oracle:查找表的主键,外键,唯一性约束,索引
- Oracle查询表的索引,主键,外键和约束条件
- 数据库六大约束用法:主键(primary key)、外键(foreign key)、非空(not null)、默认(default)、检查(check)、唯一(unique)