火龍果SQL表的管理_第1頁
火龍果SQL表的管理_第2頁
火龍果SQL表的管理_第3頁
火龍果SQL表的管理_第4頁
火龍果SQL表的管理_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1SQL語言SQL(StructuredQueryLanguage,結(jié)構(gòu)查詢語言)是一個(gè)功能強(qiáng)大的數(shù)據(jù)庫語言。SQL通常使用于數(shù)據(jù)庫的通訊。ANSI(美國國家標(biāo)準(zhǔn)學(xué)會)聲稱,SQL是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL語句通常用于完成一些數(shù)據(jù)庫的操作任務(wù),比如在數(shù)據(jù)庫中更新數(shù)據(jù),或者從數(shù)據(jù)庫中檢索數(shù)據(jù)。使用SQL的常見關(guān)系數(shù)據(jù)庫管理系統(tǒng)有:Oracle、Sybase、MicrosoftSQLServer、Access、Ingres等等。雖然絕大多數(shù)的數(shù)據(jù)庫系統(tǒng)使用SQL,但是它們同樣有它們自立另外的專有擴(kuò)展功能用于它們的系統(tǒng)。但是,標(biāo)準(zhǔn)的SQL命令,比如"Select"、"Insert"、"Update"、"Delete"、"Create"和"Drop"常常被用于完成絕大多數(shù)數(shù)據(jù)庫的操作。2SQL功能強(qiáng)大,但是概括起來,它可以分成以下幾組:DML(DataManipulationLanguage,數(shù)據(jù)操作語言):

用于檢索或者修改數(shù)據(jù);DDL(DataDefinitionLanguage,數(shù)據(jù)定義語言):

用于定義數(shù)據(jù)的結(jié)構(gòu),比如創(chuàng)建、修改或者刪除數(shù)據(jù)庫對象;DCL(DataControlLanguage,數(shù)據(jù)控制語言):

用于定義數(shù)據(jù)庫用戶的權(quán)限。SQL語言3SQL語言DML組可以細(xì)分為以下的幾個(gè)語句:SELECT:用于檢索數(shù)據(jù);INSERT:用于增加數(shù)據(jù)到數(shù)據(jù)庫;UPDATE:用于從數(shù)據(jù)庫中修改現(xiàn)存的數(shù)據(jù)DELETE:用于從數(shù)據(jù)庫中刪除數(shù)據(jù)。DDL語句可以用于創(chuàng)建用戶和重建數(shù)據(jù)庫對象。下面是DDL命令:CREATETABLEALTERTABLEDROPTABLECREATEINDEXDROPINDEXDCL命令用于創(chuàng)建關(guān)系用戶訪問以及授權(quán)的對象。下面是幾個(gè)DCL命令:ALTERPASSWORDGRANTREVOKECREATESYNONYM4第三章

表的創(chuàng)建和管理

3.1SQL的命名規(guī)范和數(shù)據(jù)類型3.2創(chuàng)建表3.3創(chuàng)建、刪除和修改約束3.4增加、刪除和修改字段3.5查看表格3.6創(chuàng)建和刪除索引3.7刪除表5第三章

表的創(chuàng)建和管理SQL的命名規(guī)范標(biāo)志符格式:(最多容納128個(gè)字符)且不區(qū)分大小寫。標(biāo)志符的首字母必須是:①26個(gè)英文字母a-z和A-Z,以及其他一些語言字符,如:漢字?;蛘呤窍聞澗€“_”、“@”、“#”。②標(biāo)志符的首字母后的字符可以是:26個(gè)英文字母a-z和A-Z,以及其他一些語言字符,如漢字?;蛘呤窍聞澗€“_”、“@”、“#”或“$”。③標(biāo)志符不允許是T-SQL的保留字。④標(biāo)志符不允許有空格或特殊字符。63.1數(shù)據(jù)類型1.整型數(shù)據(jù)類型2.浮點(diǎn)數(shù)據(jù)類型3.字符數(shù)據(jù)類型4.日期和時(shí)間數(shù)據(jù)類型5.文本和圖形數(shù)據(jù)類型6.貨幣數(shù)據(jù)類型7.位數(shù)據(jù)類型8.二進(jìn)制數(shù)據(jù)類型9.特殊數(shù)據(jù)類型10.新增數(shù)據(jù)類型73.1數(shù)據(jù)類型1.整型數(shù)據(jù)類型

整型數(shù)據(jù)類型是最常用的數(shù)據(jù)類型之一,它主要用來存儲數(shù)值,可以直接進(jìn)行數(shù)據(jù)運(yùn)算,而不必使用函數(shù)轉(zhuǎn)換。(1)int(integer):4個(gè)字節(jié)(2)Smallint:2個(gè)字節(jié)(3)Tinyint:1個(gè)字節(jié)請大家自己計(jì)算它們的取值范圍83.1數(shù)據(jù)類型2.浮點(diǎn)數(shù)據(jù)類型用于存儲十進(jìn)制小數(shù)(1)Real:4個(gè)字節(jié)的,最大7位精確位數(shù),不包括小數(shù)點(diǎn)。對于超出數(shù)據(jù)表示范圍的采用四舍五入的方式

[例1]如指定某列為Real型數(shù)據(jù)類型,8.4368768那么該列實(shí)際存儲的是:8.436877。[例2]如指定某列為Real型數(shù)據(jù)類型,84.368768那么該列實(shí)際存儲的是:84.36877。(2)Float

可以精確到第15位小數(shù),其范圍從-1.79E-308到1.79E+308。93.1數(shù)據(jù)類型(3)Decimal和numeric:可以提供小數(shù)所需要的實(shí)際存儲空間,可以用5-17個(gè)字節(jié)來存儲。也可以將其寫為decimal(p,s)的形式。(1<p<=38;0<=s<=p)注意:數(shù)值類型的總位數(shù)不包括小數(shù)點(diǎn)。例如:decimal(10,5),表示共有10位數(shù),其中整數(shù)5位,小數(shù)5位。

103.1數(shù)據(jù)類型[例1]如指定某列的精度為6,小數(shù)位數(shù)為3,即decimal(6,3),則向某記錄的該例附值86.436876,①如果使用企業(yè)管理器錄入的方法:那么該列實(shí)際存儲的是:86.436。②如果使用T-SQL語句的方法:例如代碼如下:InsertInto表名Values(86.436876)該列實(shí)際存儲的是:86.437請大家試驗(yàn)一下上題如果輸入1234.567的結(jié)果是什么?將numeric轉(zhuǎn)換為數(shù)據(jù)類型numeric時(shí)出現(xiàn)算術(shù)溢出錯誤。語句已終止。113.1數(shù)據(jù)類型如指定某列的精度為8,小數(shù)位數(shù)為3,即numeric(8,3),則向某記錄的該例附值12685.564986,①如果使用企業(yè)管理器錄入的方法:那么該列實(shí)際存儲的是:12685.564。②如果使用T-SQL語句的方法:例如代碼如下:InsertInto表名Values(12685.564986)該列實(shí)際存儲的是:12685.565注意:數(shù)值型數(shù)據(jù)時(shí),其小數(shù)位數(shù)必須小于精度;注意什么時(shí)候進(jìn)行四舍五入。123.1數(shù)據(jù)類型3.字符數(shù)據(jù)類型用來存儲各種字母、數(shù)字符號和特殊符號。在使用時(shí)需要在其前后加上英文單引號或者雙引號。(1)Char:占用1個(gè)字節(jié)。其定義形式為:char(n)

如果實(shí)際數(shù)據(jù)的字符長度短于給定的最大長度,則多余的字節(jié)會被空格填充。如果實(shí)際數(shù)據(jù)的字符長度超過了給定的最大長度,則超過的字符將會被截?cái)?。使用雙引號或單引號將字符型變量括起來。n的取值為1-8000。默認(rèn)n的值為1。133.1數(shù)據(jù)類型(2)Varchar:可以存儲長達(dá)8000個(gè)字符的可變長度字符串,和char類型不同varchar類型根據(jù)輸入數(shù)據(jù)的實(shí)際長度而變化。其定義形式為:varchar(n)

當(dāng)每列數(shù)據(jù)沒有達(dá)到規(guī)定的字符數(shù)時(shí),并不會在多余的字節(jié)上填充空格??梢杂行У墓?jié)省空間。(3)Nchar:采用Unicode(統(tǒng)一字符編碼標(biāo)準(zhǔn))字符集每個(gè)Unicode字符用兩個(gè)字節(jié)為一個(gè)存儲單位。范圍是1-4000。其定義形式為:nchar(n)(3)Nvarchar:使用Unicode字符集的Varchar數(shù)據(jù)類型。其定義形式為:nvarchar(n),范圍是0-4000。143.1數(shù)據(jù)類型[例1]某例的數(shù)據(jù)類型為char(18),而輸入的字符串為“shanghai”,則存儲的字符是shanghai??????????。(?表示空格)[例2]表中某例的數(shù)據(jù)類型為varchar(18),而輸入的字符串為“shanghai”,則存儲的字符是shanghai。注意:若存儲的字符串長度不足n時(shí),則在串尾添加空格。注意:若存儲的字符串長度不足n時(shí),按實(shí)際長度輸入。153.1數(shù)據(jù)類型3.日期和時(shí)間數(shù)據(jù)類型(1)Datetime:占用8個(gè)字節(jié)。用于存儲日期和時(shí)間的結(jié)合體,可以存儲從公元1753年1月1日零時(shí)起~公元9999年12月31日23時(shí)59分59秒之間的所有日期和時(shí)間,其精確度可達(dá)三百分之一秒,即3.33毫秒。當(dāng)存儲datetime數(shù)據(jù)類型時(shí),默認(rèn)的格式是:MMDDYYYYhh:mmA.M./P.M。當(dāng)插入數(shù)據(jù)或者在其它地方使用datetime類型時(shí),需要用單引號把它括起來。163.1數(shù)據(jù)類型默認(rèn)January1,190012:00A.M??梢越邮艿妮斎敫袷饺缦拢篔an31999、JAN31999January31999Jan199931/1/19901999-1-119993Jan和1999Jan3datetime數(shù)據(jù)類型允許使用/、-和.作為不同時(shí)間單位間的分隔符。(2)Smalldatetime:存儲從1900年1月1日到2079年6月6日內(nèi)的日期。占4個(gè)字節(jié)。

在沒有指定小時(shí)以上的精度的數(shù)據(jù)時(shí),會自動設(shè)置datetime和smalldatetime數(shù)據(jù)的時(shí)間為00:00:00。173.1數(shù)據(jù)類型5.文本和圖形數(shù)據(jù)類型(1)Text:容量可以在1-231個(gè)字節(jié)。在定義Text數(shù)據(jù)類型時(shí),不需要指定數(shù)據(jù)長度,SQLServer會根據(jù)數(shù)據(jù)的長度自動為其分配空間。(2)ntext:采用unicode標(biāo)準(zhǔn)字符集,用于存儲大容量文本數(shù)據(jù)。其理論上的容量為2G個(gè)字節(jié)。(3)Image:一組二進(jìn)制的數(shù)據(jù)流。用于存儲照片、目錄圖片或者圖畫,其理論容量為2G個(gè)字節(jié)。183.1數(shù)據(jù)類型6.貨幣數(shù)據(jù)類型(1)Money:用于存儲貨幣值,數(shù)值以一個(gè)正數(shù)部分和一個(gè)小數(shù)部分存儲在兩個(gè)4字節(jié)的整型值中,存儲范圍為-263--263-1,精度為貨幣單位的萬分之一。(2)Smallmoney:貨幣值有兩個(gè)2字節(jié)整數(shù)組成。其存儲范圍為-213738.3368―213738.3367。當(dāng)為money或smallmoney的表輸入數(shù)據(jù)時(shí),必須在有效位置前面加一個(gè)貨幣單位符號(如$或其它貨幣單位的記號)。

193.1數(shù)據(jù)類型7.位數(shù)據(jù)類型Bit稱為位數(shù)據(jù)類型,有兩種取值:0和1。在輸入0以外的其它值時(shí),系統(tǒng)均把它們當(dāng)1看待。8.二進(jìn)制數(shù)據(jù)類型(1)Binary:其定義形式為binary(n),數(shù)據(jù)的存儲長度是固定的,即n+4字節(jié),當(dāng)輸入的二進(jìn)制數(shù)據(jù)長度小于n時(shí),余下部分填充0。二進(jìn)制數(shù)據(jù)類型的最大長度(即n的最大值)為8KB,常用于存儲圖像等數(shù)據(jù)。(2)Varbinary:其定義形式為varbinary(n),數(shù)據(jù)的存儲長度是變化的,最大長度不可以超過8KB。在輸入二進(jìn)制常量時(shí),需在該常量前面加一個(gè)前綴0x。203.1數(shù)據(jù)類型9.特殊數(shù)據(jù)類型(1)Timestamp:也稱作時(shí)間戳數(shù)據(jù)類型。是一種自動記錄時(shí)間的數(shù)據(jù)類型,主要用于在數(shù)據(jù)表中記錄其數(shù)據(jù)的修改時(shí)間。它提供數(shù)據(jù)庫范圍內(nèi)的唯一值。(2)Uniqueidentifier:也稱作唯一標(biāo)識符數(shù)據(jù)類型。Uniqueidentifier用于存儲一個(gè)16字節(jié)長的二進(jìn)制數(shù)據(jù)類型,它是SQLServer根據(jù)計(jì)算機(jī)網(wǎng)絡(luò)適配器地址和CPU時(shí)鐘產(chǎn)生的全局唯一標(biāo)識符代碼(GloballyUniqueIdentifier,簡寫為GUID)。

10.新增數(shù)據(jù)類型(1)Bigint:占用8個(gè)字節(jié)。(2)sql_variant:用于存儲除文本、圖形數(shù)據(jù)和timestamp類型數(shù)據(jù)外的其它任何合法的SQLServer數(shù)據(jù)。(3)table:用于存儲對表或者視圖處理后的結(jié)果集。213.1數(shù)據(jù)類型3.1.2自定義數(shù)據(jù)類型①使用企業(yè)管理器創(chuàng)建②利用系統(tǒng)存儲過程創(chuàng)建sp_addtype[@typename=]type,[@phystype=]system_data_type[,[@nulltype=]‘null_type’][,[@owner=]‘owner_name’]223.1數(shù)據(jù)類型type:指定用戶定義的數(shù)據(jù)類型的名稱。system_data_type:指定相應(yīng)的系統(tǒng)提供的數(shù)據(jù)類型的名稱及定義。注意,不能使用timestamp數(shù)據(jù)類型,當(dāng)所使用的系統(tǒng)數(shù)據(jù)類型有額外說明時(shí),需要用引號將其括起來。null_type:指定用戶自定義數(shù)據(jù)類型的null屬性,其值可以為‘null’、‘notnull’或者‘nonull’。默認(rèn)與系統(tǒng)默認(rèn)的null屬性相同。owner_name:指定用戶自定義數(shù)據(jù)類型的所有者。233.1數(shù)據(jù)類型刪除用戶自定義數(shù)據(jù)1.使用企業(yè)管理器2.利用系統(tǒng)存儲過程sp_droptype[@typename=]‘type’

243.2創(chuàng)建表

表是包含數(shù)據(jù)庫中所有數(shù)據(jù)的數(shù)據(jù)庫對象,用來存儲各種各樣的信息。在SQLServer2000中,一個(gè)數(shù)據(jù)庫中最多可以創(chuàng)建200萬個(gè)表,用戶創(chuàng)建數(shù)據(jù)庫表時(shí),最多可以定義1024列,也就是可以定義1024個(gè)字段。在同一數(shù)據(jù)庫的不同表中,可以有相同的字段,但在同一個(gè)表中不允許有相同的字段,而且每個(gè)字段都要求數(shù)據(jù)類型相同。SQLServer2000提供了兩種方法創(chuàng)建數(shù)據(jù)庫表,第一種方法是利用企業(yè)管理器(EnterpriseManager)創(chuàng)建表;另一種方法是利用Transact-SQL語句中的create命令創(chuàng)建表。253.2.1.利用EnterpriseManager創(chuàng)建表在EnterpriseManager中,展開指定的服務(wù)器和數(shù)據(jù)庫,打開想要創(chuàng)建新表的數(shù)據(jù)庫,用右鍵單擊表對象,從彈出的快捷菜單中選擇新建表選項(xiàng),或者在工具欄中選擇圖標(biāo),就會出現(xiàn)新建表對話框,在該對話框中,可以定義列的以下屬性:列名稱、數(shù)據(jù)類型、長度、精度、小數(shù)位數(shù)、是否允許為空、缺省值、標(biāo)識列、標(biāo)識列的初始值、標(biāo)識列的增量值和是否有行的標(biāo)識。然后根據(jù)提示進(jìn)行設(shè)置。263.2.2使用T-SQL創(chuàng)建表例子:具體語法請看課本或者聯(lián)機(jī)叢書。

USESampleCreateTablecustomers(CustomerIDintidentity(1,1)primarykey,FirstNamevarchar(20)notnull,LastNamevarchar(20)notnull,Stu_SexbitnotnullConstraintSexcheck(Stu_Sexin(1,0)),Addressvarchar(100),Cityvarchar(20),Telvarchar(20)unique,Companyvarchar(20),Birthdaydatetime,Typetinyintdefault1)“CustomerID”列定為標(biāo)識列,種子值為1,增量為1。添加性別檢查約束,此列要求非空。約束的名稱叫Sex.273.3

創(chuàng)建、刪除和修改約束3.3.1約束是SQLServer提供的自動保持?jǐn)?shù)據(jù)庫完整性的一種方法:1)主鍵(PrimaryKey)約束:一列或多列的組合唯一標(biāo)識一行。實(shí)現(xiàn)實(shí)體完整性(表中所有行唯一)。

2)外鍵(ForeignKey)約束:一列或多列的組合。實(shí)現(xiàn)參照完整性(兩個(gè)以上的表的數(shù)據(jù)一致性維護(hù))。外部鍵約束不能自動創(chuàng)建索引,需要用戶手動創(chuàng)建。3)唯一性(Unique)約束:保證非主鍵的列不重復(fù)。

4)檢查(Check)約束:限制列的取值。

5)默認(rèn)值(Default):當(dāng)字段沒有明確給值時(shí),有系統(tǒng)自動給出。

6)空值(NULL):字段允許空,可以不輸入值,否則必須有值。

283.3創(chuàng)建、刪除和修改約束外部鍵約束用于強(qiáng)制參照完整性,提供單個(gè)字段或者多個(gè)字段的參照完整性。當(dāng)使用外部鍵約束時(shí),應(yīng)該考慮以下幾個(gè)因素:①外部鍵約束提供了字段參照完整性。②外部鍵從句中的字段數(shù)目和每個(gè)字段指定的數(shù)據(jù)類型必須和REFERENCES從句中的字段相匹配。③外部鍵約束不能自動創(chuàng)建索引,需要用戶手動創(chuàng)建。④用戶想要修改外部鍵約束的數(shù)據(jù),必須有對外部鍵約束所參考表的SELECT權(quán)限或者REFERENCES權(quán)限。⑤參考同一表中的字段時(shí),必須只使用REFERENCES子句,不能使用外部鍵子句。⑥一個(gè)表中最多可以有31個(gè)外部鍵約束。⑦在臨時(shí)表中,不能使用外部鍵約束。⑧主鍵和外部鍵的數(shù)據(jù)類型必須嚴(yán)格匹配。293.4增加、刪除和修改字段

3.4.1利用企業(yè)管理器增加、刪除和修改字段3.4.2利用Transact-SQL語言的ALTERTABLE子句增加、刪除和修改字段303.4增加、刪除和修改字段例:A.更改表以添加新列下例添加一個(gè)允許空值的列,而且沒有通過DEFAULT定義提供值。各行的新列中的值將為NULL。

CREATETABLEtesta(column_aINT)GO新建一個(gè)表ALTERTABLEtestaADDcolumn_bVARCHAR(20)NULLGO新建一個(gè)列EXECsp_helptestaGO查看一個(gè)表DROPTABLEtestaGO刪除一個(gè)表注:添加的字段必須為允許空字段或者是默認(rèn)字段。31B.更改表以除去列下例修改表以刪除一列。CREATETABLEtestb(column_aINT,column_bVARCHAR(20)NULL)GOALTERTABLEtestbDROPCOLUMNcolumn_bGOEXECsp_helptestbGODROPTABLEtestbGO3.4增加、刪除和修改字段323.4增加、刪除和修改字段設(shè)已經(jīng)在數(shù)據(jù)庫Stu中創(chuàng)建表Stu_info。[例1]在表Stu_Info中增加一個(gè)新列——獎學(xué)金等級。

USEStuALTERTABLEStu_InfoADD獎學(xué)金等級tinyintNULLGO333.4增加、刪除和修改字段[例2]修改表Stu_Info中已有列的屬性,將名為“姓名”的列的長度由原來的8改為10,將名為“出生時(shí)間”的列的數(shù)據(jù)類型由原來的smalldatetime改為datetime。USEStuALTERTABLEStu_InfoALTERCOLUMN姓名char(10)orALTERCOLUMN出生時(shí)間datetimeGO添加列時(shí)是否可以添加“NotNull”和“Default”約束343.4增加、刪除和修改字段[例3]在表stu_info中刪除名為獎學(xué)金等級的列。USEStuALTERTABLEStu_InfoDROPCOLUMN獎學(xué)金等級GO353.4增加、刪除和修改字段[例4]在表Stu_Info中刪除一個(gè)帶有約束的列。USEStuALTERTABLEStu_InfoDROPCONSTRAINT約束名稱GOALTERTABLEStu_InfoDROPCOLUMN字段名GO363.4增加、刪除和修改字段[例5]在表stu_info中添加一個(gè)帶主鍵約束的列。altertabletestaddconstraintpkprimarykey(stu_id)373.4增加、刪除和修改字段[例6]在表stu_info中添加一個(gè)帶檢查約束的列。ALTERTABLEstu_infoWITHNOCHECK

ADDCONSTRAINTssCHECK(stu_sexin('男','女'))利用WITHNOCHECK來防止對現(xiàn)有行驗(yàn)證約束,從而允許該約束的添加。WITHCHECK和WITHNOCHECK子句不能用于PRIMARYKEY和UNIQUE約束。383.5查看表格

3.5.1查看表格中的數(shù)據(jù)

select語句3.5.2重命名表格sp_rename

溫馨提示

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

最新文檔

評論

0/150

提交評論