關(guān)聯(lián)兩個表的方式包含內(nèi)連接,外連接(左外連接,右外連接),交叉連接。
創(chuàng)新互聯(lián)成立與2013年,我們提供高端網(wǎng)站建設(shè)、微信平臺小程序開發(fā)、電商視覺設(shè)計(jì)、APP應(yīng)用開發(fā)及網(wǎng)絡(luò)營銷搜索優(yōu)化服務(wù),在傳統(tǒng)互聯(lián)網(wǎng)與移動互聯(lián)網(wǎng)發(fā)展的背景下,我們堅(jiān)守著用標(biāo)準(zhǔn)的設(shè)計(jì)方案與技術(shù)開發(fā)實(shí)力作基礎(chǔ),以企業(yè)及品牌的互聯(lián)網(wǎng)商業(yè)目標(biāo)為核心,為客戶打造具商業(yè)價值與用戶體驗(yàn)的互聯(lián)網(wǎng)+產(chǎn)品。
參考語句:
內(nèi)連接
select * from student a
inner join stuMarks b
on a.stuid=b.stuid
外連接
select * from student a
inner join stuMarks b
on a.stuid=b.stuid
交叉連接
select * from student a
crossjoin stuMarks b
--使用SYSREFERENCES
--刪除外鍵
set xact_abort on
begin tran
DECLARE @SQL VARCHAR(99)
DECLARE CUR_FK CURSOR LOCAL FOR
SELECT 'alter table ['+ OBJECT_NAME(FKEYID) + '] drop constraint ' + OBJECT_NAME(CONSTID) FROM SYSREFERENCES
--刪除所有外鍵
OPEN CUR_FK
FETCH CUR_FK INTO @SQL
WHILE @@FETCH_STATUS =0
BEGIN
EXEC(@SQL)
FETCH CUR_FK INTO @SQL
END
CLOSE CUR_FK
DEALLOCATE CUR_FK
-- 刪除所有表
DECLARE CUR_TAB CURSOR LOCAL FOR
SELECT 'DROP TABLE '+ NAME FROM SYSOBJECTS WHERE XTYPE='U' -- AND NAME LIKE 'xx%'
OPEN CUR_TAB
FETCH CUR_TAB INTO @SQL
WHILE @@FETCH_STATUS =0
BEGIN
EXEC(@SQL)
FETCH CUR_TAB INTO @SQL
END
CLOSE CUR_TAB
DEALLOCATE CUR_TAB
commit tran
--使用sys.foreign_keys
--disable and enable 外鍵
這里解釋下 { CHECK | NOCHECK } CONSTRAINT
Specifies that constraint_name is enabled or disabled. This option can only be used with FOREIGN KEY and CHECK constraints. When NOCHECK is specified, the constraint is disabled and future inserts or updates to the column are not validated against the constraint conditions. DEFAULT, PRIMARY KEY, and UNIQUE constraints cannot be disabled.
上面的解釋是,NOCHECK對應(yīng)于disable, CHECK則對應(yīng)于enable
select
'ALTER TABLE '+o.name+' NOCHECK CONSTRAINT '+fk.name+';' AS Command
from
sys.foreign_keys fk
JOIN sys.all_objects o ON (fk.parent_object_id=o.object_id)
具體會有多少條記錄,取決于你的數(shù)據(jù)庫里面,有多少個外鍵了。
然后復(fù)制結(jié)果, 粘貼出來執(zhí)行. 就停用 外鍵約束了.
再刪除數(shù)據(jù)
數(shù)據(jù)刪除好了, 再啟用外鍵約束
select
'ALTER TABLE ' + o.name + ' CHECK CONSTRAINT ' + fk.name + ';' AS Command
from
sys.foreign_keys fk
JOIN sys.all_objects o ON (fk.parent_object_id = o.object_id)
和前面的一樣, 把查詢出來的結(jié)果, 復(fù)制一下, 然后粘貼出來去執(zhí)行.
--使用sys.foreign_key_columns
--查出外鍵
select name
from sys.foreign_key_columns f join sys.objects o on f.constraint_object_id=o.object_id
where f.parent_object_id=object_id('表名')
--刪除外鍵
alter table 表名 drop constraint 外簡名
SQL的主鍵和外鍵的作用:
外鍵取值規(guī)則:空值或參照的主鍵值。
(1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。
(2)更新時,不能改為主鍵表中沒有的值。
(3)刪除主鍵表記錄時,你可以在建外鍵時選定外鍵記錄一起級聯(lián)刪除還是拒絕刪除。
(4)更新主鍵記錄時,同樣有級聯(lián)更新和拒絕執(zhí)行的選擇。
簡而言之,SQL的主鍵和外鍵就是起約束作用。
主鍵是能確定一條記錄的唯一標(biāo)識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個人的,其他都可能有重復(fù),所以,身份證號是主鍵。
外鍵用于與另一張表的關(guān)聯(lián)。是能確定另一張表記錄的字段,用于保持?jǐn)?shù)據(jù)的一致性。比如,A表中的一個字段,是B表的主鍵,那他就可以是A表的外鍵。