精华内容
下载资源
问答
  • 列级完整性约束条件
    千次阅读
    2015-09-21 19:22:32

    建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表中数据时由DBMS自动检查该操作是否违背这些完整性约束条件。


    如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。 



    表级完整性约束必须定义在列级完整性约束的后面。

       




     例1 建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。 

        CREATE TABLE Student 
       (Sno CHAR(5)NOT NULL UNIQUE, /*列级完整性约束条件,Sno取值唯一, 
        Sname CHAR(20)UNIQUE, 不许取空值*/ 
        Ssex CHAR(1), 
        Sage INT, 
        Sdept CHAR(15)); 
      
    常用完整性约束: 
    主码约束:    PRIMARY  KEY 
    唯一性约束:UNIQUE 
    非空值约束:NOT NULL 
    参照完整性约束
    更多相关内容
  • 2017-06-18 回答多个表之间有参照完整性约束. check 一般是检查自己这个表的 约束, 例如 什么性别只能是 0/1, 年龄不能大于 100 之类的检查. 多表参照, 一般是使用 外键约束来实现的: 例如: -- 创建测试主表. id 是...

    2017-06-18 回答

    多个表之间有参照完整性约束. check 一般是检查自己这个表的 约束, 例如 什么性别只能是 0/1, 年龄不能大于 100 之类的检查. 多表参照, 一般是使用 外键约束来实现的: 例如: -- 创建测试主表. id 是主键. create table test_main ( id int not null, value varchar(10), primary key(id) ); -- 创建测试子表. create table test_sub ( id int not null, main_id int , value varchar(10), primary key(id) ); -- 插入测试主表数据. insert into test_main(id, value) values (1, 'one'); insert into test_main(id, value) values (2, 'two'); -- 插入测试子表数据. insert into test_sub(id, main_id, value) values (1, 1, 'oneone'); insert into test_sub(id, main_id, value) values (2, 2, 'twotwo'); sql> -- 创建外键(默认选项) sql> alter table test_sub add constraint main_id_cons foreign key (main_id) references test_main; table altered. sql> sql> -- 测试删除主表数据. 将出错 ora-02292: 违反完整约束条件 sql> delete 2 test_main ...多个表之间有参照完整性约束. check 一般是检查自己这个表的 约束, 例如 什么性别只能是 0/1, 年龄不能大于 100 之类的检查. 多表参照, 一般是使用 外键约束来实现的: 例如: -- 创建测试主表. id 是主键. create table test_main ( id int not null, value varchar(10), primary key(id) ); -- 创建测试子表. create table test_sub ( id int not null, main_id int , value varchar(10), primary key(id) ); -- 插入测试主表数据. insert into test_main(id, value) values (1, 'one'); insert into test_main(id, value) values (2, 'two'); -- 插入测试子表数据. insert into test_sub(id, main_id, value) values (1, 1, 'oneone'); insert into test_sub(id, main_id, value) values (2, 2, 'twotwo'); sql> -- 创建外键(默认选项) sql> alter table test_sub add constraint main_id_cons foreign key (main_id) references test_main; table altered. sql> sql> -- 测试删除主表数据. 将出错 ora-02292: 违反完整约束条件 sql> delete 2 test_main 3 where 4 id = 1; delete * error at line 1: ora-02292: integrity constraint (hr.main_id_cons) violated - child record found

    展开全文
  • 完整性约束

    2020-12-21 10:06:14
    在创建表和修改表时,可通过定义约束条件来保证数据的完整性和一致性。约束条件是一些规则,在对数据进行插入、删除和修改时要对这些规则进行验证,从而起到约束作用。命名规则推荐采用:约束类型_约束字段:非空约束...

    在数据库设计的时候,表的数据有一定的取值范围和联系,多表之间的数据有时也有一定的参照关系。在创建表和修改表时,可通过定义约束条件来保证数据的完整性和一致性。约束条件是一些规则,在对数据进行插入、删除和修改时要对这些规则进行验证,从而起到约束作用。

    命名规则推荐采用:约束类型_约束字段:非空约束:NN表名列名

    唯一约束:UK表名列名

    主键约束:PK_表名

    外键约束:FK表名列名

    检查约束:CK表名列名

    一、主键约束

    要求主键列数据唯一,并且不允许为空。主键可以包含表的一列或多列,如果包含表的多列,则需要在表级定义。

    1. 在表级定义主键约束

    -- [1] 主键约束: PRIMARY KEYDROP TABLE student;

    CREATE TABLE student (

    sno NUMBER(3),

    sname VARCHAR2(15),

    gender CHAR(3) DEFAULT '男',

    age NUMBER(2),

    sdate DATE,

    clazz VARCHAR2(30),

    email VARCHAR2(30),

    CONSTRAINTS pk_student PRIMARY KEY (sno)

    -- PRIMARY KEY (sno)-- 简化版);

    联合主键, 只能在表级别定义。

    DROP TABLE student;

    CREATE TABLE student (

    sno NUMBER(3),

    sname VARCHAR2(15),

    gender CHAR(3) DEFAULT '男',

    age NUMBER(2),

    sdate DATE,

    clazz VARCHAR2(30),

    email VARCHAR2(30),

    CONSTRAINTS pk_student PRIMARY KEY (sno, sname)

    );

    2. 在列级定义主键约束

    DROP TABLE student;

    CREATE TABLE student (

    no NUMBER(3) CONSTRAINTS pk_student PRIMARY KEY,-- 在列级别定义主键约束 sno NUMBER(3) PRIMARY KEY,

    sname VARCHAR2(15),

    gender CHAR(3) DEFAULT '男',

    age NUMBER(2),

    sdate DATE,

    clazz VARCHAR2(30),

    email VARCHAR2(30)

    );

    二、非空约束

    要求该列不能为空,非空约束只能在列级别定义。

    -- [2] 非空约束: NOT NULLDROP TABLE student;

    CREATE TABLE student (

    sno NUMBER(3),

    -- sname VARCHAR2(15) CONSTRAINTS nn_student_sname NOT NULL, sname VARCHAR2(15) NOT NULL,

    gender CHAR(3) DEFAULT '男',

    age NUMBER(2),

    sdate DATE,

    clazz VARCHAR2(30),

    email VARCHAR2(30),

    CONSTRAINTS pk_student PRIMARY KEY (sno)

    );

    三、唯一约束

    要求该列唯一,允许为空。

    -- [3] 唯一约束: UNIQUEDROP TABLE student;

    CREATE TABLE student (

    sno NUMBER(3),

    sname VARCHAR2(15) NOT NULL,

    gender CHAR(3) DEFAULT '男',

    age NUMBER(2),

    sdate DATE,

    clazz VARCHAR2(30),

    email VARCHAR2(30) UNIQUE,

    CONSTRAINTS pk_student PRIMARY KEY (sno)

    -- CONSTRAINTS uk_student_email UNIQUE (email));

    四、检查约束

    某列取值范围限制、格式限制等,如年龄的约束。

    -- [4] 检查约束: CHECKDROP TABLE student;

    CREATE TABLE student (

    sno NUMBER(3),

    sname VARCHAR2(15) NOT NULL,

    gender CHAR(3) DEFAULT '男' CHECK(gender IN ('男', '女')),

    age NUMBER(2) CHECK (age BETWEEN 18 AND 30),

    sdate DATE,

    clazz VARCHAR2(30),

    email VARCHAR2(30),

    CONSTRAINTS pk_student PRIMARY KEY (sno),

    CONSTRAINTS uk_student_email UNIQUE (email)

    -- CONSTRAINTS ck_student_age CHECK (age BETWEEN 18 AND 30));

    五、外键约束

    用于两表间建立关系,需要指定引用主表的那列。外键通常用来约束两个表之间的数据关系,定义外键的那张表称为子表,另一张表称为主表。在表的创建过程中,应该先创建主表,后创建子表。

    -- [5] 外键约束: FOREIGN KEY-- 创建班级表CREATE TABLE clazz (

    cno NUMBER(3) PRIMARY KEY,

    cname VARCHAR2(30) NOT NULL UNIQUE,

    cdate DATE

    );

    -- 创建学生表DROP TABLE student;

    CREATE TABLE student (

    sno NUMBER(3),

    sname VARCHAR2(15) NOT NULL,

    gender CHAR(3) DEFAULT '男',

    age NUMBER(2),

    sdate DATE,

    email VARCHAR2(30),

    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),

    CONSTRAINTS ck_student_gender CHECK(gender IN ('男', '女'))

    -- 在表级别定义外键约束 -- CONSTRAINTS fk_student_cno FOREIGN KEY (cno) REFERENCES clazz (cno));

    六、联级删除

    添加外键约束后,在删除主表信息时,会先检查该信息在子表中有没有被引用。如果有关联的子表信息,那么主表中的信息不允许被删除,必须先删除子表中的相关信息,才能删除主表中的信息。这种情况下,我们可以设置联级删除,来执行相关操作。

    对于主表的删除和修改主键值的操作,会对依赖关系产生影响,以删除为例:当要删除主表的某个记录(即删除一个主键值,那么对依赖的影响可采取下列3种做法:RESTRICT方式:只有当依赖表中没有一个外键值与要删除的主表中主键值相对应时,才可执行删除操作。

    CASCADE方式:将依赖表中所有外键值与主表中要删除的主键值相对应的记录一起删除。

    SET NULL方式:将依赖表中所有与主表中被删除的主键值相对应的外键值设为空值。

    INSERT INTO clazz VALUES (202, 'JAVA大牛班', SYSDATE);

    INSERT INTO clazz VALUES (102, 'Android小牛班', SYSDATE);

    INSERT INTO clazz VALUES (222, 'PHP牛牛班', SYSDATE);

    INSERT INTO clazz VALUES (401, '大数据', SYSDATE);

    INSERT INTO clazz VALUES (502, 'UI女神班', SYSDATE);

    INSERT INTO student VALUES(112, '张无忌', '男', 18, to_date('2017-3-28', 'yyyy-mm-dd'), 'test@123.com', 401);

    SELECT * FROM student;

    SELECT * FROM clazz;

    -- 删除编号为222 的班级信息DELETE FROM clazz WHERE cno=222;

    DELETE FROM student WHERE cno=222;

    -- 设置级联删除DROP TABLE student;

    CREATE TABLE student (

    sno NUMBER(3),

    sname VARCHAR2(15) NOT NULL,

    gender CHAR(3) DEFAULT '男',

    age NUMBER(2),

    sdate DATE,

    email VARCHAR2(30),

    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 ck_student_gender CHECK(gender IN ('男', '女')),

    CONSTRAINTS fk_student_cno FOREIGN KEY (cno) REFERENCES clazz (cno) ON DELETE CASCADE-- 级联删除,同时将子表中关联的数据一起删除);

    DELETE FROM clazz WHERE cno=401;

    -- 设置级联设空DROP TABLE student;

    CREATE TABLE student (

    sno NUMBER(3),

    sname VARCHAR2(15) NOT NULL,

    gender CHAR(3) DEFAULT '男',

    age NUMBER(2),

    sdate DATE,

    email VARCHAR2(30),

    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 ck_student_gender CHECK(gender IN ('男', '女')),

    CONSTRAINTS fk_student_cno FOREIGN KEY (cno) REFERENCES clazz (cno) ON DELETE SET NULL-- 级联设空,将子表中关联数据设置为null);

    -- 删除班级表(强制删除主表)-- 先删除约束, 再删除表格DROP TABLE clazz CASCADE CONSTRAINTS;

    七、修改表时添加约束

    修改表时只能添加或者删除约束,不能修改约束。

    -- 删除约束ALTER TABLE student DROP CONSTRAINTS ck_student_gender;

    -- 在修改表格的同时,添加约束CREATE TABLE clazz (

    cno NUMBER(3) PRIMARY KEY,

    cname VARCHAR2(30) NOT NULL UNIQUE,

    cdate DATE

    );

    DROP TABLE student;

    CREATE TABLE student (

    sno NUMBER(3),

    sname VARCHAR2(15) NOT NULL,

    gender CHAR(3) DEFAULT '男',

    age NUMBER(2),

    sdate DATE,

    email VARCHAR2(30),

    cno NUMBER(3)

    );

    ALTER TABLE student ADD CONSTRAINTS pk_student PRIMARY KEY (sno);

    ALTER TABLE student ADD CONSTRAINTS uk_student_email UNIQUE (email);

    ALTER TABLE student ADD CONSTRAINTS ck_student_age CHECK (age BETWEEN 18 AND 30);

    ALTER TABLE student DROP CONSTRAINTS ck_student_gender CHECK (gender IN ('男', '女'));

    ALTER TABLE student DROP CONSTRAINTS fk_student_cno FOREIGN KEY (cno) REFERENCES clazz (cno);

    展开全文
  • 列的完整性约束

    千次阅读 2020-05-29 15:01:33
    文章目录1 设置列的完整性约束1.1 设置表字段的主键约束(PRIMARY KEY,PK)1.2 设置表字段的外键约束(FOREIGN KEY,FK)1.3 设置表字段的非空约束(NOT NULL, NK)1.4 设置表字段唯一约束(UNIQUE,UK)1.5 设置...

    1 设置列的完整性约束

    完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。MySQL中基本的完整性约束条件如下表所示:
    在这里插入图片描述

    1.1 设置表字段的主键约束(PRIMARY KEY,PK)

    主键是表的一个特殊字段,能唯一标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证用来表明人的身份,每个人都具有唯一的身份证号。设置表的主键是指在创建表时设置表的某个字段为该表的主键。

    主键的主要目的是帮助数据库管理系统以最快的速度查找到表的某一条信息。主键必须满足的条件就是主键必须是唯一的,表中任意两条记录的主键字段的值不能相同,并且是非空值(设置为主键后,该列就默认为非空了)。主键可以是单一的字段,也可以是多个字段的组合。

    单字段主键:
    单字段主键的语法规则如下:
    CREATE TABLE tablename( propName propType PRIMARY KEY, ...... );

    CREATE TABLE tablename( propName propType , ...... PRIMARY KEY(propType) );

    创建表school,设置id字段为PK约束,再查看class表信息,SQL语句如下:

    mysql> create database school;   #创建数据库school
    mysql> use school;   #选择数据库school 
    mysql> create table class(id int PRIMARY KEY, name varchar(128), teacher varchar(64));         #创建表class
    mysql> desc class ;  #查询表class 的定义, describe class 效果等同
    mysql> show create table class ;  #同样可以实现查询表class 的定义
    mysql> insert into class VALUES(1,'一班','martin');  #插入成功
    mysql> insert into class VALUES(1,'二班','rock');    #因主键约束,插入失败
    

    Mysql 支持给主键设置名字:
    CREATE TABLE tablename( propName propType , ...... CONSTRAINT pk_name PRIMARY KEY(propType) );

    给id字段的PK约束设置一个名字,可以执行SQL语句CONSTRAINT。创建表class:

    mysql> create database school;   #创建数据库school
    mysql> use school;   #选择数据库school 
    mysql> create table class(id int , name varchar(128), teacher varchar(64), CONSTRAINT id_pk PRIMARY KEY (id));         #创建表class
    mysql> desc class ;  #查询表class 的定义, describe class 效果等同
    mysql> show create table class ;  #同样可以实现查询表class 的定义
    mysql> insert into class VALUES(1,'一班','martin');  #插入成功
    mysql> insert into class VALUES(1,'二班','rock');    #因主键约束,插入失败
    

    多字段主键:
    主键是由多个属性组合而成时,在属性定义完之后统一设置主键。语法规则如下:
    CREATE TABLE tablename( propName1 propType , propName2 propType , ...... [CONSTRAINT pk_name]PRIMARY KEY(propName1, propName2) );

    多字段主键的设置:

    mysql> create database school;   #创建数据库school
    mysql> use school;   #选择数据库school 
    mysql> create table class3(id int, name varchar(128), teacher varchar(64), CONSTRAINT id_pk PRIMARY KEY(id,name));         #创建表class3,设置联合主键
    mysql> desc class3 ;  #查询表class3 的定义, describe class3 效果等同
    mysql> insert into class VALUES(1,'一班','martin');  #插入成功
    mysql> insert into class VALUES(1,'一班','rock');    #因联合主键约束,插入失败
    

    1.2 设置表字段的外键约束(FOREIGN KEY,FK)

    外键是表的一个特殊字段,外键约束是为了保证多个表(通常为两个表)之间的参照完整性,即构建两个表的字段之间的参照关系。

    设置外键约束的两个表之间具有父子关系,即子表中某个字段的取值范围由父表决定。例如,表示一个班级和学生关系,即每个班级有多个学生。首先应该有两个表:班级表和学生表,然后学生表有一个表示班级编号的字段no,其依赖于班级表的主键,这样字段no就是学生表的外键,通过该字段班级表和学生表建立了关系。

    在具体设置FK约束时,设置FK约束的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以为空(NULL)。

    设置表中某字段的FK约束非常简单,可以在MySQL数据库管理系统中通过SQL语句FOREIGN KEY来实现,其语法形式如下:
    CREATE TABLE tablename_1( propName1 propType , propName2 propType , ...... [CONSTRAINT fk_name]FOREIGN KEY(propName1) REFERENCES table2_name(table2_column) );

    其中,tablename_1参数是要设置外键的表名,propName1参数是要设置外键的字段,tablename_2是父表的名称,table2_column是父表中设置主键约束的字段名(外键只能在后面单独指定)。

    mysql> use school;   #选择数据库school 
    mysql> create table class(id int PRIMARY KEY, name varchar(128), teacher varchar(64));         #创建表class 
    mysql> desc class ;  #查询表class 的定义, describe class 效果等同
    mysql> mysql> create table student (id int PRIMARY KEY AUTO_INCREMENT, name varchar(64) NOT NULL, class_id int, sex enum('M','F'), FOREIGN KEY(class_id) REFERENCES class(id) );  #创建表student, class_id 为表class id 字段的外键 
    mysql> insert into student(name, class_id, sex) values('小红', 2, 'M');   #插入记录,主键自增长 
    mysql> insert into student(name, sex) values('小军', 'M');   #插入记录,允许外键为空 
    

    1.3 设置表字段的非空约束(NOT NULL, NK)

    当数据库表中的某个字段上的内容不希望设置为NULL时,可以使用NK约束进行设置。NK约束在创建数据库表时为某些字段上加上“NOT NULL”约束条件,保证所有记录中的该字段都有值。如果在用户插入的记录中该字段为空值,那么数据库管理系统会报错。

    设置表中某字段的NK约束非常简单,查看帮助文档可以发现,在MySQL数据库管理系统中是通过SQL语句NOT NULL来实现的,其语法形式如下:
    CREATE TABLE tablename( propName propType NOT NULL , ...... );

    如:

    mysql> create database school;   #创建数据库school
    mysql> use school;   #选择数据库school 
    mysql> create table class(id int, name varchar(128) NOT NULL, teacher varchar(64));         #创建表class
    mysql> desc class ;  #查询表class 的定义, describe class 效果等同 
    mysql> show create table class ;  #同样可以实现查询表class 的定义
    

    1.4 设置表字段唯一约束(UNIQUE,UK)

    当数据库表中某个字段上的内容不允许重复时,可以使用UK约束进行设置。UK约束在创建数据库时为某些字段加上“UNIQUE”约束条件,保证所有记录中该字段上的值不重复。如果在用户插入的记录中该字段上的值与其他记录中该字段上的值重复,那么数据库管理系统会报错。

    设置表中某字段的UK约束非常简单,可以在MySQL数据库管理系统中通过SQL语句UNIQUE来实现,其语法形式如下:
    CREATE TABLE tablename( propName propType UNIQUE, ...... );

    注意: unique 约束允许受约束的字段出现多个空值 NULL, 不算重复。

    如:

    mysql> create database school;   #创建数据库school
    mysql> use school;   #选择数据库school 
    mysql> create table class(id int, name varchar(128) UNIQUE, teacher varchar(64));         #创建表class
    mysql> desc class ;  #查询表class 的定义, describe class 效果等同 
    mysql> show create table class ;  #同样可以实现查询表class 的定义 
    

    1.5 设置表字段值自动增加(AUTO_INCREMENT)

    AUTO_INCREMENT是MySQL唯一扩展的完整性约束,当向数据库表中插入新记录时,字段上的值会自动生成唯一的ID。在具体设置AUTO_INCREMENT约束时,一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型。由于设置AUTO_INCREMENT约束后的字段会生成唯一的ID,因此该字段也经常会同时设置成PK主键(在MySQL中必须被设置为主键,否则会报错)。

    设置表中某字段值的自动增加约束非常简单,可以在MySQL数据库管理系统中通过SQL语句AUTO_INCREMENT来实现,其语法形式如下:
    CREATE TABLE tablename( propName propType AUTO_INCREMENT, ...... );

    在上述语句中,tablename参数表示所要设置非空约束的字段名字,propName参数为属性名,propType为属性类型,propName字段要设置自动增加约束。默认情况下,字段propName的值从1开始增加,每增加一条记录,记录中该字段的值就会在前一条记录(或已存在的最大值(包括曾经存在的))的基础上加1。

    mysql> create database school;   #创建数据库school
    mysql> use school;   #选择数据库school 
    mysql> create table class(id int PRIMARY KEY AUTO_INCREMENT, name varchar(128) UNIQUE, teacher varchar(64));         #创建表class,设置字段id为自增长
    mysql> show create table class ;  #查询表class 的定义 
    

    注意: mysql8 中,AUTO_INCREMENT 必须设为键(主键、外键和唯一键均可)! 否则会报错!

    1.6 设置表字段的默认值(DEFAULT)

    当为数据库表中插入一条新记录时,如果没有为某个字段赋值,数据库系统就会自动为这个字段插入默认值。为了达到这种效果,可通过SQL语句关键字DEFAULT来设置。

    设置数据库表中某字段的默认值非常简单,可以在MySQL数据库管理系统中通过SQL语句DEFAULT来实现,其语法形式如下:
    CREATE TABLE tablename( propName propType DEFAULT defaultvalue, ...... );

    注意: 如果没有设置,则默认为空。


    2 调整列的约束完整性

    2.1 增加、删除列

    增加列:
    alter table class add score int not null,add teacher varchar(64) not null;

    删除列:
    alter table class drop score;

    修改列的名称:
    alter table class change number num int;,修改列名称时之前设置的NOT NULL、Default、Auto_Increment会丢失。

    2.2 调整主键PK、外键FK和 唯一键UK

    新增: alter table [table_name] add constraint [constraint_name] [unique key| primary key|foreign key] ([column_name])

    alter table class add unique key(name);
    alter table class add constraint teacher_uk unique key(teacher);
    
    alter table test_m add foreign key(c) references class(id);
    

    删除:

    1. 通过如下命令查询键值的约束名:
      show index或keys from 表名;
    2. 执行如下命令删除:
      主键:alter table 表名 drop primary key;
      外键或唯一键: alter table 表名 drop index 约束名;

    修改:

    • 按照上述步骤 先执行 删除 然后再 新增 即可!

    2.3 修改默认值DEFAULT、自增长和非空NK

    使用如下语法重新定义列即可:
    alter table 表名 modify 列名 类定义;

    注意:修改后之前设置的NOT NULL、Default、Auto_Increment会丢失。

    mysql> create database school;   #创建数据库school
    mysql> use school;   #选择数据库school 
    mysql> create table class(id int PRIMARY KEY AUTO_INCREMENT, name varchar(128) UNIQUE, teacher varchar(64));         #创建表class,设置字段id为自增长
    mysql> alter table class modify teacher varchar(64) DEFAULT ‘Martin’ NOT NULL ;  #设置默认值和非空
    mysql> alter table class modify teacher varchar(64) ; #取消默认值和非空
    

    参考资料:

    1. C/C++从入门到精通-高级程序员之路【奇牛学院】
    展开全文
  • 完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。MySQL中基本的完整性约束条件如下表所示。下表是完整性约束条件。 .....
  • 1. 何为完整性约束条件 1.1 列级约束条件 1.2 表级约束条件 1.3 语法格式 2. 主键(PRIMARY KEY)约束 3. 唯一性(UNIQUE)约束 4. 空与非空(NULL/NOT NULL)约束 5. 默认值(DEFAULT)约束 6. 检查(CHECK)...
  • 数据库——完整性约束条件

    千次阅读 2020-05-21 21:32:08
    1.完整性约束条件测试 1.1完整性约束条件有哪些 PRIMARY KEY 主键 AUTO_INCREMENT 自增长 FOREIGN KEY 外键 NOT NULL 非空 UNIQUE KEY 唯一 DEFAULT 默认值 1.测试主键 设置一个主键 CREATE TABLE IF NOT EXISTS ...
  • 完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。MySQL中基本的完整性约束条件如表3-11所示。下表是完整性约束条件: 1. ...
  • AUTO_INCREMENT 默认从1开始,每次增加1 一个表中只能有一个自增长字段 被标注自增长的字段只能是主键 自增长的只能是整型 除了手动指定,NULL, DEFAULT 都可以代替自增长字段所需要输入的数字。...
  • 数据库的完整性约束

    2021-01-12 23:56:44
    完整性约束条件的作用对象:列级约束(针对字段,key)主要针对列的类型,取值范围,精度等约束对空值的约束。规定某个字段是否为空对取值范围的约束。例如,学生成绩的字段规定为 0 - 100数据类型的约束。包括数据...
  • MySQL完整性约束条件

    千次阅读 2018-11-11 19:34:00
    约束条件: Null 允许为空,默认设置,not null不允许为空;注:" "或"null"不为空 key 索引类型 Default 设置默认值,缺省为null Extra 额外设置 索引: 索引优缺点: 优点:通过创建唯一索引,保证数据...
  • 表的完整性约束

    2020-09-03 19:00:45
    表的完整性约束一、表的完整性约束二、not null与default三、unique1、单列唯一2、联合唯一3、not null和unique的化学反应四、primary key五、foreign key 一、表的完整性约束 约束条件与数据类型的宽度一样,都是可...
  • SQL server完整性约束的操作

    千次阅读 2020-04-23 18:05:36
    【注】:完整性约束条件涉及到该表的多个属性列时,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。   实体完整性的操作 一、创建表时,可以规定实体完整性 在CREATE TABLE语句中使用PRIMARY KEY...
  • 约束就是保证数据库完整性的方法,数据库的完整性就是为了保证数据的正确性。 概念:在数据表上强制执行的一些数据校验规则。当执行增、删、改操作时,数据必须符合在相关字段上设置的校验规则 作用:保证数据的准确...
  • create table <表名> (<列名><数据类型>[列级完整性约束条件] [,<列名><数据类型>[列级完整性约束条件]] … [,<表级完整性约束条件>]); 如果完整性约束条件涉及该表的多个属性列,则必须定义在表级...
  • AUTO_INCREMENT是MySQL唯一扩展的完整性约束,当想数据库表中插入新纪录时,字段上的值会自动生成唯一的ID。在具体设置AUTO_INCREMENT约束时,一个数据库中只能有一个字段使用该约束,该字段的数据类型必须是整数...
  • MySQL中只要支持六种完整性约束,如表所示:其中check约束是MySQL8中提供的支持。 约束条件 约束描述 primary key 主键约束,约束的值可唯一的标识对应的记录 not ...
  • SQL基础6—完整性约束

    千次阅读 2019-08-16 21:02:26
    SQL完整性约束引言1.创建表时添加约束 ☆1)写法1...完整性约束:用于限制字段的值必须满足一定的条件,从而保证数据表中的数据的一致性和完整性!!! 1.常见的约束: NOT NULL:非空 要求非空字段为必填项 DEFAUL...
  • MySQL-ClassNote

    2021-02-02 15:48:43
    字符串类型 Char varchar text blob 3时间类型 Date year time create table 创建表 语法格式 create table 表名 ( 字段1 数据类型1 [列级完整性约束条件], 字段2 数据类型2 [列级完整性约束条件], 字段3 数据类型3 ...
  • sql中表级约束列级约束

    万次阅读 多人点赞 2017-03-19 16:02:41
    约束是限制用户输入到表中的数据的值的范围,一般分为列级约束与表级约束列级约束有六种:主键Primary key、外键foreign key 、唯一 unique、检查 checck 、默认default 、非空/空值 not null/ null 表级约束有...
  • 4.SQL数据库完整性约束的操作

    千次阅读 2022-04-10 15:13:35
    SQL数据库完整性约束
  • 完整性检查是围绕完整性约束条件进行的,因此完整性约束条件是完整性控制机制的核心。 完整性约束条件作用的对象可以是关系、元组、列三种。其中列约束主要是列的类型、取值范围、精度、排序等约束条件。元组的约束...
  • [SQL Server:sp_helpconstraint ]SOL提供了完整性约束命名子名CONSTRAINT,用来对完整性约束条件命名,有了名字的完整性约束条件可以灵活地修改、删除完整性约束条件。 1、完整性约束命名子句(三类约束) 语法...
  • 列级约束与表级约束

    万次阅读 多人点赞 2012-08-03 17:52:11
    你知道吗?约束分为列级约束和表级约束。   如果我们了解了这件事情,那么当我们用T—SQL语句创建约束时,思路就会更加清晰。... 唯一性约束(unique)  检查约束(check)  缺省约束(defa
  • create table Course( Cno char(9) primary key, /*列级完整性约束条件,Cno是主码*/ Cname char(40) not null, /*Cname不为空*/ Cpno char(4), /*Cpno的含义是先修课*/ Ccredit smallint, foreign key(Cpno) ...
  • 主键是表的主要完整性约束条件,主键唯一地标识表的每一行。一般情况下表都要定义主键,而且一个表只能定义一个主键。主键可以包含表的一列或多列,如果包含表的多列,则需要在表级定义。主键包含了主键每一列的非空...
  • 完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。主键是表的一个特殊字段,能唯一标识该表中的每条信息。PRIMARY KEY,PK...
  • 设置表字段的主键约束(PRIMARY KEY,PK) 主键是表的一个特殊字段,能唯一标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证用来表明人的身份...
  • 今天小编就为大家分享一篇关于基于MySQL数据库的数据约束实例及五种完整性约束介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • NK约束在创建数据库表时某些字段上加上“NOT NULL”约束条件,保证所有记录中的该字段都有值。如果在用户插入的记录中该字段为空值,那么数据库就会报错。 设置表中某字段的NK约束非常简单,查看帮助文档可以发现,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,465
精华内容 2,186
关键字:

列级完整性约束条件

友情链接: expression.zip