表的增删改查(二)(MySQL)

一、数据库约束

1、约束类型

(1)not null - 指示某列不能存储 null 值。
(1)unique - 保证某列的每行必须有唯一的值。
(1)default - 规定没有给列赋值时的默认值。
(1)primary key - not null 和 unique 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
(5)foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性。
(6)check - 保证列中的值符合指定的条件。对于MySQL数据库,对check子句进行分析,但是忽略check子句 

2、null约束

创建表时指定某一列不能为空;若在插入数值时,该列为null,会导致插入失败

-- 创建一张student_test表,设置属性id为not null
create table student_test(
    id int not null,
    name varchar(20),
    sex varchar(5),
    score decimal(3,1)
)character set utf8mb4;
-- 插入数据,id不能为空,否则就会报错;
 insert into student_test values(1,'潇潇','女',88.5);
 insert into student_test values(null,'莉莉','女',97.5);
 insert into student_test(name,score) values('洛洛',87);

在这里插入图片描述

3、unique:唯一约束

创建表示指定某一属性为unique,则在插入数值时,该属性不能出现重复

-- 创建一张student_test表,设置属性id为unique
create table student_test(
    id int unique,
    name varchar(20),
    sex varchar(5),
    score decimal(3,1)
)character set utf8mb4;
-- 插入数据,id不能重复,否则就会报错;
 insert into student_test values
 (1,'潇潇','女',88.5),
 (2,'楠楠','女',90);
 insert into student_test values(2,'莉莉','女',97.5);

在这里插入图片描述

4、default:默认值约束

-- 创建一张student_test表,设置属性name为default
create table student_test(
    id int,
    name varchar(20) default 'unkown',
    sex varchar(5),
    score decimal(3,1)
)character set utf8mb4;
-- 插入数据,name为空,默认值为unkown;
insert into student_test (id,sex,score)values(1,'女',97.5);
-- 查看表
select * from student_test;

在这里插入图片描述

5、primary key:主键约束

主键是not null和unique的结合,即被设为主键的属性既不能为空,也不能重复

-- 创建一张student_test表,设置属性id为primary key
create table student_test(
    id int primary key,
    name varchar(20),
    sex varchar(5),
    score decimal(3,1)
)character set utf8mb4;
-- 插入数据,id不能为空也不能重复,否则就会报错;
 insert into student_test values
 (1,'潇潇','女',88.5),
 (2,'楠楠','女',90);
insert into student_test values(2,'莉莉','女',97.5);
insert into student_test values(null,'木木','女',95);
insert into student_test(name,score) values('洛洛',87);

在这里插入图片描述

6、foreign key:外键约束

foreign key (字段名) references 主表(列) 

示例:

-- 创建一张class表,设置属性id为primary key
create table class(
    id int primary key,
    name varchar(20)
)character set utf8mb4;
 
-- 创建一张student_test表,设置属性class_id为foreign key,关联班级表的id
create table student_test(
    id int primary key,
    name varchar(20),
    class_id int,
    sex varchar(5),
    score decimal(3,1),
    foreign key (class_id) references class(id)
)character set utf8mb4;
 
-- 插入数值时,student_test 表中的class_id要参考class表中的id
-- 若插入的class_id在class表中不存在,将会插入失败
insert into class values(1,'一班');
insert into student_test values
(1,'潇潇',1,'女',88.5),
(2,'楠楠',1,'女',90);
insert into student_test values(3,'莉莉',2,'女',97.5);

在这里插入图片描述

-- 在删除时,若有表B关联A,那么A不能删除
drop table class;

在这里插入图片描述

7、check约束

MySQL在使用时不会报错,但会忽略该约束

-- 创建一张student_test表,设置属性sex 只能在男和女之间选择
create table student_test(
    id int primary key,
    name varchar(20),
    check (sex = '男' or sex = '女'),
    score decimal(3,1)
)character set utf8mb4;

在这里插入图片描述

二、表的设计

1、一对一
在这里插入图片描述

2、一对多
在这里插入图片描述

3、多对多
需要创建中间表来映射两张表的关系;
在这里插入图片描述

三、新增

插入查询结果

insert into 表名[列名] select 查询语句;

注意:
要插入的内容必须和查询结果的属性的数量,顺序,数据类型相同

示例:

-- 新建两张表,用于示例
create table s1(
    id int,
    name varchar(20)
);
create table s2(
    id int,
    name varchar(20)
);
-- 向表s1中插入数据
insert into s1 values(1,'潇潇'),(2,'落落'),(3,'灼灼');
-- 将从表s1中查询到的数据插入到s2中
insert into s2 select * from s1;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值