mysql(2)主键 外键 约束类型,多对多关系

本文详细介绍了MySQL数据库中的约束类型,包括NOT NULL、UNIQUE、DEFAULT、PRIMARY KEY、FOREIGN KEY和CHECK。通过示例解释了主键和外键的概念,以及如何创建和使用它们。还探讨了多对多关系的实现,强调了在处理这种关系时使用中间表的重要性。最后,通过实例展示了多对多关系的创建和查询。
摘要由CSDN通过智能技术生成

约束类型
NOT NULL 指示某类不能存储NULL值
UNIQUE 保证每列有唯一的值
DEFAULT 规定没有给列赋值时的默认值
PRIMARY KEY 前两个的结合。确保某列(或两个列多个列的结合)有唯一  (主键约束,又不为空又是唯一的)
标识,有助于更容易更快速地找到表中的一个特定记录。
FOREIGN KEY 保证一个表中的数据匹配另一个表的值的参照完整性
CHECK 保证列中的值符合指定的条件。对于mysql数据库,进行分析,但是
忽略CHECK子句,语法上不报错而已

create table student(
   sn int not null,
   name varchar(20)
);


//删表,无论有没有这个表都删除,就算不存在也不报错
drop table if exists student;


create table student(
   sn int unique,
   name varchar(20)
);

create table student(
   sn int unique,
   name varchar(20) default'不知道'
);
insert into student values(null,null);
//这个是查询不到默认值的,因为null也当做一个数被赋给了name列


//查询name的默认值,并没有给name列赋值
insert into student(sn) values(null);

 


主键

 

//表类似类
create table student(
   id int primary key;
   sn int unique,
   name varchar(20) default'不知道'
);
insert into student values(1,23,'sd');
insert into student values(2,34,'de');
//主键只是为了标识,可以累加,每次加一方便操作
create table student(
   id int primary key auto_increment;
   sn int unique,
   name varchar(20) default'不知道'
);
//保证主键自增,不用管
//增加时可以这样增加,若不写auto_increment,则不能像下面插入,因为少一列
insert into student(sn,name) values(23,'fe');
insert into student(sn,name) values(24,'gh');

create table classes(
     id int primary key auto_increment,
     name varchar(20)
);

 


外键  关联其他表的主键或唯一键


班级表


一个班级对应许多同学

//一个同学属于一个班级,外键写在同学里
create table student(
   id int primary key auto_increment;
   sn int unique,
   name varchar(20) default'不知道'
   classes_id int,//所属班级
   foreign key(classes_id) references classes(id)
);
//classes_id int,
   foreign key(classes_id) references classes(id)这就把两张表关联起来了,学生的class_id属性对应到班级表的id里

insert into class (id,name) values(1,'2020届5班');
//关联班级之后在给学生表中插入时,要写上班级,因为相当于多了一个属性
insert into student(sn,name,classes_id) values (23,'sd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值