十六、Oracle学习笔记:索引和约束(表字段快速查询和约束)
一、索引
1.为了方便快速查找数据表中的记录,索引也是数据库中的一个对象,索引内部信息包含记录的rowid,相当于地址信息。
2.索引被创建后,由数据库自动维护。
--格式:create [unique] index indexName on tableName(colName[,……])
--练习:创建索引,使用员工表中的部门号和员工编号create index emp_index on emp(deptno,empno);
--当使用语句:select * from emp order by deptno,empno;
--此时数据库中就使用了索引,进行快速排序。drop index emp_index;
4.索引的优缺点
当数据表需要频繁进行DML操作时,此时数据库会自动维护索引,会增加开销,所以索引的使用需要看表的操作情况。
二、约束(constraint)
1.也叫完整性约束条件,数据表中的一些限制条件。当数据表中的数据发生变化必须遵循这些限制条件,不遵循,不能进行DML操作。
2.分类
(1)非空约束 not null 简称 NN
(2)唯一性约束 unique 简称 Uk
(3)主键约束 primary key 简称PK
(4)外键约束 foreign key 简称FK
(5)检查约束 check 简称CK
3.非空约束的建立
drop table temp_100;create table temp_100(name varchar2(20) not null,age number(3) constraint temp_100_age_NN not null--列级约束);
约束分列级约束和表级约束两种写法。
列级约束:就是在建表时写在列类型后面。
表级约束:就是在建表时写在最后一个字段后。
非空约束没有表级约束的写法。
--建表后修改非空约束:
--解除非空约束:alter table temp_100 modify age number(3) null;
--添加非空约束:alter table temp_100 modify age number(3) not null;
4.唯一性约束:unique
对字段进行此约束时,字段的值是唯一的,不能重复,可以为null.
建表时:
create table temp_101(name varchar2(20) not null,idcard varchar2(30) unique,--列级约束);
--插入数据:insert into temp_101 values('张三','123456789');insert into temp_101 values('李四',null);drop table temp_102;create table temp_102(name varchar2(20) not null,idcard varchar2(30),constraint t_idcard_uk unique(idcard)--表级约束写法);--建表后设置唯一性约束:alter table temp_102 add constraint t_idcard_uk unique(idcard);
5.主键约束:(非空且唯一)
主键:是一张表中能给记录唯一标识符的字段。通常此字段除了作为唯一标识符,没有其他意义。
(1)一张表中只能有一个主键约束。其他约束没有个数限制。
(2)主键约束相当于非空约束和唯一性约束
(3)主键要选择表中尽可能没有数据逻辑的字段。
建表时(列级约束写法)
create table temp_103(id number(4) primary key,name varchar2(20));insert into temp_103 values(1001,'张三');insert into temp_103 values(1002,'李四');
建表时(表级约束写法)
create table temp_104(id number(4),name varchar2(20),constraint t_id_pk primary key(id,name));insert into temp_104 values(1001,'张三');insert into temp_104 values(1001,'李四');insert into temp_104 values(1002,null);
主键约束:可以对一个字段或多个字段进行约束,多个字段时,组合值:非空且唯一。
建表后增加主键约束:
create table temp_105(id number(4),name varchar2(20));alter table temp_105 add constraint t_105_id_pk primary key(id);
6:外键约束:
两张表的两个字段存在关系或者一张表的两个字段的关系。其中表B的一个字段的值依赖表A一个字段中的某一个值或者可以为null.
那么:表A叫主表、父表,表B叫从表,子表。
建表时(列级约束写法):
create table temp_120(empno number(4) primary key,mgr number(4) references temp_120(empno));
建表时(行级约束写法):
create table temp_106(empno number(4) primary key,mgr number(4),constraint te_mgr_fk foreign key(mgr) references temp_106(empno));insert into temp_106 values(1001,null);
建表后追加外键约束:
create table temp_107(id number(4),mgr number(4));alter table temp_107 add constraint t_107_mgr_fk foreign key(mgr) references temp_106(empno);insert into temp_107 values(1001,1003);
7.检查约束:
对某一字段或某些字段做一些条件限制。必须满足条件的可以DML.
建表时:
create table temp_108(name varchar2(20),gender char(1) check(gender in('f','m')));insert into temp_108 values ('张三','f');create table temp_109(name varchar2(20),sal number(9,2) check(sal>1000 and sal<10000));
建表后追加检查性约束:
create table temp_110(name varchar2(20),gender char(3));alter table temp_110 add constraint t_gender_ck check(gender ='女' or gender='男');
select * from emp where '1'='1';
十六、Oracle学习笔记:索引和约束(表字段快速查询和约束)相关推荐
- 推荐系统三十六式——学习笔记(三)
由于工作需要,开始学习推荐算法,参考[极客时间]->[刑无刀大牛]的[推荐系统三十六式],学习并整理. 3 原理篇之紧邻推荐 3.1 协同过滤 要说提到推荐系统中,什么算法最名满天下,我想一定是 ...
- ORACLE学习笔记 索引和约束
/*** 约束 ***/ * 如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约 束,但如果某个约束作用于多个字段, 必须在表级定义约束 * 在定义约束时可以通过CONST ...
- Oracle 学习笔记 14 -- 集合操作和高级子查询
Oracel提供了三种类型的集合操作:各自是并(UNION) .交(INTERSECT). 差(MINUS) UNION :将多个操作的结果合并到一个查询结果中,返回查询结果的并集,自己主动去掉反复的 ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵
专栏系列文章如下: 专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLA ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的实践-高斯牛顿法和曲线拟合
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的非线性最小二乘问题
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的状态估计问题
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲学习笔记总结(1)---非线性优化原理
第六讲学习笔记如下: 视觉SLAM十四讲学习笔记-第六讲-非线性优化的状态估计问题_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第六讲-非线性优化的非线性最小二乘问题_ ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-三角测量和实践
专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第 ...
- 视觉SLAM十四讲学习笔记专栏汇总
专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二 ...
最新文章
- 工业4.0进行时:工业机器人为何能够快速爆发?
- 创建租房网House脚本
- LinkedIn的使用开源项目
- Oracle结构设计技巧(访问数据库象访问内存一样 快)
- junit junit_JSON的JUnit Hamcrest Matcher
- 随机生成从大到小排序python_随机快速排序(使用Python描述)
- Hibernate查询方式
- iOS开发之地图与定位
- 【GDB调试学习笔记】Makefile多级目录生成多个可执行文件
- iPhone 无线投影到 Mac
- 远程计算机用户名win7,Win7远程桌面连接设置的方法
- 【技能】excel小技巧:利用宏制作工资条
- 百度旋转验证码打码模块,集成鱼刺模块类
- 腾讯产品经理培训生笔试攻略,笔试题型详细解析(送历年笔试题库)!
- 世界时间经纬_世界纬度和经度地图
- 如何通过组织管理提升团队战斗力?每个CTO都需要了解的三大支柱
- 红孩儿编辑器的模块设计13
- img固定宽高,图片等比缩小不变形
- AJAX基础教程zz
- Camera两种快门方式区别