freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

chapter05-數(shù)據(jù)庫與表的管理(編輯修改稿)

2025-03-31 19:28 本頁面
 

【文章內(nèi)容簡介】 初始定義。 本實(shí)例 myExample表在初始定義時(shí)包含兩個(gè)列。 第一條 ALTER TABLE語句向該表新添 Col Col4兩個(gè)列,其中 Col3為 IDENTITY列(原有各行中該列的數(shù)據(jù)將被填充進(jìn)去), Col4為計(jì)算列。 第二條 ALTER TABLE語句修改 Col2列的數(shù)據(jù)類型,將其從數(shù)值型轉(zhuǎn)換成字符型。 第三條 ALTER TABLE語句將 Col1這一列刪除 。 修改表 實(shí)例 510程序代碼 運(yùn)行實(shí)例 35 實(shí)例 510(續(xù) 1) IF (OBJECT_ID (39。myExample39。) IS NOT NULL) DROP TABLE myExample GO CREATE TABLE myExample ( Col1 int, Col2 int ) INSERT INTO myExample (Col1,Col2 )VALUES (1,100) GO /* 修改表,新增兩列。 */ ALTER TABLE myExample ADD Col3 INT IDENTITY(1,1), Col4 AS Col3+100 GO INSERT INTO myExample (Col1, Col2 ) VALUES (2, 200) SELECT * FROM myExample 解析: 一條 ADD子句可以增加多個(gè)列。 修改表 36 實(shí)例 510(續(xù) 2) /* 將 Col2數(shù)據(jù)類型修改成字符型。 */ ALTER TABLE myExample ALTER COLUMN Col2 nchar(10) NOT NULL SELECT * FROM myExample /* 刪除 Col1這一列。 */ ALTER TABLE myExample DROP Column Col1 SELECT * FROM myExample GO 修改表 37 在實(shí)際應(yīng)用中,修改表比定義表要復(fù)雜得多。例如,修改表中某一列的數(shù)據(jù)類型是存在風(fēng)險(xiǎn)的,因?yàn)楸碇屑扔械臄?shù)據(jù)不一定支持新的數(shù)據(jù)類型。 除此之外,對于非常龐大的表,使用 ALTER TABLE涉及所有行的修改。有時(shí)會(huì)花費(fèi)很長時(shí)間來完成和產(chǎn)生所需的日志記錄。因此,使用 ALTER TABLE語句應(yīng)當(dāng)格外謹(jǐn)慎。 修改表 38 ? 在數(shù)據(jù)庫中,刪除表與刪除表中的行和列在概念上是不同的。如果刪除了一張表的所有行,那么表及表的各項(xiàng)定義(包括約束)依然存在,只不過這時(shí)是一張空表而已。 ? 一旦使用 DROP語句,表才被真正刪除,這時(shí)表中所有定義、數(shù)據(jù)、約束、索引、觸發(fā)器及其它對象等將不再存在。 刪除表 39 關(guān)于表的刪除操作,還必須注意以下幾點(diǎn): ① 不能使用 DROP TABLE刪除被 FOREIGN KEY約束引用的表,必須先刪除 FOREIGN KEY約束或引用表。 ② 可以同時(shí)刪除多個(gè)表。如果一個(gè)要?jiǎng)h除的表引用了另一個(gè)也要?jiǎng)h除的表的主鍵,則必須先列出包含該外鍵的引用表,然后再列出包含要引用的主鍵的表。 ③ 在刪除表時(shí),表的規(guī)則或默認(rèn)值將被解除綁定,與該表關(guān)聯(lián)的任何約束或觸發(fā)器將被自動(dòng)刪除。 ④ 不能使用 DROP TABLE刪除系統(tǒng)表。 刪除表 40 SQL Server提供下列 6種約束來強(qiáng)制數(shù)據(jù)的完整性: ① PRIMARY KEY主鍵約束 。強(qiáng)制一個(gè)表中不能有兩行包含相同的主鍵值,也不能在構(gòu)成主鍵的任何列中存放空值。 ② FOREIGN KEY外鍵約束 。用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接。一個(gè)表中外鍵所在列的值必須在另一個(gè)表中候選鍵所對應(yīng)列的取值范圍內(nèi)。 ③ UNIQUE唯一約束 。強(qiáng)制執(zhí)行列值的唯一性,不允許表中的任何兩行包含相同值。 ④ CHECK檢查約束 。對存放到列中的值進(jìn)行限制,不符合 CHECK指定條件的值無法存儲(chǔ)到數(shù)據(jù)表中去。 數(shù)據(jù)完整性約束 41 ⑤ NOT NULL非空性 。指定表中的列不能接受空值。 ⑥ DEFAULT默認(rèn)約束 。對插入時(shí)沒有顯式提供值的列指定一個(gè)默認(rèn)值。 ?同一個(gè)數(shù)據(jù)庫的約束名是不允許重復(fù)的。 ? 約束分為兩個(gè)級(jí)別:列級(jí)約束和表級(jí)約束。 ? 在建表時(shí)直接定義在列后面的約束,稱為列級(jí)約束。 ? 在建表時(shí)所有列之后(或建表之后使用 ALTER TABLE語句)創(chuàng)建的約束稱為表級(jí)約束。 ? 定義列級(jí)約束時(shí),約束的名稱是可以缺省的,這時(shí) SQL Server自動(dòng)為它生成一個(gè)名稱。 ? 但在使用 ALTER TABLE定義表級(jí)約束時(shí),必須明確指定約束的名稱。 數(shù)據(jù)完整性約束 42 表中的主鍵必須滿足下列兩個(gè)條件: ①任意兩行都不具有相同的主鍵值 ②每一行都必須具有一個(gè)主鍵值(即主鍵列不允許空值) PRIMARY KEY主鍵約束 43 ? 一個(gè)表只能有一個(gè)主鍵,主鍵通常定義在表的一列上,也可以定義在多個(gè)列上(這時(shí)稱為組合主鍵)。 ? 在使用多個(gè)列作為主鍵時(shí),唯一性和非空條件必須應(yīng)用到構(gòu)成主鍵的所有列中,即所有組合列的值必須是唯一的(但單個(gè)列的值可以不唯一),組合列中的每一個(gè)列都必須為非空值。 ? 主鍵可以在創(chuàng)建表時(shí)的某一列中定義,也可以通過表修改語句( ALTER TABLE)在創(chuàng)建表之后再定義。 ? 在列定義中把一個(gè)列設(shè)置為主鍵稱為列級(jí)主鍵約束,在列定義之后設(shè)置主鍵被稱為表級(jí)主鍵約束。 ? 組合主鍵必須使用表級(jí)約束進(jìn)行定義。 PRIMARY KEY主鍵約束 44 實(shí)例 511 創(chuàng)建單個(gè)列的主鍵約束。 在 CREATE TABLE創(chuàng)建表時(shí)沒有定義主鍵,使用ALTER TABLE添加一個(gè)主鍵。這時(shí)在建表定義EmployeeID列時(shí),必須注明 NOT NULL,否則無法為它增加主鍵約束。 本實(shí)例采用兩種不同方式在員工表( myEmployees)中創(chuàng)建一個(gè)主鍵約束。示例 1在定義列時(shí)直接定義主鍵約束(即列級(jí)約束),并指定約束名。 示例 2在建表結(jié)束后,通過 ALTER TABLE語句向表中添加主鍵約束(即表級(jí)約束),這時(shí)建表語句中的候選主鍵列必須指定非空( NOT NULL)約束。 PRIMARY KEY主鍵約束 45 實(shí)例 511(續(xù) 1) /* 示例 1:在建表定義列時(shí)直接定義主鍵約束,主鍵約束名往往由字符 PK_和表名組合而成。 */ IF (OBJECT_ID(39。myEmployees39。) IS NOT NULL) DROP TABLE myEmployees GO CREATE TABLE myEmployees ( EmployeeID nchar(7) CONSTRAINT PK_myEmployees PRIMARY KEY , LastName nvarchar(20), FirstName nvarchar(10), BirthDate datetime ) GO PRIMARY KEY主鍵約束 46 實(shí)例 511(續(xù) 2) /* 示例 2:在創(chuàng)建表時(shí)沒有定義主鍵約束,使用 ALTER TABLE給這個(gè)表添加一個(gè)主鍵。注意:在建表定義 EmployeeID列時(shí),必須注明 NOT NULL,否則無法為它增加主鍵約束。 */ IF (OBJECT_ID(39。myEmployees39。) IS NOT NULL) DROP TABLE myEmployees GO CREATE TABLE myEmployees ( EmployeeID nchar(9) NOT NULL, 添加非空約束 LastName nvarchar(20), FirstName nvarchar(10), BirthDate datetime ) GO ALTER TABLE myEmployees ADD CONSTRAINT PK_myEmployees PRIMARY KEY ( EmployeeID ) PRIMARY KEY主鍵約束 47 實(shí)例 512 創(chuàng)建表級(jí)組合主鍵約束,即表中的主鍵由多個(gè)列組成。 第一種方式 :在建表語句中最后一列的定義之后,增加一個(gè)主鍵約束條件,這也屬于定義表級(jí)約束。 第二種方式 :在建表語句之后,通過 ALTER TABLE添加組合主鍵約束。 PRIMARY KEY主鍵約束 48 實(shí)例 512(續(xù)) /* 在建表時(shí),在最后一個(gè)列定義之后,使用逗號(hào),定義組合主鍵約束。 */ IF (OBJECT_ID(39。myOrderItems39。) IS NOT NULL) DROP TABLE myOrderItems GO CREATE TABLE myOrderItems ( OrderID int NOT NULL, 可以省略 ProductID int NOT NULL, 可以省略 UnitPrice money, Quantity smallint, CONSTRAINT PK_myOrderItems PRIMARY KEY (OrderID ASC, ProductID ASC) ) GO PRIMARY KEY主鍵約束 49 實(shí)例 512(續(xù)) /* 使用 ALTER TABLE和 ADD CONSTRAINT向一個(gè)既有的表中增加組合主鍵約束 。 當(dāng)然必須先刪除原有的主鍵約束 。 */ ALTER TABLE myOrderItems DROP CONSTRAINT PK_myOrderItems GO ALTER TABLE myOrderItems ADD CONSTRAINT PK_myOrderItems PRIMARY KEY (OrderID ASC, ProductID ASC) PRIMARY KEY主鍵約束 50 在同一個(gè)數(shù)據(jù)庫中,表與表之間往往會(huì)存在某些邏輯關(guān)系:一個(gè)表中某個(gè)列的數(shù)據(jù)必須在另一個(gè)表的某個(gè)列中是存在的。 在 SQL Server中,可以通過 外鍵 來建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接關(guān)系,為列中的數(shù)據(jù)提供參照完整性約束。 外鍵約束可以參照另一表中的主鍵列,也可以參照另一表中具有 UNIQUE約束的列,被參照列的值必須是唯一的(即具有 PRIMARY KEY或 UNIQUE約束)和非空的。 FOREIGN KEY外鍵約束 51 實(shí)例 513 使用 REFERENCES和 ALTER TABLE創(chuàng)建外鍵約束,在一個(gè)表中定義列級(jí)和表級(jí)外鍵約束。 外鍵約束也可以分為列級(jí)約束和表級(jí)約束。外鍵約束使用 FOREIGN KEY指定引用的列,由 REFERENCES子句指定被引用的表和列。 FOREIGN KEY外鍵約束 52 實(shí)例 513(續(xù)) IF (OBJECT_ID(39。myOrderItems39。) IS NOT NULL) DROP TABLE myOrderItems GO /* 定義列級(jí)外鍵約束條件。 */ CREATE TABLE myOrderItems ( OrderID int NOT NULL CONSTRAINT FK_myOrderItems_OrderID REFERENCES Orders(OrderID), ProductID int NOT NULL, UnitPrice money, Quantity int ) GO /* 定義表級(jí)外鍵約束條件。 */ ALTER TABLE myOrderItems ADD CONSTRAINT FK_myOrderItems_ProductID FOREIGN KEY(ProductID) REFERENCES Products(ProductID) FOREIGN KEY外鍵約束 53 FOREIGN KEY外鍵約束 實(shí)例 514 創(chuàng)建遞歸外鍵引用,即表中的外鍵列引用它自己所在表中的主鍵或唯一鍵。 FOREIGN KEY約束可以引用同一表中的其他列,這種約束稱為自我引用外鍵約束。對于存在自我引用的表,記錄插入的次序很關(guān)鍵。被引用的記錄必須先插入到表中,只有它們已經(jīng)存在于表中時(shí),其它引用它們的記錄才能插入進(jìn)去。 本實(shí)例在員工表( myEmployees)的 ReportsTo列上創(chuàng)建一個(gè)外鍵約束,引用自己表中的主鍵 EmployeeID列。ReportsTo的語義為當(dāng)前員工的主管領(lǐng)導(dǎo)。 在插入記錄時(shí),第一個(gè)員工沒有主管領(lǐng)導(dǎo) (ReportsTo值為NULL), 第二個(gè)員工的主管領(lǐng)導(dǎo)是第一個(gè)員工( ReportsTo值為第一條記錄的主鍵值),第 3個(gè)員工的主管領(lǐng)導(dǎo)是第二個(gè)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1