
学习笔记(十六)——MySQL(约束与关系)
发布日期:2021-05-07 07:21:02
浏览次数:30
分类:技术文章
本文共 2996 字,大约阅读时间需要 9 分钟。
文章目录
一、表字段的增删改
1、添加字段
alter table 表名 add 字段名 字段类型; #默认顺移往后添加alter table 表名 add 字段名 字段类型 first; # 添加到表的第一行alter table 表名 add 字段名 字段类型 after id; #添加到id的下一行 id:某一行
2、删除字段
alter table 表名 drop 字段名;
3、修改
3.1、修改表名
alter table 表名 rename to 新表名;
3.2、修复字段名
alter table 表名 change 旧字段名 新字段名 字段类型;
3.3、修改字段类型
alter table 表名 modify 字段 新字段类型;
总结:字段的增删改查基本上用不到,一般在设计表格的时候就会确定,这个知识点了解即可
二、约束
约束可以理解为限制,生而为人就会有道德约束和法律约束等等约束,也就是限制同样我们数据得有约束才能让其更加高效更加完美。
desc new_tb; 查看
1、默认约束 default
create table t1 (id int default 101,name varchar(10));
在没有设置默认值的情况下,默认值为NULL。
在设置默认值的情况下,默认值为你设置的值,插入数据没有写该字段的时候取默认值。
2、非空约束 not null
限制一个字段的值不能为空,insert的时候必须为该字段赋值。
create table t1(id int not null,name varchar(20),age int default 20);
2.1、删除非空约束
alter table t1 change id id int;
2.2、添加非空约束
alter table t1 change id id int not null;
3、唯一约束 unique key
限制一个字段的值不能重复,该字段的数据不能重复出现,确保字段中的值唯一。
create table t1(id int unique key,name varchar(20),age int default 20 #默认值20);
3.1、删除唯一约束
drop index id on t1;
3.2、添加唯一约束
alter table t1 add unique(id)
4、主键约束 primary key
主键 = 非空 + 唯一
通常每张表都需要一个主键来体现唯一性,每张表里面只能有一个主键。
create table t1(id int primary key,name varchar(20),age int default 20);
指定主键的另外一种方式:
create table t1(id int,name varchar(20),age int default 20,primary key(id));
4.1、删除主键
alter table t1 drop primary key;
4.2、添加主键
alter table t1 add primary key(id);
5、自增长约束 auto_increment
自动编号,和主键组合使用,一个表里面只能有一个自增长。
默认从1 开始增长。
create table t4(id int primary key auto_increment,age int default 18); #auto_increment=50; 从50开始增长
6、外键约束
表与表之间产生联系,保持数据的一致性: 我有的你一定有,你没有的,我绝对没有。
······这个有点绕,还是直接例子说明吧。create table a(id_a int primary key,name varchar(20));create table b(id_b int primary key,name varchar(20),foreign key(id_b) references ta(id_a));
首先,我们先创建两个表,把表b的id_b设置成表a的外键,那么我们只能先对表a进行数据插入(表a没数据时,不能对表b进行插入数据)。假设,表a先插入数据(1,‘wangwu’),(2,‘lisi’),那么表b的id_b插入的值只能为1或2。
三、表关系
1、一对一
两个键都为主键,非空且唯一,所以形成一对一的关系。
用外键的方式,把两个表关联, 主键连接主键。
create table stu( #创建学生表id int primary key,name varchar(20) not null);create table stu_details( #创建学生详细信息表id int primary key,age int,addr varchar(20),phone int,foreign key(id) references stu(id) #两个表关联, 主键连接主键);
2、一对多
用外键的方式,把两个表关联, 非主键连接主键。
create table academy(a_id int primary key,a_name varchar(20) not null);create table student(s_id int primary key,s_name varchar(20) not null,aca_id int not null,foreign key(aca_id) references academy(a_id) #非主键连接主键);
3、多对多
这个···直接上示例吧
示例:学生选课
课程对多个学生 ,学生对多个课程; 需要创建中间表有两个字段(学生编号,课程编号); 课程表有两个字段(课程编号,课程名字); 主键加主键来实现的(联合主键);create table course(c_id int primary key,c_name varchar(20));create table student(st_id int primary key,st_name varchar(20));create table choose_course(c_id int,st_id int,primary key(c_id,st_id), foreign key(c_id) references course(c_id),foreign key(st_id) references student1(st_id));----------------数据插入:insert into course values(1, 'python'),(2,'java'),(3,'c++');insert into student values(1,'qiye'),(2,'gg');insert into choose_course values(1,3);insert into choose_course values(2,3);insert into choose_course values(1,1);
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年04月05日 01时53分10秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java中如何构建树结构
2019-03-04
解决vue部署到nginx后刷新404
2019-03-04
解决eclipse字体背景变红或者变绿的问题
2019-03-04
扫雷小游戏——简单易懂
2019-03-04
软件架构-zookeeper快速入门
2019-03-04
「初级篇」跟我一起学docker(四)--容器的基本操作
2019-03-04
22 岁毕业做程序员的「普通」人,50 岁时的人生轨迹是怎样的?
2019-03-04
scala上界与下界、协变与逆变
2019-03-04
java稀疏数组
2019-03-04
全球数字货币加快研发
2019-03-04
数字化助力金融科技,实现产业良性循环
2019-03-04
2020-11-23(彻底理解KMP)
2019-03-04
常用的IDC函数
2019-03-04
angr学习笔记(7)(malloc地址单元符号化)
2019-03-04
angr学习笔记(9)(添加约束)
2019-03-04
windows环境利用start命令实现微信多开
2019-03-04
「CF149D」括号涂色 区间DP好题
2019-03-04
树状数组 模板总结
2019-03-04
「NOI2015」程序自动分析 并查集题解
2019-03-04
[JSOI2008]Blue Mary的战役地图 Hash题解
2019-03-04