• 字段约束


    字段约束

    给主键添加约束,起到非空并且唯一的作用,主键指表示数据唯一性的字段,一张表中主键字段只有一个;

    字段约束/列约束 --> 约束: 限制

    主键约束

    主键

    主键约束:如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且不能为空。

    主键的作用: 作为一个唯一标识,唯一的表示一条表记录(作用类似于人的身份证号,可以唯一的表示一个人一样。)

    关键字: primary key

    添加主键约束,例如将id设置为主键:

    create table stu(
    	id int primary key,
    	...
    );
    

    如果主键是数值类型,为了方便插入主键(并且保证插入数据时,主键不会因为重复而报错),可以设置一个主键自增策略。

    主键自增

    主键自增策略是指:设置了自增策略的主键,可以在插入记录时,不给id赋值,只需要设置一个null值,数据库会自动为id分配一个值(AUTO_INCREMENT变量,默认从1开始,后面依次+1),这样既可以保证id是唯一的,也省去了设置id的麻烦。

    主键自增关键字: auto_increment

    例如: 将id主键设置为自增:

    create table stu(
    	id int primary key auto_increment,
    	...
    );
    

    非空约束

    非空约束:如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。

    关键字: not null

    添加非空约束,例如为password添加非空约束:

    create table user(
    	password varchar(50) not null,
    	...
    );
    

    唯一约束

    唯一约束:如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。

    关键字: unique

    添加唯一约束,例如为username添加唯一约束及非空约束:

    create table user(
    	username varchar(50) unique not null,
    	...
    );
    

    外键约束

    外键其实就是用于通知数据库两张表数据之间对应关系的这样一个列。

    这样数据库就会帮我们维护两张表中数据之间的关系。

    关键字: foreign key(column1) references 指定表(column2)

    指的是当前表中的column1列和 指定表的colunm2列建关系

    创建表时添加外键

    create table emp(
        id int,
        name varchar(50),
        dept_id int,
        -- 外键约束
        foreign key(dept_id) references dept(id)
    );
    

    这样删除部门的时候如果这个部门 还有员工, 就会无法删除

    连级更新

    on update cascade

    连级删除

    on delete cascade

    案例:

    create table emp(
    	id int primary key auto_increment,	-- 员工编号
    	name varchar(20),					-- 员工姓名
    	dept_id int,						-- 部门编号
    	foreign key(dept_id) references dept(id) -- 指定外键
    	on update cascade					-- 级联更新
    	on delete cascade					-- 级联删除
    );
    

    当dept的id发生变化时, emp的dept_idu也会发生变换

    当删除dept的id时, emp表的dept_id等于dept的id的内容也会删除

    注释

    关键字: comment

    注释 可以在创建表增加字段的时候对字段进行介绍,便于以后查看表的时候知道每个字段的作用;

    create table t3(
        id int primary key auto_increment comment '这是个注释',
        name varchar(10),
        comm int comment '这是奖金'
    );
    

    ` '区别:

    • (上撇)`的左右是用来修饰表名和字段名,可以省略;
    • (单引号)'的作用是用来修饰字符串的
  • 相关阅读:
    BZOJ 3811: 玛里苟斯 线性基
    HDU 3949 XOR 线性基
    BZOJ 2115: [Wc2011] Xor 线性基 dfs
    BZOJ 3963 HDU3842 [WF2011]MachineWorks cdq分治 斜率优化 dp
    BZOJ 3262: 陌上花开 cdq分治 树状数组
    BZOJ 2653: middle 主席树 二分
    BZOJ 3524 [Poi2014]Couriers 主席树
    BZOJ 4826: [Hnoi2017]影魔 单调栈 主席树
    BZOJ 3956: Count 主席树 可持久化线段树 单调栈
    2018/4/9省选模拟赛 0分
  • 原文地址:https://www.cnblogs.com/zpKang/p/12997421.html
Copyright © 2020-2023  润新知