精华内容
下载资源
问答
  • SQL基础6—完整性约束

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

    引言

    完整性约束:用于限制字段的值必须满足一定的条件,从而保证数据表中的数据的一致性和完整性!!!

    1.常见的约束:

    • NOT NULL:非空 要求非空字段为必填项
    • DEFAULT:默认值 如果该字段不手动插入值,有默认值
    • PRIMARY KEY:主键 要求主键字段不能重复,且不能为空,一个表中只能有一个主键
    • UNIQUE:唯一 要求唯一键的字段不能重复,可以为空,一个表中可以有多个唯一键
    • CHECK:检查 mysql不支持,要求该字段必须满足指定的检查条件
    • FOREIGN KEY:外键 用于限制两个表的关系

    2.约束的特性:

    • 只可以当做列级约束:非空、默认

    • 只可以当做表级约束:外键

    • 两者皆可:主键、唯一、检查

    1.创建表时添加约束 ☆

    例:

    CREATE TABLE major(
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	majorname VARCHAR(20)
    );
    

    1)写法1:使用列级约束 √

    列级约束语法:字段声明 + 约束名

    CREATE TABLE IF NOT EXISTS constraintTab(
    	id INT PRIMARY KEY,		#主键
    	NAME VARCHAR(20) NOT NULL UNIQUE,	#非空+唯一
    	gender CHAR DEFAULT '男',	#默认
    	age INT CHECK(age BETWEEN 18 AND 120),	#检查
    	seat INT UNIQUE,#唯一
    	majorId INT,
    
    	CONSTRAINT fk FOREIGN KEY (majorid) REFERENCES major(id) 	#外键:fk约束名
    );
    

    2)写法2:使用表级约束

    表级约束语法:约束类型(字段名)

    [constraint 约束名] 约束类型(字段名) [references 主表(字段名)]
    

    案例:

    CREATE TABLE IF NOT EXISTS constraintTab(
    	id INT,
    	NAME VARCHAR(20) NOT NULL , # 非空
    	gender CHAR DEFAULT '男',   # 默认
    	age INT ,
    	seat INT ,
    	majorId INT,
    
    	CONSTRAINT fk FOREIGN KEY (majorid) REFERENCES major(id),	#外键
    	PRIMARY KEY(id),	#主键
    	CONSTRAINT uq UNIQUE(seat),	#唯一
    	CONSTRAINT ck CHECK(age BETWEEN 10 AND 100)	#检查
    );
    

    2.修改表时添加约束:Alter table …

    创建案例表:

    DROP TABLE IF EXISTS constraintTab;
    CREATE TABLE IF NOT EXISTS constraintTab(
    	id INT,
    	NAME VARCHAR(20),
    	gender CHAR,
    	seat INT,
    	age INT,
    	majorid INT
    );
    

    1.添加主键:primary key

    • 1)当做列级约束
    ALTER TABLE constraintTab MODIFY COLUMN id INT PRIMARY KEY;
    
    • 2)当做表级约束 √
    ALTER TABLE constraintTab ADD PRIMARY KEY(id);
    
    # 对比添加列:
    ALTER TABLE stu ADD COLUMN classname varchar(100);
    

    2.添加唯一键: UNIQUE

    • 1)当做列级约束
    ALTER TABLE constraintTab MODIFY COLUMN seat INT UNIQUE;
    
    • 2)当做表级约束 √
    ALTER TABLE constraintTab ADD UNIQUE(NAME);
    

    3.添加检查约束:check

    • 1)当做列级约束
    ALTER TABLE constraintTab 
    MODIFY COLUMN age INT CHECK(age>=10 AND age<100);
    
    • 2)当做表级约束 √
    ALTER TABLE constraintTab 
    ADD CHECK(age>=10 AND age<100);
    

    4.添加外键:foreign key

    只能当做表级约束,所以使用添加字段定义的方式:add

    ALTER TABLE constraintTab ADD 
    CONSTRAINT fk_major_stuinfo 
    FOREIGN KEY(majorid) REFERENCES major(id);
    

    5.添加默认:default

    只能当做列级约束,所以使用修改列的定义方式:modify

    ALTER TABLE constraintTab MODIFY COLUMN gender CHAR DEFAULT '男';
    

    6.添加非空:not null

    只能当做列级约束,所以使用修改列的定义方式:modify

    ALTER TABLE constraintTab MODIFY COLUMN name VARCHAR(20) NOT NULL;
    

    3.删除约束:ALTER TABLE

    1.删除主键:只有一个

    ALTER TABLE constraintTab DROP PRIMARY KEY;
    

    2.删除唯一:可以有多个,所以需指定字段名

    ALTER TABLE constraintTab DROP INDEX seat;
    

    3.删除外键: 可以有多个,所以需指定外键约束名

    ALTER TABLE constraintTab DROP FOREIGN KEY constrainttab_ibfk_1;
    

    4.删除非空:通过修改列属性

    ALTER TABLE constraintTab MODIFY COLUMN name VARCHAR(20)  NULL;
    

    5.删除默认:通过修改列属性

    ALTER TABLE constraintTab MODIFY COLUMN gender CHAR(1) ;
    

    注意

    1.自增长列

    • 默认从1开始,步长为1
    • 1、自增长列要求设置的字段类型为数值型
    • 2、自增长列要求必须和键搭配使用
    • 3、一个表中最多有一个自增长列
    • 4、主键如果是自增长列(非空),添加记录时,可以选填

    2.联合主键

    创建表时,在constraint约束区域,声明指定字段为主键:

    • 格式:[constraint 名称] primary key (字段列表)
    • 关键字constraint可以省略,如果需要为主键命名,constraint不能省略,主键名称一般没用。
    • 字段列表需要使用小括号括住,如果有多字段需要使用逗号分隔。
    • 声明两个以上字段为主键,我们称为联合主键。

    查看表的索引:

    SHOW INDEX FROM constraintTab;
    
    展开全文
  • SQL Server中创建,设置完整性约束

    千次阅读 2020-09-23 18:48:50
    需求: 建立一个供应商、零件关系库,其中关系供应商S(Sno,Sname,Status,City)属性分别表示供应商代码、供应商名称、供应商状态、供应商城市。

    建立一个供应商、零件关系库,
    其中关系供应商S(Sno,Sname,Status,City)属性分别表示供应商代码、供应商名称、供应商状态、供应商城市。
    其中关系零件P(Pno,Pname,Color,Weight,City)属性分别表示零件号、零件名称、颜色、重量、产地。
    要求如下:
    1)供应商代码不能是空的,且是唯一的。供应商的名称也必须是唯一的。
    2)零件号不能是空的,且是唯一的。零件名称不能是空的。
    3)一个供应商可以供应多个零件,而一个零件可以由多个供应商供应。

    以下是具体的Create语句:

    CREATE TABLE S(
    Sno INT,
    Sname VARCHAR(100) UNIQUE,
    Status VARCHAR(100),
    City VARCHAR(100) ,
    PRIMARY KEY(Sno)
    )
    
    CREATE TABLE P(
    Pno INT,
    Pname VARCHAR(100) NOT NULL,
    Color VARCHAR(100),
    Weight INT,
    City VARCHAR(100),
    PRIMARY KEY(Pno)
    )
    
    CREATE TABLE SP(
    Sno INT,
    Pno INT,
    quality INT,
    PRIMARY KEY(Sno,Pno),
    FOREIGN KEY(Sno) REFERENCES S(Sno),
    FOREIGN KEY(Pno) REFERENCES P(Pno)
    )
    

    对于约束的分析:
    1、主键约束:
    单属性主键:在表S中,设置属性Sno为主键。由于主键本身要求非空且唯一,所以在Sno列处不用再加上unique和not null的约束。单属性主键也可以在列Sno后方直接定义,如:

    CREATE TABLE S(
    Sno INT PRIMARY KEY,
    Sname VARCHAR(100) UNIQUE,
    Status VARCHAR(100),
    City VARCHAR(100) 
    )
    

    联合主键:在表SP中,属性Sno和Pno共同构成联合主键。
    2、外键约束:在表SP中,Sno来源于表S的Sno,所以需要设置外键约束。Pno字段同理。
    3、非空约束:属于列级完整性约束条件,在列定义时设置 。
    4、唯一约束:属于列级完整性约束条件,在列定义时设置 。
    5、check约束:本例子中没有涉及。比如表S中City只能设置为“北京”或“上海”,则可以进行如下设置:

    CREATE TABLE S(
    Sno INT PRIMARY KEY,
    Sname VARCHAR(100) UNIQUE,
    Status VARCHAR(100),
    City VARCHAR(100),
    CHECK ( City IN ('北京','上海'))
    )
    
    展开全文
  • SQL server完整性约束的操作

    千次阅读 2020-04-23 18:05:36
    【注】:完整性约束条件涉及到该的多个属性列时,则必须定义在级上,否则既可以定义在列级也可以定义在级。   实体完整性的操作 一、创建时,可以规定实体完整性 在CREATE TABLE语句中使用PRIMARY KEY...

    完整性约束:三类完整性约束
    SQL server给完整性约束命名及删除完整性约束:戳这里!!!
     

    本文对在创建表时或者创建表后如何设置约束条件(列级、表级)做了详细说明,希望可以帮到大家!!!

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

     

    实体完整性的操作

    一、创建表时,可以规定实体完整性

    CREATE TABLE语句中使用PRIMARY KEY定义哪些列为主码(主键)。

    需要注意:
    1.主键必须包含唯一的值。
    2.主键列不能包含 NULL 值。
    3.每个表都应该有一个主键,并且每个表只能有一个主键。

    定义为列级约束条件:

    CREATE TABLE SC
    (
    	column_name datatype PRIMARY KEY,
    	column_name datatype,
    	......
    );
    

    定义为表级约束条件:

    CREATE TABLE SC
    (
    	column_name datatype,
    	column_name datatype,
    	......
    	PRIMARY KEY(column_name,column_name...)
    );
    

    表级约束条件中,括号中的列共同作为主键。

    二、表创建好后,定义实体完整性

    基本语法:

    ALTER TABLE table_name
    ADD PRIMARY KEY (column_name,column_name...)
    

    需要注意的是,该列不能取空值。

     

    参照完整性的操作

    一、创建表时,可以定义参照完整性

    CREATE TABLE语句中用FOREIGN KEY短语定义哪些列为外码。
    REFERENCES短语指明这些外码参照哪些表的主码。
    指定外码后,参照完整性规则自动生效。

    定义为列级约束条件:

    CREATE TABLE SC
    (
    	column_name datatype FOREIGN KEY [该列名] REFERENCES table_name(column_name),
    	column_name datatype,
    	......
    );
    //定义列级参照完整性约束时,其中[该列名]可以省略
    

    定义为表级约束条件:

    CREATE TABLE SC
    (
    	column_name datatype,
    	column_name datatype,
    	......
    	FOREIGN KEY(column_name,column_name) REFERENCES table_name(column_name)
    );
    

    二、表创建好后,定义参照完整性

    基本语法:

    ALTER TABLE table_name
    ADD FOREIGN KEY (column_name)
    REFERENCES table2_name(column_name);
    

     

    用户定义的完整性操作

    一、创建表时,可以定义 用户定义的完整性

    定义为列级约束条件:

    CREATE TABLE SC
    (
    	column_name datatype NOT NULL,
    	column_name datatype UNIQUE,
    	column_name datatype CHECK(该列要满足的条件),
    	......
    );
    

    定义为表级约束条件:

    1.NOT NULL
    值得注意的是:NOT NULLDEFAULT不能在表级完整性约束处定义。(有关DEFAULT大家可以自行查询)

    2.UNIQUE

    CREATE TABLE SC
    (
    	......
    	UNIQUE(column_name,column_name......)
    );
    

    3.CHECK
    如果CHECK约束是定义多列之间的取值约束,则只能在表级完整性约束处定义。

    CREATE TABLE SC
    (
    	......
    	CHECK(column1_name满足的条件 AND column2_name满足的条件......)
    );
    

    二、表创建好后,定义用户定义的完整性操作

    1.NOT NULL

    ALTER TABLE table_name 
    ALTER COLUMN column datatype NOT NULL; 
    

    2.UNIQUE

    ALTER TABLE table_name
    ADD UNIQUE (column_name);
    

    3.CHECK

    ALTER TABLE table_name
    ADD CHECK (column_name要满足的条件);
    
    展开全文
  • 本文对三种完整性约束,在创建时以及创建后如何给约束命名(列级、级)做了介绍。 最后介绍了在约束命名的条件下,如何删除约束。 1.为约束起命名时,用到的关键字CONSTRAINT。 2.需要注意的是,在同一数据库...

    本文对三种完整性约束,在创建表时以及创建表后如何给约束命名(列级、表级)做了介绍。
    最后介绍了在约束命名的条件下,如何删除约束。

    1.为约束起命名时,用到的关键字CONSTRAINT
    2.需要注意的是,在同一数据库中约束的名字是不允许重复的,即使是在不同的表中。也就是说,除非你把约束名删除,否则不允许出现第二次。

     

    为PRIMARY KEY 约束命名

    创建表时:

    列级:

    CREATE TABLE table_name(
    	column_name datatype 约束名 PRIMARY KEY,
    	column_name datatype,
    	......
    );
    

    表级:

    CREATE TABLE table_name(
    	column_name datatype,
    	column_name datatype,
    	......
    	CONSTRAINT 约束名 PRIMARY KEY (column_name,column_name,...)
    );
    

    表创建好后:

    ALTER TABLE table_name
    ADD CONSTRAINT 约束名 PRIMARY KEY (column_name,column_name,...)
    

     

    为FOREIGN KEY 约束命名

    创建表时:

    列级:

    CREATE TABLE table_name(
    	column_name datatype,
    	column_name datatype CONSTRAINT 约束名 FOREIGN KEY (该列名) REFERENCES table_name(column_name),
    	......
    );
    //其中"(该列名)"可以省略
    

    表级:

    CREATE TABLE table_name(
    	column_name datatype,
    	column_name datatype,
    	......
    	CONSTRAINT 约束名 FOREIGN KEY (column_name,column_name...)
    REFERENCES table_name(column_name)
    );
    

    表创建好后:

    ALTER TABLE table_name
    ADD CONSTRAINT 约束名
    FOREIGN KEY (column_name)
    REFERENCES table_name(column_name)
    

     

    为用户自定义约束命名

    创建表时:

    列级:

    create table user7(
    	column_name datatype constraint 约束名 NOT NULL,
    	column_name datatype constraint 约束名 UNIQUE,
    	column_name datatype constraint 约束名 CHECK(该列满足的条件)
    );
    

    表级:
    1.NOT NULL
    NOT NULL不能定义为表级,所以自然不能为这个约束表级命名。

    2.UNIQUE

    CREATE TABLE table_name(
    	column_name datatype,
    	column_name datatype,
    	......
    	CONSTRAINT 约束名 UNIQUE (column_name,column_name...)
    );
    

    3.CHECK

    CREATE TABLE table_name(
    	column_name datatype,
    	column_name datatype,
    	......
    	CONSTRAINT 约束名 CHECK (column_name满足的条件 AND column_name满足的条件)
    );
    

    表创建好后:

    1.UNIQUE

    ALTER TABLE table_name
    ADD CONSTRAINT 约束名 UNIQUE (column_name,column_name...)
    

    2.CHECK

    ALTER TABLE table_name
    ADD CONSTRAINT 约束名 CHECK (column_name满足条件 AND column_name满足条件)
    

     

    利用约束名删除约束

    删除的基本语法都一样:

    ALTER TABLE table_name
    DROP CONSTRAINT 要删除的约束名
    
    展开全文
  • (3)向score中插入一条数据,其中数据中的课程编号是课程中没有的,验证参照完整性约束; (4)修改score中一条数据的课程编号,该编号是课程中没有的,验证参照完整性约束; (5)删除student中的一条...
  • 这种原因是主键与其他关联了,解决方法如下: 1、禁用约束 alter table T_HRM_USER_INFO disable constraint PK_T_HRM_USER_INFO CASCADE ...key,这里注意Name是约束名,Columns是的字段名。 一定要注意con...
  • SQL语言与数据库完整性和安全性

    千次阅读 2020-12-13 15:49:17
    狭义的完整性:专指语义完整性,DBMS通常有专门的完整性管理机制与程序来处理语义完整性问题。 完整性涉及到 关系模型中的完整性要求 实体完整性 参照完整性 用户自定义完整性 1.2 为什么会产生...
  • 完整性约束

    万次阅读 2016-11-15 21:43:28
    数据完整性简介业务规则会指定一些条件和关系,它们要么必须始终为真,要么必须始终为假。例如,每个公司会定义其有关工资、 雇员人数、 库存跟踪,等方面的政策。保持数据的数据完整性很重要,它由数据库管理员或...
  • SQL表的创建和基本约束

    千次阅读 2017-03-12 21:20:09
    学习用SQL语句创建的过程中遇到的一个例子,学生数据库中包含了三个,创建的同时为中的列加上相应的约束,具体如下: 学生数据库的创建 USE master GO --创建数据文件 CREATE DATABASE SStudent ON ( ...
  • 数据库5之完整性约束的实现

    千次阅读 2018-06-25 13:09:29
    1.完整性规则的定义:通过SQL,也可以SSMS交互式创建2.(运行时)进行完整性规则的检查一、实体完整性约束1.主码(primary key)约束--&gt;可以定义为约束条件,也可以定义为列级约束条件区别:2.唯一...
  • 一道题学会SQL Server安全性和完整性控制,包括创建数据库,创建数据库用户,权限赋予及收回等 题目如下: 1、在SQL SERVER 2008上附加teaching数据库,其中三张表的含义解释如下: 学生dbo.student有属性sno...
  • SQL语句(九)用户自定义完整性

    万次阅读 2018-07-20 13:11:42
    SQL Server支持的用户自定义完整性主要有NOT NULL(不为空)、UNIQUE(唯一)、NULL(空)、CHECK(检查是否在某一范围之内)。 2.实例 1.定义NULL/NOT NULL约束 CREATE TABLE nation2(/*国家*/ nationkey ...
  • 数据完整性分为四类: 实体完整性(保证中每一行数据在中是唯一的)、 域完整性(保证列的值的有效性和正确性(CHECK约束、DEFAULT约束、NOT NULL 约束))、 参照完整性之间,多个数据的一致性与更新...
  • SQL约束的作用

    千次阅读 2018-10-02 16:56:15
    SQL 约束用于规定中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。 约束可以在创建时规定(通过 CREATE TABLE 语句),或者在创建之后规定(通过 ALTER TABLE 语句)。 SQL CREATE TABLE + ...
  • 本文将会用T-SQL 语句实现建表、建约束、建关系。 一. 对表进行操作   1.1 创建 --使用 create table 语句创建 语法: create table 表名(字段 数据类型 约束) 例如: create table Student( ...
  • 执行DELETE FROM dept WHERE ...ORA-02292: 违反完整约束条件 (SCOTT.FK_DEPTNO) - 已找到子记录 ORA-06512: 在 "SCOTT.PTESTFOUND", line 5 ORA-06512: 在 line 3 查询约束具体状况 select * from user_constra...
  • 数据库完整性实验报告

    千次阅读 2019-12-03 13:43:39
    (3)掌握完整性约束的添加、删除方法。 (4)掌握通用默认值的创建、实施与删除方法。 (5)掌握规则的创建、实施与删除方法。 (6)掌握级联删除、级联修改方法。 三、实验要求 (1)硬件设备:奔腾II或奔腾...
  • sqlserver数据库删除约束

    千次阅读 2019-07-11 09:19:47
    sqlserver数据库删除约束 ALTER TABLE 表名 DROP CONSTRAINT 约束名 //源代码: ALTER TABLE Student DROP CONSTRAINT DF_stuAddress
  • 列级约束约束

    万次阅读 多人点赞 2012-08-03 17:52:11
    你知道吗?约束分为列级约束和级约束。   如果我们了解了这件事情,那么当我们用T—SQL语句创建约束时,思路就会更加清晰。... 唯一性约束(unique)  检查约束(check)  缺省约束(defa
  • SQL】触发器与约束

    千次阅读 热门讨论 2018-12-29 08:01:49
    比如赵二现在要离职,要从员工里面删除,但是离职里面要添加上赵二,如果你这样写代码: 获得赵二ID 建立删除赵二的SQL语句 链接数据库进行删除 建立添加赵二的SQL语句 链接数据库进行添加 好,任务简单...
  • SQL】数据库中的五种约束

    千次阅读 2019-10-11 15:13:05
    1、主键约束(Primay Key Coustraint) 唯一,非空 2、唯一约束 (Unique Counstraint)唯一,可以空,但只能有一个 3、检查约束 (Check Counstraint)对该列数据的范围、格式的限制(如:年龄、性别等) 4、...
  • 修改基本结构,完整性约束条件3. 用Drop table 语句删除基本 1. 编写6个基本 设有简单教学管理的6个关系模式如下: 系(系编号,系名称、系主任、联系电话、地址) 专业(专业编号、专业名称、所属系) 教师...
  • 用hibernate级联删除时,总是报错违反外键约束条件,纠结了很久,查得...(方法2)将数据完整性约束交给Hibernate,在Hibernate设置好主子关系,以及级联删除,这样就去除掉Oracle数据库中完整性约束,也就是不用
  • 在Oracle中,通常通过两种...使用SQL*Plus语句创建的一般格式如下:CREATE TABLE [方案名 .]( [列级完整性约束条件][, [列级完整性约束条件]][,])下面介绍oracle数据库参数的含义,CREATE TABLE: SQL命令关键...
  • sql基础知识-----主外键、参照完整性

    千次阅读 2016-05-04 17:06:32
    A 的主键是B 的中的字段,这个字段就是B 的外键,而参照完整性也是由此而来。 其实很好理解,字需要去建两张,按照上面的条件 CREATE TABLE Stores ( StoreCode char(4) NOT null primary key, Name ...
  • 6.1.1 事务及完整性约束 事务定义: 由查询和更新语句的序列组成。SQL标准规定当一条SQL语句被执行,就隐式地开始了一个事务。 事务的性质: 原子性 一致性 隔离性 持久性 事务的结束: Commit work:提交...
  • 1.什么是数据库的完整性? 数据库的完整性是指数据的正确性和相容性。 2.数据库的完整性概念与数据库的安全性概念有什么区别和联系? 数据的完整性和安全性是两个不同的概念,但是有一定的联系。前者是为了防止数据库中...
  • SQL——基本的定义

    千次阅读 2020-01-10 07:39:19
    基本的定义 1.创建数据库 CREATE DATABASE <数据库名> 2.打开数据库 USE <数据库名>... [列级约束条件], <属性列名2> <数据类型> [列级约束条件], .......................
  • SQL面试题(学生_课程_成绩_教师架构 Student(S,Sname,Sage,Ssex) 学生 Course(C,Cname,T) 课程 SC(S,C,score) 成绩 Teacher(T,Tname) 教师 建表语句 CREATE TABLE student ( s INT, sname ...
  • SQL错误代码大全

    千次阅读 2020-03-12 15:56:53
    +625 01518 因为删除了主健索引,所以定义被标注为不完整 +626 01529 删除了加强UNIQUE约束的索引,唯一不在被加强 +645 01528 因为建立的索引中没有包含NULL,所以WHERE NOT NULL被忽略 +650 01538 不能更改...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,626
精华内容 13,850
关键字:

sql代码表级完整性约束条件