精华内容
下载资源
问答
  • 单表约束

    千次阅读 2019-10-18 17:36:28
    单表约束(主键) 可以把某一列字段声明主键,这一列的数据有如下特点 非空 唯一 被引用 -------当前主键的列,作为一条记录的标识 声明主键 使用关键字primary key声明某一个字段为主键。 测试主键 ...

    单表的约束(主键)

    1. 可以把某一列字段声明主键,这一列的数据有如下特点
    • 非空
    • 唯一
    • 被引用 -------当前主键的列,作为一条记录的标识
    1. 声明主键
    • 使用关键字primary key声明某一个字段为主键。
    1. 测试主键
    创建新的数据
    create database day06;
    use day06;
    create table person(
    	id int primary key,
    	username varchar(20)
    	);
    
    添加数据
    insert into person values(1,'美美');
    insert into person values(2,'小风');
    
    1. 主键的自动增长
    • 主键的值特点,可以把主键的值交给数据库去维护
    • 自动增长只能使用int呵bigint类型
    • 通过关键字auto_increment
    • 演示自动增长
    drop table person;
    create table person(
    	id int primary key auto_increment,
    	username varchar(20)
    	);
    
    添加数据的时候
    insert into person values(null,'美美');
    insert into person values(null,'小风');
    insert into person values(2,'小花');
    
    如果删除了一条记录
    delete from person where id = 2;
    
    1. 总结
    • 开发中,主键基本上是必须要设置的
    展开全文
  • DB2表约束

    千次阅读 2018-05-22 21:00:10
    DB2支持的表约束包括非空约束[NOT NULL],主键约束[PRIMARY KEY],唯一性约束[UNIQUE],外键约束[FOREIGN KEY]和检查性约束[CHECK] 1:非空约束[NOT NULL]空值[NULL]是不存在的值,不是0也不是空字符串。默认情况下中...

    DB2支持的表约束包括非空约束[NOT NULL],主键约束[PRIMARY KEY],唯一性约束[UNIQUE],外键约束[FOREIGN KEY]和检查性约束[CHECK]
         1:非空约束[NOT NULL]
    空值[NULL]是不存在的值,不是0也不是空字符串。默认情况下表中的是允许为NULL的,在建表时如
    NAME VARCHAR(20) NOT NULL,即标记该字段不能为空。
         2:主键约束[PRIMARY KEY]
    主键用于唯一的标识表中的每一行记录,在一个表中,最多只能有一个主键约束[可没有],主键既可以由一个列组成,也可以由两个或以上的列组成[这种称为组合键],主键约束同时也具有非空约束的特征。如果主键约束由一列组成,该主键约束被称为行级约束,如果主键由两个或以上列组成,则该主键约束被称为表级约束。主键约束列不允许为空值。
         ALTER TABLE TAB_NAME ADD PRIMARY KEY COL_NAME;
         3:唯一性约束[UNIQUE]
    唯一性约束强调所在的列不允许有相同的值,但是它的定义要比主键约束弱,即它允许所在的列可以为空值。唯一性约束的主要作用是在保证除主键列外,其他列值的唯一性。
         ALTER TABLE TAB_NAME ADD UNIQUE COL_NAME;
         4:外键约束[FOREIGN KEY]
    一般的外键约束会使用两个表进行关联[也存在一个表自连接的情况],外键是指'当前表[外键表]'引用另一个表[即被引用的表]的某个列或某几个列,而被引用的表的列必须具有主键约束或者唯一性约束。被引用表的列中不存在的数据不能出现在当前表对应的列中。一般情况下,当删除被引用表中的数据时,该数据也不能出现在外键表的外键列中,如果外键列存储了被引用表中将要删除的数据,那么对被引用的删除操作将失败,添加外键约束的语法如下:
         ALTER TABLE TAB_NAME ADD FOREIGN KEY COL_NAME REFERENCES TAB_NAME ON DELETE CASCAHE;
         5:检查约束[CHECK]
    指定某个字段内容必须在约束范围之内,如定义的年龄字段不能超过200等
         ALTER TABLE TAB_NAME ADD CONSTRAINT COL_NAME CHECK (约束条件);
    在设计时需要考虑这些约束是在数据库层面实现还是在应用程序层实现,在数据层实现的好处是减少了开发工作量,对应用透明,但是若业务逻辑复杂的话,放在应用层实现逻辑更清晰,而且也会增加运维的负担。例如在数据迁移时,如果表上有约束需要执行特别检查
    展开全文
  • 1、约束 约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign key 1.1 非空约束:not ...

    目录

    1 表的约束

    1.1 非空约束:not null

    1.2 唯一约束:unique,值不能重复

    1.3 主键约束:primary key

    1.4 外键约束:foreign key


    1 表的约束

    约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类:

    • 主键约束:primary key
    • 非空约束:not null
    • 唯一约束:unique
    • 外键约束:foreign key

    1.1 非空约束:not null

    1)在创建表时添加约束:

    CREATE TABLE stu(
    	id INT,
    	NAME VARCHAR(20) NOT NULL -- name为非空
    );

    2)创建表后再添加非空约束:

    ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL; 

    3)删除name的非空约束:

    ALTER TABLE stu MODIFY NAME VARCHAR(20)

    1.2 唯一约束:unique,值不能重复

    1)创建表时添加唯一约束:

    CREATE TABLE stu(
    	id INT,
    	number VARCHAR(20) UNIQUE
    );

    注意:MySQL中唯一约束限定的列的值可以有多个null

    2)删除唯一约束:

    -- alter table stu modify number varchar(20); 不同于非空约束的删除方法
    ALTER TABLE stu DROP INDEX number;

    3)创建表后添加唯一约束:

    ALTER TABLE stu MODIFY number VARCHAR(20) UNIQUE;

    1.3 主键约束:primary key

    1)注意:

    • 若某一列添加了该约束,则代表了非空,且唯一;
    • 一张表只能有一个字段为主键;
    • 主键就是表中记录的唯一标识;

    2)创建表时添加主键约束

    CREATE TABLE stu(
    	id INT PRIMARY KEY,
    	number VARCHAR(20)
    );

    3)删除主键

    -- 错误方式 ALTER TABLE stu MODIFY id int;
    ALTER TABLE stu DROP PRIMARY KEY;

    4)创建完表后添加主键

    ALTER TABLE stu MODIFY id INT PRIMARY KEY;

    5)自动增长:若某一列是数值类型的,使用关键字auto_increment 可以来完成值得自动增长。

    • 在创建 表时添加主键约束,且完成主键自增长 
    CREATE TABLE stu(
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	number VARCHAR(20)
    );
    • 删除自动增长
    ALTER TABLE stu MODIFY id INT;
    • 创建后,添加自动增长
    ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

    1.4 外键约束:foreign key

    【引例】我们创建一张职工表如下,但是发现存在明显的缺陷:

    • 数据冗余;
    • 后期还会出现增删改的问题;

    所以,基于以上问题,我们可以通过拆表解决,一张员工表,一张部门表,员工表中的dep_id 对应部门表中的id

    以上仍然存在一个问题,当在员工表中输入不存的部门时,数据依然可以添加,不符合实际,因此,这里就可以通过使用外键约束来解决。

    【概念】什么是外键约束?

    外键,就是从表中与主表主键对应的那一列,如:员工表中的dep_id,其中,主表是一方,用来约束别人的表,从表可以是多方,被别人约束的表。

    注意:外键可以为NULL,但是不能是不存在的外键值。

    1)创建表时添加外键

    语法:
            create table 表名(
                       ...
                       外键列
                       constraint 外键名称 foreign key (外键列名称) references 主表名称(主表主键名称)
            );

    -- 创建部门表(id,dep_name,dep_location) 
    -- 一方,主表 
    CREATE TABLE department(  
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	dep_name VARCHAR(20),
    	dep_location VARCHAR(20) 
    ); 
     
    -- 创建员工表(id,name,age,dep_id) 
    -- 多方,从表 
    CREATE TABLE employee(
    	id INT PRIMARY KEY AUTO_INCREMENT,
    	NAME VARCHAR(20),
    	age INT,
            dep_id INT, -- 外键对应主表的主键
            CONSTRAINT emp_dep_fk FOREIGN KEY (dep_id) REFERENCES department(id)
    ); -- 外键对应主表的主键  
     
    -- 添加2个部门 
    INSERT INTO department VALUES(NULL, '研发部','广州'); 
    INSERT INTO department VALUES(NULL, '销售部','深圳'); 
     
    -- 添加员工,dep_id表示员工所在的部门 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('张三', 20, 1); 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('李四', 21, 1); 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('王五', 20, 1); 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('老王', 20, 2); 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('大王', 22, 2); 
    INSERT INTO employee (NAME, age, dep_id) VALUES ('小王', 18, 2); 
    SELECT * FROM employee;
    SELECT * FROM department;

    因为有外键的约束,在员工表中添加一个不在部门表范围内的内容,则无法保存:

    2)删除外键:ALTER TABLE 表名称 DROP FOREIGN KEY 外键名称;

    -- 删除外键
    ALTER TABLE employee DROP FOREIGN KEY emp_dep_fk;

    3)在创建表后添加外键:
    ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

    -- 添加外键
    ALTER TABLE employee ADD CONSTRAINT emp_dep_fk FOREIGN KEY (dep_id) REFERENCES department(id);

    4)级联操作

    若希望改动部门表的id,同时希望自动改动员工表中的id,这时就需要进行级联操作,需要在添加外键的时候设置级联:

    • 添加级联操作:ALTER TABLE 表名称 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称)  ON UPDATE CASCADE ON DELETE CASCADE ;
    • 分类:级联更新 ON UPDATE CASCADE
                 级联删除 ON DELETE CASCADE 

    本文为博主原创文章,转载请注明出处!

    若本文对您有些许帮助,轻抬您发财的小手,关注/评论/点赞/收藏,就是对我最大的支持!

    祝君升职加薪,鹏程万里!

    展开全文
  • 列级约束约束

    千次阅读 2019-04-08 11:25:23
    约束又分为列级约束约束,它们的区别: (1)列级约束:只能应用于一列上。 约束:可以应用于一列上,也可以应用在一个中的多个列上。 (即:如果你创建的约束涉及到该的多个属性列,...

    5种约束:

         主键约束(primary key )、唯一性约束(unique)、检查约束(check)、缺省约束(default)、外部键约束(foreign)

     

    约束又分为列级约束与表级约束,它们的区别:

    (1)列级约束:只能应用于一列上。

               表级约束:可以应用于一列上,也可以应用在一个表中的多个列上。

    (即:如果你创建的约束涉及到该表的多个属性列,则必须创建的是表级约束(必须定义在表级上);否则既可以定义在列级上也可以定义在表级上此时只是SQL语句格式不同而已)

    (2)列级约束:包含在列定义中,直接跟在该列的其它定义之后 ,用空格分隔;不必指定列名  

              表级约束:与列定义相互独立,不包含在列定义中;与定义用‘,’分隔;必须指出要约束的列的名称

    (注:因为在创建列级约束时,只需将创建列约束的语句添加到该字段(列)的定义子句后面;而在创建表级约束时,需要将创建表级约束的语句添加到各个字段(列)定义语句的后面,因为并不是每个定义的字段都要创建约束,所以必须指明需要创建的约束的列名。)

         举例说明:Create Table project

                            (

                                 项目编号 int

                                  Constraint  pk_pno  primary  key,

                                  项目名称 char(20),

                                  项目负责人 char(20),

                                  Constraint  un_pname_pm  unique(项目名称,项目负责人)

                                  )

         分析:“项目编号”字段设置为主键,主键约束名为pk_pno,此主键约束为列主键约束“项目名称”和“项目负责人”的组合字段设置唯一性约束,此约束为表级约束)

     

    各约束在创建列约束和表约束时的具体说明:

    一:既可以创建列级约束又可以创建表级约束的:

     1,主键约束(primary  key  constraint):

           (1)定义列约束:Constraint <约束名> Primary Key

            (2)定义表约束:[Constraint <约束名>] Primary Key( <列名> [{<列名>}])        

     

     2,唯一性约束(unique key constraint):

           (1)定义列约束:[Constrain <约束名>] Unique

           (2)定义表约束:Constrain <约束名>  Unique  ( <列名> [{<列名>}])        

     

     3,检查约束(check constraint):

            既可以用于列约束,也可以用于表约束:  [Constraint <约束名>]  Check (<条件>)

           (注意:一个列级检查约束只能与限制的字段有关;一个 表级约束只能与限制的表中的字段有关)

    4外键约束(foreign  key constrain:

                定义 列级约束:[Constraint <约束名>] Foreign key  References <外表名>

                定义表级约束:[Constraint <约束名>] Foreign key  References <外表名>( <列名> [{<列名>}])        

    二:只能创建列级约束的:

    1,缺省约束(default constraint):

                    [Constraint <约束名>] Default  约束条件

       

     2,Null 约束:

                    [Constraint <约束名>] [Null | Not Null]

    展开全文
  • MySQL数据库表约束

    千次阅读 多人点赞 2018-01-16 14:48:27
    为了防止往数据中插入错误的数据,在MySQL中,定义了一些维护数据库完整性的规则,即约束。 常见的约束:    上表中列举的约束条件都是针对中字段进行限制, 从而保证数据中数据的正确性和...
  • 约束与列级约束 约束与列级约束 (1)对一个数据列建立的约束,称为列级约束 (2)对多个数据列建立的约束,称为约束 (3)列级约束既可以在列定义时声明,也可以在列定以后声明 (4)约束只能在列...
  • Oracle创建约束、修改

    千次阅读 2018-10-17 14:22:44
    创建 第一种方式,语法如下: --column_name:列名 --type:数据类型 --注意:多个列名之间用逗号分隔,最后一列不要加逗号 create table table_name( column_name type, column_name type ) 第二种方式,语法...
  • 约束的区别 数据库是通过来解决事物的存储问题的。 数据库是用过约束来解决事物取值的有效性和合法性的问题。 建表的过程就是指定事物属性及其事物属性各种约束的过程。 check 约束意义:保证事物属性的取值在...
  • mysql修改时添加默认约束和删除默认约束 直接po代码和截图 # CREATE TABLE testMyIndex2( id int, address VARCHAR(130), email VARCHAR(40), hobby VARCHAR(160), userName VARCHAR(50) ); #修改时添加默认...
  • mysql 创建唯一约束表

    千次阅读 2019-08-28 11:15:46
    说明: UNIQUE 约束唯一标识数据库中的每条记录。 UNIQUE 和 PRIMARY KEY ...请注意,每个可以有多个 UNIQUE 约束,但是每个只能有一个 PRIMARY KEY 约束。 1、创建一个测试: create table test(...
  • mysql 给添加唯一约束、联合唯一约束,指定唯一约束的名字 结构 [sql] view plain copy   FIELD TYPE COLLATION NULL KEY DEFAULT Extra PRIVILEGES 
  • MySQL 约束与列级约束

    千次阅读 2017-02-09 17:14:58
    对于一个列所创建的约束...在实际开发中,用列级约束比较多,约束很少用,除此之外,在所有的约束中,并不是说每种约束都存在着级或列级约束,其中,NOT NULL 非空约束,DEFAULT约束这两种约束就不存在约束
  • (2)、约束分为约束和列级约束; (3)、约束的类型包括 NOT NULL(NN,非空约束)、 PRIMARY KEY(PK, 主键约束)、 UNIQUE KEY(UN, 唯一约束)、 DEFAULT(DE,默认约束)、 FOREIGN KEY(FK, 外键约束)2、...
  • 约束:应用于,对表的多个起作用 列级约束:应用于的一列,只对该列起作用disable与enable约束 控制约束约束 控制约束是禁用还是激活状态 disable:禁止状态,相当于该列没有约束 enable:激活状态...
  • 查询oracle中每个哪些约束条件

    千次阅读 2013-07-31 16:07:52
    我们可以使用下面语句从all_constraints视图中查看某上的约束:   SELECT constraint_name, table_name, r_owner, r_constraint_name FROM all_constraints WHERE table_name = 'table_name' and owner = '...
  • 修改约束(alter语句)

    千次阅读 2016-10-03 22:39:06
    修改约束(alter语句)create table t_user(id number constraint user_id_pk primary key,name varchar2(100),salary number); drop table t_user; //在中添加一个新的列alter table t_user add birthday date;...
  • MySQL——约束(constraint)详解

    万次阅读 多人点赞 2018-03-22 15:40:04
    在设计的时候加入约束的目的就是为了保证中的记录完整和有效 比如name字段中要让其用户名不重复,这就需要添加约束。或者必须注册的时候需要添加邮箱等 三、约束种类 非空约束(not...
  • sql中约束和列级约束

    万次阅读 多人点赞 2017-03-19 16:02:41
    (1) 对于基本约束分为列约束表约束 约束是限制用户输入到中的数据的值的范围,一般分为列级约束约束。 列级约束有六种:主键Primary key、外键foreign key 、唯一 unique、检查 checck 、默认...
  • 这里的添加主键约束、添加唯一约束,指的是列级约束,是在数据创建以后再添加的。  例如,给user3中的id字段添加主键约束: ALTER TABLE user3 ADD PRIMARY KEY(id); 例如,给user3中的3name字段添加唯一...
  • 想知道主键约束,就需要知道主键是什么。 所谓主键,你可以理解为一个能够标识数据唯一的标志,比如我们设定ID,ID是永远都不能重复的,这就是主键。添加了主键之后,就有了主键约束。比如你的主键是登陆名称,这一...
  • mysql列级约束约束

    千次阅读 2019-01-09 23:09:54
    非空: (not null) ...unique约束的字段具有唯一性,不可重复,但是可以为null 例如列级约束: drop table if exists t_student; create table t_student( id int not null name varchar(32) no...
  • (二)的连接与外键约束

    千次阅读 2015-08-10 20:35:29
    外键约束连接 【建立的关系】 1.额外建立一张描述两个之间的关系,存储两张需要连接的的主键对应关系。 2.利用外键约束 外键:一张的某个字段引用着另一张的主键,在数据多的中多一个字段...
  • 一、非空约束(只能在列级设置,不能在级设置) 1、在创建时设置非空约束 CREATE TABLE table_name( column_name datatype NOT NULL,…… );     2、在修改时添加非空约束 ALTER TABLE table_name ...
  • 约束分为列级约束约束。   如果我们了解了这件事情,那么当我们用T—SQL语句创建约束时,思路就会更加清晰。了解了这件事,相信我们会对约束有更进一步的理解。   大家都知道,在SQL Server ...
  • 这里的添加主键约束、添加唯一约束,指的是列级约束,是在数据创建以后再添加的。 例如,给user3中的id字段添加主键约束: ALTER TABLE user3 ADD PRIMARY KEY(id); 例如,给user3中的3name字段添加唯一约束...
  • 约束 * 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。 * 分类: 1. 主键约束:primary key 2. 非空约束:not null 3. 唯一约束:unique 4. 外键约束:foreign key * 非空约束:not ...
  • oracle 查看表约束,列约束

    千次阅读 2013-08-12 22:15:20
    USER_CONS_COLUMNS.CONSTRAINT_NAME AS 约束名, USER_CONS_COLUMNS.TABLE_NAME AS 表名, USER_CONS_COLUMNS.COLUMN_NAME AS 列名, USER_CONS_COLUMNS.POSITION AS 位置 FROM USER_CONSTRAINTS JOIN USER
  • 什么是约束? 数据库—由若干张数据组成(理解为一个类库) 数据—由行和列组成的一个二维数组(理解为一个类) 列—字段(理解为中对象的一个属性) 行—理解为中的一个对象 约束是数据库中保证数据完整性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 798,301
精华内容 319,320
关键字:

哪些约束不是单表约束