數(shù)據(jù)庫(kù)的數(shù)據(jù)增刪改SQL語(yǔ)句

*******************MYSQL:

CREATE TABLE T_Person (FName VARCHAR(20),FAgeINT,FRemark VARCHAR(20),PRIMARYKEY (FName));

CREATE TABLE T_Debt (FNumber VARCHAR(20),FAmountDECIMAL(10,2) NOT NULL,FPerson VARCHAR(20),PRIMARY KEY (FNumber),FOREIGN KEY (FPerson) REFERENCES T_Person(FName)) ;

*************

一、數(shù)據(jù)的插入

INSERT INTO T_Person(FName,FAge,FRemark) VALUES('Tom',18,'USA')

INSERT INTO T_Person(FAge,FName) VALUES(22,'LXF')>>FRemark的值為

INSERT INTO T_Person VALUES('luren1',23,'China')>>不指定插入的表列,將按照定義表中字段順序來(lái)插入

**非空約束對(duì)數(shù)據(jù)插入的影響

INSERT INTO T_Debt (FNumber, FPerson) VALUES ('1', 'Jim')>>執(zhí)行此SQL會(huì)報(bào)錯(cuò):'FAmount'不能為空

**主鍵對(duì)數(shù)據(jù)插入的影響

INSERT INTO T_Debt (FNumber,FAmount, FPerson) VALUES ('1',300, 'Jim')>>不能在'FNumber'中插入重復(fù)鍵(假如FNumber中已經(jīng)存在FNumber=1的記錄)

**外鍵對(duì)數(shù)據(jù)插入的影響

外鍵是指向另一個(gè)表中已有數(shù)據(jù)的約束,因此外鍵值必須是在目標(biāo)表中存在的。如果插入的數(shù)據(jù)在目標(biāo)表中不存在的話則會(huì)導(dǎo)致違反外鍵約束異常

INSERT INTO T_Debt (FNumber,FAmount, FPerson) VALUES ('3',100, 'Jerry')>>由于在T_Person 表中不存在FName字段等于“Jerry”的數(shù)據(jù)行,所以會(huì)報(bào)出類似如下的錯(cuò)誤信息:INSERT 語(yǔ)句與 FOREIGN KEY 約束"FK__T_Debt__FPerson__1A14E395"沖突。該沖突發(fā)生于數(shù)據(jù)庫(kù)"demo",表"dbo.T_Person", column 'FName'。

二、數(shù)據(jù)的更新

UPDATE T_Person

SET FRemark = 'SuperMan' >>

將表T_Person 中所有人員的FREMARK字段值更新為“SuperMan”

UPDATE T_Person

SET FRemark = 'Sonic',FAge=25 >>將所有人員的FRemark 字段更新為“Sonic”,并且將年齡更新為25

UPDATE T_Person

SET FAge = 12

WHERE FNAME='Tom'>>將Tom的年齡修改為12歲

UPDATE T_Person

SET FRemark = 'BlaBla'

WHERE FAge =25>>將所有年齡為25的人員的備注信息修改為“BlaBla”

UPDATE T_Person

SET FAge = 22

WHERE FName ='jim' OR FName='LXF'>>將FNAME等于’Jim’或者’LXF’的行的FAge字段更新為22

**非空約束對(duì)數(shù)據(jù)更新的影響

UPDATE T_Debt set FAmount = NULL WHERE FPerson='Tom'>>執(zhí)行此SQL會(huì)報(bào)錯(cuò),F(xiàn)Amount不能為空

**主鍵對(duì)數(shù)據(jù)更新的影響

UPDATE T_Debt set FNumber = '2' WHERE FPerson='Tom'>>由于表中已經(jīng)存在一條FNumber 字段為2 的記錄,所以運(yùn)行這句SQL 的時(shí)候會(huì)報(bào)出類似如下的錯(cuò)誤信息:不能在對(duì)象'dbo.T_Debt' 中插入重復(fù)鍵。

**外鍵對(duì)數(shù)據(jù)更新的影響

UPDATE T_Debt set FPerson = 'Merry' WHERE FNumber='1'>>由于在T_Person表中不存在FName 字段等于“Merry”的數(shù)據(jù)行,所以會(huì)數(shù)據(jù)庫(kù)系統(tǒng)會(huì)報(bào)出類似如下的錯(cuò)誤信息:

UPDATE 語(yǔ)句與FOREIGN KEY 約束"FK__T_Debt__FPerson__1A14E395"沖突。該沖突發(fā)生于數(shù)據(jù)庫(kù)"demo",

表"dbo.T_Person", column 'FName'

三、數(shù)據(jù)的刪除

需要注意的就是如果被刪除的數(shù)據(jù)行是某個(gè)外鍵關(guān)聯(lián)關(guān)系中的被引用數(shù)據(jù)的話,則進(jìn)行刪除的時(shí)候會(huì)失敗,如果要?jiǎng)h除成功則必須首先刪除引用者才可以。

DELETE FROM T_Debt;

DELETE FROM T_Person;

由于T_Debt表中FPerson字段是指向表T_Person 的FName字段的外鍵,所以必須首先刪除T_Debt表中的數(shù)據(jù)后才能刪除T_Person中的數(shù)據(jù)。DELETE語(yǔ)句僅僅是刪除表中的數(shù)據(jù)行,而表的結(jié)構(gòu)還存在

DROP TABLE T_Debt;

DROP TABLE T_Person;

DROP TABLE語(yǔ)句則不僅將表中的數(shù)據(jù)行全部刪除,而且還將表的結(jié)構(gòu)也刪除

DELETE FROM T_Person WHERE FAge > 20 or FRemark = 'Mars';>>刪除年齡大于20歲或者來(lái)自火星(Mars)的人員

以上摘自《程序員的SQL 金典》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容