SQLServer數(shù)據(jù)庫基本對象操作和管理.ppt_第1頁
SQLServer數(shù)據(jù)庫基本對象操作和管理.ppt_第2頁
SQLServer數(shù)據(jù)庫基本對象操作和管理.ppt_第3頁
SQLServer數(shù)據(jù)庫基本對象操作和管理.ppt_第4頁
SQLServer數(shù)據(jù)庫基本對象操作和管理.ppt_第5頁
已閱讀5頁,還剩130頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章SQL Server 數(shù)據(jù)庫基本對象操作和管理,3.1 數(shù)據(jù)庫,在SQL Server2005中創(chuàng)數(shù)據(jù)庫方法有兩種,使用SQL Server Manager和T-SQL(Create Datebase)創(chuàng)建數(shù)據(jù)庫。當(dāng)新數(shù)據(jù)庫創(chuàng)建之后,系統(tǒng)自動把model數(shù)據(jù)庫中的系統(tǒng)表復(fù)制到新數(shù)據(jù)庫中。下面描述在SQL Server2005中用兩種不同方法創(chuàng)建數(shù)據(jù)庫的內(nèi)容。,1.定義數(shù)據(jù)庫,一般來說,為了創(chuàng)建數(shù)據(jù)庫首先應(yīng)定義數(shù)據(jù)庫,定義數(shù)據(jù)庫的內(nèi)容包括: (1)數(shù)據(jù)庫名稱 如命名數(shù)據(jù)名稱為Material_Data。 (2)數(shù)據(jù)庫大小 如主文件(. mdf)大小為10MB,日志文件大小為3MB。 (3)數(shù)據(jù)庫將駐留在哪一個文件中 如數(shù)據(jù)庫將駐留在C:Program FilesMicrosoft SQL ServerMSSQLdatamaterial_Data.MDF中。 即,創(chuàng)建Material_Data數(shù)據(jù)庫, 主文件(. mdf)大小為10MB,日志文件大小為3MB。數(shù)據(jù)庫將駐留在C:Program FilesMicrosoft SQL ServerMSSQLdatamaterial_Data.MDF中。,2 .Server Manager創(chuàng)建數(shù)據(jù)庫,下面描述用Server Manager創(chuàng)建數(shù)據(jù)庫步驟。 第一步, 登錄SQL Server 2005數(shù)據(jù)庫引擎后,圖3.1所示SQL Server數(shù)據(jù)庫管理圖面。,SQL Server數(shù)據(jù)庫管理界面,在選擇數(shù)據(jù)庫菜單中右擊鼠標(biāo),出現(xiàn)圖3.2所示圖面,選擇新建數(shù)據(jù)庫功能,第二步 指定數(shù)據(jù)庫名稱Material_Data 在進(jìn)入新建數(shù)據(jù)庫,圖3.3所示圖面中,在數(shù)據(jù)庫名稱輸入框輸入數(shù)據(jù)庫名稱Material_Data,指定數(shù)據(jù)庫名稱,圖3.3數(shù)據(jù)庫名稱輸入圖面,指定數(shù)據(jù)庫所有者,第三步 指定數(shù)據(jù)庫所有者 可選擇默認(rèn)所有者。選擇數(shù)據(jù)庫所有者右邊按鈕,進(jìn)入數(shù)據(jù)庫所有者指定方法,步驟圖3.4-3.7所示,圖3.6 指定數(shù)據(jù)庫所者-3,圖3.7 指定數(shù)據(jù)庫所者-4,指定主文件與日志文件初始大小,第四步 指定主文件與日志文件初始大小,圖3.8所示。主文件10MB,日志文件3MB。,圖3.8指定主文件與日志文件初始大小,指定主文件與日志文件自助增長方式與最大文件大小,第五步 指定主文件與日志文件自助增長方式與最大文件大小,在圖3.8中,選擇自動增長欄中右邊按扭,出現(xiàn)圖3.9所示窗口。在3.9所示窗口中可指定文件自動增長方式與最大文件大小。,圖3.9 指定主文件與日志文件自助增長方式最大文件大小,指定主文件與日志文件目錄路徑,第六步 指定主文件與日志文件目錄路徑,在圖3.8的路徑欄中,選擇與主文件、日志文件對應(yīng)的右邊按鈕,分別進(jìn)入主文件目錄路徑與日志文件目錄路徑指定窗口,圖3.10與圖3.11所示。,3T-SQL(Create Datebase)創(chuàng)建數(shù)據(jù)庫,下面描述用T-SQL(Create Datebase)創(chuàng)建數(shù)據(jù)庫。 (1) 選擇新建查詢命令,進(jìn)入T-SQL命令編輯窗口,圖3.12所示。,(2)在圖3.12數(shù)據(jù)庫下拉列表框中選擇master數(shù)據(jù)庫,圖3.13所示。,(3)在圖3.11 的T-SQL命令編輯窗口,輸入如下的T-SQL語句。 CREATE DATABASE Material_Data1 ON PRIMARY(NAME=Material_Data1,FILENAME=C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDatamaterial_Data1.MDF, SIZE=10MB, MAXSIZE=15MB, FILEGROWTH=20%) LOG ON (NAME=Material_Log1, FILENAME=C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDatamaterial_Log1.LDF, SIZE=3MB, MAXSIZE=5MB, FILEGROWTH=1MB),其中, PRIMARY 指定主文件(擴(kuò)展名為.dmf) FILENAME 指定文件名與路徑 SIZE 指定數(shù)據(jù)或日志文件大小 MAXSIZE 指定文件能增長到的最大長度 FILEGROWTH 指定文件增長量,(4)在圖3.13中,選擇執(zhí)行功能菜單,執(zhí)行結(jié)果圖3.14所示,數(shù)據(jù)庫創(chuàng)建成功,(5)當(dāng)新數(shù)據(jù)庫創(chuàng)建之后,系統(tǒng)自動把model數(shù)據(jù)庫中的系統(tǒng)表復(fù)制到新數(shù)據(jù)庫中,新建成功的Material_Data出現(xiàn)在數(shù)據(jù)庫列表中,圖3.15所示。,3.2表,3.2.1表管理設(shè)計(jì)與創(chuàng)建 假如有如下五個業(yè)務(wù)表,表3.1 Department,表3.2 Product,表3.3planning,表3.4Manager,表3.5 Orderbill,現(xiàn)對以上五個表的表名、字段名、字段類型、字段長度、主鍵及外鍵設(shè)計(jì)如下,表3.6-3.10所示:,表3.6 Department,表3.7 Product,表3.8 planning,表3.9Manager,表3.10 Orderbill,現(xiàn)試圖在3.1中建立的數(shù)據(jù)庫Material_Data中,創(chuàng)建以上5個表。在SQL Server2005中, 可用下述方法在己建立的數(shù)據(jù)庫中創(chuàng)建及修改表。 第一步,進(jìn)入Material_Data數(shù)據(jù)庫中新建表功能,圖3.16所示。,1使用SQL Server Manager創(chuàng)建表,填寫表中列名、數(shù)據(jù)類型及是否為空,設(shè)置鍵及表存盤。 (1)Department a.填寫Department表中列名、數(shù)據(jù)類型,圖3.17所示。,第二步,b.設(shè)置表Department中主鍵,圖3.18-3.19所示。,c.存盤及表命名,圖3.20-圖3.22所示。,圖3.20輸入表命名Table_1,圖3.21 輸入表命名Department,(3) planning a.填寫表planning中列名、數(shù)據(jù)類型,圖3.29所示。,3.2表,b.存盤及表命名,圖3.30-3.32所示。,圖3.30輸入表命名Table_1,圖3.31 輸入表命名Planning,c. 按圖3.33-3.38所示設(shè)置deptNo外鍵,圖3.34設(shè)置deptNo外鍵-使用“添加“按鈕,圖3.35設(shè)置deptNo外鍵-確定“標(biāo)識“名稱,圖3.36置deptNo外鍵-選擇主鍵表與外鍵表,圖3.37deptNo外鍵-選擇主鍵表與外鍵表字段,d.設(shè)置productNo外鍵,圖3.39-3.43所示。,圖3.40設(shè)置productNo外鍵-使用“添加“按鈕,圖3.41設(shè)置productNo外鍵-確定標(biāo)“名稱”FK_planning_Product,圖3.42設(shè)置productNo外鍵-確定主表、外鍵表等相關(guān)表中字段,圖3.43設(shè)置productNo外鍵完成返回Management Studio窗口,2使用SQL Server Manager 設(shè)置表的屬性,在屬性框中,可修改表的屬性,如可對前面設(shè)計(jì)的各表的列名,類型等進(jìn)行修改,如圖3.44所示。,3使用SQL Server Manager修改表的結(jié)構(gòu),使用SQL Server Manager增加、刪除列 (1)增加列,圖3.45所示。,(2)刪除列,4使用T- SQL語言創(chuàng)建表,創(chuàng)建表的SQL語句是CREATE TABLE。 CREATE TABLE命令的語法如下: CREATE TABLE table_name (name_Of_attr_1 type_Of_attr_l ,nsme _of_attr_2 type_Of_attr_2 ,);,(1)創(chuàng)建表department。,SQLQuery.sql程序設(shè)計(jì)如下: CREATE TABLE department (deptNo char (10) NOT NULL PRIMARY KEY, deptName varchar(50) NOT NULL),(2)創(chuàng)建表product。,SQLQuery2.sql程序設(shè)計(jì)如下: CREATE TABLE product (productNo char(10) NOT NULL PRIMARY KEY, productName varchar(50) NOT NULL ),(3)創(chuàng)建表planning,SQLQuery3.sql程序設(shè)計(jì)如下: CREATE TABLE planning (deptNo char (10) NOT NULL constraint FK_plan_deptNo foreign key (deptNo) references department(deptNo), productNo char(10) NOT NULL constraint FK_plan_productNo foreign key (productNo) references product(productNo), planoutput numeric(10) NULL),(4)創(chuàng)建表Manager,SQLQuery4.sql程序設(shè)計(jì)如下: CREATE TABLE Manager (ManagerNo char(10) NOT NULL PRIMARY KEY, ManagerName varchar(50) NOT NULL, Sex char(2) NULL, Wage numeric(6) NULL),創(chuàng)建表Orderbill,SQLQuery5.sql程序設(shè)計(jì)如下: CREATE TABLE Orderbill (OrderbillNo char(10) NOT NULL PRIMARY KEY, managerNo char(10) NOT NULL constraint FK_Orderbill_managerNo foreign key (managerNo) references manager(managerNo), OrderDate Datetime NULL, OrderMoney numeric(10,2) NULL),3.2.2 向表中插入數(shù)據(jù),表創(chuàng)建完成后,可以用命令I(lǐng)NSERT INTO向表里填充記錄。 語法是: INSERT INTO table_name(name_Of_attr_1 ,name_Of_attr_2,) VALUES(val_attr_1,val_attr 2,);,1.INSERT語句,實(shí)例3.1 把表3.11中數(shù)據(jù)輸入數(shù)據(jù)庫Material_Data中Department 表中。,表3.11Department,INSERT INTO department (deptNo,deptName) VALUES (0001, 生產(chǎn)管理部) INSERT INTO department (deptNO,deptName) VALUES (0002, 銷售管理部),2使用SELECT子句插入數(shù)據(jù),語法形式: INSERT table_name SELECT column_list FROM table_list WHERE serach_conditions 注意: 參考表可以相同或不同; 要插入數(shù)據(jù)的表必須已存在; 要插入數(shù)據(jù)的表必須和SELECT子句結(jié)果集兼容;,建立department臨時表department1,并把department中數(shù)據(jù)輸入department1。程序設(shè)計(jì)如下: CREATE TABLE department1 (deptNo char (10) NOT NULL PRIMARY KEY, deptName varchar(50) NOT NULL) INSERT department1 SELECT deptNO, deptName FROM department,實(shí)例,3.2.3 使用UPDATE修改表中數(shù)據(jù),Update(更新數(shù)據(jù)) 命令 要修改記錄中的一個或者多個屬性的值,使用UPDATE命令。語法是; UPDATE table name SET name_Of_attr_1=value-1 ,name of_attr_k=value_k WHERE condition;,實(shí)例,把department表中“銷售部”改為“市場部”。程序設(shè)計(jì)如下: UPDATE department SET deptName=市場部 WHERE deptName=銷售管理部,刪除一條記錄,要從一個表中刪除一條記錄,使用DELETE FROM命令。語法是: DELETE FROM table_name WHERE condition 實(shí)例 刪除department表部門名為市場部的部門。 DELETE FROM department WHERE deptName=市場部,3.2.5使用Transact_SQL修改表結(jié)構(gòu),修改表結(jié)構(gòu)語句的基本語法格式為: ALTER TABLE table_name ALTER COLUMN column_name new_data_type (precision,scale) NULL|NOT NULL |ADD,n |DROPCONSTRAINT constraint_name |COLUMN column,n,實(shí)例,在表Product中增加一個新列Price(money類型,允許為空)。程序設(shè)計(jì)如下: USE Material_Data ALTER TABLE Product ADD Price money NULL GO,實(shí)例,在表Product中刪除列Price。程序設(shè)計(jì)如下: USE Material_Data ALTER TABLE Product DROP COLUMN Price GO,3.3 Index索引,索引: 一種物理結(jié)構(gòu),提供一種以一列或多列的值為基礎(chǔ)的迅速查找表中的行的機(jī)制 索引類型 聚簇索引:行的物理順序與索引順序一致 非聚簇索引:邏輯順序 唯一性索引:創(chuàng)建索引的列上不包括重復(fù)數(shù)據(jù) SQL Server對索引的限制 每表一個聚簇索引 每表多個非聚簇索(249),3.3.1可視化創(chuàng)建索引,1.選擇要創(chuàng)建索引的列,選擇“索引/鍵(I)”,圖3.62所示。,圖3.62選擇要創(chuàng)建索引的列,2.在彈出的“索引/鍵”對話框中,點(diǎn)擊“添加”按鈕,圖3.63所示。,3.在“標(biāo)識”欄下的“(名稱)”里修改新增索引的名稱為:IX_ProductName。圖3.64所示。,圖3.64 修改新增索引的名稱,4. 在“常規(guī)”欄下的“列”里選擇新增索引要綁定的列及排序方式(升序或降序),圖3.65 選擇新增索引要綁定的列及排序方式,圖3.66 選擇新增索引要綁定的列及排序方式,5.點(diǎn)擊“確定”完成排序,3.3.2使用Transact_SQL創(chuàng)建索引,CREATE UNIQUE CLUSTERED|NONCLUSTERED INDEX index_name ON table|view(columnASC|DESC,n) WITH,n ON filegroup := PAD_INDEX |FILLFACTOR=fillfactor |IGNORE_DUP_KEY |DROP_EXISTING |STATISTICS_NORECOMPUTE |SORT_IN_TEMPDB ,實(shí)例,為表Product的productNane字段建立升序索引: USE Material_Data IF EXISTS(SELECT NAME FROM sysindexes WHERE name=IX_ProductName) DROP INDEX Product.IX_ProductName GO USE Material_Data CREATE INDEX IX_ProductName ON Product(productName) GO,實(shí)例,為表Product的productNane、productNo兩字段建立索引: USE Material_Data IF EXISTS(SELECT NAME FROM sysindexes WHERE name=IX_PName_PNo) DROP INDEX Product.IX_PName_PNo GO USE Material_Data CREATE INDEX IX_PName_PNo ON Product(productName,productNo) GO,3.4 SQL Server 數(shù)據(jù)查詢與表現(xiàn),在SQL Server2005中方法有兩種查詢數(shù)據(jù)庫數(shù)據(jù)方法,使用SQL Server Manager和T-SQL創(chuàng)建查詢。SQL里面最常用的命令是select(查詢)語句,用于檢索數(shù)據(jù)。,3.4.1 檢索表中列技術(shù),1檢索全部列 檢索pub數(shù)據(jù)庫中jobs表中全部信息。 SELECT * FROM jobs 2重新對列排序 結(jié)果集中列的順序由SELECT關(guān)鍵字后面列名的順序確定。 SELECT job_desc, job_id FROM jobs,3.4.1 檢索表中列技術(shù),3使用文字串技術(shù) 可在SELECT關(guān)鍵字后面增加文字說明。 SELECT job_desc, its id is , job_id FROM jobs 4改變列標(biāo)題技術(shù) 可在SELECT關(guān)鍵字后面,對每列表頭增加描述字說明。 SELECT Descrbition= job_desc, Identify Number= job_id FROM jobs 將jobs表中的job_desc、job_id兩列表頭增加描述字說明。這樣列表顯示的表頭將是Descrbition(對應(yīng)job_desc列)、Identify Number(對應(yīng)job_id列)。,3.4.2 操縱數(shù)據(jù)技術(shù),使用算術(shù)運(yùn)算符:+, -, *, /??梢杂迷诟鞣N數(shù)字列上。 對pub數(shù)據(jù)庫titles表中的price列進(jìn)行如下數(shù)據(jù)運(yùn)算:price+2、price 2、price * 2及price / 2。對應(yīng)這些運(yùn)算的SELECT語句如下: SELECT title, price, price+2 FROM titles SELECT title, price, price 2 FROM titles SELECT title, price, (price * 2) FROM titles SELECT title, price, (price / 2) FROM titles,3.4.3 選擇行技術(shù),語法格式: SELECT slect_list FROM table_list WHERE search_conditions 1比較技術(shù) search_conditions比較運(yùn)算符有: 等于 大于 小于 = 小于或者等于 不大于 ! 不小于 !,實(shí)例,查詢pubs數(shù)據(jù)庫employee 表中pub_id不等于0877,列名為pub_id, emp_id, fname的行。 Select pub_id, emp_id, fname From employee Where pub_id 0877 查詢pubs數(shù)據(jù)庫authors表中state等于 CA,列名為au_lname, city, state的行。 Select au_lname, city, state From authors Where state = CA,2范圍技術(shù),BETWEEN 指定搜索的范圍。 語法: test_expression NOT BETWEEN begin_expression AND end_expression 從pubs 數(shù)據(jù)庫titles表中檢索年銷售額在2000至2200之間的書籍。 Select title_id, ytd_sales From titles Where ytd_sales Between 2000 and 2200,3邏輯運(yùn)算技術(shù),AND|ORNOT指定搜索的邏輯運(yùn)算結(jié)果。 語法: SELECT select_list FROM table_list WHERE NOT expression AND|ORNOT expression,實(shí)例,從pubs 數(shù)據(jù)庫authors表中檢索au_lname=white 或 au_lname=green 或 state = CA的作者。 Select * From authors Where au_lname=white OR au_lname=green OR state = CA,4匯總數(shù)據(jù)技術(shù),1)合計(jì)函數(shù) AVG 數(shù)據(jù)表達(dá)式的平均值 COUNT 某個表達(dá)式中數(shù)據(jù)值的數(shù)量 COUNT(*) 所選擇行的數(shù)量 MAX 表達(dá)式中最大值 MIN 表達(dá)式中最小值 SUN 數(shù)據(jù)表式的總和,實(shí)例,從pubs 數(shù)據(jù)庫titles表中檢索price平均值。 Select avg(price) From titles 從pubs 數(shù)據(jù)庫titles表中檢索price種類數(shù),語句如下: Select count(price) From titles 從pubs 數(shù)據(jù)庫titles表中檢索記錄數(shù),語句如下: Select count(*) From titles,(2) GROUP BY子句,對查詢結(jié)果分組后,合計(jì)(聚集)函數(shù)將分別作用于每個組 按指定的一列或多列值分組,值相等的為一組,(2) GROUP BY子句,求各個課程號及相應(yīng)的選課人數(shù)。 SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno;,視圖及其應(yīng)用,視圖綜述 視圖的操作 視圖定義信息查詢 案例中的視圖應(yīng)用,一、視圖綜述,1.視圖的基本概念 視圖是一個虛擬表,從一個或多個表中導(dǎo)出(視圖也可以從視圖中導(dǎo)出),其內(nèi)容由查詢語句定義生成。從表面上看,視圖和真實(shí)表一樣,具有結(jié)構(gòu)和數(shù)據(jù),包含一系列帶有名稱的列和行數(shù)據(jù)。實(shí)質(zhì)上,表是視圖的基礎(chǔ),數(shù)據(jù)庫中只存儲了視圖定義,而不存放視圖所對應(yīng)的數(shù)據(jù),視圖所對應(yīng)的數(shù)據(jù)仍存放在視圖所引用的基表中。,一、視圖綜述,2. 視圖的作用 1) 視圖可以集中數(shù)據(jù),滿足不同用戶對數(shù)據(jù)的不同要求。 2) 視圖可以簡化復(fù)雜查詢的結(jié)構(gòu),從而方便用戶對數(shù)據(jù)的操作。 3) 視圖能夠?qū)?shù)據(jù)提供安全保護(hù)。 4) 便于組織數(shù)據(jù)導(dǎo)出。,二、視圖的操作,創(chuàng)建視圖 修改視圖 使用視圖 刪除視圖,創(chuàng)建視圖時應(yīng)該注意以下:,創(chuàng)建者必須擁有創(chuàng)建視圖的權(quán)限,對視圖中引用的基表或視圖有許可權(quán)。 只能在當(dāng)前數(shù)據(jù)庫中創(chuàng)建視圖,如果使用分布式查詢,視圖所引用的基表和視圖可以存在于其它數(shù)據(jù)庫或它服務(wù)器中。 在一個視圖中最多引用1024列,視圖中記錄的行數(shù)限制由基表中記錄數(shù)目決定。 視圖的名稱必須遵循標(biāo)識符的定義規(guī)則,對于每個用戶來說也必須唯一,而且視圖名稱不允許與該用戶擁有的表重名。,視圖中列的名稱一般繼承其基表中列的名稱,如果視 圖中某一列是算術(shù)表達(dá)式、函數(shù)、常量或者來自多個表的列名相同,必須要為視圖中的列定義名稱。 可以將視圖創(chuàng)建在其它視圖上,SQL Server 2000中 允許32層的視圖嵌套。 不能將規(guī)則、默認(rèn)綁定在視圖上。 不能在臨時表上創(chuàng)建視圖,也不能創(chuàng)建臨時視圖。,創(chuàng)建視圖時應(yīng)該注意以下:,創(chuàng)建視圖,1.使用企業(yè)管理器創(chuàng)建視圖 2.使用CREATE VIEW語句創(chuàng)建視圖,例:創(chuàng)建一個包括學(xué)生學(xué)號、姓名及所選課程的課程名以及成績的視圖(視圖名:成績單)。,1.使用企業(yè)管理器創(chuàng)建視圖,創(chuàng)建過程中的圖解:,屬性,圖 視圖設(shè)計(jì)器,1.使用企業(yè)管理器創(chuàng)建視圖,創(chuàng)建步驟如下: 1)在企業(yè)管理器,打開“視圖設(shè)計(jì)器”。 2)單擊工具欄上的“添加表”按鈕,將表添加到視圖設(shè)計(jì)器中。 3)根據(jù)新建視圖的需要,從表中選擇視圖引用的列。 4)在網(wǎng)格窗格中的“準(zhǔn)則”欄中設(shè)置過濾記錄的條件。 5)設(shè)置視圖的其它屬性。 6)在視圖設(shè)計(jì)器窗口中,檢查SQL語法。 7)最后,單擊“保存”按鈕,為視圖指定名稱。關(guān)閉“視圖設(shè)計(jì)器”。,圖 “添加表”對話框,1.使用企業(yè)管理器創(chuàng)建視圖,圖 選擇表列,2.使用CREATE VIEW語句創(chuàng)建視圖,語法格式如下: CREATE VIEW . . view_name ( column ,.n ) AS select_statement WITH CHECK OPTION ,2.使用CREATE VIEW語句創(chuàng)建視圖,例:以學(xué)生表(S表)為基礎(chǔ)建立一個視圖,其名稱為“學(xué)生名單”,其包含列為學(xué)生表中的學(xué)號和姓名。 程序清單如下:,CREATE VIEW 學(xué)生名單 AS SELECT SNO,SNAME FROM S,從單個表派生的視圖:,2.使用CREATE VIEW語句創(chuàng)建視圖,例:以選課表(S_C表)為基礎(chǔ)建立一個視圖,其名稱為“數(shù)據(jù)庫成績”,其包含列為選課表中的所有列,篩選記錄條件為“課程編號 = 001”。 程序清單如下: WITH CHECK OPTION ,CREATE VIEW 數(shù)據(jù)庫成績 AS SELECT * FROM S_C WHERE CNO = 001,2.使用CREATE VIEW語句創(chuàng)建視圖,例:給出有北京倉庫訂購單的北京供應(yīng)商的名稱。 WITH CHECK OPTION ,從多個表派生的視圖:,CREATE VIEW BJ_訂購單 AS,SELECT 供應(yīng)商名 FROM 供應(yīng)商 WHERE 地址=北京 AND 供應(yīng)商號 IN (SELECT 供應(yīng)商號 FROM 訂購單 WHERE 職工號 IN (SELECT 職工號 FROM 職工 WHERE 倉庫號 IN (SELECT 倉庫號 FROM 倉庫 WHERE 城市=北京) ) ),例:列出每個職工經(jīng)手的具有最高總金額的訂購單信息。,訂購單1,2.使用CREATE VIEW語句創(chuàng)建視圖,2.使用CREATE VIEW語句創(chuàng)建視圖,CREATE VIEW V_MAX AS SELECT 職工號,MAX(總金額) AS 最大總金額 FROM 訂購單1 GROUP BY 職工號,SELECT 訂購單1.職工號,訂購單號,供應(yīng)商號,訂購日期,總金額 FROM 訂購單1,V_MAX WHERE 訂購單1.職工號=V_MAX.職工號 AND 訂購單1.總金額=V_MAX.最大總金額,視圖中的虛列:,或:CREATE VIEW V_SAL1 AS SELECT 職工號,工資 as 月工資,工資*12 as 年工資 FROM 職工,2.使用CREATE VIEW語句創(chuàng)建視圖,CREATE VIEW V_SAL(職工號,月工資,年工資) AS SELECT 職工號,工資,工資*12 FROM 職工,例:定義一個視圖,包含職工號、月工資、年工資。,修改視圖,1.使用企業(yè)管理器 2.使用ALTER VIEW語句 其語法格式如下: ALTER VIEW view_name ( column ,.n ) AS select_statement,ALTER VIEW 學(xué)生名單 AS SELECT SNAME FROM S,修改視圖,例:將視圖“學(xué)生名單”修改為只包含列為學(xué)生表中的姓名。 程序清單如下: WITH CHECK OPTION ,使用視圖,1.通過視圖查詢數(shù)據(jù)信息 例: 查詢“數(shù)據(jù)庫成績”視圖中全部的記錄。,SELECT * FROM 數(shù)據(jù)庫成績,使用視圖,2.通過視圖修改數(shù)據(jù) 在使用視圖修改數(shù)據(jù)時,要注意下列一些事項(xiàng):,不能在一個語句中對多個基表使用數(shù)據(jù)修改語句。如果要修改由兩個或兩個以上基表得到的視圖,必須進(jìn)行多次修改,每次修改只能影響一個基表。 對于基表中需更新而又不允許空值的所有列,它們的值在 INSERT 語句或 DEFAULT 定義中指定。這將確保基表中所有需要值的列都可以獲取值。,不能修改那些通過計(jì)算得到結(jié)果的列。 在視圖定義中使用了 WITH CHECK OPTION 子句,則所有在視圖上執(zhí)行的數(shù)據(jù)修改語句都必須符合定義視圖的 SELECT 語句中所設(shè)定的條件。 在基表的列中修改的數(shù)據(jù)必須符合對這些列的約束條件,如是否為空、約束、DEFAULT 定義等。,使用視圖,使用視圖,例:向“數(shù)據(jù)庫成績”視圖中插入一條新的選課記錄。 學(xué)號為0008, 課程號為001,成績?yōu)?0 。,INSERT INTO 數(shù)據(jù)庫成績 VALUES(0008, 001,90) GO,使用視圖,例:將“數(shù)據(jù)庫成績”視圖中學(xué)生0003的成績提高10%。,UPDATE 數(shù)據(jù)庫成績 SET SCORE=SCORE*1.1 WHERE SNO=0003,INSERT INTO 學(xué)生名單 VALUES (0011,孟歡),使用視圖,例:向?qū)W生名單視圖中插入一條新

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論