• 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;       --    表字段的字符编码

  • 相关阅读:
    实例分析MySQL四种隔离级别的区别
    使用robot+selenium创建一个UI自动化测试用例
    EasyX图形库实现贪吃蛇游戏
    sql中如何添加数据
    10-1.WPF模板
    OOM排查
    JSD-2204-MyBatis动态sql,修改,查询-Day04
    k8s使用KubeSphere三步集成Harbor
    【黄啊码】用PHP7性能居然是5.6的三倍?赶紧看看它有什么新特性
    SQL 为什么历经半个世纪却经久不衰?
  • 原文地址:https://blog.csdn.net/a2285786446/article/details/133773076