学习笔记(十六)——MySQL(约束与关系)
文章目錄
- 一、表字段的增刪改
- 1、添加字段
- 2、刪除字段
- 3、修改
- 二、約束
- 1、默認(rèn)約束 default
- 2、非空約束 not null
- 3、唯一約束 unique key
- 4、主鍵約束 primary key
- 5、自增長(zhǎng)約束 auto_increment
- 6、外鍵約束
- 三、表關(guān)系
- 1、一對(duì)一
- 2、一對(duì)多
- 3、多對(duì)多
一、表字段的增刪改
1、添加字段
alter table 表名 add 字段名 字段類型; #默認(rèn)順移往后添加 alter table 表名 add 字段名 字段類型 first; # 添加到表的第一行 alter table 表名 add 字段名 字段類型 after id; #添加到id的下一行 id:某一行2、刪除字段
alter table 表名 drop 字段名;3、修改
3.1、修改表名
alter table 表名 rename to 新表名;3.2、修復(fù)字段名
alter table 表名 change 舊字段名 新字段名 字段類型;3.3、修改字段類型
alter table 表名 modify 字段 新字段類型;總結(jié):字段的增刪改查基本上用不到,一般在設(shè)計(jì)表格的時(shí)候就會(huì)確定,這個(gè)知識(shí)點(diǎn)了解即可
二、約束
約束可以理解為限制,生而為人就會(huì)有道德約束和法律約束等等約束,也就是限制同樣我們數(shù)據(jù)得有約束才能讓其更加高效更加完美。
desc new_tb; 查看
1、默認(rèn)約束 default
create table t1 ( id int default 101, name varchar(10));在沒有設(shè)置默認(rèn)值的情況下,默認(rèn)值為NULL。
在設(shè)置默認(rèn)值的情況下,默認(rèn)值為你設(shè)置的值,插入數(shù)據(jù)沒有寫該字段的時(shí)候取默認(rèn)值。
2、非空約束 not null
限制一個(gè)字段的值不能為空,insert的時(shí)候必須為該字段賦值。
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
限制一個(gè)字段的值不能重復(fù),該字段的數(shù)據(jù)不能重復(fù)出現(xiàn),確保字段中的值唯一。
create table t1( id int unique key, name varchar(20), age int default 20 #默認(rèn)值20 );3.1、刪除唯一約束
drop index id on t1;3.2、添加唯一約束
alter table t1 add unique(id)4、主鍵約束 primary key
主鍵 = 非空 + 唯一
通常每張表都需要一個(gè)主鍵來體現(xiàn)唯一性,每張表里面只能有一個(gè)主鍵。
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、自增長(zhǎng)約束 auto_increment
自動(dòng)編號(hào),和主鍵組合使用,一個(gè)表里面只能有一個(gè)自增長(zhǎng)。
默認(rèn)從1 開始增長(zhǎng)。
create table t4( id int primary key auto_increment, age int default 18 ); #auto_increment=50; 從50開始增長(zhǎng)6、外鍵約束
表與表之間產(chǎn)生聯(lián)系,保持?jǐn)?shù)據(jù)的一致性: 我有的你一定有,你沒有的,我絕對(duì)沒有。
······這個(gè)有點(diǎn)繞,還是直接例子說明吧。
首先,我們先創(chuàng)建兩個(gè)表,把表b的id_b設(shè)置成表a的外鍵,那么我們只能先對(duì)表a進(jìn)行數(shù)據(jù)插入(表a沒數(shù)據(jù)時(shí),不能對(duì)表b進(jìn)行插入數(shù)據(jù))。假設(shè),表a先插入數(shù)據(jù)(1,‘wangwu’),(2,‘lisi’),那么表b的id_b插入的值只能為1或2。
三、表關(guān)系
1、一對(duì)一
兩個(gè)鍵都為主鍵,非空且唯一,所以形成一對(duì)一的關(guān)系。
用外鍵的方式,把兩個(gè)表關(guān)聯(lián), 主鍵連接主鍵。
create table stu( #創(chuàng)建學(xué)生表 id int primary key, name varchar(20) not null );create table stu_details( #創(chuàng)建學(xué)生詳細(xì)信息表 id int primary key, age int, addr varchar(20), phone int, foreign key(id) references stu(id) #兩個(gè)表關(guān)聯(lián), 主鍵連接主鍵 );2、一對(duì)多
用外鍵的方式,把兩個(gè)表關(guān)聯(lián), 非主鍵連接主鍵。
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、多對(duì)多
這個(gè)···直接上示例吧
示例:學(xué)生選課
課程對(duì)多個(gè)學(xué)生 ,學(xué)生對(duì)多個(gè)課程;
需要?jiǎng)?chuàng)建中間表有兩個(gè)字段(學(xué)生編號(hào),課程編號(hào));
課程表有兩個(gè)字段(課程編號(hào),課程名字);
主鍵加主鍵來實(shí)現(xiàn)的(聯(lián)合主鍵);
總結(jié)
以上是生活随笔為你收集整理的学习笔记(十六)——MySQL(约束与关系)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记(十五)——MySQL(查询)
- 下一篇: 安装 mysql-8.0.23-winx