資源描述:
《SQL數(shù)據(jù)庫(kù)創(chuàng)建表與完整性約束.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、4.1.3SQL語(yǔ)言功能概述SQL功能命令動(dòng)詞數(shù)據(jù)查詢SELECT數(shù)據(jù)定義CREATE、DROP、ALTER數(shù)據(jù)操縱INSERT、UPDATE、DELETE數(shù)據(jù)控制GRANT、REVOKE四部分:數(shù)據(jù)定義功能、數(shù)據(jù)控制功能、數(shù)據(jù)查詢功能和數(shù)據(jù)操縱功能。4.2SQL的數(shù)據(jù)類型數(shù)值型字符串型日期時(shí)間型貨幣型數(shù)值型準(zhǔn)確型整數(shù)Bigint:8字節(jié),Int:4字節(jié)Smallint:2字節(jié),Tinyint:1字節(jié)Bit:1位,存儲(chǔ)1或0小數(shù)Numeric(p,q)或Decimal(p,q),其中:p為數(shù)字位長(zhǎng)度,q:小
2、數(shù)位長(zhǎng)度。近似型Float:8字節(jié)Real:4字節(jié)字符串型普通編碼字符串類型統(tǒng)一字符編碼字符串類型二進(jìn)制字符串類型普通編碼字符串類型Char(n):定長(zhǎng)存儲(chǔ),n<=8000Varchar(n):不定長(zhǎng)存儲(chǔ)(按實(shí)際長(zhǎng)度存儲(chǔ)),長(zhǎng)度最大不超過n,n<=8000注:n為字符個(gè)數(shù)Text:存儲(chǔ)大于8000字節(jié)的文本統(tǒng)一字符編碼字符串類型nchar(n):定長(zhǎng)存儲(chǔ),n<=4000nvarchar(n):不定長(zhǎng)存儲(chǔ),長(zhǎng)度最大不超過n,n<=4000ntext:存儲(chǔ)大于8000字節(jié)的文本特點(diǎn):每個(gè)字符占兩個(gè)字節(jié)二進(jìn)制字符
3、串類型Binary(n):固定長(zhǎng)度,n<=8000。Varbinary(n):可變長(zhǎng)度,n<=8000。注:n為二進(jìn)制數(shù)據(jù)的字節(jié)數(shù)image:大容量、可變長(zhǎng)二進(jìn)制字符數(shù)據(jù),可用于存儲(chǔ)文件。日期時(shí)間型Datetime:8字節(jié),年月日時(shí)分秒毫秒(例:‘2001/08/0310:30:00.000’)SmallDateTime:4字節(jié),年月日時(shí)分(例:‘2001/08/0310:30:00’)日期、時(shí)間的輸入格式貨幣類型Money:8個(gè)字節(jié),精確到貨幣單位的千分之十。Smallmoney:4個(gè)字節(jié),精確到貨幣單位
4、的千分之十。限制到小數(shù)點(diǎn)后4位??梢詭в羞m當(dāng)?shù)呢泿欧?hào)。例如,100英鎊可表示為£100。4.3基本表的定義、刪除及修改4.3.1基本表的定義與刪除4.3.2修改表結(jié)構(gòu)4.3.1基本表的定義與刪除1.定義基本表使用SQL語(yǔ)言中的CREATETABLE語(yǔ)句實(shí)現(xiàn),其一般格式為:CREATETABLE<表名>(<列名><數(shù)據(jù)類型>[列級(jí)完整性約束定義]{,<列名><數(shù)據(jù)類型>[列級(jí)完整性約束定義]…}[,表級(jí)完整性約束定義])在列級(jí)完整性約束定義處可以定義的約束NOTNULL:限制列取值非空。DEFAULT:給定
5、列的默認(rèn)值。UNIQUE:限制列取值不重。CHECK:限制列的取值范圍。PRIMARYKEY:指定本列為主碼。FOREIGNKEY:定義本列為引用其他表的外碼。使用形式為:[FOREIGNKEY(<外碼列名>)]REFERENCES<外表名>(<外表列名>)幾點(diǎn)說明NOTNULL和DEFAULT只能是列級(jí)完整性約束;其他約束均可在表級(jí)完整性約束處定義。注意以下幾點(diǎn):第一,如果CHECK約束是定義多列之間的取值約束,則只能在表級(jí)完整性約束處定義;第二,如果表的主碼由多個(gè)列組成,則也只能在表級(jí)完整性約束處定義,
6、并將主碼列用括號(hào)括起來,即:PRIMARYKEY(列1{[,列2]…});第三,如果在表級(jí)完整性約束處定義外碼,則“FOREIGNKEY(<外碼列名>)”部分不能省。約束定義①列取值非空約束<列名><類型>NOTNULL例:snamechar(10)NOTNULL約束定義(續(xù))②表主碼約束在定義列時(shí)定義主碼(僅用于單列主碼)列定義PRIMARYKEY例:SNOchar(7)PRIMARYKEY在定義完列時(shí)定義主碼(用于單列或多列主碼)PRIMARYKEY(<列名序列>)例:PRIMARYKEY(SNO)PR
7、IMARYKEY(SNO,CNO)約束定義(續(xù))③外碼引用約束指明本表外碼列引用的表及表中的主碼列。[FOREIGNKEY(<本表列名>)]REFERENCES<外表名>(<外表主碼列名>)例:FOREIGNKEY(sno)REFERENCES學(xué)生表(sno)約束定義(續(xù))④默認(rèn)值約束格式:DEFAULT默認(rèn)值例:定義系的默認(rèn)值為“計(jì)算機(jī)系”。DEFAULT‘計(jì)算機(jī)系’約束定義(續(xù))⑤CHECK約束格式:CHECK(約束表達(dá)式)例:定義成績(jī)大于等于0。CHECK(grade>=0)約束定義(續(xù))⑥UNIQU
8、E約束在列級(jí)約束定義(僅用于單列約束)列定義UNIQUE例:SNAMEchar(7)UNIQUE在表級(jí)約束定義(用于單列或多列組合約束)UNIQUE(<列名序列>)例:UNIQUE(SNO,CNO)用于限制在一個(gè)列中不能有重復(fù)的值。用在事實(shí)上具有惟一性的屬性列上,比如每個(gè)人的身份證號(hào)碼、駕駛證號(hào)碼等均不能有重復(fù)值。注意:允許有一個(gè)空值;在一個(gè)表中可以定義多個(gè)UNIQUE約束;可以在一個(gè)列或多個(gè)列上定義UNIQUE