zoukankan      html  css  js  c++  java
  • 十二、约束

    一、表格的约束

    constraints, 约束, 用于对表格的数据进行限制, 保证表格数据的完整性和一致性.

    语法:

    constraints 约束名 约束类型 (约束字段)

    二、主键约束(primary key)

    主键是用于唯一标识一条记录的字段, 必须保证既非空又唯一.

    一张表中, 只能有一个主键

    a) 在表级别定义主键约束, 对约束统一管理

    create table student (

           sno number(4),

           sname varchar2(12),

           gender char(3),

           age number(3),

           sdate date,

           clazz varchar2(20),

           email varchar2(50),

           constraints pk_student primary key (sno)

    );

    b) 表级别简化版定义主键约束, 省略约束名

    create table student (

           sno number(4),

           sname varchar2(12),

           gender char(3),

           age number(3),

           sdate date,

           clazz varchar2(20),

           email varchar2(50),

           primary key (sno)

    );

    c) 在列级别定义主键约束

    create table student (

           sno number(4) constraints pk_student primary key,

           sname varchar2(12),

           gender char(3),

           age number(3),

           sdate date,

           clazz varchar2(20),

           email varchar2(50)

    );

    d) 在列级别简化版定义主键约束

    create table student (

           sno number(4) primary key,

           sname varchar2(12),

           gender char(3),

           age number(3),

           sdate date,

           clazz varchar2(20),

           email varchar2(50)

    );

    e) 联合主键, 只能在表级别定义, 因为一个表只能有一个主键

    create table student (

           sno number(4),

           sname varchar2(12),

           gender char(3),

           age number(3),

           sdate date,

           clazz varchar2(20),

           email varchar2(50),

           constraints pk_student primary key (sno, email)

    );

    二、非空约束(not null)

    字段值不允许为空, 非空约束只能在列级别定义

    create table student (

           sno number(4),

           sname varchar2(12) not null,

           gender char(3),

           age number(3),

           sdate date,

           clazz varchar2(20),

           email varchar2(50),

           constraints pk_student primary key (sno)

    );

    三、唯一约束(unique)

    create table student (

           sno number(4),

           sname varchar2(12) not null,

           gender char(3),

           age number(3),

           sdate date,

           clazz varchar2(20),

           email varchar2(50), -- unique,

           constraints pk_student primary key (sno),

           constraints uk_student_email unique (email)

    );

    四、检查约束(check)

    用于限定字段值的取值范围

    create table student (

           sno number(4),

           sname varchar2(12) not null,

           gender char(3) check (gender in ('男', '女')),

           age number(3),

           sdate date,

           clazz varchar2(20),

           email varchar2(50),

           constraints pk_student primary key (sno),

           constraints uk_student_email unique (email),

           constraints ck_student_age check (age between 18 and 30)

    );

    五、外键约束(foreign key)

    用于约束表和表之间的关系. 两张表的依赖关系. 以emp表和dept表为例, emp表依赖dept表. 因此, dept表可以被称之为主表, emp表被称之为从表.

    注意:

    • Ø 主表中, 只有主键或者唯一键才可以被从表参考.
    • Ø 从表中作为外键的列, 类型一定要和主表的被参考列相同.

    a) 建立主表 clazz

    create table clazz (

           cno number(3) primary key,

           cname varchar2(20) not null,

           croom number(3)

    );

    b) 创建从表, 并定义外键 student

    create table student (

           sno number(4),

           sname varchar2(12) not null,

           gender char(3) default '男' check (gender in ('男', '女')),

           age number(3),

           sdate date,

           email varchar2(50),

           cno number(3),

           constraints pk_student primary key (sno),

           constraints uk_student_email unique (email),

           constraints ck_student_age check (age between 18 and 30),

           constraints fk_student_cno foreign key (cno) references clazz (cno)

    );

    c) 也可以在列级别定义外键, 如下:

    create table student (

           sno number(4),

           sname varchar2(12) not null,

           gender char(3) default '男' check (gender in ('男', '女')),

           age number(3),

           sdate date,

           email varchar2(50),

           cno number(3) references clazz(cno),

           constraints pk_student primary key (sno),

           constraints uk_student_email unique (email),

           constraints ck_student_age check (age between 18 and 30)

    );

  • 相关阅读:
    vue项目发布到服务器之后出现空白页和图片找不到的问题
    H5中设置一个元素一直在页面的最底部
    vue项目打包出现的问题(日常记录)
    vue写H5注册页面
    vue项目中动态图片生成
    Java中boolean类型占用多少个字节
    Java将一个目录下的所有数据复制到另一个目录下
    Java使用递归找出某目录下的所有子目录以及子文件
    实现短信验证码
    C#连接Oracle数据库(直接引用dll使用)
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12775346.html
Copyright © 2011-2022 走看看