精华内容
下载资源
问答
  • 字段约束

    2019-12-18 12:01:01
    字段约束 mysql四种字段约束 主键约束 primary key 字段值唯一,且不能为null 非空约束 not null 字段不能为null 唯一约束 unique 字段值唯一可以为空 外键约束 foreign key 关联数据库(不推荐使用容易闭环) ...

    字段约束
    mysql四种字段约束

    主键约束 primary key 字段值唯一,且不能为null
    非空约束 not null 字段不能为null
    唯一约束 unique 字段值唯一可以为空
    外键约束 foreign key 关联数据库(不推荐使用容易闭环)

    展开全文
  • MySQL数据库mysql字段约束 为了确保数据的完整性和唯⼀性,关系型数 据库通过约束机制来实现目。一. unique 唯一性约束值不可重复;二. not null 非空约束值不可为空;三. default默认值约束当增加数据时没有插⼊值...

    MySQL

    数据库

    mysql字段约束

    CgpOIF5EAWWAQ0y_AAcB-fDz9P0878.png

    为了确保数据的完整性和唯⼀性,关系型数 据库通过约束机制来实现目。

    一. unique 唯一性约束

    值不可重复;

    二. not null 非空约束

    值不可为空;

    三. default  默认值约束

    当增加数据时没有插⼊值时,会自动插⼊默认值;

    四. check 检查约束

    mysql不支持该约束,但写入语句不会报错;

    五. primary key 主键约束

    主键约束 = 唯一性约束 + 非空约束,是一张表的代表性字段,

    一张表只能有一个主键,

    主键可以是一个字段,也可以是多个字段(联合主键,复合主键),

    整形主键字段可以使用auto_increment(自动增长)修饰,

    插入时不写主键字段值,值 = 上一列值 + 1;

    六. foreign key 外键约束

    外键是另一表的主键,常用来和其他表建立联系

    外键与主键的引用类型必须一致,如果主键是int外键是char则不行

    一定要匹配主表中 引用的列 ( 所要创建的外键是主表中的主键 )

    主键和外键的字符编码必须一致,如果主表为utf8,则此表也要为utf8

    --添加方式

    (注:文中添加方式仅为示例,实际同时对一个字段同

    时添加多个约束会有bug,具体原因可以参见约束原理)

    --第一种,创建表时在修饰字段末直接添加,不支持添加foreign key

    create table stu(sid int unique,sname char(20));

    create table stu(sid int not null,sname char(20));

    create table stu(sid int default 0,sname char(20));

    create table stu(sid int primary key,sname char(20));

    --第二种,创建表时单独添加,constraint表示起别名,不支持添加default

    create table stu(sid int,

    sname char(20),

    constraint unique_stu unique(sid),

    constraint notnull_stu not null(sid),

    constraint pk_stu primary key(sid),

    constraint fk_stu foreign key(sid) references s(sid)

    );

    --第三种,表已经存在,且字段下的所有值符合约束条件

    alter table stu add constraint unique_stu unique(sid);

    alter table stu add constraint notnull_stu not null(sid);

    alter table stu add constraint pk_stu primary key(sid);

    alter table stu add constraint fk_stu foreign key(sid) references s(sid);

    --查询约束信息,可查看约束名,table表示表名

    show keysfromtable;     --删除约束,index表示约束名,table表示表名

    drop index on table;

    内容来源于网络,如有侵权请联系客服删除

    展开全文
  • MySQL 字段约束

    2020-03-19 21:56:01
    1.MYSQL 字段约束 有时设置字段的数据类型还远远不够,还需要添加一些附加属性,如自动增量、自动补零、默认值设置等。这时可以使用字段约束来实现。 1.1. UNSIGNED 只能用于设置数值类型。 不允许出现负数,若是...

    1.MYSQL 字段约束

    有时设置字段的数据类型还远远不够,还需要添加一些附加属性,如自动增量、自动补零、默认值设置等。这时可以使用字段约束来实现。

    1.1. UNSIGNED

    • 只能用于设置数值类型。
    • 不允许出现负数,若是某些字段不需要插入负数,使用该属性可以将字段的最大储存长度增加一倍。例如:(TINYINT:原本储存长度为 -128 ~ 127,使用UNSIGNED后为 0 ~ 255)

    1.2. ZEROFILL

    • 同上,只能用于设置数值类型。
    • 在数值之前自动用 0 补齐不足的位置
    • 当给字段使用其属性时,该字段自动应用UNSIGNED属性

    1.3. AUTO_INCREMENT (此属性必须配合 KEY 值一起使用)

    • 该属性用于设置字段的自动增量属性
    • 设置后该字段的值不允许重复

    1.4. NULL和NOT NULL(一般就使用默认值即可)

    • 字段默认为 BULL,即此字段未插入值(也可理解为默认值)
    • 如果指定了NOT BULL ,则必须在此字段插入值(否则报错,严格模式下)

    1.5. DEFAULT

    • 此属性可以给字段添加默认值,在性别等字段使用

    使用方法如下
    在这里插入图片描述

    1.6. 字段约束的使用

    直接在建表或插入数据时,添加约束至数据类型后即可

    这里拿 UNSIGNED 实验一下

    在这里插入图片描述
    建表成功,下面来对比一下两个表的数据
    在这里插入图片描述
    上面是没有使用字段约束的 TINYINT 类型,后面的括号代表了字节长度为 4 ( -128 ~ 127 ,符号也会算进去)
    在这里插入图片描述
    上面是使用了unsigneds字段约束的TINYINT类型,字节长度为 3 (0 ~ 255,没有负数符号,所以最大字节为 3)。

    2.MYSQL 主键约束(PRIMARY KEY)

    主键约束也是字段约束一种,保持了数据的唯一性,帮助我们更好找到需要的内容

    关键字 : PRIMARY KEY

    • 每张数据表中只能存在一个主键
    • 作用为 保证记录的唯一性
    • 主键自动使用 NOT BULL 关键字
    • AUTO_INCREMENT必须和 PRIMARY KEY 一起使用。但是反过来,PRIMARY KEY则不需要,可以单独使用

    下面将 AUTO_INCREMENT 使用一下
    在这里插入图片描述
    上面创建了 名为 tp2 的数据表,定义了 id 与 user 用了 不用的字段约束,下面来查看一下

    在这里插入图片描述
    下面来定义一下 user 的数据 ,并查看数据
    在这里插入图片描述
    可以看到,我们并没有给 id 设置具体的值,但是 AUTO_INCREMENT 字段约束会自动增量,于是当user 插入了值时,id 也会自动增量

    注意:上面只是体现了 AUTO_INCREMENT 的特性,下面来看看 PRIMARY KEY 有什么作用

    在这里插入图片描述
    定义表 tp3
    在这里插入图片描述
    查看表,id 出现KEYPRI,并且不能为 NULL
    在这里插入图片描述
    向表中插入id值为 5成功。但是再插入同样的 id 值时却失败,将 5 换成其他数字,成功插入。
    这就证明了 使用 PRIMARY KEY 可以将字段的值具有唯一性,不可重复

    3.MYSQL 唯一约束(UNIQUE KEY)

    唯一约束跟主键约束非常类似,不同的就是唯一约束可以 为空值 并且可以存在多个唯一约束

    • 关键字: UNIQUE KEY
    • 可以保证记录的唯一性
    • 可以为空值
    • 可以存在多个 UNIQUE KEY

    在表中若是存在多个需要唯一标识的值时(例如:手机号、id值、身份证等),用PRIMARY KEY就不能完全满足需求了,这时 UNIQUE KEY 就可以更合适的使用

    4.MYSQL 外键约束(FOREIGN KEY)

    此约束作为了解,真实操作时不会这么直接使用外键约束

    外键约束可以保持数据一致性,完整性。
    实现一对一或一对多关系

    • 父表与子表必须使用相同的储存引擎,必须为 innoDB
    • 外键列(子表列)和参照列(父表列)必须具有相同的数据类型,且数字的长度和是否有符号位也必须相同,字符的长度可以不同
    • 外键列和参照列必须创建索引。否则MySQL将自动创建索引
    • 查看索引SHOW INDEXES FROM 表名

    创建方式:FOREIGN KEY (外键列名) 参照表名 (参照列名)

    下面来创建一个外键列,先创建父表(参照表)
    在这里插入图片描述
    下面创建子表
    在这里插入图片描述
    创建完成

    展开全文
  • MySQL字段约束

    2019-07-28 11:56:23
    MySQL字段约束 MySQL支持的约束包括主键(primary key)约束、非空约束(not NULL)、检查约束(check)、默认值约束(default)、唯一性(unique)约束以及外键约束。 1.设置主键约束 (1)如果一个表的主键是单个字段,直接在...
    MySQL字段约束

    MySQL支持的约束包括主键(primary key)约束、非空约束(not NULL)、检查约束(check)、默认值约束(default)、唯一性(unique)约束以及外键约束。

    1.设置主键约束

    (1)如果一个表的主键是单个字段,直接在该字段的后面加上"primary key"关键字,即可将该字段设置为主键约束。

    mysql> create table student(student_no char(11) primary key);
    Query OK, 0 rows affected (0.00 sec)
    mysql> desc student;
    +------------+----------+------+-----+---------+-------+
    | Field      | Type     | Null | Key | Default | Extra |
    +------------+----------+------+-----+---------+-------+
    | student_no | char(11) | NO   | PRI | NULL    |       |
    +------------+----------+------+-----+---------+-------+
    1 row in set (0.03 sec)
    

    (2)如果一个表的主键是多个组合字段:primary key (字段1,字段2)

    mysql> create table time(t1 datetime ,t2 timestamp,primary key(t1,t2));
    Query OK, 0 rows affected (0.02 sec)
    mysql> desc time;
    +-------+-----------+------+-----+---------------------+-----------------------------+
    | Field | Type      | Null | Key | Default             | Extra                       |
    +-------+-----------+------+-----+---------------------+-----------------------------+
    | t1    | datetime  | NO   | PRI | 0000-00-00 00:00:00 |                             |
    | t2    | timestamp | NO   | PRI | CURRENT_TIMESTAMP   | on update CURRENT_TIMESTAMP |
    +-------+-----------+------+-----+---------------------+-----------------------------+
    2 rows in set (0.00 sec)
    
    ===================查看索引信息======================
    mysql> show index from time\G
    *************************** 1. row ***************************
            Table: time
       Non_unique: 0
         Key_name: PRIMARY
     Seq_in_index: 1
      Column_name: t1
        Collation: A
      Cardinality: 0
         Sub_part: NULL
           Packed: NULL
             Null: 
       Index_type: BTREE
          Comment: 
    Index_comment: 
    *************************** 2. row ***************************
            Table: time
       Non_unique: 0
         Key_name: PRIMARY
     Seq_in_index: 2
      Column_name: t2
        Collation: A
      Cardinality: 0
         Sub_part: NULL
           Packed: NULL
             Null: 
       Index_type: BTREE
          Comment: 
    Index_comment: 
    2 rows in set (0.00 sec)
    
    字段名 说明
    Table 表的名称
    Non_unique 0表示索引中不能包含重复值(主键和唯一索引时该值为0).
    1表示索引中可以包含重复值
    Key_name 索引的名称
    Seq_in_index 索引中的字段序列号,1表示该字段是第一关键字,2表示该字段是第二关键字
    Column_name 哪个字段名被编入索引
    Collation 关键字是否排序,A表示排序,NULL表示不排序。若Index_comment值为BTREE
    该值总为A;若为全文索引,该值为NULL
    Cardinality 关键字值的离散程度,该值越大,越离散
    Sub_part 如果整个字段值被编入索引,则为NULL,如果字段的某个部分被编入索引,则值
    为被编入索引的字符个数。
    Packed 索引的关键字是否被压缩。没有压缩则为NULL。
    Null 如果字段可以为NULL,则为YES,否则为NO。
    Index_type 索引的数据结构(BTREE,FULLTEXT,HASH,BTREE)
    Comment 注释

    2、非空约束

    设置非空约束的字段,字段值不能为NULL值

    字段名 数据类型 not null

    mysql> create table st(student_name char(20) not null);
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> desc st
        -> ;
    +--------------+----------+------+-----+---------+-------+
    | Field        | Type     | Null | Key | Default | Extra |
    +--------------+----------+------+-----+---------+-------+
    | student_name | char(20) | NO   |     | NULL    |       |
    +--------------+----------+------+-----+---------+-------+
    1 row in set (0.00 sec)
    

    3、设置默认约束

    设置某个字段的默认值 字段名 数据类型[其他约束条件] detault 默认值

    mysql> create table st2(stu_no int default 60);
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> insert into st2 values();
    Query OK, 1 row affected (0.00 sec)
    
    mysql> select * from st2;
    +--------+
    | stu_no |
    +--------+
    |     60 |
    +--------+
    1 row in set (0.00 sec)
    

    4、设置唯一性约束

    若某个字段的值是唯一的不允许重复,则可以添加此约束限制。

    字段名 数据类型 unique

    mysql> create table st3(stu_no int unique);
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> desc st3;
    +--------+---------+------+-----+---------+-------+
    | Field  | Type    | Null | Key | Default | Extra |
    +--------+---------+------+-----+---------+-------+
    | stu_no | int(11) | YES  | UNI | NULL    |       |
    +--------+---------+------+-----+---------+-------+
    1 row in set (0.00 sec)
    
    

    5、外键约束

    外键约束主要用于定义表和表的关系。表A外键字段的取值,要么是NULL,要么是来自B主键字段的取值(此时将表A称为表B的字表,表B称为表A的父表)。

    在表A中设置外键的语法规则如下。

    constraint 约束名 foreign key (表A字段名) references 表B(字段名) [on delete级联选项] [on update级联选项]
    级联选项有4种取值,其意义如下。
    (1)cascade:父表记录的删除(delete)或者修改(update)操作,会自动删除或修改子表中与之对应的记录。
    (2)set null:父表记录的删除(delete)或者修改(update)操作,会将子表中与之对应记录的外键值自动设置为null值。
    (3)no action:父表记录的删除(delete)或者修改(update)操作,如果子表存在与之对应的记录,那么删除或修改操作将失败。
    (4)restrict:与no action功能相同,且为级联选项的默认值。
    mysql> create table st(stu_no  int primary key not null);
    Query OK, 0 rows affected (0.01 sec)
    
    
    mysql> create table st2(stu_no int,constraint stu_no_fk foreign key (stu_no) references st(stu_no));
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> show index from st2\G
    *************************** 1. row ***************************
            Table: st2
       Non_unique: 1
         Key_name: stu_no_fk
     Seq_in_index: 1
      Column_name: stu_no
        Collation: A
      Cardinality: 0
         Sub_part: NULL
           Packed: NULL
             Null: YES
       Index_type: BTREE
          Comment: 
    Index_comment: 
    1 row in set (0.00 sec)
    
    展开全文
  • Oracle字段约束

    2020-03-10 14:52:52
    Oracle字段约束 1.约束是数据库用来确保数据满足业务规则的手段,对数据做的条件限制。 2.约束的类型 1. 主键约束(PRIMARY KEY) 1. 主键约束(PRIMARY KEY) 1. 非空加唯一约束; 2. 一个表只有一个主键; 3. ...
  • MySQL——字段约束

    2021-01-03 11:15:07
    字段约束的作用 ​ 为保证数据库中存储数据的规范化,一般需要在定义字段时进行字段规范与约束的定义。保证在进行数据录入时,数据库能够通过这个规则、约束、规范检查所录入的数据,防止错误及不符合要求数据的...
  • 字段约束MySQL的字段约束共四种:约束名关键字描述主键约束PRIMARY KEY字段值唯一,且不能为NULL非空约束NOT NULL字段值不能为NULL唯一约束UNIQUE字段值唯一,但可以为NULL外键约束FOREIGN KEY保持关联数据的逻辑性...
  • django系列4—数据库字段约束

    千次阅读 2020-06-16 10:41:48
    字段约束是在搭建数据库时,最字段进行的额外约束,比如max_length,default等。这里是一些常用的字段约束
  • 为了确保数据的完整性和唯⼀性,关系型数 据库通过约束机制来实现目。一. unique 唯一性约束值不可重复;二.... primary key 主键约束主键约束 = 唯一性约束 + 非空约束,是一张表的代表性字段,...
  • oracle数据库orcale开发oracle技术文章plsql字段约束 第五章 字段约束初识约束约束是数据库用来确保数据满足业务规则的手段,对数据做的条件限制。约束的类型1. 主键约束(PRIMARY KEY)2. 唯一性约束(UNIQUE)3. 非空...
  • 1 /*******sql删除字段约束 删除字段**********/ 2 DECLARE @table NVARCHAR(50);---定义表 3 DECLARE @cloumn NVARCHAR(50);-----定义列 4 DECLARE @name NVARCHAR(50);--约束名 5 SET @table='';--赋值...
  • mysql字段约束

    千次阅读 2016-04-11 11:04:00
    字段约束用来确保数据的完整性(可靠性和准确性)。 1主键约束 1>主键简介: 主键是表的标志列,在mysql中支持将一个或多个字段作为一个主键来使用。关系数据库依赖于主键,主键在物理层面只有两个用途: 唯一的...
  • 创建Oracle数据库的字段约束: 非空约束唯一约束对字段的取值的约束默认值外键约束 create table tab_class( class_id number pr创建Oracle数据库的字段约束:非空约束唯一约束对字段的取值的约束默认值外键约束...
  • 字段常用约束如下表:约束名称primary key主键unique key唯一约束null空约束default默认值auto_increment自增长约束comment注释foreign key外键约束主键(primary key)能唯一标识记录的字段,可以作为主键。...
  • 数据库字段约束格式错误 1.问题描述: Column ‘createDatetime’ cannot be null 2.问题原因: models文件中创建createDatetime字段时未声明字段可为空 createDatetime=models.DateTimeField(auto_created=...
  • 1.字段约束:主键约束、非空约束、唯一约束 (1.1)主键约束 (1.2)非空约束 (1.3)唯一约束 (1.附加)主键约束、非空约束、唯一约束的一个小范例 2.字段约束:外键约束 (2.1)外键约束 (2.2)外键约束...
  • 字段属性 字段约束

    2019-05-31 21:31:54
    类型 描述 AutoField 自动增长的...BooleanField 布尔字段,值为True或False。 NullBooleanField 支持Null、True、False三种值。 CharField(max_length=最大长度) 字符串。参数max_length表示最大字符个数。 TextF...
  • Oracle 字段约束

    2019-09-23 22:34:21
    初识约束 约束是数据库用来确保数据满足业务规则的手段,对数据做的条件限制。 约束的类型 主键约束(PRIMARY KEY) 唯一性约束(UNIQUE) 非空约束(NOT NULL) 外键约束(FOREIGN KEY) 检查约束(CHECK) ...
  • 创建与删除SQL约束或字段约束 1)禁止所有表约束的SQL select 'alter table '+name+' nocheck constraint all' from sysobjects where type='U' 2)删除所有表数据的SQL select 'TRUNCATE TABLE '+name from ...
  • mysql 字段约束

    千次阅读 2017-04-24 19:04:11
    5.6 操作表的约束 80 5.6.1 MySQL支持的完整性约束 81 5.6.2 设置非空约束(NOT NULL,NK) 81 5.6.3 设置字段的默认值(DEFAULT) 82 5.6.4 设置唯一约束(UNIQUE,UK) 84 5.6.5 设置主键约束(PRIMARY KEY,...
  • SQL字段约束

    千次阅读 2018-12-01 20:55:54
     primary key ,约束表数据唯一性,一张表只可有一个主键,但可以有复合主键,主键字段本身不为空  1.1增加主键  创建表的时间字段属性加上primary key [not null] comment;  name varchar(10) primary key ...
  • 下文为您介绍SQL语句如何表示SQL约束和字段约束的创建和删除,如果您对此有兴趣,不妨一看,相信对您有所帮助。 1)禁止所有表约束的SQL select 'alter table '+name+' nocheck constraint all' from sysobjects ...
  • 什么叫约束条件,约束条件...前2列是字段名和字段的类型,后4列都属于约束条件,每一列约束的条件都不一样NULL:代表的是允不允许为空,如果NULL里边的值是YES,那就代表这个字段里边可以存空值,空就是没有数据,如...
  • 1. 在已存在的表中添加字段约束AUTO_INCREMENT修饰符mysql> alter table user modify uid int auto_increment primary key;ERROR 1062 (23000): ALTER TABLE causes auto_increment resequencing, resulting in ...
  • Oracle 数据库中关于对表字段约束的操作(设置、删除、查询)1. 给表的单个字段加约束SQL> ALTER TABLE 表名 ADD UNIQUE(字段名);2. 删除表的单个字段约束SQL> ALTER TABLE 表名 DROP UNIQUE(字段名);3. 给表的...
  • 今天我们就来看一下 MySQL 的字段约束: NULL 和 NOT NULL 修饰符、DEFAULT 修饰符,AUTO_INCREMENT 修饰符。 NULL 和 NOT NULL 修饰符 可以在每个字段后面都加上这 NULL 或 NOT NULL 修饰符来指定该字段是否可以为...

空空如也

空空如也

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

字段约束