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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql键1键2_详解mysql基本操作详细(二)

發布時間:2024/10/14 数据库 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql键1键2_详解mysql基本操作详细(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

本文類容

1、數據庫的幾大約束

2、表與表之間的關系

約束:

主鍵約束:

作用:為了保證數據的有效性和完整性

mysql中常用的約束:主鍵約束(primary key) 唯一約束(unique) 非空約束(not null) 外鍵約束(foreign key)

主鍵約束:被修飾過的字段唯一非空

注意:一張表只能有一個主鍵,這個主鍵可以包含多個字段

方式1:建表的同時添加約束 格式: 字段名稱 字段類型 primary key

方式2:建表的同時在約束區域添加約束

所有的字段聲明完成之后,就是約束區域了

格式: primary key(字段1,字段2)

create table pk01(

id int,

username varchar(20),

primary key (id)

);

insert into pk01 values(1,'tom');-- 成功

insert into pk01 values(1,'tom');-- 失敗 Duplicate entry '1' for key 'PRIMARY'

insert into pk01 values(null,'tom');-- 失敗 Column 'id' cannot be null

create table pk01(

id int primary key,

username varchar(20),

primary key (id)

);-- 錯誤的 一張表只能有一個主鍵

方式3:建表之后,通過修改表結構添加約束

create table pk02(

id int,

username varchar(20)

);

alter table pk02 add primary key(字段名1,字段名2..);

alter table pk02 add primary key(id,username);

insert into pk02 values(1,'tom');-- 成功

insert into pk02 values(1,'tomcat');-- 成功

insert into pk02 values(1,'tomcat');-- 失敗

唯一約束

被修飾過的字段唯一,對null不起作用

方式1:建表的同時添加約束 格式: 字段名稱 字段類型 unique

create table un(

id int unique,

username varchar(20) unique

);

insert into un value(10,'tom');-- 成功

insert into un value(10,'jack');-- 錯誤 Duplicate entry '10' for key 'id'

insert into un value(null,'jack');-- 成功

insert into un value(null,'rose');-- 成功

方式2:建表的同時在約束區域添加約束

所有的字段聲明完成之后,就是約束區域了

unique(字段1,字段值2...)

方式3:建表之后,通過修改表結構添加約束

alter table 表名 add unique(字段1,字段2);-- 添加的聯合唯一

alter table 表名 add unique(字段1);-- 給一個添加唯一

alter table 表名 add unique(字段2);-- 給另一個添加唯一

create table un01(

id int,

username varchar(20)

);

alter table un01 add unique(id,username);

insert into un01 values(1,'tom');-- 成功

insert into un01 values(1,'jack');-- 成功

insert into un01 values(1,'tom');-- 失敗 Duplicate entry '1-tom' for key 'id'

非空約束

特點:被修飾過的字段非空

方式:

create table nn(

id int not null,

username varchar(20) not null

);

insert into nn values(null,'tom');-- 錯誤的 Column 'id' cannot be null

案例1 一對多 – 創建用戶表

create table user(

id int primary key auto_increment,

username varchar(20)

);

-- 創建訂單表

create table orders(

id int primary key auto_increment,

totalprice double,

user_id int

);

為了保證數據的有效性和完整性,添加約束(外鍵約束).

在多表的一方添加外鍵約束

格式:

alter table 多表名稱 add foreign key(外鍵名稱) references 一表名稱(主鍵);

例如:

alter table orders add foreign key(user_id) references user(id);

添加了外鍵約束之后有如下特點:

1.主表中不能刪除從表中已引用的數據

2.從表中不能添加主表中不存在的數據

開發中處理一對多:

在多表中添加一個外鍵,名稱一般為主表的名稱_id,字段類型一般和主表的主鍵的類型保持一致,

為了保證數據的有效性和完整性,在多表的外鍵上添加外鍵約束即可.

案例2 一對多 – 創建用戶表

-- 創建商品表

create table product(

id int primary key auto_increment,

name varchar(20),

price double

);

-- 創建中間表

create table orderitem(

oid int,

pid int

);

– 添加外鍵約束

alter table orderitem add foreign key(oid) references orders(id);

alter table orderitem add foreign key(pid) references product(id);

開發中處理多對多:

引入一張中間表,存放兩張表的主鍵,一般會將這兩個字段設置為聯合主鍵,這樣就可以將多對多的關系拆分

成兩個一對多了

為了保證數據的有效性和完整性

需要在中間表上添加兩個外鍵約束即可.

案例3-多表查詢

笛卡爾積:

多張表無條件的聯合查詢.沒有任何意思

select a.*,b.* from a,b;

內連接

格式1:顯式的內連接

select a.*,b.* from a [inner] join b on ab的連接條件

格式2:隱式的內連接

select a.*,b.* from a,b where ab的連接條件

外連接

左外連接:

select a.*,b.* from a left [outer] join b on 連接條件;

意思:

先展示join左邊的(a)表的所有數據,根據條件關聯查詢 join右邊的表(b),符合條件則展示出來,不符合以null值展示.

右外連接:

select a.*,b.* from b right [outer] join a on 連接條件;

意思:

先展示jion右邊的表(a)表的所有數據,根據條件關聯查詢join左邊的表(b),符合條件則展示出來,不符合以null值展示.

子查詢:

一個查詢依賴另一個查詢.

以上所述是小編給大家介紹的mysql基本操作詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

總結

以上是生活随笔為你收集整理的mysql键1键2_详解mysql基本操作详细(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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