学习笔记(十六)——MySQL(约束与关系)
文章目錄
- 一、表字段的增刪改
- 1、添加字段
- 2、刪除字段
- 3、修改
- 二、約束
- 1、默認約束 default
- 2、非空約束 not null
- 3、唯一約束 unique key
- 4、主鍵約束 primary key
- 5、自增長約束 auto_increment
- 6、外鍵約束
- 三、表關系
- 1、一對一
- 2、一對多
- 3、多對多
一、表字段的增刪改
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、外鍵約束
表與表之間產生聯系,保持數據的一致性: 我有的你一定有,你沒有的,我絕對沒有。
······這個有點繞,還是直接例子說明吧。
首先,我們先創建兩個表,把表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、多對多
這個···直接上示例吧
示例:學生選課
課程對多個學生 ,學生對多個課程;
需要創建中間表有兩個字段(學生編號,課程編號);
課程表有兩個字段(課程編號,課程名字);
主鍵加主鍵來實現的(聯合主鍵);
總結
以上是生活随笔為你收集整理的学习笔记(十六)——MySQL(约束与关系)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记(十五)——MySQL(查询)
- 下一篇: 安装 mysql-8.0.23-winx