數(shù)據(jù)表的創(chuàng)建和管理_第1頁(yè)
數(shù)據(jù)表的創(chuàng)建和管理_第2頁(yè)
數(shù)據(jù)表的創(chuàng)建和管理_第3頁(yè)
數(shù)據(jù)表的創(chuàng)建和管理_第4頁(yè)
數(shù)據(jù)表的創(chuàng)建和管理_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)表的創(chuàng)建和管理第一頁(yè),共三十九頁(yè),2022年,8月28日學(xué)習(xí)要點(diǎn):表的概念表的創(chuàng)建、修改和刪除添加、更新與刪除表中的數(shù)據(jù)數(shù)據(jù)完整性的概念及實(shí)施方法第二頁(yè),共三十九頁(yè),2022年,8月28日3.1表的概念表是數(shù)據(jù)的集合,是用來(lái)存儲(chǔ)數(shù)據(jù)和操作數(shù)據(jù)的邏輯結(jié)構(gòu)。表是由行和列組成的,行被稱(chēng)為記錄,是組織數(shù)據(jù)的單位;列被稱(chēng)為字段,每一列表示記錄的一個(gè)屬性。在特定表中,列名必須是唯一的,但相同的列名可以在數(shù)據(jù)庫(kù)中的不同表中使用。SQLServer中的每個(gè)表中最多允許有1024列,每行最多允許有8060字節(jié)的用戶(hù)數(shù)據(jù)。行和列的次序是任意的。第三頁(yè),共三十九頁(yè),2022年,8月28日3.2數(shù)據(jù)類(lèi)型第一大類(lèi):整數(shù)數(shù)據(jù)

bit:bit數(shù)據(jù)類(lèi)型代表0,1或NULL,就是表true,false.

占用1byte.

int:以4個(gè)字節(jié)來(lái)存儲(chǔ)正負(fù)數(shù).可存儲(chǔ)范圍為:-

(-2147483648至2147483647).

smallint:以2個(gè)字節(jié)來(lái)存儲(chǔ)正負(fù)數(shù).存儲(chǔ)范圍為:-

(-32768至32767)

tinyint:

是最小的整數(shù)類(lèi)型,僅用1字節(jié),范圍:0至

255

bigint:以8個(gè)字節(jié)存儲(chǔ),是SQLServer2000引入的全新的數(shù)據(jù)類(lèi)型,可以存儲(chǔ)范圍:(-263到263-1)第四頁(yè),共三十九頁(yè),2022年,8月28日第二大類(lèi):精確數(shù)值數(shù)據(jù)

numeric:表示的數(shù)字可以達(dá)到38位,存儲(chǔ)數(shù)據(jù)時(shí)所用的字節(jié)數(shù)目會(huì)隨著使用權(quán)用位數(shù)的多少變化.格式寫(xiě)為numeric(p,s)

例如:numeric(10,4),表示共有10位數(shù),其中整數(shù)6位,小數(shù)4位。

decimal:和numeric類(lèi)似。區(qū)別:numeric類(lèi)型的列可以帶有IDENTITY關(guān)鍵字(唯一標(biāo)識(shí)符)。第五頁(yè),共三十九頁(yè),2022年,8月28日第三大類(lèi):近似浮點(diǎn)數(shù)值數(shù)據(jù)

float:用8個(gè)字節(jié)來(lái)存儲(chǔ)數(shù)據(jù).最多可為53位.范圍為:-1.79E+308至1.79E+308.

real:位數(shù)為24,用4個(gè)字節(jié),數(shù)字范圍:-3.04E+38至3.04E+38第四大類(lèi):日期時(shí)間數(shù)據(jù)

datatime:表示時(shí)間范圍可以表示從1753/1/1至9999/12/31,時(shí)間可以表示到3.33/1000秒.使用8個(gè)字節(jié).smalldatetime:表示時(shí)間范圍可以表示從1900/1/1至2079/12/31.使用4個(gè)字節(jié).第六頁(yè),共三十九頁(yè),2022年,8月28日第五大類(lèi):字符串?dāng)?shù)據(jù)

char[(n)]:長(zhǎng)度是設(shè)定的,最短為1字節(jié),最長(zhǎng)為8000個(gè)字節(jié).不足的長(zhǎng)度會(huì)用空白補(bǔ)上.

例如:char(10)

Varchar[(n)]:變長(zhǎng)字符型數(shù)據(jù),最短為1字節(jié),最長(zhǎng)為8000個(gè)字節(jié),尾部的空白會(huì)去掉.

text:長(zhǎng)專(zhuān)門(mén)用于存儲(chǔ)數(shù)量龐大的變長(zhǎng)字符數(shù)據(jù),,最長(zhǎng)可以存放2G(231-1個(gè)字符)的數(shù)據(jù).第七頁(yè),共三十九頁(yè),2022年,8月28日第六大類(lèi):Unincode字符串?dāng)?shù)據(jù)

nchar:長(zhǎng)度是設(shè)定的,最短為1字節(jié),最長(zhǎng)為4000個(gè)字節(jié).不足的長(zhǎng)度會(huì)用空白補(bǔ)上.儲(chǔ)存雙字節(jié)字符,nchar(m)中的m代表的含義是用來(lái)定義字符數(shù)據(jù)的最大長(zhǎng)度.

nvarchar:可變長(zhǎng)度,最短為1字節(jié),最長(zhǎng)為4000個(gè)字節(jié).尾部的空白會(huì)去掉.儲(chǔ)存一個(gè)字符需要2個(gè)字節(jié).

ntext:可變長(zhǎng)度,最短為1字節(jié),最長(zhǎng)為230-1個(gè)unicode數(shù)據(jù).尾部的空白會(huì)去掉,儲(chǔ)存一個(gè)字符需要2個(gè)字節(jié).第八頁(yè),共三十九頁(yè),2022年,8月28日第七大類(lèi):貨幣數(shù)據(jù)類(lèi)型

money:記錄金額范圍為:-92233720368577.5808至92233720368577.5807.需要8個(gè)字節(jié).

smallmoney:記錄金額范圍為:-214748.3648至214748.36487.需要4個(gè)字節(jié).第八大類(lèi):標(biāo)記數(shù)據(jù)

timestamp:該數(shù)據(jù)類(lèi)型在每一個(gè)表中是唯一的!當(dāng)表中的一個(gè)記錄更改時(shí),該記錄的timestamp字段會(huì)自動(dòng)更新.

第九頁(yè),共三十九頁(yè),2022年,8月28日第九大類(lèi):二進(jìn)制碼字符串?dāng)?shù)據(jù)

binary:固定長(zhǎng)度的二進(jìn)制碼字符串字段,最短為1,最長(zhǎng)為8000.

varbinary:與binary差異為數(shù)據(jù)尾部是00時(shí),varbinary會(huì)將其去掉

image:為可變長(zhǎng)度的二進(jìn)制碼字符串,最長(zhǎng)2G.第十頁(yè),共三十九頁(yè),2022年,8月28日3.3表結(jié)構(gòu)的建立和刪除

1、表的建立表是包含數(shù)據(jù)庫(kù)中所有數(shù)據(jù)的數(shù)據(jù)庫(kù)對(duì)象,用來(lái)存儲(chǔ)各種各樣的信息。在SQLServer2005中,一個(gè)數(shù)據(jù)庫(kù)中最多可以創(chuàng)建20億個(gè)表,用戶(hù)創(chuàng)建數(shù)據(jù)庫(kù)表時(shí),最多可以定義1024列。在同一數(shù)據(jù)庫(kù)的不同表中,可以有相同的字段,但在同一個(gè)表中不允許有相同的字段,而且每個(gè)字段都要求數(shù)據(jù)類(lèi)型相同。第十一頁(yè),共三十九頁(yè),2022年,8月28日一般的SQL建表語(yǔ)句形式CREATETABLE表名[表約束](列名1數(shù)據(jù)類(lèi)型[缺省值1,列約束1]

列名2數(shù)據(jù)類(lèi)型[缺省值2,列約束2]

列名n數(shù)據(jù)類(lèi)型[缺省值n,列約束n])第十二頁(yè),共三十九頁(yè),2022年,8月28日例3-1創(chuàng)建三張表,表結(jié)構(gòu)如下:列名描述數(shù)據(jù)類(lèi)型約束默認(rèn)值SnoSnameSsexSageSdept學(xué)號(hào)姓名性別年齡所在系字符型,長(zhǎng)度為7字符型,長(zhǎng)度為10字符型,長(zhǎng)度為2微整數(shù)字符型,長(zhǎng)度20主碼非空男Student表結(jié)構(gòu)第十三頁(yè),共三十九頁(yè),2022年,8月28日Course表結(jié)構(gòu)列名說(shuō)明數(shù)據(jù)類(lèi)型約束默認(rèn)值CnoCnameCcreditCSemester課程號(hào)課程名學(xué)分學(xué)期字符型,長(zhǎng)度為10字符型,長(zhǎng)度為20微整數(shù)微整數(shù)主碼非空

3第十四頁(yè),共三十九頁(yè),2022年,8月28日

列名說(shuō)明數(shù)據(jù)類(lèi)型約束SnoCnoGrade學(xué)號(hào)課程號(hào)成績(jī)字符型,長(zhǎng)度為7字符型,長(zhǎng)度為10浮點(diǎn)數(shù)主碼,引用Student的外碼主碼,引用Course的外碼Sc表結(jié)構(gòu)第十五頁(yè),共三十九頁(yè),2022年,8月28日CREATETABLEStudent(SnoCHAR(7)PRIMARYKEY,

SnameCHAR(10)NOTNULL,SsexCHAR(2)DEFAULT‘男’,SageTINYINT,SdeptCHAR(20),)第十六頁(yè),共三十九頁(yè),2022年,8月28日CREATETABLECourse(CnoCHAR(10)PRIMARYKEY,

CnameCHAR(20)NOTNULL,CcreditTINYINTDEFAULT3,SemesterTINYINT,)第十七頁(yè),共三十九頁(yè),2022年,8月28日CREATETABLESc(SnoCHAR(7),

CnoCHAR(10),GradeFLOAT,

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno),

FOREIGNKEY(Cno)REFERENCESCourse(Cno))第十八頁(yè),共三十九頁(yè),2022年,8月28日2、表的刪除刪除表的命令一般形式DROPTABLE表名例3-2刪除教師表

DROPTABLEteacher第十九頁(yè),共三十九頁(yè),2022年,8月28日3.4表結(jié)構(gòu)的擴(kuò)充和修改

1、修改表的命令一般形式

ALTERTABLE表名{ADD列名數(shù)據(jù)類(lèi)型[NULL/NOTNULL]|ALTERCOLUMN列名數(shù)據(jù)類(lèi)型[NULL|NOTNULL]|DROPCOLUMN列名}

第二十頁(yè),共三十九頁(yè),2022年,8月28日例3-3在student中增加住址列

ALTERTABLEstudentADDaddressCHAR(50)例3-4修改student表中的sdept字段,將數(shù)據(jù)類(lèi)型長(zhǎng)度為30ALTERTABLEstudentALTERCOLUMNsdeptchar(30)例3-5把Student表中的Sdept列刪除。

ALTERTABLEStudentDROPCOLUMNSdept第二十一頁(yè),共三十九頁(yè),2022年,8月28日2.添加主關(guān)鍵字

ALTERTABLE表名

ADD[CONSTRAINT約束名]PRIMARYKEY(主鍵列)3、刪除主關(guān)鍵字

ALTERTABLE<表名>

DROP[CONSTRAINT]約束名3.補(bǔ)充定義外來(lái)關(guān)鍵字

ALTERTABLE<表名-1>

ADD[CONSTRAINT約束名]FOREIGNKEY[(<外來(lái)關(guān)鍵字名>)]REFERENCES(<表名-2>)5.刪除外來(lái)關(guān)鍵字

ALTERTABLE<表名>

DROP<外來(lái)關(guān)鍵字名>第二十二頁(yè),共三十九頁(yè),2022年,8月28日例3-6補(bǔ)充定義student表的主關(guān)鍵字。

ALTERTABLEStudentADDCONSTRAINTpk_studentPRIMARYKEY(Sno)例3-7、刪除course表中的主關(guān)鍵字。

ALTERTABLEcourseDROPpk_course例3-8、修改sc表,在sno字段上創(chuàng)建外鍵約束。

ALTERTABLEscADDCONSTRAINTfk_sc_studentFOREIGNKEY(sno)REFERENCESstudent(sno)

第二十三頁(yè),共三十九頁(yè),2022年,8月28日例3-9、刪除sc表中sno字段上的外鍵約束

ALTERTABLEscDROPfk_sc_student例3-10、向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類(lèi)型為日期型。

ALTERTABLEStudentADDScomedateDATETIME例3-11、將年齡的數(shù)據(jù)類(lèi)型改為半字長(zhǎng)整數(shù)。

ALTERTABLEStudentALTERCOLUMNSageSMALLINT第二十四頁(yè),共三十九頁(yè),2022年,8月28日3.5數(shù)據(jù)完整性數(shù)據(jù)完整性是指存儲(chǔ)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)的一致性和準(zhǔn)確性。數(shù)據(jù)完整性技術(shù)是衡量數(shù)據(jù)庫(kù)質(zhì)量好壞的重要標(biāo)準(zhǔn)。在MicrosoftSQLServer系統(tǒng)中,提供了一系列實(shí)現(xiàn)數(shù)據(jù)完整性的方法,這些方法主要包括主鍵約束、外鍵約束、非空約束、惟一約束、默認(rèn)值約束、檢查約束以及規(guī)則和默認(rèn)對(duì)象。第二十五頁(yè),共三十九頁(yè),2022年,8月28日分類(lèi):實(shí)體完整性參照完整性域完整性

實(shí)體完整性又稱(chēng)為行完整性。這里的實(shí)體是指表中的記錄,一個(gè)實(shí)體就是表的一條記錄。實(shí)體完整性要求在表中不能存在完全相同的記錄,而且每條記錄都要具有一個(gè)非空且不重復(fù)的主鍵值。

第二十六頁(yè),共三十九頁(yè),2022年,8月28日參照完整性:一般指多個(gè)實(shí)體或關(guān)系表之間的關(guān)聯(lián)關(guān)系,在關(guān)系數(shù)據(jù)庫(kù)中用外碼(Foreignkey)來(lái)實(shí)現(xiàn)參照完整性。域完整性也稱(chēng)用戶(hù)定義的完整性或語(yǔ)義完整性。用戶(hù)定義的完整性實(shí)際上就是指明關(guān)系中屬性的取值范圍,也就是屬性的域,即限制關(guān)系中屬性的取值類(lèi)型及取值范圍,防止屬性的值與應(yīng)用語(yǔ)義矛盾。第二十七頁(yè),共三十九頁(yè),2022年,8月28日約束定義了必須遵循的用于維護(hù)數(shù)據(jù)一致性和正確性的規(guī)則,是強(qiáng)制實(shí)現(xiàn)數(shù)據(jù)完整性的途徑。約束分類(lèi):主鍵約束外鍵約束唯一值約束檢查約束默認(rèn)約束第二十八頁(yè),共三十九頁(yè),2022年,8月28日1、唯一性約束(UNIQUE)UNIQUE用來(lái)限制不受主鍵約束的列上的數(shù)據(jù)的唯一性。一個(gè)表可以放置多個(gè)UNIQUE約束語(yǔ)法:[CONSTRAINTconstraint_name]UNIQUE(列名)

第二十九頁(yè),共三十九頁(yè),2022年,8月28日例3-12為student表添加身份證號(hào)列’id‘,并為’id’列添加唯一值約束。

ALTERTABLEstudentADDidBIGINTCONSTRAINTunq_idUNIQUE注:UNIQUE約束列允許有NULL值,但最多只能有一個(gè)NULL值,否則認(rèn)為重復(fù)。例3-13為course表的cname列添加唯一值約束。

ALTERTABLEcourseADDCONSTRAINTunq_cnameUNIQUE(cname)第三十頁(yè),共三十九頁(yè),2022年,8月28日2、檢查約束(CHECK)CHECK約束用來(lái)指定某列的可取值范圍。通過(guò)限制輸入值強(qiáng)制控制域的完整性。語(yǔ)法:[CONSTRAINTconstraint_name]CHECK(檢查條件)

例3-14限制student表中的ssex列只能添入值為’男‘或’女’。ALTERTABLEstudentADDCONSTRAINTcheck_ssexCHECK(ssex=‘男’

orssex=‘女’)第三十一頁(yè),共三十九頁(yè),2022年,8月28日3、默認(rèn)約束(DEFAULT)DEFAULT約束用于給表中指定列賦予一個(gè)常量值(默認(rèn)值)。語(yǔ)法:[CONSTRAINT約束名]DEFAULT默認(rèn)值FOR列名例3-15為student中的sage列添加默認(rèn)值“19”。

ALTERTABLEstudentADDCONSTRAINTdefault_sageDEFAULT19FORsage第三十二頁(yè),共三十九頁(yè),2022年,8月28日上機(jī)實(shí)踐(獨(dú)立完成實(shí)驗(yàn))實(shí)驗(yàn)?zāi)康模罕菊聦?shí)驗(yàn)主要目的是學(xué)習(xí)正確創(chuàng)建表;掌握修改表結(jié)構(gòu)的方法;正確刪除表。實(shí)驗(yàn)內(nèi)容:自定義數(shù)據(jù)類(lèi)型。分別用企業(yè)管理器和查詢(xún)分析器創(chuàng)建表。分別用企業(yè)管理器和查詢(xún)分析器修改表。分別用企業(yè)管理器和查詢(xún)分析器刪除表。第三十三頁(yè),共三十九頁(yè),2022年,8月28日實(shí)驗(yàn)題目:題目一:在學(xué)生數(shù)據(jù)庫(kù)student中創(chuàng)建學(xué)生個(gè)人信息數(shù)據(jù)表studentinfo

題目要求分析:studentinfo數(shù)據(jù)表中包含以下信息:學(xué)號(hào)、姓名、性別、年齡、班級(jí)、地址以及聯(lián)系方式等,如下表所示。第三十四頁(yè),共三十九頁(yè),2022年,8月28日字段名稱(chēng)字段說(shuō)明數(shù)據(jù)類(lèi)型長(zhǎng)度屬性student_id學(xué)號(hào)CHAR8主鍵student_name姓名CHAR10不允許空student_sex性別CHAR2允許空year_old年齡TINYINT允許空address地址CHAR80允許空student_region籍貫CHAR10允許空student_phone聯(lián)系電話CHAR13允許空第三十五頁(yè),共三十九頁(yè),2022年,8月28日題目二:修改個(gè)人信息數(shù)據(jù)表studentinfo,完成如下操作:刪除year_old字段。向該表中添加一列,列名為email,數(shù)據(jù)類(lèi)型為char,長(zhǎng)度4

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論