日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

学习笔记(十六)——MySQL(约束与关系)

發布時間:2025/3/21 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记(十六)——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 20primary 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); 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的学习笔记(十六)——MySQL(约束与关系)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。