真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么查mysql外鍵約束,mysql外鍵約束有哪些

SQL數(shù)據(jù)庫的、外鍵和查詢

增加外鍵

新羅ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

創(chuàng)建表的時(shí)候增加外鍵:在所有的表字段之后,使用foreign key(外鍵字段) references 外部表(主鍵字段)

在新增表之后增加外鍵:修改表結(jié)構(gòu),使用alter table 表名 add [constraint 外鍵名字] foreign key(外鍵字段) references 父表(主鍵字段);

修改外鍵刪除外鍵

alter table 表名 drop foreign key 外鍵名;

外鍵條件

外鍵要存在,首先必須保證表的存儲(chǔ)引擎是innodb

列類型必須與父表的主鍵類型一致

一張表中的外鍵名字不能重復(fù)

增加外鍵的字段數(shù)據(jù)已經(jīng)存在,必須保證數(shù)據(jù)與父表主鍵要求對應(yīng)

外鍵約束

有三種約束模式

district:嚴(yán)格模式(默認(rèn)的)

cascade:級聯(lián)模式

set null:置空模式

語法:foreign key(外鍵字段) references 父表(主鍵字段) on delete 模式 on update 模式;

聯(lián)合查詢

基本語法:

select 語句1

union [union 選項(xiàng)]

select 語句2……

union 選項(xiàng)

all:保留所有,不管重復(fù)

distinct:去重,默認(rèn)的

子查詢(sub query)

按位置分類

from子查詢

where子查詢

exists子查詢

按結(jié)果分類

標(biāo)量子查詢

列子查詢

行子查詢

表子查詢

子查詢

列子查詢

=any等價(jià)于in; -- 其中一個(gè)即可

any等價(jià)于some; -- 二者是一樣的

=all為全部

-- 創(chuàng)建外鍵

create table my_foreign1(

idint primary key auto_increment,

name varchar (20)not null comment

'學(xué)生姓名',

c_idint comment'班級id',

-- 增加外鍵

foreign key(c_id)references

my_class(id)

)charset utf8;

-- 創(chuàng)建表

create table my_foreign2(

idint primary key auto_increment,

name varchar (20)not null comment

'學(xué)生姓名',

c_idint comment'班級id'? -- 普通字段

)charset utf8;

-- 增加外鍵

alter table my_foreign2add

-- 指定外鍵的名字

constraint student_class_1? -- 可以指定多個(gè)外鍵 但是名字不能相同

-- 指定外鍵的字段

foreign key(c_id)

-- 引用父表主鍵

references my_class(id);

-- 刪除外鍵

alter table my_foreign1drop

foreign key my_foreign1_ibfk_1;? -- my_foreign1_ibfk_1 通過外鍵的名字來刪

-- 插入數(shù)據(jù);外鍵字段在父表不存在

insert into my_foreign2values (

null,'郭富城',4);? -- 沒有4號班級

insert? into my_foreign2values (

null,'項(xiàng)羽',1);

insert? into my_foreign2values (

null,'劉邦',2);

insert? into my_foreign2values (

null,'韓信',3);

-- 更新父表的記錄

update my_classset id=4 where id=1;? -- 失?。籭d=1記錄已經(jīng)被學(xué)生引用

update my_foreign2set c_id=2 where id=4;? -- 更新

update my_classset id=4 where id=3;? -- 可以;沒有學(xué)生引用此班級

-- mysql中添加外鍵約束遇到一下情況:

-- cannot add foreign key constraint

-- 出現(xiàn)這個(gè)問題的原因是,外鍵的使用:

-- 1. 外鍵字段不能為該表的主鍵;

-- 2. 外鍵字段參考字段必須為參考表的主鍵

-- 插入數(shù)據(jù)

insert into my_foreign1values (

null,'馬超','3'

);

-- 增加外鍵

alter table my_foreign1add

foreign key(c_id)references

my_class(id);? -- 失?。灰?yàn)闆]有3號班了

-- 創(chuàng)建外鍵,指定模式;刪除置空;更新級聯(lián)

create table my_foreign3(

idint primary key auto_increment,

name varchar (20)not null,

c_idint,

-- 增加外鍵

foreign key (c_id)

-- 引用表

references my_class(id)

-- 指定刪除模式

on delete set null

-- 指定更新模式

on update cascade

)charset utf8;

-- 插入數(shù)據(jù)

insert into my_foreign3values (

null,'劉備',1),

(null,'曹操',1),

(null,'孫權(quán)',1),

(null,'祝賀量',2),

(null,'周瑜',2);

-- 解除My_foreign2表的外鍵

alter table my_foreign2drop

foreign key student_class_1;

-- 更新父表主鍵

update my_classset id=3 where id=1;

-- 刪除父表主鍵

delete from? my_classwhere id=2;

-- 聯(lián)合查詢

select * from my_class

union? -- 默認(rèn)去重

select * from my_class;

select * from my_class

union all? -- 不去重

select * from my_class;

select id,c_name,roomfrom my_class

union all? -- 不去重

select name,number,idfrom my_student;

-- 需求;男生升序;女生降序(年齡)

(select * from my_student

where sex='男'

order by ageasc limit9999999)

union

(select * from my_student

where sex='女'

order by agedesc limit9999999);

select * from my_studentwhere

c_id=(

-- 標(biāo)量子查詢

select idfrom my_classwhere

c_name='python1903');-- id一定只有一個(gè)值(一行一列)

insert into my_classvalues (1,

'python1907','B407');

-- 列子查詢

select * from my_studentwhere

c_idin(select idfrom my_class);

-- any,some,all

select * from my_studentwhere

c_id=any(select idfrom my_class);

select * from my_studentwhere

c_id=some(select idfrom my_class);

select * from my_studentwhere

c_id=all(select idfrom my_class);

select * from my_studentwhere

c_id!=any(select idfrom my_class);? -- 所有結(jié)果(null除外)

select * from my_studentwhere

c_id!=some(select idfrom my_class);? -- 所有結(jié)果(null除外)

select * from my_studentwhere

c_id!=all(select idfrom my_class);? -- 所有2號班級(null除外)

select * from my_studentwhere

age=(select max(age)from

my_student)

and

height=(select max(height))from

my_student);

-- 行子查詢

select * from my_student

-- (age,height)稱之內(nèi)為行元素

where (age,height)=(select max(

age),max(height)from my_student);

update my_studentset height=188

where name='王五';

select * from my_studentorder by

agedesc,heightdesc limit1;

select * from my_studentorder by

heightdesc;

-- 表子查詢

select * from my_studentgroup by

c_idorder by heightdesc;? -- 每個(gè)班選出第一個(gè)學(xué)生再按身高排序

select * from (select * from

my_studentorder by heightdesc)

as studentgroup by student.c_id;

如何在MySQL中設(shè)置外鍵約束以及外鍵的作用

1.外鍵的作用,主要有兩個(gè):

一個(gè)是讓數(shù)據(jù)庫自己通過外鍵來保證數(shù)據(jù)的完整性和一致性

一個(gè)就是能夠增加ER圖的可讀性

2.外鍵的配置

1)先創(chuàng)建一個(gè)主表,代碼如下:

#創(chuàng)建表student,并添加各種約束

create

table

student

(

id

int

primary

key

,

#主鍵約束

name

varchar(20)

,

#唯一約束

age

int

NOT

NULL,

#非空約束

sex

varchar(2)

,

address

varchar(20)

default

'重慶'

#默認(rèn)約束

)

;

再通過一個(gè)外鍵,創(chuàng)建一個(gè)分?jǐn)?shù)表,這樣的話,就可以方便查詢。代碼如下:

#創(chuàng)建分?jǐn)?shù)表

create

table

score

(

id

int

primary

key

,

sid

int

,

china

int

,

history

int,

english

int,

constraint

FK_sid

foreign

key(sid)

references

student(id)

#通過外鍵創(chuàng)建鏈接

)

;

創(chuàng)建外鍵的方法有很多,其中最常見創(chuàng)建外鍵的格式是:constraint

FK_***

foreign

key(**)

references

鏈接的外表

刪除外鍵:

alter

table

drop

foreign

key

'外鍵名'.

注意:

只有在定義外鍵時(shí),用constraint

外鍵名

foreign

key

....

方便進(jìn)行外鍵的刪除

MySQL — 關(guān)聯(lián)

來自MySQL的學(xué)習(xí)筆記,寫的不對的地方大家多多指教哦

什么是外鍵?

假設(shè)有 2 個(gè)表,分別是表 A 和表 B,它們通過一個(gè)公共字段“id”發(fā)生關(guān)聯(lián)關(guān)系,我們把這個(gè)關(guān)聯(lián)關(guān)系叫做 R。如果“id”在表 A 中是主鍵,那么,表 A 就是這個(gè)關(guān)系 R 中的主表。相應(yīng)的,表 B 就是這個(gè)關(guān)系中的從表,表 B 中的“id”,就是表 B 用來引用表 A 中數(shù)據(jù)的,叫外鍵。所以,外鍵就是從表中用來引用主表中數(shù)據(jù)的那個(gè)公共字段。

語法結(jié)構(gòu):

在創(chuàng)建表時(shí)添加外鍵約束:

在修改表時(shí)定義外鍵約束:

例子1:創(chuàng)建表時(shí)添加外鍵約束

首先創(chuàng)建主表:importhead

創(chuàng)建從表:test_mysql.importdetails

查詢外鍵約束的相關(guān)信息:

查詢結(jié)果為:

例子2:修改表時(shí)定義外鍵約束

修改表時(shí)定義從表test_mysql.importdetails的外鍵約束

刪除外鍵約束使用DROP,語法結(jié)構(gòu)為:

例子:刪除從表test_mysql.importdetails的外鍵約束

在 MySQL 中,有 2 種類型的連接,分別是內(nèi)連接(INNER JOIN)和外連接(OUTER JOIN)。

在 MySQL 里面,關(guān)鍵字 JOIN、INNER JOIN、CROSS JOIN 的含義是一樣的,都表示內(nèi)連接。我們可以通過 JOIN 把兩個(gè)表關(guān)聯(lián)起來,來查詢兩個(gè)表中的數(shù)據(jù)。

例子:有一張銷售表,如下圖:

有一張會(huì)員信息表,如下圖:

通過內(nèi)連接,查詢會(huì)員的銷售記錄:

運(yùn)行語句,結(jié)果如下:

根據(jù)上面的結(jié)果,其實(shí)可以得知:內(nèi)連接查詢到結(jié)果集為兩個(gè)表的交集部分。

跟內(nèi)連接只返回符合連接條件的記錄不同的是,外連接還可以返回表中的所有記錄,它包括兩類,分別是左連接和右連接。

例子1:左外連接

如果需要查詢所有銷售記錄,則可以使用左外連接

運(yùn)行語句,結(jié)果為:

從上面的結(jié)果可以得知,LEFT JOIN左邊的表會(huì)返回全部記錄,而右邊的表只返回符合連接條件的記錄

例子2:右外連接:

運(yùn)行語句,結(jié)果為:

從上面的結(jié)果可以得知,RIGHT JOIN右邊的表會(huì)返回全部記錄,而左邊的表只返回符合連接條件的記錄

mysql如何查看主鍵外鍵約束名

SELECT CONSTRAINT_CATALOG,

CONSTRAINT_SCHEMA,

CONSTRAINT_NAME,

TABLE_SCHEMA,

TABLE_NAME,

CONSTRAINT_TYPE

FROM

information_schema.TABLE_CONSTRAINTS

WHERE

TABLE_NAME='表名'

表名替換成你要看的表


文章題目:怎么查mysql外鍵約束,mysql外鍵約束有哪些
分享網(wǎng)址:http://weahome.cn/article/hdggsi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部