2026/4/24 4:58:39
网站建设
项目流程
电子商务网站的建设目标,珠海网站建设电话,上海中学校服,抖音运营方案详细1. 数据库约束
数据库约束时关系型数据库的一个重要功能,主要的作用是保证数据的有效性,也可以理解为数据的正确性(数据本身是否正确,关联关系是否正确) **人工检查数据的完整性工作量非常大,在数据库中定义一些约束,那么数据在写入数据库的时候,就会帮我们做一些校验.**并且约…1. 数据库约束数据库约束时关系型数据库的一个重要功能,主要的作用是保证数据的有效性,也可以理解为数据的正确性(数据本身是否正确,关联关系是否正确) **人工检查数据的完整性工作量非常大,在数据库中定义一些约束,那么数据在写入数据库的时候,就会帮我们做一些校验.**并且约束一般是在指定列上创建的.2. 约束类型类型说明NOTNULL空约束 常用指定空约束的列不能存储NULL值DEFALUT默认约束常用当没有给列赋值时使的默认值UNIQUE唯约束常用指定唯约束的列每数据必须有唯的值PRIMARYKEY主键约束常用NOTNULL和UNIQUE的结合可以指定个列或多个列有助于防数据重复和提数据的查询性能FOREIGNKEY外键约束目前不用外键约束是种关系约束于定义两个表之间的关联关系可以确保数据的完整性和致性CHECK约束 不用于限制列或数据在数据库表中的值确保数据的准确性和可靠性3. NOTNULL空约束定义表时某列不允许为NULL时可以为列添加空约束。如创建个学表学名为NULL时这条记录是不完整的此时需要约束学名的列不能为NULL由于name列有空约束插NULL值时报错但插入name的正确值就能通过查看表结构NULL列为NO表值不允许为NULLYES表值可以为NUL4. DEFALUT默认值约束DEFAULT约束于向列中插默认值如果没有为列设置值那么会将默认值设置到该列.首先我们创建一个表新增年龄列示例:我们希望插入进来的数据没有给定年龄时会默认有年龄那么我们重构学生表为年龄加入默认约束在要加约束的列名后直接加default默认值即可create table family (id bigint,name varchar(20) NOT NULL,age int default 18);插条记录不指定年龄的值时列使了默认值查看表结构年龄列的默认值为18当我们插入年龄列为NULL时是否默认值还是18但当动明确指年龄列为NULL时列值为NULL不会使用默认值5. UNIQUE唯约束指定了唯约束的列该列的值在所有记录中不能重复如个的份证号学的学号等重构学生表id列后增加唯一约束drop table if exists student;create table student2 (id bigint UNIQUE,name varchar(20) not null);我们发现不设置唯一约束时id可以重复我们发现为id列添加唯一约束后相同的则不能插入进去唯一约束生效在id列添加 UNIQUE关键字为 id 设置唯一约束 查看表结构Key列显UNI表唯约束但当插入NULL值时依旧可以插入6. PRIMARYKEY主键约束主键约束唯标识数据库表中的每条记录。主键必须包含唯的值且不能包含NULL值。每个表只能有个主键可以由单个列或多个列组成。通常为每张表都指定个主键主键列建议使BIGINT类型重构学表为ID列添加空和唯约束drop table student;create table student (id bigint not null unique,name varchar(20) not null,age int DEFAULT 18,sno varchar(10) UNIQUE);查看表结构添加了空和唯约束之后Key列显PRI表主键从此处我们可以知道PRIMARY KEY NOT NULL UNIQUE当Id列的值重复时会发主键冲突通常把主键列设置为动增auto_increment让数据库维护主键值PRIMARY KEY auto_increment插数据时不设置主键列的值上图中我们插错了一条数据那我们的自增主键id会走到什么位置2还是3 接着我们查看一下此时发现id是从3开始的这是为何因为在数据库中插入数据正确或错误自增主键都会向下走一步不会回退这样可以提高查询效率。查看表结构Extra列显auto_increment表增主键值是自增的那么是否可以不连续呢此时我们插入主键值为100的数据我们发现插入成功所以主键值可以不连续。那么我们发现插入100主键值之后自增主键将从哪里自增呢我们发现下一次自增从主键的最大值开始主键或唯键冲突时的更新操作插否则更新1.插入2.更新可以使以上语法如果插时有冲突则更新当前列的值两受影响表删除了原来的记录新写了条记录其与update student set name 钱六number100011 where id100;等效3.替换如果表中没有冲突则直接插入新数据和insert的功能是一样的。表中不能有多个主键drop table student;重构学?表create table student (id bigint PRIMARY KEY auto_increment, # 定义主键name varchar(20) PRIMARY KEY); # 定义主键ERROR 1068 (42000): Multiple primary key defined # 报错7. FOREIGNKEY外键约束外键于定义主表和从表之间的关系外键约束主定义在从表的列上主表关联的列必须是主键或唯约束当定义外键后要求从表中的外键列数据必须在主表的主键或唯列存在或为null。7.1 语法foreign key (id) references class(id)删除主表某条记录时从表中不能有对该记录的引删除主表时要先删除从表删除主表时应该先解除主外键关系或者删除从表8. CHECK约束可以应于个或多个列于限制列中可接受的数据值从确保数据的完整性和准确性。在8.0.16开始全持CHECK约束之前的版本会忽略CHECK的定义但是注意一般在应用程序级别校验重构学表有以下要求年龄不能于16岁性别只能是男或create table student(id bigint PRIMARY KEY auto_increment, #设置?增主键name varchar(20) not null,age int DEFAULT 18,gender char(1),check (age 16),check (gender ‘男’ or gender ‘?’));c1的值不能为0c2的值必须于0c3的值不于c2create table t_check (c1 int check(c1 0),c2 int check(c2 0),c3 int,check(c3 c2));