精华内容
下载资源
问答
  • 列级完整性约束条件与表级完整性约束条件有什么不同
    2020-12-21 10:06:14

    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

    更多相关内容
  • 完整性约束条件 完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。 PRIMARY KEY (PK) 标识该字段为该表的主键,可以...

    完整性约束条件

    路的好坏不在于崎岖多少, 只在于谁能最终达到目标。——申宝峰

    完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。

    PRIMARY KEY (PK)标识该字段为该表的主键,可以唯一的标识记录
    FOREIGN KEY (FK)标识该字段为该表的外键,是与之相联系的某表主键
    NOT NULL标识该字段不能为空
    UNIQUE KEY (UK)标识该字段的值是唯一的
    AUTO_INCREMENT标识该字段的值自动增长(整数类型,而且为主键)
    DEFAULT为该字段设置默认值

    MySQL数据库系统不支持check约束,根据约束数据列限制,约束可分为单列约束和多列约束。主键可分为单字段和多字段主键。

    外键约束FOREIGN KEY (FK):

    外键约束为了保证多个表之间的参照完整性,即构建两个表的字段之间的参照关系。
    例如,表示一个班级和学生的关系,即每个班级有多个学生。首先应该有两个表:班级表和学生表,然后学生表有个表示班级编号的字段classnum,其依赖于班级表的主键,这样的字段classnum就是学生表的外键,通过该字段班级表和 学生表建立了关系。
    对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。
    在具体设置FK约束时,设置FK约束的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以为空Null。
    主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值。

    定义外键时,需要遵守下列规则:

    1. 主表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则主表与从表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。
      必须为主表定义主键。

    2. 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。

    3. 在主表的表名后面指定列名或列名的组合。这个列或列的组合必须是主表的主键或候选键。

    4. 外键中列的数目必须和主表的主键中列的数目相同。

    5. 外键中列的数据类型必须和主表主键中对应列的数据类型相同。

    一、CASCADE:级联

    (1)所谓的级联删除,就是删除主键表的同时,外键表同时删除。
    (2)以上面的例子将就是,假如院系表中的某个院系被删除了,那么在学生表中要想查询这个被删除的院系号所对应的院信息就会报错,因为已经不存在这个系了,所以,删除院系表(主键表)时必须删除其他与之关联的表,这里就说明了外键的作用,保持数据的一致性、完整性。当然反过来讲,你删除学生表中的记录,并不影响院系表中的数据,你查询院系号也能正确查询。所以删除外键表中的数据并不影响主键表。

    二、NO ACTION(非活动,默认)、RESTRICT:约束/限制

    当取值为No Action或者Restrict时,则当在主键表中删除对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除。(即外键表约束主键表)

    三、SET NULL

    当取值为Set Null时,则当在主键表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(,一样是外键表约束主键表,不过这就要求该外键允许取null)。

    NO ACTION和RESTRICT的区别:只有在及个别的情况下会导致区别,前者是在其他约束的动作之后执行,后者具有最高的优先权执行。

    展开全文
  • 实现三类完整性约束条件,Microsoft SQL Server
  • 完整性约束条件:唯一性约束

    千次阅读 2020-09-20 10:06:54
    唯一性约束UNIQUE 被标注柽UNIQUE的字段,插入的值不能够重复 NULL值很特殊,他不算重复值 这里我们还是以创建会员表为例 mysql> CREATE TABLE IF NOT EXISTS user9( -> id INT UNSIGNED KEY AUTO_...

    唯一性约束UNIQUE

    1. 被标注柽UNIQUE的字段,插入的值不能够重复
    2. NULL值很特殊,他不算重复值
    3. 这里我们还是以创建会员表为例
    mysql> CREATE TABLE IF NOT EXISTS user9(
        -> id INT UNSIGNED KEY AUTO_INCREMENT,
        -> username VARCHAR(20) NOT NULL UNIQUE,
        -> card CHAR(18) UNIQUE
        -> );
    Query OK, 0 rows affected (0.80 sec)
    
    mysql> INSERT user9(username) VALUES("zhouruc16");
    Query OK, 1 row affected (0.48 sec)
    
    mysql> INSERT user9(username, card) VALUES("rzhou8","123");
    Query OK, 1 row affected (0.38 sec)
    
    mysql> INSERT user9(username, card) VALUES("rzhou9",NULL);
    Query OK, 1 row affected (0.12 sec)
    
    mysql> DESC user9;
    +----------+------------------+------+-----+---------+----------------+
    | Field    | Type             | Null | Key | Default | Extra          |
    +----------+------------------+------+-----+---------+----------------+
    | id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
    | username | varchar(20)      | NO   | UNI | NULL    |                |
    | card     | char(18)         | YES  | UNI | NULL    |                |
    +----------+------------------+------+-----+---------+----------------+
    3 rows in set (0.00 sec)
    mysql> SHOW CREATE TABLE user9;
    +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table                                                                                                                                                                                                                                                                              |
    +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | user9 | CREATE TABLE `user9` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `username` varchar(20) NOT NULL,
      `card` char(18) DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `username` (`username`),
      UNIQUE KEY `card` (`card`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 |
    +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT*FROM user9;
    +----+-----------+------+
    | id | username  | card |
    +----+-----------+------+
    |  1 | zhouruc16 | NULL |
    |  2 | rzhou8    | 123  |
    |  3 | rzhou9    | NULL |
    +----+-----------+------+
    3 rows in set (0.00 sec)
    

    总结完整性约束:

    1. UNIQUE唯一性
      – 输入的值不能重复

    2. NOT NULL 非零
      – 不能输入空值,必须要用内容,经常与默认值一起使用

    3. DEFAULT 默认值
      – 给予一个默认值,当不插入内容的时候将会自动填入默认值

    4. KEY 主键
      – 主键是唯一标识,一个表格只能有一个主键,可以存在复合主键,但是复合主键也算是一个主键

    5. AUTO_INCREMENT 自增长
      – 按顺序使插入的内容依次递增,被标注的自增长字段只能是主键,并且一个表只能有一个自增长值

    6. FORNIGN KEY 外键(之后会讲到)

    展开全文
  • MySQL完整性约束条件

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

    作用:限制如何给字段赋值

    约束条件:

    Null 允许为空,默认设置,not null不允许为空;注:" ""null"不为空

    key 索引类型

    Default 设置默认值,缺省为null

    Extra 额外设置

    索引:

    索引优缺点:

    优点:通过创建唯一索引,保证数据唯一性;加快数据的检索速度

    缺点:当对数据进行增,删,改,索引要动态维护,减慢写的速度;索引要占用物理空间

    查看是否有索引字段:DESC 表名; #查看"key"

    查看索引详细:SHOW INDEX FROM 表名; #column_name:字段 key_name:索引名,索引名默认和字段同名

    索引的类型:

    INDEX:普通索引

    建表时设置:

    CREATE TABLE 表名(

    ……

    INDEX(字段名1),INDEX(字段名2),INDEX(字段名n) #设置完字段后设置

    );

    已有表设置:CREATE INDEX 索引名 on 表名(字段名);

    删除索引:DROP INDEX 索引名 on 表名;

       

    UNIQUE:唯一索引

    建表时设置:

    CREATE TABLE 表名(

    ……

    UNIQUE(字段名1)UNIQUE(字段名2),UNIQUE(字段名n)

    ;

    已有表设置: CREATE UNIQUE INDEX 索引名 ON 表名

    删除索引:DROP INDEX 索引名 ON 表名;

    注:若字段为not null并且是unique标志会变为PRI

       

    FULLTEXT

    PRIMARY KEY:主键

    建表时设置:

    CREATE TAVLE 表名(

    ……

    PRIMARY KEY(字段名) #也可以直接写在字段后,多个字段表示复合主键

    );

    已有表设置:

    ALTER TABLE 表名

    ADD

    PRIMARY KEY(字段名) #受数据影响,多个字段名表示复合主键

    删除主键:

    ALTER TABLE 表名

    DROP

    PRIMARY KEY; #复合主键必须同时删除

    注:复合主键的多个数据不能完全一样;主键常和AUTO_INCREMENT连用,实现自增,从最大值开始加1

       

    FOREIGN KEY:外键

    使用外键的条件

    1. 表的存储引擎必须是innodb
    2. 字段类型要一致
    3. 被参照字段必须要是索引类型的一种(primarykey)

    外键的作用:给表中字段赋值时,字段的值只能在另外一张表的字段值里选择

    注:用desc查看时显示MUI标志,要用"show create table 表名;"查看建表过程

    建表时设置

    无符号: UNSIGNED

    转载于:https://www.cnblogs.com/NINOMIYA1360/p/9943125.html

    展开全文
  • 1. 何为完整性约束条件 1.1 列级约束条件 1.2 表级约束条件 1.3 语法格式 2. 主键(PRIMARY KEY)约束 3. 唯一性(UNIQUE)约束 4. 空与非空(NULL/NOT NULL)约束 5. 默认值(DEFAULT)约束 6. 检查(CHECK)...
  • 基于《数据库系统概论》和《数据库系统概念》,阐述了数据库的完整性约束如何增删改及其相关概念
  • PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY (FK) 标识该字段为该表的外键 NOT NULL 标识该字段不能为空 UNIQUE KEY (UK) 标识该字段的值是唯一的 AUTO_INCREMENT 标识该字段的值...
  • oracle中的违反完整性约束条件问题

    千次阅读 2019-06-02 13:40:56
    (1)主键约束和唯一键约束均会隐式创建同名的唯一索引,当主键约束或者唯一键约束失效时,隐式创建的唯一索引会被删除; (2)主键约束要求列值非空,而唯一键约束和唯一索引不要求列值非空; (3)相同字段...
  • Mysql第二章:完整性约束条件

    千次阅读 2018-08-09 14:14:59
    标题:数据库-MySQL(完整性约束条件) 一:什么是完整性约束?为什么使用完整性约束? 数据完整性约束是为了防止不合规范的数据进入数据库,在用户进行增加、修改、删除等操作的时候自动按照一定约束条件进行检查...
  • 完整性检查是围绕完整性约束条件进行的,因此完整性约束条件是完整性控制机制的核心。 完整性约束条件作用的对象可以是关系、元组、列三种。其中列约束主要是列的类型、取值范围、精度、排序等约束条件。元组的约束...
  • 完整性约束条件的作用对象可以是列、元组和( 表 )。 他们是怎么对应的? 列 -->域完整性约束 元组 -->实体完整性约束 表 --> 参照完整性约束 完整性约束分为以下四类: 1) 实体完整性:规定表的...
  • 完整性约束条件

    千次阅读 2013-10-30 15:39:21
    完整性的定义  是为保证数据库中数据的正确性和一致性。 分类  域完整性,实体完整性、参照完整性和用户定义完整性。  1.实体完整性 指关系的主关键字不为空且不重复  primary key 主键  2.域完整性 ...
  • 1、禁用约束 alter table T_HRM_USER_INFO disable constraint PK_T_HRM_USER_INFO CASCADE PK_T_HRM_USER_INFO 这个去表中找,plqsl右键表选择view-->key,这里注意Name是约束名,Columns是表的字段名。...
  • 数据完整性是指数据的正确性、完备性和一致性,是衡量数据库质量...数据库完整性由各式各样的完整性约束来确保,因而可以说数据库完整性规划即是数据库完整性约束的规划。那么,数据库设计的完整性约束表现哪些方面?
  • 列的完整性约束

    千次阅读 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 设置...
  • 展开全部数据完整性约束指的是为了防止不符合规范的数据进入数据库,在用户对数据进行插入e69da5e6ba903231313335323631343130323136353331333431366333、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行...
  • 定义完整性约束

    千次阅读 2021-04-12 18:15:17
    关系模型的完整性规则是对关系的某种约束条件。在关系模型中,提供了实体完整性、参照完整性和用户定义的完整性等三项规则。下面将分别介绍MySQL中对数据库完整性三项规则的设置和实现方式。 主要内容: 1)实体完整...
  • 完整性约束条件名><完整性约束条件> <完整性约束条件>包括NOT NULL、UNIQUE、PRIMARY KEY短语、FOREIGN KEY短语、CHECK短语等 [例5.10]建立学生登记表Student,要求学号在90000~99999之间,姓名不能...
  • 删除完整性约束

    千次阅读 2021-04-18 21:44:59
    在MySQL中,使用alter table语句,可以独立的删除完整性约束,而不会删除表的本身。如果使用drop table语句删除一个表,那么这个表中的所有完整性约束也会自动被删除。删除完整性约束要在alter table语句中使用deop...
  • SQL可以在CREATE TABLE语句中提供了完整性约束命名子句CONSTRAINT,用于对完整性约束条件命名,从而可以灵活的增加、删除一个完整性约束条件。 完整性约束命名子句 完整性约束命名子句 语法: CONSTRAINT <完整性...
  • 一、数据库完整性概述  1.数据库的完整性:  ①数据库的完整性是指数据的正确性和相容性  ②数据库完整性是防止不合语义或不正确的数据进入数据库 ...  检查数据是否满足完整性约束条件的机制称为完整性
  • SQL数据库完整性约束
  • MYSQL-完整性约束条件

    千次阅读 2016-10-21 09:30:34
    4.设置表的唯一性约束 即表记录中该字段值不能重复。 语法格式: 属性名 数据类型 unique 实例: create table example5(id int , stu_id int unique) 5.设置表的属性值自动增加 一个表...
  • [SQL Server:sp_helpconstraint ]SOL提供了完整性约束命名子名CONSTRAINT,用来对完整性约束条件命名,有了名字的完整性约束条件可以灵活地修改、删除完整性约束条件。 1、完整性约束命名子句(三类约束) 语法...
  • 数据的约束条件完整性约束

    千次阅读 2017-12-14 23:11:44
     1. 域约束:对属性取值范围的约束 2. 键约束:每个关系必须要有主键,且每个主键必须不相同 3. 非空约束:属性值不能为NULL 4. 实体完整性约束:...插入操作:域约束、键约束、非空约束、实体完整性约束、参
  • MySQL表级完整性约束

    千次阅读 2021-04-10 19:05:44
    MySQL表级完整性约束 为防止不符合规范的数据存入数据库,在用户对数据进行插入、修改、删除等操作时,MySQL提供 了一种机制来检查数据库是否满足规定的条件,以保证数据库中数据的准确性和一致性,这种机制 就是...
  • 数据库的完整性约束

    2020-12-01 21:23:15
    3.关系模型中的3类完整性约束 1.实体完整性: 若属性集A是关系R的码,则A不能去空值null 如果码是由若干个属性组成,每个属性都不能取空值 2.参照完整性: F是关系R的外键是关系S的主键F的取值必须 取
  • 数据的完整性约束

    千次阅读 2021-06-09 19:12:23
    数据完整性包含三个完整性,实体完整性,域完整性,引用完整性。 1.实体完整性 主键约束:用来识别某条数据在该表中的唯一性的用途,要求输入的数据唯一,并且非空。 唯一约束:某些列需要保证输入到的每条数据不能...
  • #五种完整性约束: #NOT NULL :非空约束,指定某列不能为空; #UNIQUE : 唯一约束,指定某列或者几列组合不能重复 #PRIMARY KEY :主键,指定该列的值可以唯一地标识该列记录 #FOREIGN KEY :外键,指定该行记录从...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 127,441
精华内容 50,976
关键字:

完整性约束条件

友情链接: KAQJQP.rar