精华内容
下载资源
问答
  • 主键约束要求主键列的数据唯一,并且不允许为空。分为两种类型:单字段主键和多字段联合主键2.外键约束外键约束是为了来维持参照完整性的。也就是用来维持两个表的数据之间关系的。想一下有两个表, 一个职员表,一...

    mysql中的约束使用和oracle使用差别不大。

    1.主键约束

    如同人对应身份证,主键能够唯一地标识表中的一条记录,可以结合外键来定义数据表之间的关系。

    主键约束要求主键列的数据唯一,并且不允许为空。

    分为两种类型:单字段主键

    fcd7da60734f51c23c7f4abf33075bd0.png

    和多字段联合主键

    9e330c833a130a4f76f97e10146ad1f8.png

    2.外键约束

    外键约束是为了来维持参照完整性的。也就是用来维持两个表的数据之间关系的。想一下有两个表, 一个职员表,一个部门表,部门表中部门编号为主键,职员表里面也有一个部门编号,如果他不按照部门表中的部门编号来写,就乱套了,所以要外键关联到部门表的主键,确保参照完整性,也就是不能瞎写,必须要写合法的。

    外键约束在一个表中可以有多个,因为可能关联多个表,另外不允许删除在另一个表中具有关联关系的行。

    64f19ccd056dffedf9e7e756873f8c14.png

    tb2中的deptid关联tb1中的id.

    3.非空约束。

    顾名思义也就是不能为空。

    79f8f3d77545153897750d2d1cd8feec.png

    这个not null 就是定义了非空约束

    4.唯一性约束。

    唯一性约束与主键有点相同但也有很大的不同,从名字看以看出这是为了记录的唯一存在,看起来和主键作用一样,但是唯一性约束可以有多个,而且数据可以为空

    1b52efe5d9d5dadcef48e5d2f19ad3a1.png

    5.默认约束

    默认约束是用来指定某列默认值的。

    514e0dddc11d4a5ecb1adaba07b38b47.png

    如果存数据的时候没有存放,默认会是1111.

    最后提一下怎么设置表的属性值自增长。

    通过给表主键添加 auto_increment关键字来实现。默认初始值为1,每新增一条记录,字段值自动加1,一个表只有一个字段能使用,且必须为主键一部分

    64c2785c67fe834eae7f0e26f818675d.png

    8c18a76cf897b736a2f95a8a5aaca6e4.png

    展开全文
  • MySQL中约束

    2020-08-06 22:42:39
    MySQL中约束: 1、约束(Constraint) 什么是约束?常见的约束有哪些? 创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。 常见的约束: 非空约束...

    MySQL中的约束:

    1、约束(Constraint)

    什么是约束?常见的约束有哪些?
    在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。


    常见的约束:
    非空约束(not null):约束的字段不能为null。
    唯一约束(unique):约束字段的值不能重复。
    主键约束(primary key):约束的字段不能为空,也不能重复。
    外检约束(foreign key):约束的字段在其它表中作了主键。
    检查约束(check):Oracle中有check约束,目前mysql不支持该约束。


    2、唯一性约束(unique)

    唯一性约束修饰的字段具有唯一性,不能重复,但可以为null

    例如:修饰名字不能重复,username varchar(255) unique


    可以修饰多个字段具有唯一性,注意下面两种写法的区别。

    列级约束:在不同的字段后面加unique。
    usernamae varchar(255) unique,
    usercode varchar(255) unique
    表示:username在整张表中具有唯一性,usercode也具有唯一性。

    表级约束:unique(字段1名称,字段2名称…)
    username varchar(255),
    usercode varchar(255),
    unique(username, usercode)
    表示:username和usercode的值联合起来具有唯一性。

    注意:not null非空约束只有列级约束,即只能写在字段后面。


    3、主键约束

    主键约束:约束的字段可以是多个,主键约束的字段简称为主键,是区别不同记录的唯一标识。

    注意:主键的值不能为null,也不能重复。

    列级约束:给员工编号添加主键约束。
    eno int primary key
    列级约束只能给一个字段添加主键约束。

    表级约束:多个字段联合起来添加一个主键约束。

    	sno bigint,
    	cno int,
    	time date,
    	primary key(sno, cno, time)
    

    结论:一张表的主键约束只能有1个,即primary key只能写一次。可以选择单字段列级约束,也可以选择多字段表级约束。


    主键有什么作用?
    表的设计三范式中有要求,第一范式就要求任何一张表都应该有主键。
    主键的作用:主键是这行记录在整张表的唯一标识。(就像一个人的身份证一样)


    主键的分类:
    根据主键字段的字段数量来划分:
    单一主键(单个字段用列级主键约束,推荐使用,常用的)
    复合主键(多个字段用表级主键约束,会产生部分依赖,不推荐使用,违背了三范式设计原则)

    根据主键的性质来划分:
    自然主键:主键值最好就是一个和业务没有任何关系的自然数。(这种方式是推荐使用的)
    业务主键:主键值和系统的业务挂钩,例如:拿着银行卡的卡号做主键。(不推荐使用)

    最好不要拿业务字段做主键,因为业务可能需要改动,而主键又不能随便改动,主键变化可能导致主键值重复。


    重点:
    mysql提供主键值自增:primary key auto_increment,从1开始,以1递增。

    例如:

    create table t_user(
    	uid int primary key auto_increment,
    	uname varchar(255)
    );
    

    写插入语句时就不需要写主键了:
    insert into t_user(uname) values(‘张三’); // 主键值为1
    insert into t_user(uname) values(‘李四’); // 主键值为2

    注意:在不使用业务主键前提下,如果表中可以设置成单一主键时,就使用单一主键。如果单一主键不行时,不建议使用复合主键,应该用自然主键,采用主键自增机制。

    了解:Oracle中也提供了一个自增机制,叫做:序列(sequence)对象。


    4、外键约束

    业务背景:请设计数据库表,用来维护学生和班级信息。
    显然,如果将所有的数据都设计在一张表当中,会显得数据冗余。
    应该这样设计:

    t_class 班级表
    cno(pk)	cname
    --------------------------------------------------
    301	高三1302	高三2班
    
    t_student 学生表
    sno(pk)	sname	cno(fk)
    --------------------------------------------------
    1	张三	301
    2	李四	301
    3	王五	302
    

    建表语句:

    create table t_class(
    	cno int primary key,
    	cname varchar(255) unique
    );
    
    create table t_student(
    	sno int primary key,
    	cname varchar(255),
    	classno int,
    	foreign key(classno) reference t_class(cno)
    );
    

    我们可以看出cno在t_class表中做了主键,在t_student表当中做了外键。

    在写插入语句到t_student时,cno的值不能乱写,必须是t_class中主键存在的值。

    t_student中的cno外键引用的是t_class表中的主键,我们把t_class表称为父表,t_student称为子表。

    注意:创建表时,必须先创建父表,再创建子表。
    删除表时,必须先删除子表,再删除父表。

    注意:外键可以为null。外键一般引用别的表的主键,也可以不是主键字段,但必须保证引用的字段值不能重复。

    展开全文
  • 目录非空约束 NOT NULL唯一约束 UNIQUE主键约束 PRIMARY KEY配合主键的自动增长外键约束 FOREIGN KEY所有的关系型数据库都支持对数据表使用约束,表上强制执行数据校验,保证数据的完整性。MySQL数据库支持以下四...

    目录

    非空约束 NOT NULL

    唯一约束 UNIQUE

    主键约束 PRIMARY KEY配合主键的自动增长

    外键约束 FOREIGN KEY

    所有的关系型数据库都支持对数据表使用约束,在表上强制执行数据校验,保证数据的完整性。

    MySQL数据库支持以下四种约束形式:

    非空约束 NOT NULL

    所有数值类型的值都可以为null。

    空字符串和0都不等于null。

    -- 头铁之后的报错信息:Column 'name' cannot be null

    -- 1、创建表时添加约束

    CREATE TABLE stu(

    id INT,

    NAME VARCHAR(20) NOT NULL

    );

    SELECT * FROM stu;

    -- 2、表创建完毕之后,追加约束

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

    -- 3、 删除name的非空约束

    ALTER TABLE stu MODIFY NAME VARCHAR(20);

    唯一约束 UNIQUE

    保证指定的列不允许出现重复值,但是可以存在多个null值。

    -- 头铁之后的报错信息:Duplicate entry '1' for key 'phone_number'

    -- 1、创建表时添加约束

    CREATE TABLE stu(

    id INT,

    phone_number VARCHAR(20) UNIQUE

    );

    -- mySql中,唯一约束限定的列可以有多个null

    -- 2、建表后追加唯一约束

    ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

    -- 3、删除唯一约束

    ALTER TABLE stu DROP INDEX phone_number;

    主键约束 PRIMARY KEY

    主键约束的功能相当于非空+唯一约束,既不允许出现重复,也不允许出现null。

    每个表中最多允许有一个主键,唯一确定一行记录的字段。

    -- 头铁之后的报错信息:Duplicate entry '1' for key 'PRIMARY'

    -- 1、创建表时,添加主键约束

    CREATE TABLE student(

    id INT PRIMARY KEY,

    NAME VARCHAR(20)

    );

    SELECT * FROM student;

    -- 2、建表后,追加主键

    ALTER TABLE student MODIFY id INT PRIMARY KEY;

    -- 3、删除主键

    ALTER TABLE student DROP PRIMARY KEY;

    配合主键的自动增长

    -- 自动增长,建议配合int类型的主键(如果不指定值,当前值为上一值加一)

    CREATE TABLE student(

    id INT PRIMARY KEY AUTO_INCREMENT,

    phone_number VARCHAR(20)

    );

    -- 创建表之后,追加自动增长

    ALTER TABLE student MODIFY id INT AUTO_INCREMENT;

    -- 删除自动增长

    ALTER TABLE student MODIFY id INT;

    外键约束 FOREIGN KEY

    外键约束用以通知数据库与表字段之间的对应关系,以维护数据的完整性。

    -- 首先创建不含外键约束的“一对多”关系的两张表

    CREATE TABLE dept(

    id INT PRIMARY KEY AUTO_INCREMENT,

    NAME VARCHAR(20)

    );

    INSERT INTO dept VALUES (NULL,'法师'),(NULL,'坦克'),(NULL,'剑客'),(NULL,'战士');

    CREATE TABLE emp(

    id INT PRIMARY KEY AUTO_INCREMENT,

    NAME VARCHAR(20),

    dept_id INT

    );

    INSERT INTO emp VALUES (NULL,'佐伊',1),(NULL,'扎克',2),(NULL,'亚索',3),(NULL,'盖伦',4);

    一对多的关系是,通过emp表中的dept_id字段关联到dept表中的id字段,这样我们一看到这个英雄是什么序号,就可以通过多表查询,得到这个英雄具体的职业是啥。

    在没有添加外键约束的情况下,可能会出现以下几种不合理的情况:

    -- 不合理情况1:可以任意插入英雄,选择不存在的职业

    INSERT INTO emp VALUES(NULL,'艾希',5);

    -- 不合理情况2:在仍有英雄存在的情况下,删除这个职业

    DELETE FROM dept WHERE id = 4;

    很明显,都是非常无理取闹的请求,如何去解决呢,通过外键约束。

    再来试着创建两个表,并且添加上外键约束:

    -- 新建表,添加外键

    CREATE TABLE dept(

    id INT PRIMARY KEY AUTO_INCREMENT,

    NAME VARCHAR(20)

    );

    INSERT INTO dept VALUES (NULL,'法师'),(NULL,'坦克'),(NULL,'剑客'),(NULL,'战士');

    CREATE TABLE emp(

    id INT PRIMARY KEY AUTO_INCREMENT,

    NAME VARCHAR(20),

    dept_id INT, -- 不是最后一行,注意加上逗号

    FOREIGN KEY(dept_id) REFERENCES dept(id)-- 添加外键约束(emp中的dep_id字段依赖于dept表中的id字段)

    );

    INSERT INTO emp VALUES (NULL,'佐伊',1),(NULL,'扎克',2),(NULL,'亚索',3),(NULL,'盖伦',4);

    这个时候再搞一搞无理取闹的要求试试,这个时候就不可了,会报错呢。

    -- Cannot add or update a child row: a foreign key constraint fails (xxx省略)

    -- Cannot delete or update a parent row: a foreign key constraint fails (xxx省略)

    (ps:我发现数据库的报错信息都非常直接,每次都能一眼看出来错出在哪)

    这时,如果想删除这个职业,也不是不可以,你需要把这个职业里面代表的英雄全给删咯,这样就可以删除职业了。

    -- 1.需要先删除战士英雄,也就是dept_id = 4的记录

    DELETE FROM emp WHERE dept_id = 4;

    -- 2.接着删除这个职业,成功删除

    DELETE FROM dept WHERE id = 4;

    当然,外键约束这玩意儿,其实还是蛮危险的,因为在数据量很大的情况下,由于错误设置外键,可能会导致很多数据进不了数据库,也有可能会导致很多功能难以扩展。

    【MySQL】:MySQL中四大约束

    标签:prim   对应关系   col   如何   phone   信息   导致   varchar   ica

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

    本文系统来源:https://www.cnblogs.com/summerday152/p/12431507.html

    展开全文
  • 使用主键约束主键又称主码,是表一列或多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一标识表的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以...

    mysql数据表的约束

    1.使用主键约束

    主键又称主码,是表中一列或多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。

    主键两种类型:单字段主键和多字段联合主键

    (1)单字段

    两种语法:

    a.定义列的同时指定主键:字段名 数据类型 primary key [默认值]

    create table tb_name(

    id int(11) primary key,

    name char(25),

    age int(3),

    deptID int(11)

    ) engine=innodb default charset utf8;

    b.定义完所有列之后指定主键: [constraint primary key [字段名]]

    create table tb_name(

    id int(11),

    name char(25),

    age int(3),

    deptID int(11),

    primary key (id)

    ) engine=innodb default charset utf8;

    4bab8e69ed80183d7db6afd72853cdbd.png

    (2)多字段联合主键

    定义万所有列之后指定:

    primary key (字段1,字段2...字段n)

    create table tb_name1(

    id int(11),

    name char(25),

    age int(3),

    deptID int(11),

    primary key (id,deptID)

    ) engine=innodb default charset utf8;

    adea0be9579db7d7ee619a713f47914d.png

    2.使用外键约束

    外键用来在两个表的数据之间建立链接,它可以是一列或者多列,一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。

    外键:首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键,外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。外键的作用是保持数据的一致性、完整性。

    如:部门表tb_dept的主键是id,在员工表的tb_emp中有一个键deptId与这个id关联。

    主表(父表):对应两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。

    从表(子表):对应两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。

    创建外键的语法:

    constraint 外键名 foreign key (字段名[,字段2...]) references 主表名(主键列1 [,主键列2...])

    constraint 外键名 foreign key (本数据表字段名[,字段2...]) references 另外一个数据表名(主键列1 [,主键列2...])

    实例1-一对一:创建班级和学生表

    create table class(

    cid int(11) auto_increment primary key,

    caption char(12) not null

    ) engine=innodb default charset utf8;

    create table student(

    sid int(11) not null auto_increment primary key,

    sname char(12) not null,

    gender char(3) not null,

    class_id int(11),

    constraint fk_student_class foreign key (class_id) references class(cid)

    ) engine=innodb default charset utf8;

    实例2-一对多:

    用户表和部门表

    用户:

    1 felix 1

    2 alina 2

    3 allen 3

    部门表:

    1 IT

    2 CSO

    3 MT

    create table user(

    id int(10) auto_increment primary key,

    sname char(25) not null,

    gender char(10) not null

    ) engine=innodb default charset utf8;

    insert into user(sname,gender) values ('felix','男');

    insert into user(sname,gender) values ('mission','女');

    insert into user(sname,gender) values ('allen','女');

    insert into user(sname,gender) values ('candy','女');

    insert into user(sname,gender) values ('alina','女');

    create table log(

    id int(10) auto_increment primary key,

    mname int(10) not null,

    fname int(10) not null,

    constraint fk_user_log1 foreign key (mname) references user (id),

    constraint fk_user_log foreign key (fname) references user (id)

    ) engine=innodb default charset utf8;

    insert into log(mname,fname) values ('1','3');

    insert into log(mname,fname) values ('1','4');

    insert into log(mname,fname) values ('3','4');

    insert into log(mname,fname) values ('2','3');

    insert into log(mname,fname) values ('2','5');

    实例3-多对多:

    用户表

    主机表

    用户主机关系表

    create table user(

    id int(10) auto_increment primary key,

    sname char(25) not null,

    gender char(10) not null

    ) engine=innodb default charset utf8;

    create table host(

    id int(10) auto_increment primary key,

    host char(25) not null

    ) engine=innodb default charset utf8;

    insert into host(host) values ('cchncqsrvfs01');

    insert into host(host) values ('cchncqsrvfs02');

    insert into host(host) values ('cchncqsrvfs03');

    create table useinfo(

    id int(10) auto_increment primary key,

    nameid int(10) not null,

    hostid int(10) not null,

    unique uq_name_host (nameid,hostid),

    constraint fk_userinfo_user foreign key (nameid) references user (id),

    constraint fk_userinfo_host foreign key (hostid) references host (id)

    ) engine=innodb default charset utf8;

    3.使用非空约束

    非空约束(Not Null Constraint) 指字段的值不能为空,对于使用了非空约束的字典,如果用户在增加数据时没有指定值,数据库系统就会报错。

    非空约束语法:

    字段名 数据类型 not null

    create table class(

    cid int(11) auto_increment primary key,

    caption char(12) not null

    ) engine=innodb default charset utf8;

    4.使用唯一性约束

    唯一性约束(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值,唯一约束可以确保一列或者几列不出现重复值。

    唯一性约束语法:

    字段名 数据类型 unique

    create table class(

    cid int(11) auto_increment primary key,

    caption char(12) not null unique

    ) engine=innodb default charset utf8;

    unique和primary key 的区别:一个表中可以有多个字段声明为unique,但只能有一个primary key声明,声明为primary key的列不允许空值,但是声明为unique的字段允许空值的存在。

    5.使用默认约束

    默认约束(Default Constraint)指定某列的默认值。如果男性同学较多,性别就可以默认为'男',如果插入一条新的记录时没有为这个字段赋值,那么系统就自动为这个字段赋值为'男'。

    默认约束语法:

    字段名 数据类型 default 默认值

    create table student1(

    sid int not null auto_increment primary key,

    sname char(12),

    gender char(3) default 'boy',

    class_id int

    ) engine=innodb default charset utf8;

    49c93a7c494b2b908c63c0447e9de1d1.png

    6.设置表的属性值自动增加

    在数据库应用中,经常希望在每次插入新记录时,系统自动生成字段的主键值,可以通过为表的主键增加 auto_increment 关键字来实现。

    默认的在mysql中auto_increment的初始值为1。一个表中只能有一个字段使用auto_increment约束,且该字典必须为主键的一部分。

    约束字段可以是任何整数类型(tinyint,smallint,int,bigint)。

    自动增加语法:

    字段名 数据类型 auto_increment

    create table student1(

    sid int not null auto_increment primary key,

    sname char(12),

    gender char(3) default 'boy',

    class_id int

    ) engine=innodb default charset utf8;

    通过show create tables 表名 \G; 查看创建表的命令和数据引擎、自增的值等,可以修改下次插入数据的自增值,

    alter table 表名 auto_increment=20;

    mysql> show create tablestudent \G;*************************** 1. row ***************************

    Table: studentCreate Table: CREATE TABLE`student` (

    `sid`int(11) NOT NULLAUTO_INCREMENT,

    `sname`char(12) DEFAULT NULL,

    `gender`char(3) DEFAULT NULL,

    `class_id`int(11) DEFAULT NULL,PRIMARY KEY(`sid`),KEY`fk_student_class` (`class_id`),CONSTRAINT `fk_student_class` FOREIGN KEY (`class_id`) REFERENCES`class` (`ci

    d`)

    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf81 row in set (0.00sec)

    ERROR:

    No query specified

    mysql> alter table student auto_increment=20;

    Query OK,0 rows affected (0.03sec)

    Records:0 Duplicates: 0 Warnings: 0mysql> show create tablestudent \G;*************************** 1. row ***************************

    Table: studentCreate Table: CREATE TABLE`student` (

    `sid`int(11) NOT NULLAUTO_INCREMENT,

    `sname`char(12) DEFAULT NULL,

    `gender`char(3) DEFAULT NULL,

    `class_id`int(11) DEFAULT NULL,PRIMARY KEY(`sid`),KEY`fk_student_class` (`class_id`),CONSTRAINT `fk_student_class` FOREIGN KEY (`class_id`) REFERENCES`class` (`ci

    d`)

    ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf81 row in set (0.00sec)

    ERROR:

    No query specified

    mysql>

    修改已存在表名的默认值:(下一条记录的ID号)

    desc 表名;

    show create 表名 \G;

    alter table 表名 auto_increment=20; 修改自增的ID,即下一条数据的ID 从20开始

    mysql> show create table student \G;

    *************************** 1. row ***************************

    Table: student

    Create Table: CREATE TABLE `student` (

    `sid` int(11) NOT NULL AUTO_INCREMENT,

    `sname` char(12) DEFAULT NULL,

    `gender` char(3) DEFAULT NULL,

    `class_id` int(11) DEFAULT NULL,

    PRIMARY KEY (`sid`),

    KEY `fk_student_class` (`class_id`),

    CONSTRAINT `fk_student_class` FOREIGN KEY (`class_id`) REFERENCES `class` (`ci

    d`)

    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

    1 row in set (0.00 sec)

    mysql> alter table student auto_increment=20;

    Query OK, 0 rows affected (0.03 sec)

    Records: 0 Duplicates: 0 Warnings: 0

    mysql> show create table student \G;

    *************************** 1. row ***************************

    Table: student

    Create Table: CREATE TABLE `student` (

    `sid` int(11) NOT NULL AUTO_INCREMENT,

    `sname` char(12) DEFAULT NULL,

    `gender` char(3) DEFAULT NULL,

    `class_id` int(11) DEFAULT NULL,

    PRIMARY KEY (`sid`),

    KEY `fk_student_class` (`class_id`),

    CONSTRAINT `fk_student_class` FOREIGN KEY (`class_id`) REFERENCES `class` (`ci

    d`)

    ) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8

    1 row in set (0.00 sec)

    设置自增的步长:

    基于会话级别:

    show session variables like 'auto_inc%'; 查看全局变量

    set session auto_increment_increment=2; 设置会话级别 步长(关闭当前连接的客户端或者重新开的客户端步长还是1)

    set session auto_increment_offset=10; 设置起始值

    基于全局级别:

    show global variables like 'auto_inc%'; 查看全局变量

    set global auto_increment_increment=2; 设置会话级别 步长(关闭当前连接的客户端或者重新开的客户端步长还是1)

    set global auto_increment_offset=10; 设置起始值

    mysql> show session variables like 'auto_inc%';

    +--------------------------+-------+

    | Variable_name | Value |

    +--------------------------+-------+

    | auto_increment_increment | 1 |

    | auto_increment_offset | 1 |

    +--------------------------+-------+

    2 rows in set, 1 warning (0.00 sec)

    mysql> set session auto_increment_increment=2;

    Query OK, 0 rows affected (0.00 sec)

    mysql> show session variables like 'auto_inc%';

    +--------------------------+-------+

    | Variable_name | Value |

    +--------------------------+-------+

    | auto_increment_increment | 2 |

    | auto_increment_offset | 1 |

    +--------------------------+-------+

    2 rows in set, 1 warning (0.01 sec)

    mysql> set session auto_increment_offset=10;

    Query OK, 0 rows affected (0.00 sec)

    mysql> show session variables like 'auto_inc%';

    +--------------------------+-------+

    | Variable_name | Value |

    +--------------------------+-------+

    | auto_increment_increment | 2 |

    | auto_increment_offset | 10 |

    +--------------------------+-------+

    2 rows in set, 1 warning (0.01 sec)

    展开全文
  • mysql中约束

    2014-09-30 23:04:03
    MySQL中约束保存information_schema数据库的table_constraints中,可以通过该表查询约束信息;  约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。  常用...
  • 三、约束MySQL中约束保存information_schema数据库的table_constraints中,可以通过该表查询约束信息;约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。常用五类约束...
  • 唯一约束可以确保一列或者几列不出现重复值。 非空约束 MySQL非空约束(NOT NULL)可以通过 CREATE TABLE 或 ALTER TABLE 语句实现。某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能...
  • 文章目录一、非空约束 NOT NULL二、唯一约束 UNIQUE三、主键约束 PRIMARY KEY配合主键的自动增长四、外键约束 FOREIGN KEY 所有的关系型数据库都支持对数据表使用约束,表上强制执行数据校验,保证数据的完整性。...
  • 主键与唯一约束区别面试有可能会被问到。可以从以下几个方面对比一下。1、保证唯一性2、是否允许为空3、一个表可以有多少个4、是否允许组合保证唯一性两者都保证字段值的唯一性。建一个学生表create table student...
  • 总结了一些课上的笔记和代码,可以执行看看 ...3.PRIMARY KEY:主键,用于保证该字段的值的唯一性,也就是说被设置为PRIMARY KEY的列的值不能够重复,主键不能为空。主键还有一个作用就是可以通过主
  • 创建之后规定也可以(使用ALTER TABLE语句)分类具体有以下几种NOT NULL 非空约束,规定某个字段不能为空UNIQUE 唯一约束,规定某个字段整个表是唯一的PRIMARY KEY 主键(非空且唯一)FOREIGN KEY 外键CHECK 检查...
  • 主键约束(Primay Key Coustraint) 唯一性,非空性,实体完整性约束主键不能为空在一张表,用来唯一标识一条记录的字段集,叫做主关键字或者主关键码,简称主键(或主码),这里说"字段集"是因为主键可能用一个字段...
  • MySQL中约束保存information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 常用五类约束:...
  • mysql约束

    2020-07-26 19:03:25
    该字段的值是必填的,如果不设置该约束,该字段默认是可以为空 DEFAULT:默认 该字段有默认值 CHECK:检查,mysql语法支持,但效果不支持 该字段值可以加以限制,比如年龄可以控制0-120之间 PRIMARY KEY:主键 该字段...
  • mysql 约束

    2020-08-10 08:17:04
    该字段的值是必填的,如果不设置该约束,该字段默认是可以为空 default:默认 该字段有默认值 **CHECK:检查,**mysql语法支持,但效果不支持 该字段值可以加以限制,比如年龄可以控制0-120之间 primary key:主键 该...
  • 数据库有五大约束条件,分别为主键约束,非空约束,唯一约束,检查性约束,外键约束。1)主键约束(primary key)主键约束通常都是id字段上使用,它有两个特点,不能为空,不能重复。例如:create table p(uid ...
  • MySQL 约束

    2020-10-15 20:43:39
    一、什么是约束 • 为了保证数据的一致性和完整性,SQL规范以约 束的方式对表数据进行...UNIQUE 唯一约束,规定某个字段整个表是唯一的 PRIMARY KEY 主键(非空且唯一) FOREIGN KEY 外键 CHECK 检查约束( MySQL不支
  • MySQL中约束保存information_schema数据库的table_constraints中,可以通过该表查询约束信息;约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。常用五类约束:not ...
  • MySQL约束

    2018-03-01 17:47:45
    MySQL中约束保存information_schema数据库的table_constraints中,可以通过该表查询约束信息; 常用5种约束:  not null: 非空约束,指定某列不为空  unique: 唯一约束,指定某列和几列组合的数据不能重复 ...
  • MySQL数据库的约束

    2020-07-26 16:34:08
    该字段的值是必填的,如果不设置该约束,该字段默认是可以为空 DEFAULT:默认 该字段有默认值 CHECK:检查,mysql语法支持,但效果不支持 该字段值可以加以限制,比如年龄可以控制0-120之间 PRIMARY KEY:主键 该字段...
  • MySQL中约束保存information_schema数据库的table_constraints中,可以通过该表查询约束信息;常用5种约束:not null: 非空约束,指定某列不为空unique: 唯一约束,指定某列和几列组合的数据不能重复primary key:...
  • MySQL中约束保存information_schema数据库的table_constraints中,可以通过该表查询约束信息;约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。常用五类约束:not ...
  • 关系型数据库有5个完整性约束:非空约束唯一约束主键约束外键约束检查约束非空约束:NOT NULL值不能为空,列级约束约束条件写列的后面,仅对某列有效非空约束唯一约束:UNIQUE值不能重复,(可以有多个NULL,...
  • 唯一键的本质与主键差不多,唯一键默认的允许字段为空,而且可以多个字段为空,因此空字段不参与唯一性的比较。 增加唯一键 增加唯一键的方法和主键类似,有 3 种方法,分别为: 第一种:创建表的...
  • MySql——约束详解

    2020-12-04 15:43:41
    文章目录主键约束(不可以为空)选取设置主键约束的字段设置主键的作用自增约束特点:建表后增加自增如何取消自增唯一约束(可以为空)字段唯一约束的说明:添加约束条件删除唯一约束modife添加非空约束默认约束外键...
  • MySQL——字段约束

    2021-01-03 11:15:07
    MySQL数据库管理系统数据表字段约束主要包括主键约束、外键约束、默认值约束、唯一约束、空值约束、自动增长约束等。 1. 主键约束 Primary Key ​ 概念: 记录的唯一标识,能够通过该标识确定唯一一条记录。...
  • 约束是一种限制,它通过对表的行或列的数据做出...常用5种约束:not null: 非空约束,指定某列不为空unique: 唯一约束,指定某列和几列组合的数据不能重复primary key: 主键约束,指定某列的数据不能重复、唯一fo...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 162
精华内容 64
关键字:

在mysql中唯一约束可以为空

mysql 订阅