oracle入门笔记四

一、数据库约束

1、主键约束

2、外键约束

3、唯一值约束

4、检查约束

5、默认值约束

6、非空约束

*****数据库约束作用

数据库约束都是作用在字段上,保证数据的完整性,表中约束越多数据就越完整,保证都是有效数据

约束的缺点

数据库表的约束越多,增、删、改会变慢

二、主键约束

1、主键约束

主键约束是表中记录的唯一标识,表中至少有一个字段代表记录的唯一标识,这个字段就是主键

主键不能为空,值不能重复,表一定要有主键

a、创表时,增加主键约束,系统名称

create table 表名(

主键字段  数据类型 primary key,

普通字段  数据类型

);

b、创表时,增加主键约束,指定名称

create table 表名(

主键字段  数据类型,

普通字段  数据类型,

constraint 约束名 primary key (主键字段)

);

c、给已有的表增加主键约束,系统名称

alter table 表名 add primary key (主键字段);

d、给已有的表增加主键约束,指定名称

alter table 表名 add constraint 约束名 primary key (主键字段);

e、删除约束(可以删除任何约束)

alter table 表名 drop constraint 约束名;

2、复合主键

多个字段作为主键,多个字段内容不能重复

a、创表时,增加主键约束,系统名称

create table 表名(

主键字段1  数据类型,

主键字段2  数据类型,

普通字段  数据类型,

primary key(主键字段1, 主键字段2)

);

b、创表时,增加主键约束,指定名称

create table 表名(

主键字段1  数据类型,

主键字段2  数据类型,

普通字段  数据类型,

constraint 约束名 primary key (主键字段1, 主键字段2)

);

c、给已有的表增加主键约束,系统名称

alter table 表名 add primary key (主键字段1, 主键字段2);

d、给已有的表增加主键约束,指定名称

alter table 表名 add constraint 约束名 primary key (主键字段1, 主键字段2);

三、外键约束

1、什么是外键约束

两个表如果有关联关系,那么关联字段就是外键,外键字段指向主键字段,

外键的值来源与主键的值,外键可以为空,可以重复

a、创表时,增加外键约束,系统名称

create table 表名(

主键字段  数据类型 primary key,

普通字段  数据类型,

外键字段   数据类型,

foreign key (外键字段) references 表名 (主键字段)

);

b、创表时,增加外键约束,指定名称

create table 表名(

主键字段  数据类型 primary key,

普通字段  数据类型,

外键字段   数据类型,

constraint 约束名 foreign key (外键字段) references 表名 (主键字段)

);

c、给已有的表增加外键约束,系统名称

alter table 表名 add foreign key (外键字段) references 表名 (主键字段);

d、给已有的表增加外键约束,指定名称

alter table 表名 add constraint 约束名 foreign key (外键字段) references 表名 (主键字段);

2、主键与外键的区别

a、含义不同

主键:记录的唯一标识,不能重复,不能为空

外键:表与表之间的关联字段,外键的值来源与主键的值,外键可以为空,可以重复

b、作用不同

主键:保证数据的完整性,防止重复记录产生

外键:建立表与表之间的关系

c、个数不同

主键:一个表只能有一个主键

外键:一个表可以有多个外键

4、表与表之间的关系种类

关系型数据库中的关系指的就是主外键关系,主外键关系表示了表与表之间的关系,可以分为

以下情况:

一对多(在多的那张表中添加外键字段)

多对一

一对一

多对多(一定会产生第三张表)

*****四、数据库三范式(数据库建表的三范式)

第一范式:字段具有原子性,不可再分,所有关系型数据库都必须满足第一范式

第二范式:在满足第一范式基础上满足第二范式,一张表至少有一个字段代表记录的唯一标识,

                这个字段称为主键,所有的表都应该有主键

    第三范式:在满足第二范式基础上满足第三范式,如果表与表之间有关系,一张表只能包含另一

                    表的主键,不能包含其他字段,这个字段称为外键

五、唯一值约束

1、什么是唯一值约束

要求表中字段的值不能重复,称为唯一值约束

a、创表时,增加唯一值约束,系统名称

create table 表名(

主键字段  数据类型 primary key,

普通字段  数据类型,

唯一值字段   数据类型,

unique (唯一值字段 )

);

b、创表时,增加唯一值约束,指定名称

create table 表名(

主键字段  数据类型 primary key,

普通字段  数据类型,

唯一值字段   数据类型,

constraint 约束名 unique (唯一值字段 )

);

c、给已有的表增加唯一值约束,系统名称

alter table 表名 add unique (唯一值字段 );

d、给已有的表增加唯一值约束,指定名称

alter table 表名 add constraint 约束名 unique (唯一值字段 );

六、检查约束

1、什么是检查约束

要求表中字段的值在一定的取值范围,称为检查约束

a、创表时,增加检查约束,系统名称

create table 表名(

主键字段  数据类型 primary key,

普通字段  数据类型,

check (表达式 )

);

b、创表时,增加检查约束,指定名称

create table 表名(

主键字段  数据类型 primary key,

普通字段  数据类型,

constraint 约束名 check (表达式 )

);

c、给已有的表增加检查约束,系统名称

alter table 表名 add check (表达式 );

d、给已有的表增加检查约束,指定名称

alter table 表名 add constraint 约束名 check (表达式 );

七、默认值约束

1、什么是默认值约束

表中字段值为空时,给一个默认值,称为默认值约束

a、创表时,增加默认值约束

create table 表名(

主键字段  数据类型 primary key,

普通字段  数据类型 default 默认值

);

b、给已有的表增加默认值约束

alter table 表名 modify 字段名 default 默认值;

八、非空约束

1、什么是非空约束

表中字段的值不能为空,称为非空约束

a、创表时,增加非空约束

create table 表名(

主键字段  数据类型 primary key,

普通字段  数据类型 not null

);

b、给已有的表增加非空约束

alter table 表名 modify 字段名 not null;

九、序列

1、什么是序列

序列相当于一个数字生成器,生成一个唯一的自增整数

2、简单方式创建序列

create sequence 序列名;

3、详细方式创建序列

create sequence seq_person

start with 起始值

increment by 步长

maxvalue 最大值

minvalue 最小值

cache 缓存大小;

4、查询序列的值

select 序列.nextval from dual;              查看序列下一个值

select 序列.currval from dual;               查看序列当前值

5、修改序列

alter sequence 序列名 属性 值;

注:起始值不能改,步长、最大值、最小值可以改

6、删除序列

drop sequence 序列名;

7、序列的作用

给主键添值

一、索引(index)

1、索引的作用

索引是优化查询的一种,使得查询效率特别高,索引是优化存储,索引作用在字段上

2、什么样的字段适合建索引

a、经常被查询的字段

b、不能为空,不能重复

c、字段的值不会被经常改变

注:主键、唯一值约束默认会建索引

3、索引的创建

a、普通索引

create index 索引名 on 表名(字段名);

b、唯一索引

create unique index 索引名 on 表名(字段名);

c、复合索引

create index 索引名 on 表名(字段名1, 字段名2);

4、如何使用索引

索引是自动使用,只要SQL语句where条件跟索引字段就行

5、删除索引

drop index 索引名;

6、重建索引

alter index 索引名 rebuild reverse;

*****7、什么情况下不走索引字段

a、模糊查询不走索引

b、复合索引查询单个字段不走索引

c、索引字段不能作用于函数

d、索引字段不能作用于运算

8、强制走索引

select /*+index(t 索引名)*/* from 表名 t where t.索引字段 like 值;

二、视图

1、什么是视图

视图是通过一条SQL语句查询的结果集,称为虚拟表,可以当做表使用,视图一般用于查询,

不能增删改数据

视图 = 虚拟表 = DQL查询语句

2、创建视图

create view 视图名 as 查询语句;

3、视图的优缺点

优点:

a、视图的字段来源于各个表,相同的数据可以产生不同的视图,扩展性好

b、通过简单的SQL语句能查询出复杂的结果

c、视图独立性强,利于后期维护

d、视图安全性高,创建与删除视图必须要有DBA权限,删除视图不会删除表

缺点:

视图不会提高查询效率

三、DCL语句

1、给用户赋权

grant 权限 to 用户名;

2、撤销用户权限

revoke 权限 from 用户名;

select userenv('language') from dual;              oracle字符编码集

show create database qf2112;      --     数据库字符编码

show full columns from t_person;       --    表字段的字符编码

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海上生日朋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值