版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第六講 表的操作與管理,王無(wú)恙 wuyang_,本章學(xué)習(xí)目標(biāo),掌握表操作 ;table 掌握約束及操作;constraint 掌握索引及操作;index 掌握數(shù)據(jù)類(lèi)型;data type,任務(wù),任務(wù)一:創(chuàng)建案例中的表(兩種方法); 任務(wù)二:創(chuàng)建案例中的約束(兩種方法); 任務(wù)三:創(chuàng)建案例中的索引(兩種方法); 任務(wù)四:請(qǐng)向案例中的表每表中添加不少于5條數(shù)據(jù); (兩種方法)insert data 任務(wù)五:請(qǐng)創(chuàng)建表對(duì)象腳本,包括數(shù)據(jù)及數(shù)據(jù)結(jié)構(gòu); Data Structure; 任務(wù)六:創(chuàng)建項(xiàng)目中的表、約束及索引; 任務(wù)七:請(qǐng)完成實(shí)訓(xùn) 報(bào)告二。,任務(wù)一,用SQL 語(yǔ)句創(chuàng)建案例中的表; 用Manage
2、ment Studio創(chuàng)建案例中的表;,步驟一:用SQL語(yǔ)句創(chuàng)建表,請(qǐng)按照下面要求創(chuàng)建學(xué)生表; 學(xué)生(學(xué)生號(hào),學(xué)生名,性別,出生年月,電話,學(xué)生的來(lái)源,班級(jí),年級(jí)); S (SNO ,SName ,BYear,,SSEX,Stel,SFrom,Sclass) SNO CHAR(10), SName VARCHAR(20);BYear datetime; SSEX CHAR(2) ;Stel VARCHAR(20); Sfrom varchar(20);,思考題,思考問(wèn)題:當(dāng)SNO為null時(shí),能設(shè)置成功嗎? 為什么?(什么是主鍵?為什么設(shè)置主鍵?怎樣設(shè)置主鍵?) Primary Key,創(chuàng)建C
3、課程表: C(CNO,CNAME,Ccredit); 要求:CNO CHAR20 NOT NULL, CNAME CHAR20 ; Ccredit int;,創(chuàng)建SC表: CREATE TABLE SC (SNO,CNO ,SCORE ) 要求:SNO CHAR(5),CNO CHAR(5),SCORE NUMERIC(5,1)。,步驟二:用SQL語(yǔ)句修改表或者刪除表,請(qǐng)用SQL語(yǔ)句向S中添加列SClass nvarchar(20); Sgrade nvarchar(20); 請(qǐng)用SQL語(yǔ)句刪除S表中的Sgrade列;,步驟三,請(qǐng)用Management Studio重復(fù)以上操作: 創(chuàng)建表,添加
4、列,刪除列,添加數(shù)據(jù); Column,任務(wù)二:請(qǐng)用SQL語(yǔ)句實(shí)現(xiàn),請(qǐng)向S、C表中添加主鍵約束; 請(qǐng)向S表中添加SNO非空約束; 請(qǐng)向表S中添加Byear列中添加默認(rèn)為1989年1月1日的約束; default; 請(qǐng)向表C的列CNAME添加Unique唯一約束; 請(qǐng)向C表的Ccredit添加Check約束,要求學(xué)分大于0分小于50分; 請(qǐng)向SC表中添加外鍵SNO參考S表主鍵SNO; 請(qǐng)向SC表中添加外鍵CNO,參考C表中的主鍵CNO; 請(qǐng)把SC表中的兩外鍵設(shè)置成一個(gè)組合主鍵; 請(qǐng)?jiān)O(shè)置SC表CHECK約束為優(yōu)、良、中、及格、不及格。,任務(wù)三,1.建立索引 unique index 1)在S 表上建
5、立關(guān)于SNO 的唯一索引stusno 。 2)在C 表上建立關(guān)于CNO 升序的唯一索引 coucno 。sort ascending 2.刪除索引 1)刪除S 表上的索引stusno。 2)刪除C表上的索引coucno。,任務(wù)四,請(qǐng)向以上所建的三張表中添加不少于5條的記錄;record S表的記錄中的SNO能一樣嗎?能為空嗎?SNAME呢? C表中能填入值80嗎?為什么?,任務(wù)五,請(qǐng)把所創(chuàng)建里表及數(shù)據(jù)用SQL腳本給導(dǎo)出;script,任務(wù)六,請(qǐng)把項(xiàng)目設(shè)計(jì)報(bào)告中的表物理實(shí)現(xiàn); 并導(dǎo)出所創(chuàng)建的表的腳本;,任務(wù)七,請(qǐng)完成實(shí)訓(xùn)報(bào)告二;,8.1.1 創(chuàng)建表,利用SQL Server管理平臺(tái)創(chuàng)建表 在SQ
6、L Server管理平臺(tái)中,展開(kāi)指定的服務(wù)器和數(shù)據(jù)庫(kù),打開(kāi)想要?jiǎng)?chuàng)建新表的數(shù)據(jù)庫(kù),右擊表對(duì)象,并從彈出的快捷菜單中選擇“新建表”選項(xiàng),如圖5-4所示。在圖5-4的對(duì)話框中,可以對(duì)表的結(jié)構(gòu)進(jìn)行更改,設(shè)置主鍵及字段屬性,使用SQL Server管理平臺(tái)可以非常直觀地修改數(shù)據(jù)庫(kù)結(jié)構(gòu)和添加數(shù)據(jù)。在表中任意行上右擊,則彈出一個(gè)快捷菜單,如圖5-6所示。,圖5-4 新建表對(duì)話框,圖5-6 設(shè)置字段屬性對(duì)話框,8.1.1 創(chuàng)建表,2. 利用create命令創(chuàng)建表 使用create命令創(chuàng)建表非常靈活,它允許對(duì)表設(shè)置幾種不同的選項(xiàng),包括表名、存放位置和列的屬性等。 其完整語(yǔ)法形式如下: CREATE TABLE
7、database_name.owner.|owner.table_name (|column_name AS computed_column_expression| ,n)ON filegroup|DEFAULT TEXTIMAGE_ON filegroup|DEFAULT :=column_name data_type COLLATE DEFAULT constant_expression |IDENTITY(seed,increment )NOT FOR REPLICATION ROWGUIDCOL .n,8.1.1 創(chuàng)建表,2. 利用create命令創(chuàng)建表 其中,各參數(shù)的說(shuō)明如下:par
8、ameter database_name:用于指定所創(chuàng)建表的數(shù)據(jù)庫(kù)名稱。 owner:用于指定新建表的所有者的用戶名。 table_name:用于指定新建表的名稱。 column_name:用于指定新建表的列名。 computed_column_expression:用于指定計(jì)算列的列值表達(dá)式。 ON filegroup | DEFAULT:用于指定存儲(chǔ)表的文件組名。 TEXTIMAGE_ON:用于指定 text、ntext 和 image 列的數(shù)據(jù)存儲(chǔ)的文件組。 data_type:用于指定列的數(shù)據(jù)類(lèi)型。 DEFAULT:用于指定列的默認(rèn)值。 constant_expression:用于指定
9、列的默認(rèn)值的常量表達(dá)式、可以為一個(gè)常量或NULL或系統(tǒng)函數(shù)。function IDENTITY:用于將列指定為標(biāo)識(shí)列。Seed:用于指定標(biāo)識(shí)列的初始值。Increment:用于指定標(biāo)識(shí)列的增量值。 NOT FOR REPLICATION:用于指定列的IDENTITY屬性,在把從其他表中復(fù)制的數(shù)據(jù)插入到表中時(shí)不發(fā)生作用,即不生成列值,使得復(fù)制的數(shù)據(jù)行保持原來(lái)的列值。 ROWGUIDCOL:用于將列指定為全局惟一標(biāo)識(shí)行號(hào)列(row global unique identifier column)。 COLLATE:用于指定表的校驗(yàn)方式。 column_constraint和table_constr
10、aint:用于指定列約束和表約束。,8.1.1 創(chuàng)建表,2. 利用create命令創(chuàng)建表 例5-3創(chuàng)建了一個(gè)工人信息表,它包括員工編號(hào)、姓名、性別、出生日期、職位、工資和備注信息。 SQL語(yǔ)句的程序清單如下: CREATE TABLE worker (number char(8) not null, name char(8) NOT NULL, sex char(2) NULL, birthday datetime null, job_title varchar(10) null, salary money null, memo ntext null ),8.1.2 創(chuàng)建約束,約束是SQL S
11、erver提供的自動(dòng)保持?jǐn)?shù)據(jù)庫(kù)完整性的一種方法,它通過(guò)限制字段中數(shù)據(jù)、記錄中數(shù)據(jù)和表之間的數(shù)據(jù)來(lái)保證數(shù)據(jù)的完整性。在SQL SERVER中,對(duì)于基本表的約束分為列約束和表約束。 列約束是對(duì)某一個(gè)特定列的約束,包含在列定義中,直接跟在該列的其他定義之后,用空格分隔,不必指定列名;表約束與列定義相互獨(dú)立,不包括在列定義中,通常用于對(duì)多個(gè)列一起進(jìn)行約束,與列定義用,分隔,定義表約束時(shí)必須指出要約束的那些列的名稱。 完整性約束的基本語(yǔ)法格式為: CONSTRAINT constraint_name(約束名) 約束不指定名稱時(shí),系統(tǒng)會(huì)給定一個(gè)名稱。 在SQL Server 2005中有6種約束:主鍵約束
12、(primary key constraint)、惟一性約束(unique constraint)、檢查約束(check constraint)、默認(rèn)約束(default constraint)、外部鍵約束(foreign key constraint)和空值(NULL)約束。,8.1.2 創(chuàng)建約束,主鍵(PRIMARY KEY)約束 PRIMARY KEY約束用于定義基本表的主鍵,它是惟一確定表中每一條記錄的標(biāo)識(shí)符,其值不能為NULL,也不能重復(fù),以此來(lái)保證實(shí)體的完整性。PRIMARY KEY與UNIQUE約束類(lèi)似,通過(guò)建立唯一索引來(lái)保證基本表在主鍵列取值的唯一性,但它們之間存在著很大的區(qū)別
13、: 在一個(gè)基本表中只能定義一個(gè)PRIMARY KEY約束,但可定義多個(gè)UNIQUE約束; 對(duì)于指定為PRIMARY KEY的一個(gè)列或多個(gè)列的組合,其中任何一個(gè)列都不能出現(xiàn)空值,而對(duì)于UNIQUE所約束的唯一鍵,則允許為空。 注意:不能為同一個(gè)列或一組列既定義UNIQUE約束,又定義PRIMARY KEY約束。 PRIMARY KEY既可用于列約束,也可用于表約束。,8.1.2 創(chuàng)建約束,主鍵(PRIMARY KEY)約束 主鍵的創(chuàng)建操作方法有兩種:SQL Server管理平臺(tái)操作法和Transact-SQL語(yǔ)句操作法。 (1) SQL Server管理平臺(tái)操作法,如圖5-7所示。,圖5-7 選
14、擇多個(gè)字段共同做為主鍵對(duì)話框,8.1.2 創(chuàng)建約束,主鍵(PRIMARY KEY)約束 (2)使用Transact-SQL語(yǔ)句操作法設(shè)置主鍵約束,其語(yǔ)法形式如下: CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED (column_name) PRIMARY KEY用于定義表約束時(shí),即將某些列的組合定義為主鍵,其語(yǔ)法格式如下: CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED (column_name,n),8.1.2 創(chuàng)建約束,主鍵(PRIMARY
15、 KEY)約束 例5-5 建立一個(gè)SC表,定義SNO,CNO共同組成SC的主鍵 程序清單如下: CREATE TABLE SC (SNO CHAR(5) NOT NULL, CNO CHAR(5) NOT NULL, SCORE NUMERIC(3), CONSTRAINT SC_PRIM PRIMARY KEY(SNO,CNO),8.1.2 創(chuàng)建約束,2. 惟一性約束 惟一性約束用于指定一個(gè)或者多個(gè)列的組合值具有惟一性,以防止在列中輸入重復(fù)的值。定義了UNIQUE約束的那些列稱為唯一鍵,系統(tǒng)自動(dòng)為唯一鍵建立唯一索引,從而保證了唯一鍵的唯一性。 當(dāng)使用惟一性約束時(shí),需要考慮以下幾個(gè)因素: 使用
16、惟一性約束的字段允許為空值; 一個(gè)表中可以允許有多個(gè)惟一性約束; 可以把惟一性約束定義在多個(gè)字段上; 惟一性約束用于強(qiáng)制在指定字段上創(chuàng)建一個(gè)惟一性索引; 默認(rèn)情況下,創(chuàng)建的索引類(lèi)型為非聚集索引。,8.1.2 創(chuàng)建約束,2. 惟一性約束 創(chuàng)建惟一性約束的方法有兩種:通過(guò)SQL Server管理平臺(tái)可以完成創(chuàng)建和修改惟一性約束的操作;使用Transact-SQL語(yǔ)句完成惟一性約束的操作。 (1)通過(guò)SQL Server管理平臺(tái)可以完成創(chuàng)建和修改惟一性約束的操作,如圖5-8所示。,圖5-8 創(chuàng)建惟一性約束對(duì)話框,8.1.2 創(chuàng)建約束,2. 惟一性約束 (2)使用Transact-SQL語(yǔ)句完成惟一性
17、約束的操作,其語(yǔ)法形式如下: CONSTRAINT constraint_name UNIQUE CLUSTERED|NONCLUSTERED (column_name,n) 例5-6創(chuàng)建一個(gè)學(xué)生信息表,其中name字段具有惟一性。 程序清單如下: Create table student( id char(8), name char(10), sex char(2), constraint pk_id primary key(id), constraint uk_identity unique(name) ),8.1.2 創(chuàng)建約束,3. 檢查約束 檢查約束對(duì)輸入列或者整個(gè)表中的值設(shè)置檢查條件
18、,以限制輸入值,保證數(shù)據(jù)庫(kù)數(shù)據(jù)的完整性。 當(dāng)使用檢查約束時(shí),應(yīng)該考慮和注意以下幾點(diǎn): 一個(gè)列級(jí)檢查約束只能與限制的字段有關(guān);一個(gè)表級(jí)檢查約束只能與限制的表中字段有關(guān); 一個(gè)表中可以定義多個(gè)檢查約束; 每個(gè)CREATE TABLE語(yǔ)句中每個(gè)字段只能定義一個(gè)檢查約束; 在多個(gè)字段上定義檢查約束,則必須將檢查約束定義為表級(jí)約束; 當(dāng)執(zhí)行INSERT語(yǔ)句或者UPDATE語(yǔ)句時(shí),檢查約束將驗(yàn)證數(shù)據(jù); 檢查約束中不能包含子查詢。,8.1.2 創(chuàng)建約束,3. 檢查約束 創(chuàng)建檢查約束常用的操作方法有如下兩種 :使用SQL Server管理平臺(tái)創(chuàng)建檢查約束;用Transact-SQL語(yǔ)句創(chuàng)建檢查約束。 (1)使
19、用SQL Server管理平臺(tái)創(chuàng)建檢查約束,如圖5-9所示。,圖5-9 創(chuàng)建檢查約束對(duì)話框,8.1.2 創(chuàng)建約束,3. 檢查約束 (2)用Transact-SQL語(yǔ)句創(chuàng)建檢查約束。 用Transact-SQL語(yǔ)句創(chuàng)建檢查約束。其語(yǔ)法形式如下: CONSTRAINT constraint_name CHECK NOT FOR REPLICATION (logical_expression) 例5-8 建立一個(gè)SC表,定義SCORE 的取值范圍為0到100之間。 程序清單如下: CREATE TABLE SC (SNO CHAR(5), CNO CHAR(5), SCORE NUMERIC(5,1
20、) CONSTRAINT SCORE_CHK CHECK(SCORE=0 AND SCORE =100),8.1.2 創(chuàng)建約束,4. 默認(rèn)(DEFAULT)約束 默認(rèn)約束指定在插入操作中如果沒(méi)有提供輸入值時(shí),則系統(tǒng)自動(dòng)指定值。默認(rèn)約束可以包括常量、函數(shù)、不帶變?cè)膬?nèi)建函數(shù)或者空值。 使用默認(rèn)約束時(shí),應(yīng)該注意以下幾點(diǎn): (1)每個(gè)字段只能定義一個(gè)默認(rèn)約束; (2)如果定義的默認(rèn)值長(zhǎng)于其對(duì)應(yīng)字段的允許長(zhǎng)度,那么輸入到表中的默認(rèn)值將被截?cái)啵?(3)不能加入到帶有IDENTITY屬性或者數(shù)據(jù)類(lèi)型為timestamp的字段上; (4)如果字段定義為用戶定義的數(shù)據(jù)類(lèi)型,而且有一個(gè)默認(rèn)綁定到這個(gè)數(shù)據(jù)類(lèi)型上,
21、則不允許該字段有默認(rèn)約束。,8.1.2 創(chuàng)建約束,4. 默認(rèn)(DEFAULT)約束 創(chuàng)建默認(rèn)約束常用的操作方法有如下兩種:使用SQL Server管理平臺(tái)創(chuàng)建默認(rèn)約束;創(chuàng)建默認(rèn)約束的Transact-SQL語(yǔ)句操作法。 (1)使用SQL Server管理平臺(tái)創(chuàng)建默認(rèn)約束,如圖5-10所示。,圖5-10 創(chuàng)建默認(rèn)約束對(duì)話框,8.1.2 創(chuàng)建約束,4. 默認(rèn)(DEFAULT)約束 (2)創(chuàng)建默認(rèn)約束的Transact-SQL語(yǔ)句操作法。其語(yǔ)法形式如下: CONSTRAINT constraint_name DEFAULT constraint_expression FOR column_name
22、例5-10為 dept字段創(chuàng)建默認(rèn)約束。 程序清單如下: constraint con_dept default 計(jì)算機(jī) for dept,8.1.2 創(chuàng)建約束,8. 外部鍵約束 外鍵 (FOREIGN KEY) 是用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接的一列或多列。外部鍵約束用于強(qiáng)制參照完整性。 當(dāng)使用外部鍵約束時(shí),應(yīng)該考慮以下幾個(gè)因素: 外部鍵約束提供了字段參照完整性; 外部鍵從句中的字段數(shù)目和每個(gè)字段指定的數(shù)據(jù)類(lèi)型都必須和REFERENCES從句中的字段相匹配; 外部鍵約束不能自動(dòng)創(chuàng)建索引,需要用戶手動(dòng)創(chuàng)建; 用戶想要修改外部鍵約束的數(shù)據(jù),必須有對(duì)外部鍵約束所參考表的SELECT權(quán)限或者RE
23、FERENCES權(quán)限; 參考同一表中的字段時(shí),必須只使用REFERENCES子句,不能使用外部鍵子句; 一個(gè)表中最多可以有31個(gè)外部鍵約束; 在臨時(shí)表中,不能使用外部鍵約束; 主鍵和外部鍵的數(shù)據(jù)類(lèi)型必須嚴(yán)格匹配,8.1.2 創(chuàng)建約束,8. 外部鍵約束 創(chuàng)建外部鍵約束常用的操作方法有如下兩種:在SQL Server管理平臺(tái)中添加外部鍵約束;使用Transact-SQL語(yǔ)句設(shè)置外部鍵約束。 (1)在SQL Server管理平臺(tái)中添加外部鍵約束,在SQL Server管理平臺(tái)中添加外部鍵約束。如圖5-11,5-12所示。,圖5-11 選擇創(chuàng)建外鍵約束的字段,圖5-12 創(chuàng)建外鍵約束對(duì)話框,8.1.2
24、 創(chuàng)建約束,8. 外部鍵約束 (2)使用Transact-SQL語(yǔ)句設(shè)置外部鍵約束 ,其語(yǔ)法形式如下: CONSTRAINT constraint_name FOREIGN KEY (column_name,n) REFERENCES ref_table (ref_column,n) 例5-11 建立一個(gè)SC表,定義SNO,CNO為SC的外部鍵。 程序清單如下: CREATE TABLE SC (SNO CHAR(5) NOT NULL CONSTRAINT S_FORE FOREIGN KEY REFERENCES S(SNO), CNO CHAR(5) NOT NULL CONSTRAIN
25、T C_FORE FOREIGN KEY REFERENCES C(CNO), SCORE NUMERIC(3), CONSTRAINT S_C_PRIM PRIMARY KEY (SNO,CNO),8.1.2 創(chuàng)建約束,6. 空值(NULL)約束 空值(NULL)約束用來(lái)控制是否允許該字段的值為NULL。NULL值不是0也不是空白,更不是填入字符串的“NULL”字符串,而是表示“不知道”、“ 不確定”或“沒(méi)有數(shù)據(jù)”的意思。 當(dāng)某一字段的值一定要輸入才有意義的時(shí)候,則可以設(shè)置為NOT NULL。如主鍵列就不允許出現(xiàn)空值,否則就失去了唯一標(biāo)識(shí)一條記錄的作用。空值(NULL)約束只能用于定義列約束
26、。 創(chuàng)建空值(NULL)約束常用的操作方法有如下兩種: (1)在SQL Server管理平臺(tái)中添加空值(NULL)約束; (2)使用Transact-SQL語(yǔ)句設(shè)置空值(NULL)約束。,8.1.2 創(chuàng)建約束,6. 空值(NULL)約束 (1)在SQL Server管理平臺(tái)中添加空值(NULL)約束。如圖5-14所示。,圖5-14設(shè)置空值(NULL)約束對(duì)話框,8.1.2 創(chuàng)建約束,6. 空值(NULL)約束 (2)使用Transact-SQL語(yǔ)句設(shè)置空值(NULL)約束, 其語(yǔ)法形式如下: CONSTRAINT NULL|NOT NULL 例5-13 建立一個(gè)S表,對(duì)SNO字段進(jìn)行NOT N
27、ULL約束。 程序清單如下: CREATE TABLE S (SNO CHAR(10) CONSTRAINT S_CONS NOT NULL, SN VARCHAR(20), AGE INT, SEX CHAR(2) DEFAULT 男 , DEPT VARCHAR(20),8.1.3 修改表,當(dāng)數(shù)據(jù)庫(kù)中的表創(chuàng)建完成后,可以根據(jù)需要改變表中原先定義的許多選項(xiàng),以更改表的結(jié)構(gòu)。用戶可以增加、刪除和修改列,增加、刪除和修改約束,更改表名以及改變表的所有者等。 1、修改列屬性 修改列屬性包括以下一些內(nèi)容: (1)修改列的數(shù)據(jù)類(lèi)型; (2)修改列的數(shù)據(jù)長(zhǎng)度; (3)修改列的精度; (4)修改列的小數(shù)位
28、數(shù); (5)修改列的為空性。,8.1.3 修改表,2、添加和刪除列 add column and delete column 在SQL Server 2005中,如果列允許空值或?qū)α袆?chuàng)建 DEFAULT 約束,則可以將列添加到現(xiàn)有表中。將新列添加到表時(shí),SQL Server 2005數(shù)據(jù)庫(kù)引擎在該列為表中的每個(gè)現(xiàn)有數(shù)據(jù)行插入一個(gè)值。因此,在向表中添加列時(shí)向列添加DEFAULT定義會(huì)很有用。如果新列沒(méi)有 DEFAULT定義,則必須指定該列允許空值。數(shù)據(jù)庫(kù)引擎將空值插入該列,如果新列不允許空值,則返回錯(cuò)誤。 反之,可以刪除現(xiàn)有表中的列,但具有下列特征的列不能被刪除: (1)用于索引; (2)用于C
29、HECK、FOREIGN KEY、UNIQUE 或PRIMARY KEY約束; (3)與DEFAULT 定義關(guān)聯(lián)或綁定到某一默認(rèn)對(duì)象; (4)綁定到規(guī)則; (5)已注冊(cè)支持全文; (6)用作表的全文鍵。,8.1.3 修改表,3、增加、修改和刪除約束 (1)增加、修改和刪除PRIMARY KEY 約束。 (2)增加、修改和刪除UNIQUE約束。 (3)增加、修改和刪除CHECK約束。 (4)增加、修改和刪除DEFAULT約束。 (5)增加、修改和刪除FOREIGN KEY約束。 (6)增加和修改標(biāo)識(shí)符列。只能為每個(gè)表創(chuàng)建一個(gè)標(biāo)識(shí)符列和一個(gè) GUID 列。,8.1.3 修改表,例 5-14創(chuàng)建一個(gè)
30、雇員信息表,然后在表中增加一個(gè)salary字段,刪除表中的age字段,并且修改memo字段的數(shù)據(jù)類(lèi)型。 SQL語(yǔ)句的程序清單如下: create table employees( id char(8) primary key, name char(20) not null, department char(20) null, memo char(30) null, age int null, ) alter table employees add salary int null, drop column age, alter column memo varchar(200) null,8.1.
31、3 修改表,例 5-15 在S表中增加一個(gè)班號(hào)列和住址列。 SQL語(yǔ)句的程序清單如下: ALTER TABLE S ADD CLASS_NO CHAR(6), ADDRESS CHAR(40) 注意:使用此方式增加的新列自動(dòng)填充N(xiāo)ULL值,所以不能為增加的新列指定NOT NULL約束。 例5-16 在SC表中增加完整性約束定義,使SCORE在0-100之間。 SQL語(yǔ)句的程序清單如下: ALTER TABLE SC ADD CONSTRAINT SCORE_CHK CHECK(SCORE BETWEEN 0 AND 100),8.1.4 查看表,當(dāng)在數(shù)據(jù)庫(kù)中創(chuàng)建了表后,有時(shí)需要查看表的有關(guān)信息
32、。比如表的屬性、定義、數(shù)據(jù)、字段屬性和索引等。尤其重要的是查看表內(nèi)存放的數(shù)據(jù),另外有時(shí)需要查看表與其他數(shù)據(jù)庫(kù)對(duì)象之間的依賴關(guān)系。 1. 查看表的定義 ,如圖5-15,5-16所示。,圖5-15 選擇表格屬性對(duì)話框,圖5-16 表格屬性對(duì)話框,8.1.4 查看表,2. 查看表中存儲(chǔ)的數(shù)據(jù),如圖5-17,5-18所示。,圖5-17 選擇打開(kāi)表對(duì)話框,圖5-18 顯示表格數(shù)據(jù)對(duì)話框,8.1.4 查看表,3. 查看表與其他數(shù)據(jù)庫(kù)對(duì)象的依賴關(guān)系,independent relation,如圖5-19所示。,圖5-19 顯示相關(guān)性對(duì)話框,8.1.4 查看表,4. 利用系統(tǒng)存儲(chǔ)過(guò)程查看表的信息 系統(tǒng)存儲(chǔ)過(guò)程
33、Sp_help可以提供指定數(shù)據(jù)庫(kù)對(duì)象的信息,也可以提供系統(tǒng)或者用戶定義的數(shù)據(jù)類(lèi)型的信息,其語(yǔ)法形式如下: sp_help objname=name 例5-17(1)顯示當(dāng)前數(shù)據(jù)庫(kù)中所有對(duì)象的信息;(2)顯示表Person.Contact 的信息。在SQL Server管理平臺(tái)的查詢窗口中,它們對(duì)應(yīng)的語(yǔ)句和運(yùn)行結(jié)果如圖5-20和圖5-21所示,圖5-20所有數(shù)據(jù)庫(kù)對(duì)象顯示窗口,圖5-21當(dāng)前數(shù)據(jù)庫(kù)對(duì)象顯示窗口,8.1.5 刪除表,1. 利用管理平臺(tái)刪除表 在SQL Server管理平臺(tái)中,展開(kāi)指定的數(shù)據(jù)庫(kù)和表,右擊要?jiǎng)h除的表,從彈出的快捷菜單中選擇“刪除”選項(xiàng),則出現(xiàn)除去對(duì)象對(duì)話框,如圖5-25
34、所示。,圖5-25 刪除表對(duì)話框,8.1.5 刪除表,2. 利用DROP TABLE語(yǔ)句刪除表 DROP TABLE語(yǔ)句可以刪除一個(gè)表和表中的數(shù)據(jù)及其與表有關(guān)的所有索引、觸發(fā)器、約束、許可對(duì)象。 DROP TABLE語(yǔ)句的語(yǔ)法形式如下: DROP TABLE table_name 要?jiǎng)h除的表如果不在當(dāng)前數(shù)據(jù)庫(kù)中,則應(yīng)在table_name中指明其所屬的數(shù)據(jù)庫(kù)和用戶名。在刪除一個(gè)表之前要先刪除與此表相關(guān)聯(lián)的表中的外部關(guān)鍵字約束。當(dāng)刪除表后,綁定的規(guī)則或者默認(rèn)值會(huì)自動(dòng)松綁。 例5-18刪除company數(shù)據(jù)庫(kù)中的表employee。 程序如下: drop table company.dbo.emp
35、loyee,8.2 索引操作,索引是數(shù)據(jù)庫(kù)隨機(jī)檢索的常用手段,它實(shí)際上就是記錄的關(guān)鍵字與其相應(yīng)地址的對(duì)應(yīng)表。通過(guò)索引可大大提高查詢速度。此外,在SQL SERVER中,行的唯一性也是通過(guò)建立唯一索引來(lái)維護(hù)的。 使用索引可以大大提高系統(tǒng)的性能,其具體表現(xiàn)在: (1)通過(guò)創(chuàng)建惟一索引,可以保證數(shù)據(jù)記錄的惟一性。 (2)可以大大加快數(shù)據(jù)檢索速度。 (3)可以加速表與表之間的連接,這一點(diǎn)在實(shí)現(xiàn)數(shù)據(jù)的參照完整性方面有特別的意義。 (4)在使用ORDER BY和GROUP BY子句進(jìn)行檢索數(shù)據(jù)時(shí),可以顯著減少查詢中分組和排序的時(shí)間。 (5)使用索引可以在檢索數(shù)據(jù)的過(guò)程中使用優(yōu)化隱藏器,提高系統(tǒng)性能,8.2
36、.1 創(chuàng)建索引,SQL Server 2005提供了如下幾種創(chuàng)建索引的方法: 1. 利用SQL Server管理平臺(tái)創(chuàng)建索引; 2. 利用Transact-SQL語(yǔ)句中的CREATE INDEX命令創(chuàng)建索引。 另外,可以在創(chuàng)建表的PRIMARY KEY或UNIQUE約束時(shí)自動(dòng)創(chuàng)建索引。,8.2.1 創(chuàng)建索引,1.利用SQL Server管理平臺(tái)創(chuàng)建索引。 (1)展開(kāi)指定的服務(wù)器和數(shù)據(jù)庫(kù),選擇要?jiǎng)?chuàng)建索引的表,展開(kāi)該表,選擇“索引”選項(xiàng)(如圖5-26所示),右鍵單擊索引,從彈出的快捷菜單中選擇“新建索引”,就會(huì)出現(xiàn)新建索引對(duì)話框,如圖5-27所示。,圖5-26 選擇新建索引選項(xiàng)對(duì)話框,圖5-27
37、創(chuàng)建索引對(duì)話框,8.2.1 創(chuàng)建索引,1.利用SQL Server管理平臺(tái)創(chuàng)建索引。 (2)點(diǎn)擊“添加”按鈕,可選擇用于創(chuàng)建索引的字段,如圖5-28所示。 (3)打開(kāi)創(chuàng)建索引對(duì)話框的選項(xiàng)頁(yè)框,在此還可以設(shè)定索引的屬性,如圖5-29所示。,圖5-28 選擇用于創(chuàng)建索引的字段,圖5-29 索引對(duì)話框的選項(xiàng)頁(yè)框,8.2.1 創(chuàng)建索引,2.利用Transact-SQL語(yǔ)句中的CREATE INDEX命令創(chuàng)建索引 CREATE INDEX命令既可以創(chuàng)建一個(gè)可改變表的物理順序的聚集索引,也可以創(chuàng)建提高查詢性能的非聚集索引,其語(yǔ)法形式如下: CREATE UNIQUE CLUSTERED | NONCLUS
38、TERED INDEX index_name ON table | view ( column ASC | DESC ,.n ) with PAD_INDEX ,FILLFACTOR=fillfactor ,IGNORE_DUP_KEY ,DROP_EXISTING ,STATISTICS_NORECOMPUTE ,SORT_IN_TEMPDB ON filegroup ,8.2.1 創(chuàng)建索引,2.利用Transact-SQL語(yǔ)句中的CREATE INDEX命令創(chuàng)建索引 例5-19為表employees創(chuàng)建了一個(gè)惟一聚集索引。 程序清單如下: CREATE UNIQUE CLUSTERED I
39、NDEX number_ind ON employees (number) with pad_index, fillfactor=20, ignore_dup_key, drop_existing, statistics_norecompute,8.2.2 查看、修改和刪除索引,利用SQL Server管理平臺(tái)查看、修改和刪除索引。 (1)在SQL Server管理平臺(tái)中,展開(kāi)指定的服務(wù)器和數(shù)據(jù)庫(kù)項(xiàng),并展開(kāi)要查看的表,從選項(xiàng)中選擇“索引”選項(xiàng),則會(huì)出現(xiàn)表中已存在的索引列表。雙擊某一索引名稱,則出現(xiàn)索引屬性對(duì)話框,如圖5-30所示。索引碎片管理頁(yè)框如圖5-31所示。,圖5-30 索引屬性對(duì)話框,
40、圖5-31 索引碎片數(shù)據(jù)管理對(duì)話框,8.2.2 查看、修改和刪除索引,1.利用SQL Server管理平臺(tái)查看、修改和刪除索引。 (2)擴(kuò)展屬性對(duì)話框,如圖5-32所示,主要包含數(shù)據(jù)庫(kù)名稱,校對(duì)模式等。 通過(guò)右鍵單擊索引名稱,選擇“創(chuàng)建索引腳本到新的查詢分析器窗口”,則可以查看創(chuàng)建索引的SQL腳本語(yǔ)句,如圖5-33所示。,圖5-32 索引擴(kuò)展屬性對(duì)話框,圖5-33 索引的SQL腳本對(duì)話框,8.2.2 查看、修改和刪除索引,2. 用系統(tǒng)存儲(chǔ)過(guò)程查看和更改索引名稱 系統(tǒng)存儲(chǔ)過(guò)程sp_helpindex可以返回表的所有索引信息,其語(yǔ)法形式如下; sp_helpindex objname=name 其
41、中,objname=name參數(shù)用于指定當(dāng)前數(shù)據(jù)庫(kù)中的表的名稱。 另外,系統(tǒng)存儲(chǔ)過(guò)程sp_rename可以用來(lái)更改索引的名稱,其語(yǔ)法形式如下: sp_renameobjname=object_name, newname=new_name , objtype = object_type ,8.2.2 查看、修改和刪除索引,2. 用系統(tǒng)存儲(chǔ)過(guò)程查看和更改索引名稱 例5-21 使用系統(tǒng)存儲(chǔ)過(guò)程sp_helpindex 來(lái)查看表authors的索引信息。 運(yùn)行結(jié)果如下圖所示。,例5-22 將employees表中的索引名稱employees_name_index名稱更改為employees _name
42、_ind。 程序清單如下: exec sp_rename employees.employees_name_index, employees_name_ ind, index,8.2.2 查看、修改和刪除索引,3.使用Transact-SQL語(yǔ)句中的DROP INDEX命令刪除索引 當(dāng)不再需要某個(gè)索引時(shí),可以將其刪除,DROP INDEX命令可以刪除一個(gè)或者多個(gè)當(dāng)前數(shù)據(jù)庫(kù)中的索引,其語(yǔ)法形式如下: DROP INDEX table.index | view.index ,.n 其中,table | view用于指定索引列所在的表或索引視圖;index用于指定要?jiǎng)h除的索引名稱。 例5-23刪除表
43、employees中的索引employees_name_index。 程序清單如下: drop index employees.employees_name_index,8.2數(shù)據(jù)庫(kù)對(duì)象腳本,數(shù)據(jù)庫(kù)是由許多數(shù)據(jù)庫(kù)對(duì)象構(gòu)成的,如常用的表、視圖、存儲(chǔ)過(guò)程等。通常在設(shè)計(jì)這些數(shù)據(jù)庫(kù)對(duì)象時(shí),一般采用“SQL Server Management Studio”實(shí)現(xiàn)。相反,可以通過(guò)“SQL Server Management Studio”功能,將這些對(duì)象生成便于處理的文本格式的SQL腳本(SQL Script)。 通過(guò)編寫(xiě)或修改這些腳本文件,可以在“SQL編輯器”上運(yùn)行這些腳本,從而可以在服務(wù)器上重新創(chuàng)建
44、這些對(duì)象,并可以在其他服務(wù)器上運(yùn)行這些腳本,從而實(shí)現(xiàn)數(shù)據(jù)庫(kù)對(duì)象的移植,這對(duì)于數(shù)據(jù)庫(kù)開(kāi)發(fā)和維護(hù)階段是非常方便實(shí)用的。,8.2.1生成SQL Script的步驟如下,(1)打開(kāi)“SQL Server Management Studio”中的“對(duì)象資源管理器”,選擇服務(wù)器,并展開(kāi)數(shù)據(jù)庫(kù)對(duì)象夾,然后選擇要生成SQL Script的數(shù)據(jù)庫(kù),如AdventureWorks,單擊右鍵,在彈出的菜單中,選擇【任務(wù)(T)】|【生成腳本(E)】,如圖3-14所示。,(2)在接下來(lái)的“腳本向?qū)А贝翱谥?,選擇要生成腳本的數(shù)據(jù)庫(kù),如圖3-15所示,如果沒(méi)有選擇“為所選數(shù)據(jù)庫(kù)中的所有對(duì)象編寫(xiě)腳本”選項(xiàng),則會(huì)在后面的窗口中
45、,對(duì)每個(gè)需要生成腳本的子對(duì)象選擇是否生成腳本,這里選中“為所選數(shù)據(jù)庫(kù)中的所有對(duì)象編寫(xiě)腳本”,然后選擇【下一步(N)】。,(3)在彈出的“選擇腳本選項(xiàng)”窗口中,可以更改需要生成腳本的對(duì)象項(xiàng)目,如圖3-16所示,然后選擇【下一步(N)】。,(4)在“輸出選項(xiàng)”窗口中,輸入要保存數(shù)據(jù)庫(kù)腳本的路徑和文件名,并選擇保存文件的代碼格式,然后選擇【下一步(N)】或【完成(F)】。 (5)在“腳本向?qū)д贝翱谥校梢哉归_(kāi)瀏覽各個(gè)對(duì)象和子對(duì)象,然后選擇【完成(F)】,彈出“生成腳本速度”窗口,動(dòng)態(tài)顯示各子對(duì)象生成腳本的狀態(tài)。,8.2.2用腳本重建數(shù)據(jù)庫(kù)對(duì)象,生成的腳本文件可以通過(guò)“SQL編輯器”打開(kāi),并可以修
46、改和運(yùn)行該腳本內(nèi)容。,8.3 數(shù)據(jù)類(lèi)型 data type,在SQL Server2005 中,每個(gè)列、局部變量、表達(dá)式和參數(shù)都有其各自的數(shù)據(jù)類(lèi)型。指定對(duì)象的數(shù)據(jù)類(lèi)型相當(dāng)于定義了該對(duì)象的四個(gè)特性: (1)對(duì)象所含的數(shù)據(jù)類(lèi)型,如字符、整數(shù)或二進(jìn)制數(shù)。 (2)所存儲(chǔ)值的長(zhǎng)度或它的大小。 (3)數(shù)字精度(僅用于數(shù)字?jǐn)?shù)據(jù)類(lèi)型)。 (4)小數(shù)位數(shù)(僅用于數(shù)字?jǐn)?shù)據(jù)類(lèi)型)。 SQL Server提供系統(tǒng)數(shù)據(jù)類(lèi)型集,定義了可與SQL Server一起使用的所有數(shù)據(jù)類(lèi)型;另外用戶還可以使用Transact-SQL或.NET框架定義自己的數(shù)據(jù)類(lèi)型,它是系統(tǒng)提供的數(shù)據(jù)類(lèi)型的別名。每個(gè)表可以定義至多250個(gè)字段,除文
47、本和圖像數(shù)據(jù)類(lèi)型外,每個(gè)記錄的最大長(zhǎng)度限制為1962個(gè)字節(jié)。,8.3.1 系統(tǒng)數(shù)據(jù)類(lèi)型,1、精確數(shù)字類(lèi)型; 2、近似數(shù)字類(lèi)型; 3、日期和時(shí)間類(lèi)型; 4、字符數(shù)據(jù)類(lèi)型; 5、Unicode 字符數(shù)據(jù)類(lèi)型; 6、二進(jìn)制字符數(shù)據(jù)類(lèi)型; 7、其它數(shù)據(jù)類(lèi)型。,8.3.1 系統(tǒng)數(shù)據(jù)類(lèi)型,1、精確數(shù)字類(lèi)型 (1)精確數(shù)字類(lèi)型包括: 整數(shù)類(lèi)型; Bit(位類(lèi)型); Decimal和Numeric(數(shù)值類(lèi)型); Money和SmallMoney(貨幣類(lèi)型)。,8.3.1 系統(tǒng)數(shù)據(jù)類(lèi)型,1、精確數(shù)字類(lèi)型 (2)整數(shù)類(lèi)型: 整數(shù)類(lèi)型是最常用的數(shù)據(jù)類(lèi)型之一,它主要用來(lái)存儲(chǔ)數(shù)值,可以直接進(jìn)行數(shù)據(jù)運(yùn)算,而不必使用函數(shù)轉(zhuǎn)
48、換。整數(shù)類(lèi)型包括以下四類(lèi): (1)Bigint:Bigint數(shù)據(jù)類(lèi)型可以存儲(chǔ)從 (-9223372036854775808) 到(9223372036854775807) 范圍之間的所有整型數(shù)據(jù)。每個(gè)Bigint數(shù)據(jù)類(lèi)型值存儲(chǔ)在8個(gè)字節(jié)中。 (2)Int(Integer):Int(或integer)數(shù)據(jù)類(lèi)型可以存儲(chǔ)從(-2147483648)到(2147483647)范圍之間的所有正負(fù)整數(shù)。每個(gè)Int數(shù)據(jù)類(lèi)型值存儲(chǔ)在4個(gè)字節(jié)中。 (3)Smallint:可以存儲(chǔ)從(-32768)到32767范圍之間的所有正負(fù)整數(shù)。每個(gè)smallint類(lèi)型的數(shù)據(jù)占用2個(gè)字節(jié)的存儲(chǔ)空間。 (4)Tinyint:可
49、以存儲(chǔ)從0255范圍之間的所有正整數(shù)。每個(gè)tinyint類(lèi)型的數(shù)據(jù)占用1個(gè)字節(jié)的存儲(chǔ)空間。,8.3.1 系統(tǒng)數(shù)據(jù)類(lèi)型,1、精確數(shù)字類(lèi)型 (3)位數(shù)據(jù)類(lèi)型 Bit稱為位數(shù)據(jù)類(lèi)型,其數(shù)據(jù)有兩種取值:0和1,長(zhǎng)度為1字節(jié)。在輸入0以外的其他值時(shí),系統(tǒng)均把它們當(dāng)1看待。這種數(shù)據(jù)類(lèi)型常作為邏輯變量使用,用來(lái)表示真、假或是、否等二值選擇。 (4)Decimal數(shù)據(jù)類(lèi)型和Numeric數(shù)據(jù)類(lèi)型 Decimal數(shù)據(jù)類(lèi)型和Numeric數(shù)據(jù)類(lèi)型完全相同,它們可以提供小數(shù)所需要的實(shí)際存儲(chǔ)空間,但也有一定的限制,可以用217個(gè)字節(jié)來(lái)存儲(chǔ)-1038+1到1038-1之間的固定精度和小數(shù)位的數(shù)字。也可以將其寫(xiě)為Deci
50、mal(p,s)的形式,p和s確定了精確的總位數(shù)和小數(shù)位。其中p表示可供存儲(chǔ)的值的總位數(shù),默認(rèn)設(shè)置為18;s表示小數(shù)點(diǎn)后的位數(shù),默認(rèn)設(shè)置為0。例如:decimal(10,5),表示共有10位數(shù),其中整數(shù)5位,小數(shù)5位。,8.3.1 系統(tǒng)數(shù)據(jù)類(lèi)型,1、精確數(shù)字類(lèi)型 pricise number type (5)貨幣數(shù)據(jù)類(lèi)型 貨幣數(shù)據(jù)類(lèi)型包括Money和SmallMoney兩種: (1)Money:用于存儲(chǔ)貨幣值,存儲(chǔ)在money數(shù)據(jù)類(lèi)型中的數(shù)值以一個(gè)正數(shù)部分和一個(gè)小數(shù)部分存儲(chǔ)在兩個(gè)4字節(jié)的整型值中,存儲(chǔ)范圍為(-9223372136854775808)到(9223372136854775807)
51、,精確到貨幣單位的千分之十。 (2)Smallmoney:與money數(shù)據(jù)類(lèi)型類(lèi)似,但范圍比money數(shù)據(jù)類(lèi)型小,其存儲(chǔ)范圍為-2147483468到2147483467之間,精確到貨幣單位的千分之十。 當(dāng)為money或smallmoney的表輸入數(shù)據(jù)時(shí),必須在有效位置前面加一個(gè)貨幣單位符號(hào)。,8.3.1 系統(tǒng)數(shù)據(jù)類(lèi)型,2、近似數(shù)字類(lèi)型 approximate number type 近似數(shù)字類(lèi)型包括Real和Float兩大類(lèi)。 (1)Real:可以存儲(chǔ)正的或者負(fù)的十進(jìn)制數(shù)值,最大可以有7位精確位數(shù)。它的存儲(chǔ)范圍從-3.40E-383.40E+38。每個(gè)Real 類(lèi)型的數(shù)據(jù)占用4個(gè)字節(jié)的存儲(chǔ)空
52、間。 (2)Float:可以精確到第15位小數(shù),其范圍從-1.79E-3081.79E+308。如果不指定Float 數(shù)據(jù)類(lèi)型的長(zhǎng)度,它占用8個(gè)字節(jié)的存儲(chǔ)空間。Float數(shù)據(jù)類(lèi)型也可以寫(xiě)為Float(n)的形式,n指定Float數(shù)據(jù)的精度,n為115之間的整數(shù)值。當(dāng)n取17時(shí),實(shí)際上是定義了一個(gè)Real 類(lèi)型的數(shù)據(jù),系統(tǒng)用4個(gè)字節(jié)存儲(chǔ)它;當(dāng)n取815時(shí),系統(tǒng)認(rèn)為其是Float類(lèi)型,用8個(gè)字節(jié)存儲(chǔ)它。,8.3.1 系統(tǒng)數(shù)據(jù)類(lèi)型,3. 日期和時(shí)間數(shù)據(jù)類(lèi)型 (1)Datetime:用于存儲(chǔ)日期和時(shí)間的結(jié)合體,它可以存儲(chǔ)從公元1753年1月1日零時(shí)起公元9999年12月31日23時(shí)59分59秒之間的所
53、有日期和時(shí)間,其精確度可達(dá)三百分之一秒,即3.33毫秒。Datetime數(shù)據(jù)類(lèi)型所占用的存儲(chǔ)空間為8個(gè)字節(jié),其中前4個(gè)字節(jié)用于存儲(chǔ)基于1900年1月1日之前或者之后日期數(shù),數(shù)值分正負(fù),負(fù)數(shù)存儲(chǔ)的數(shù)值代表在基數(shù)日期之前的日期,正數(shù)表示基數(shù)日期之后的日期,時(shí)間以子夜后的毫秒存儲(chǔ)在后面的4個(gè)字節(jié)中。當(dāng)存儲(chǔ)Datetime數(shù)據(jù)類(lèi)型時(shí),默認(rèn)的格式是MM DD YYYY hh:mm A.M./P.M,當(dāng)插入數(shù)據(jù)或者在其他地方使用Datetime類(lèi)型時(shí),需要用單引號(hào)把它括起來(lái)。默認(rèn)的時(shí)間日期是January 1,1900 12:00 A.M。可以接受的輸入格式如下:Jan 4 1999、JAN 4 1999
54、、January 4 1999、Jan 1999 4、1999 4 Jan和1999 Jan 4。 (2)Smalldatetime:與Datetime數(shù)據(jù)類(lèi)型類(lèi)似,但其日期時(shí)間范圍較小,它存儲(chǔ)從1900年1月1日2079年6月6日內(nèi)的日期。SmallDatetime數(shù)據(jù)類(lèi)型使用4個(gè)字節(jié)存儲(chǔ)數(shù)據(jù),SQL Server 2000用2個(gè)字節(jié)存儲(chǔ)日期1900年1月1日以后的天數(shù),時(shí)間以子夜后的分鐘數(shù)形式存儲(chǔ)在另外兩個(gè)字節(jié)中,SmallDatetime的精度為1分鐘。,8.3.1 系統(tǒng)數(shù)據(jù)類(lèi)型,4. 字符數(shù)據(jù)類(lèi)型 character type 字符數(shù)據(jù)類(lèi)型也是SQL Server中最常用的數(shù)據(jù)類(lèi)型之一
55、,它可以用來(lái)存儲(chǔ)各種字母、數(shù)字符號(hào)和特殊符號(hào)。在使用字符數(shù)據(jù)類(lèi)型時(shí),需要在其前后加上英文單引號(hào)或者雙引號(hào)。 (1)Char:其定義形式為Char(n),當(dāng)用Char數(shù)據(jù)類(lèi)型存儲(chǔ)數(shù)據(jù)時(shí),每個(gè)字符和符號(hào)占用一個(gè)字節(jié)的存儲(chǔ)空間。n表示所有字符所占的存儲(chǔ)空間,n的取值為18000。若不指定n值,系統(tǒng)默認(rèn)n的值為1。若輸入數(shù)據(jù)的字符串長(zhǎng)度小于n,則系統(tǒng)自動(dòng)在其后添加空格來(lái)填滿設(shè)定好的空間;若輸入的數(shù)據(jù)過(guò)長(zhǎng),將會(huì)截掉其超出部分。如果定義了一個(gè)Char數(shù)據(jù)類(lèi)型,而且允許該列為空,則該字段被當(dāng)作Varchar來(lái)處理。 (2)Varchar:其定義形式為Varchar(n)。用Char數(shù)據(jù)類(lèi)型可以存儲(chǔ)長(zhǎng)達(dá)255
56、個(gè)字符的可變長(zhǎng)度字符串,和Char類(lèi)型不同的是Varchar類(lèi)型的存儲(chǔ)空間是根據(jù)存儲(chǔ)在表的每一列值的字符數(shù)變化的。例如定義Varchar(20),則它對(duì)應(yīng)的字段最多可以存儲(chǔ)20個(gè)字符,但是在每一列的長(zhǎng)度達(dá)到20字節(jié)之前系統(tǒng)不會(huì)在其后添加空格來(lái)填滿設(shè)定好的空間,因此使用Varchar類(lèi)型可以節(jié)省空間。 (3)Text:用于存儲(chǔ)文本數(shù)據(jù),其容量理論上為1231-1(2,147,483,647)個(gè)字節(jié),但實(shí)際應(yīng)用時(shí)要根據(jù)硬盤(pán)的存儲(chǔ)空間而定。,8.3.1 系統(tǒng)數(shù)據(jù)類(lèi)型,8. Unicode 字符數(shù)據(jù)類(lèi)型 Unicode 字符數(shù)據(jù)類(lèi)型包括Nchar、Nvarchar、Ntext三種: (1)Nchar:其定義形式為Nchar(n)。它與Char數(shù)據(jù)類(lèi)型類(lèi)似,不同的是Nchar數(shù)據(jù)類(lèi)型n的取值為14000。Nchar數(shù)據(jù)類(lèi)型采用Unicode標(biāo)準(zhǔn)字符集,Unicode標(biāo)準(zhǔn)用兩個(gè)字節(jié)為一個(gè)存儲(chǔ)單位,其一個(gè)存儲(chǔ)單位的容納量就大大增加了,可以將全世界的語(yǔ)言文字都囊括在內(nèi),在一個(gè)數(shù)據(jù)列中就可以同時(shí)出現(xiàn)中文、英文、法文等,而不會(huì)出現(xiàn)編碼沖突。 (2)Nvarchar:其定義形式Nvarchar(n)。它與Varchchar數(shù)據(jù)類(lèi)型相似,Nvarchar數(shù)據(jù)類(lèi)型也采用Unicode標(biāo)準(zhǔn)字符集,n的取值范圍為14000。 (3)Ntext:與Text數(shù)據(jù)類(lèi)型類(lèi)似,存儲(chǔ)在其中的數(shù)據(jù)通常是直接能輸出到顯
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年自貢通航機(jī)場(chǎng)發(fā)展有限公司關(guān)于公開(kāi)招聘部分工作人員的備考題庫(kù)參考答案詳解
- 2026年鄭州市金水區(qū)第十七幼兒園招聘?jìng)淇碱}庫(kù)及完整答案詳解一套
- 2026年陜西空天絲路文化運(yùn)營(yíng)管理有限責(zé)任公司社會(huì)招聘?jìng)淇碱}庫(kù)及完整答案詳解1套
- 2026年越秀區(qū)兒童福利會(huì)招聘工作人員備考題庫(kù)有答案詳解
- 2026新疆紅星電力有限公司招聘2人筆試模擬試題及答案解析
- 中國(guó)21世紀(jì)議程管理中心2026年度面向社會(huì)公開(kāi)招聘工作人員的備考題庫(kù)有答案詳解
- 2026年贛南衛(wèi)生健康職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試備考試題帶答案解析
- 中國(guó)電建集團(tuán)及所屬企業(yè)2026屆校園招聘?jìng)淇碱}庫(kù)及答案詳解一套
- 2026年石家莊城市經(jīng)濟(jì)職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)筆試參考題庫(kù)附答案詳解
- 2026年深圳市羅湖區(qū)金湖幼兒園招聘?jìng)淇碱}庫(kù)(短期教師)完整答案詳解
- 2025年電子工程師年度工作總結(jié)
- 2026年吉林司法警官職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能筆試備考題庫(kù)帶答案解析
- 2025年高職第三學(xué)年(工程造價(jià))工程結(jié)算與審計(jì)測(cè)試題及答案
- 醫(yī)院消毒技術(shù)培訓(xùn)課件
- 2026年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識(shí)考試題庫(kù)500道及完整答案(各地真題)
- 2026年電信運(yùn)營(yíng)商物資管理崗位面試題
- 2025年高職會(huì)計(jì)(成本核算)試題及答案
- 蟲(chóng)鼠害培訓(xùn)課件
- 江蘇省電影集團(tuán)招聘筆試題庫(kù)2026
- 2025學(xué)年上海市七年級(jí)語(yǔ)文上冊(cè)作文題目匯編及解析
- 2026年河南經(jīng)貿(mào)職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及參考答案詳解
評(píng)論
0/150
提交評(píng)論