美文网首页数据库学习
2023-11-12 第13章_约束

2023-11-12 第13章_约束

作者: 大也 | 来源:发表于2023-11-15 18:23 被阅读0次

    -- 1.作用和定义.分类
    -- 实体完整性(不能存在两条完全相同无法区分的记录)
    -- 域完整性(作用范围)
    -- 引用完整性(外表引用字段 当前表无法删除)
    -- 用户自定义完整性(用户名唯一)
    -- 定义:表级的强制规定 创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后通过 ALTER TABLE 语句规定 约束。
    -- 分类:单列约束/多列约束 和 列级约束/表级约束
    -- 列级约束: 列的后面 语法都支持,但外键没有效果 不可以起约束名
    -- 表级约束: 所有列的下面 默认和非空不支持,其他支持 可以起约束名(主键没有效果)
    -- !!!!

    information_schema数据库名(系统库) #table_constraints表名称(专门存储各个表的约束)

    -- SELECT * FROM information_schema.table_constraints WHERE table_name = 'employees';

    -- 2.主要关键字 注意 全部要在字段名后添加数据类型

    -- NOT NULL 非空约束,规定某个字段不能为空

    -- 1)创建时
    -- USE MyFamily; -- 切换数据库
    -- CREATE TABLE student(
    -- id int not nul,
    -- );
    -- 2)建表后
    -- ALTER TABLE emp MODIFY sex VARCHAR(30) NOT NULL;

    -- 3)删除
    -- alter table 表名称 modify 字段名 数据类型 (NULL);#去掉not null,相当于修改某个非注解字段,该字段允 许为空

    -- UNIQUE 唯一约束,规定某个字段在整个表中是唯一的 PRIMARY KEY 主键(非空且唯一)约束

    -- 1)注意:唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。??
    -- 唯一性约束允许列值为空。
    -- 在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同。
    -- MySQL会给唯一约束的列上默认创建一个唯一索引。
    -- 多个列组合的值唯一/复合唯一约束:字段列表中写的是多个字段名,多个字段名用逗号分隔,表示那么是复合唯一,即多 个字段的组合是唯一的
    -- 可以有多个null值
    -- 唯一约束只能通过删除唯一索引的方式删除
    -- 唯一索引 有自定义 uk_name_pwd
    -- 没有定义 创建唯一约束时未指定名称,如果是单列,就默认和列名相同;
    -- 如果是组合列,那么默认和() 中排在第一个的列名相同
    -- show index from 表名称; 查看表的索引 /

    -- 2)建表前 几种写法 表级写法 多个列组合的值唯一写法
    -- CREATE TABLE t_course(
    -- cid INT UNIQUE,
    -- tel char(11) unique,
    -- cardid char(18) unique key
    -- CONSTRAINT cardid UNIQUE(cardid)
    -- -- 使用表级约束语法 表示用户名和密码组合不能重复 多个列组合的值唯一??复合唯一约束
    -- CONSTRAINT uk_name_pwd UNIQUE(tel,cid)
    -- );

    -- 3)建表后 多个列组合的值唯一 ,隔开
    -- alter table 表名称 add unique key(字段列表);
    -- alter table 表名称 modify 字段名 字段类型 unique;

    -- 4)删除
    -- ALTER TABLE USER
    -- DROP INDEX uk_name_pwd;

    -- PRIMARY KEY 主键(非空且唯一)约束

    -- 1)一个表最多只能有一个主键约束,不要修改主键字段的值!删除主键约束!
    -- MySQL的主键名总是PRIMARY ,就算自己命名了主键约束名也没用
    -- 复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复

    -- 2)建表前 列级写法 表级写法 复合主键
    -- CREATE TABLE emp4(
    -- id INT PRIMARY KEY AUTO_INCREMENT ,
    -- NAME VARCHAR(20)
    -- );
    -- CREATE TABLE emp5(
    -- id INT NOT NULL AUTO_INCREMENT,
    -- NAME VARCHAR(20),
    -- pwd VARCHAR(15),
    -- CONSTRAINT emp5_id_pk PRIMARY KEY(id)
    -- );

    -- 3)建表后 多个列组合的值唯一 ,隔开 最好不改
    -- ALTER TABLE 表名称 ADD PRIMARY KEY(字段列表); #字段列表可以是一个字段,也可以是多个字段,如果是多 个字段的话,是复合主键
    -- 4)删除 可以忽略
    -- alter table 表名称 drop primary key;

    -- 4)AUTO_INCREMENT 自增列
    -- 41.) 一个表最多只能有一个自增长列
    -- 自增长列约束的列必须是键列(主键列,唯一键列)
    -- 最好别自己插入数据设置 自增列 如有则 5.0版本(存在内存删除重启恢复按表继续自增) 和8.0版本(存在磁盘删除重启按上一次记述自增) 不同
    -- 4.2)建表前
    -- create table employee(
    -- eid int primary key auto_increment,
    -- )
    -- 4.3)建表后
    -- alter table employee modify eid int auto_increment;
    -- 4.4)删除
    -- alter table 表名称 modify 字段名 数据类型; #去掉auto_increment相当于删除
    -- FOREIGN KEY 外键约束
    -- CHECK 检查约束
    -- DEFAULT 默认值约束

    相关文章

      网友评论

        本文标题:2023-11-12 第13章_约束

        本文链接:https://www.haomeiwen.com/subject/pzwkwdtx.html