九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
創(chuàng)建數(shù)據(jù)庫
     
   1. 創(chuàng)建表:
  在SQL Server中,可以使用SQL語句或SQL企業(yè)管理器來創(chuàng)建數(shù)據(jù)庫表。在創(chuàng)建表的時(shí)候最主要的工作是定義各列的數(shù)據(jù)類型及約束。
 (1) 用企業(yè)管理器創(chuàng)建表。
  展開企業(yè)管理器上的數(shù)據(jù)庫節(jié)點(diǎn),從中選擇一個(gè)要建立表的數(shù)據(jù)庫,在鼠標(biāo)右鍵單擊出來的快捷菜單中選擇"新建",子菜單,選擇"表"命令。如圖4-11。

  
圖4-11


  彈出窗口如圖4-12。

  
圖4-12


  在該窗口中,對(duì)表的內(nèi)容進(jìn)行定義:
  指定列名:在創(chuàng)建一個(gè)新列的時(shí)候,首先輸入列名,列名在表中必須唯一,列的命名遵守SQL Server的數(shù)據(jù)庫對(duì)象命名規(guī)則。
  指定數(shù)據(jù)類型:接下來選擇該列的數(shù)據(jù)類型,這里有不同的數(shù)據(jù)類型,包括你創(chuàng)建的用戶定義的數(shù)據(jù)類型,顯示在"數(shù)據(jù)類型"下拉清單對(duì)話框中。其長(zhǎng)度取決于你選擇的數(shù)據(jù)類型。當(dāng)然有些數(shù)據(jù)類型的長(zhǎng)度,如char,可以進(jìn)行改變。
  指定其他特性:在指定完某一列的數(shù)據(jù)類型之后,可以為每種數(shù)據(jù)類型指定附加特性--數(shù)據(jù)的長(zhǎng)度和是否允許空等。如果一列允許空,則在輸入數(shù)據(jù)的時(shí)候,可以省略輸入該列的值。若定義了一列不允許空,則在輸入數(shù)據(jù)的時(shí)候,必須輸入該列的值??梢哉f,允許空實(shí)際上提供了一種數(shù)據(jù)的校驗(yàn)。
  對(duì)于INT,SMALLINT,TINYINT,NUMERIC(P,0)等數(shù)據(jù)類型可以指定為標(biāo)識(shí)列(identity)特性。當(dāng)用identity特性定義一個(gè)列,可以指定該列初始值和每次添加的增量。在往表中增加元組的時(shí)候,系統(tǒng)自動(dòng)為該列賦值,第一行使用初始值,以后每一行增加增量。如果這一列允許為空,則不能指定為identity特性。
  設(shè)置主鍵:選擇要建立主鍵的列,單擊鼠標(biāo)右鍵,選擇"設(shè)置主鍵"即可。

  關(guān)閉和保存新建的表時(shí),系統(tǒng)會(huì)彈出對(duì)話框讓你輸入該表的名稱,如圖4-13

圖4-13


 (2) 用SQL語句創(chuàng)建表:
  使用SQL創(chuàng)建表的語法如下:
   CREATE TABLE 表名
   ( <列名><數(shù)據(jù)類型> [<列級(jí)完整性約束條件>]
   [,<列名><數(shù)據(jù)類型> [<列級(jí)完整性約束條件>]]… [,取唯一值的列(列名[,列名]….)]
   [,關(guān)鍵字列(列名[,列名]…)]
   [,外部關(guān)鍵字列 (列名[,列名]…)
   引用的外部表名(列名[,列名]…)]
   [,< 表級(jí)完整性約束條件 >] );

   CREATE TABLE 表名
   (
   列名 數(shù)據(jù)類型[缺省值][NOT NULL]
   [,列名 數(shù)據(jù)類型[缺省值][NOT NULL]]….
   [,UNIQUE(列名[,列名]….)]
   [,PRIMARY KEY(列名[,列名]…)]
   [,F(xiàn)OREIGN KEY (列名[,列名]…)REFERENCES 表名(列名[,列名]…)]
   [,CKECK (條件)]
   )
  參數(shù)說明:缺省值(DEFAULT):指定列的缺省值;
  NOT NULL:列值不能為空值;
  UNIQUE:取值唯一的列名;
  PRIMARY KEY:主關(guān)鍵字(主碼)列名;
  FOREIGN KEY:外部碼列名;
  REFERENCES:引用的外部碼的表名和列名
  CKECK :指定表級(jí)約束條件。

 例1,定義一個(gè)表DEPT,包括4列。其中deptno為主鍵。
 CREATE TABLE DEPT( deptno CHAR(8) NOT NULL,
 Deptname CHAR(20) NOT NULL,
 Deptphno CHAR(12),
 Deptadd CHAR(40)
 PRINARY KEY (deptno)
 )

 例2,定義表student,包括5列,其中sno為主鍵,sclass為外鍵碼,sclass為表classname的主鍵。Ppt37CREATE TABLE student( sno CHAR(8) NOT NULL,
  Sname CHAR(20) NOT NULL,
  Ssex CHAR(1),
  Sage INT,
  Sclass CHAR(8)
  PRINARY KEY (sno)FOREIGN KEY(sclass)
  REFERENCES class(classname)
  )

 例3,產(chǎn)生表student,與例2基本相同,但需要通過check約束學(xué)生年齡大于等于14歲,如下定義。ppt38CREATE TABLE student( sno CHAR(8) NOT NULL,
  Sname CHAR(20) NOT NULL,
  Ssex CHAR(1),
  Sage INT CHECK (sage >= 14),
  Sclass CHAR(8)
  PRINARY KEY (sno)FOREIGN KEY(sclass)
  REFERENCES class(classname)
  )

 例4,產(chǎn)生表couse,設(shè)計(jì)要求:開課系必須是已有的系,授課教師必須是本校的教師。CREATE TABLE couse
  (cno CHAR(6) NOT NULL,
  cname CHAR(20) NOT NULL,
  credit INT,
  cdept CHAR(8),
  ctno CHAR(8)
  )
 注意:例4產(chǎn)生的表不能滿足設(shè)計(jì)要求,必須對(duì)該表進(jìn)行修改,增加約束外部關(guān)鍵字約束說明,滿足設(shè)計(jì)要求。

 (3). 在查詢分析器中使用SQL語句建表如圖4-14。

圖4-14

     
   1. 索引的創(chuàng)建:
  在SQL Server中,可以用企業(yè)管理器或用SQL語句完成索引的創(chuàng)建。
 (1) 使用企業(yè)管理器創(chuàng)建索引:
  在設(shè)計(jì)表格的時(shí)候,選擇列的快捷菜單"屬性",切換到"屬性"頁對(duì)表格的索引進(jìn)行添加。如圖4-19,在表student1為列sno中添加簇集索引IX_TABLE1。

  
圖4-19


 (2) 使用SQL語句創(chuàng)建索引
  語法格式如下:
   CREATE [UNIQUE] [CLUSTER|NONCLUSTERED] INDEX index_name
   ON table_name(column_name[ASC/DISC]
   [,column_name[ASC/DISC]]….])
  參數(shù)說明:
   UNIQUE:表示創(chuàng)建的索引是唯一索引,每個(gè)索引只對(duì)應(yīng)一個(gè)元組值。
   CLUSTERED:表示創(chuàng)建的索引是簇集索引。
   NONCLUSTERED:表示創(chuàng)建的索引是非簇集索引。
   Index_name:創(chuàng)建的索引名。
   Table_name:創(chuàng)建索引所在的表名。
   Column_name:創(chuàng)建索引使用的列名。由ntext、text或image數(shù)據(jù)類型組成的列不能指定為索引列。
   ASC|DESC:確定具體某個(gè)索引列的升序或降序排列。默認(rèn)設(shè)置為ASC。
 例1,為TEACHER表建立唯一索引tnamex,升序排列。不管教師是否有重名,每個(gè)索引值只對(duì)應(yīng)一個(gè)教師名字。
  CREATE UNIQUE INDEX tnamex ON TEACHER(tname)

 例2,在SC表上按學(xué)號(hào)sno建立聚集索引scinx。
  CREATE CLUSTER INDEX scinx ON SC(sno)
 在選課表中建立聚集索引scinx之后,同一個(gè)學(xué)生的所有選課成績(jī)記錄物理地排在一起。所以,查詢某個(gè)學(xué)生的學(xué)習(xí)成績(jī)或打印某個(gè)學(xué)生的成績(jī)單速度就比較快。如表4-3。

  表4-3
例3:為student表建立索引,NONCLUSTERED為隱含值,可以省略。
    CREATE NONCLUSTERED INDEX stu_index ON student(sname)

 (3) 在兩個(gè)或更多屬性上建立索引:
  假如查詢經(jīng)常涉及到多個(gè)列值的檢索條件,可在一個(gè)關(guān)系表上建立多個(gè)屬性的索引,提高查詢效率。否則會(huì)降低查詢效率。
  例如,選課關(guān)系sc,主碼(sno, cno),經(jīng)常查詢某學(xué)號(hào)的同學(xué)選修某課程的成績(jī)。為兩個(gè)屬性建立索引的語句如下:
   CREATE INDEX Scidx ON sc(sno, cno);

 (4) 使用索引的原則:
   要不要建索引以及如何建索引,當(dāng)屬于內(nèi)模式的概念,這是數(shù)據(jù)庫設(shè)計(jì)中一個(gè)很重要的問題。設(shè)計(jì)人員要仔細(xì)考慮實(shí)際應(yīng)用中修改與查詢的頻率,權(quán)衡建索引的利弊。例如,若一關(guān)系的經(jīng)常性操作是數(shù)據(jù)的修改,則不宜建索引。但有些修改語句可能包含著查詢操作。
  一般來說,建索引有幾項(xiàng)參考原則:
 ● 值得建索引:記錄有一定規(guī)模,而查詢只局限于少數(shù)記錄。
 ● 索引用得上:索引列在where子句中應(yīng)頻繁使用。先裝數(shù)據(jù),后建索引:對(duì)于大多數(shù)基本表,總是有一批初始數(shù)據(jù)需要裝入。該原則是說,建立關(guān)系后,先將這些初始數(shù)據(jù)裝入基表,然后再建索引,這樣可加快初始數(shù)據(jù)的錄入。如果建表時(shí)就建索引,那么在輸入初始數(shù)據(jù)時(shí),每插入一個(gè)記錄都要維護(hù)一次索引。當(dāng)然,索引早建晚建都是允許的。
 ● 在下列三種情況下,有必要建立簇索引:
 (1)查詢語句中采用該字段作為排序列
  例如,我們經(jīng)常執(zhí)行下列語句:
   SELECT * FROM authors ORDER BY au_id
  這時(shí)候有必要考慮在該表格上建立以au_id為關(guān)鍵字的簇索引。
   CRATE CLUSTERED INDEX au_index On authors (au_id)

 (2)需要返回局部范圍的大量數(shù)據(jù)
  例如,我們要做如下的查詢:
   SELECT * FROM authors
   WHERE zip BETWEEN 94618 AND 96214
  這時(shí)就有必要在zip列上建立簇索引。
   CRATE CLUSTERED INDEX zip_index On authors (zip)

 (3)表格中某字段內(nèi)容的重復(fù)性比較大例如,student表中dno(系號(hào))一列有大量重復(fù)數(shù)據(jù),當(dāng)在dno列上建立了簇索引后,下面的連接查詢速度會(huì)加快。
   SELECT * FROM student,dept
   WHERE student.dno=dept.dno
  對(duì)以上情況,建立簇索引會(huì)提高訪問數(shù)據(jù)庫的效率。建立簇索引的語句如下:
   CRATE CLUSTERED INDEX dept_index On student(dep_id)
  注意:當(dāng)在同一表格中建立簇索引和非簇索引時(shí),先建立簇索引后建非簇索引比較好。因?yàn)槿缦冉ǚ谴厮饕脑挘?dāng)建立簇索引時(shí),SQL Server會(huì)自動(dòng)將非簇索引刪除,然后重新建立非簇索引。每個(gè)表僅可以有一個(gè)簇索引,最多可以有249個(gè)非簇索引。它們均允許以一個(gè)或多個(gè)字段作為索引關(guān)鍵字(Index Key),但最多只能有16個(gè)字段。
  SQL Server只對(duì)那些能加快數(shù)據(jù)查詢速度的索引才能被選用。如果利用索引檢索還不如順序掃描速度快,SQL Server仍用掃描方法檢索數(shù)據(jù)。建立不能被采用的索引只會(huì)增加系統(tǒng)的負(fù)擔(dān),降低檢索速度。因此,可利用性是建立索引的首要條件。
 
 

     
   2. 修改索引
  用ALTER INDEX可以將一個(gè)聚集索引改為一個(gè)非聚集索引,或?qū)⒖梢詫⒁粋€(gè)非聚集索引改為一個(gè)聚集索引。缺省為非聚集索引。
  修改索引語句格式: ALTER INDEX 索引名 TO [NOT]CLUSTER
 例1,把tnamex改為一個(gè)聚集索引,該表的元組的物理位置要從新排列,原有的非聚集索引需要全部刪除,而后重建。
   ALTER INDEX tnamex TO CLUSTER

 例2,把scinx改為一個(gè)非聚集索引
   ALTER INDEX scinx TO NOT CLUSTER
 這里只介紹用SQL語句修改索引,使用企業(yè)管理器修改索引與添加索引大致相同,在此不再贅述。

 3.刪除索引: 
  刪除索引的語句格式:
   DROP INDEX table_name. index_name
  參數(shù)說明:
   Table_name:要?jiǎng)h除索引所在的表。
   Index_name:要?jiǎng)h除索引的名稱。

  例如:將teacher表中的索引tnamex刪除:
   DROP INDEX teacher.tnamex
  執(zhí)行 DROP INDEX 后,將重新獲得以前由索引占用的空間。此后可將該空間用于任何數(shù)據(jù)庫對(duì)象。

 使用索引的一點(diǎn)說明:
 (1) 使用SQL語言,用戶可以隨時(shí)在基本表上建立索引、增加新索引、刪除索引。用戶根據(jù)具體應(yīng)用環(huán)境需要的情況,可動(dòng)態(tài)地調(diào)整索引結(jié)構(gòu),達(dá)到較高的查詢性能。
 (2) 用戶只能建立、修改和刪除索引,不能在數(shù)據(jù)操作中引用索引,在數(shù)據(jù)操作執(zhí)行中如何使用索引完全由系統(tǒng)決定。從而保證了增加和刪除索引時(shí)不必修改應(yīng)用程序,支持?jǐn)?shù)據(jù)的物理獨(dú)立性。
 (3)不能用DROP INDEX刪除在系統(tǒng)表上的索引。
 (4) 若要?jiǎng)h除為實(shí)現(xiàn) PRIMARY KEY 或 UNIQUE 約束而創(chuàng)建的索引,必須先除去約束,因?yàn)樵S多DBMS系統(tǒng)自動(dòng)為PRIMARY KEY和UNIQUE屬性列建立索引。
 (5) 只有表的所有者和sysadmin有權(quán)刪除表的索引。

 

 

 
     
   2. 修改表
  SQL語言提供對(duì)設(shè)計(jì)好的表進(jìn)行補(bǔ)充和修改的功能,包括增加,修改和刪除某些列等。在SQL Server中,可以使用SQL語句或SQL企業(yè)管理器來修改數(shù)據(jù)庫表。
 (1) 使用企業(yè)管理器修改表格。
  從樹形結(jié)構(gòu)展開要修改定義的表所在數(shù)據(jù)庫,并選中該數(shù)據(jù)庫節(jié)點(diǎn)下面的表節(jié)點(diǎn),在企業(yè)管理器右側(cè)顯示出該數(shù)據(jù)庫下全部表格。選擇要修改的表,單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇"設(shè)計(jì)表"命令,其余操作和最初建立表格時(shí)一樣,如圖4-15。

  
圖4-15

 (2) 使用SQL語句修改表
  使用SQL語句,可以在更大范圍修改表格。包括增加、刪除、修改列定義或完整性約束條件,其格式:
   ALTER TABLE 表名
   [ADD子句]          增加新的列定義或列說明
   [ALTER COLUMN子句]     修改表中列定義或列說明
   [DROP子句]         刪除表中的列或列說明
   [ADD CONSTRAINT子句]    增加約束
   
[DROP CONSTRAINT子句]    刪除約束

 例1,修改表COUSE。上面的例4產(chǎn)生的表不能滿足設(shè)計(jì)要求,必須對(duì)該表進(jìn)行修改,增加約束外部關(guān)鍵字約束說明,滿足設(shè)計(jì)要求,語句如下: ALTER TABLE COUSE
  ADD FOREIGN KEY (cdept) REFERENCES DEPT [deptno]
  ADD FOREIGN KEY (ctno) REFERENCES TEACHER [tno]

 例2,修改學(xué)生的年齡為出生日期(日期類型)。
  ALTER TABLE STUDENT
  ALTER COLUMN sage DATETIME

 例3:增加學(xué)生的電話屬性:
  ALTER TABLE STUDENT
  ADD sphno CHAR(12)
 例4,增加學(xué)生的國(guó)家屬性
  ALTER TABLE STUDENT
  ADD country CHAR(30)

 (3) 在查詢分析器中修改表,修改結(jié)果如圖4-16。

  圖4-16

     
   ③用T-SQL語句創(chuàng)建數(shù)據(jù)庫:
  用T-SQL語句創(chuàng)建數(shù)據(jù)庫,可以在程序中使用,或在查詢分析器中使用。語法格式如下:
   CREATE DATABASE database_name
    [ ON [PRIMARY]
    [ <filespec>[,…n] ][, <filegroup>[,…n] ] ][ LOG ON { <filespec> [,…n] } ]
    [ FOR LOAD ∣ FOR ATTACH ]

   <filespec>:: = (
    [ NAME = logical_file_name,]
    FILENAME = 'os_file_name'
    [,SIZE = size]
    [,MAXSIZE = {max_size|UNLIMITED}]
    [,FILEGROWTH = growth_increment]) [,…n]

   <filegroup>:: =
    FILEGROUP filegroup_name <filespec>[,…n]

  參數(shù)說明:
 · database_name
  新建數(shù)據(jù)庫的名稱。數(shù)據(jù)庫名稱在服務(wù)器中必須唯一,并且符合標(biāo)識(shí)符的規(guī)則。database_name最多可以包含128個(gè)字符。如果沒有指定日志文件的邏輯名,則SQL Server會(huì)通過向 database_name追加后綴來生成邏輯名。該操作要求database_name在123個(gè)字符之內(nèi),以便生成的日志文件邏輯名少于128個(gè)字符。
 · ON
  顯式定義用來存儲(chǔ)數(shù)據(jù)庫數(shù)據(jù)部分的數(shù)據(jù)文件。該關(guān)鍵字后跟以逗號(hào)分隔的 <filespec> 項(xiàng)列表,<filespec> 項(xiàng)用以定義主文件組的數(shù)據(jù)文件。主文件組的文件列表后可跟以逗號(hào)分隔的 <filegroup> 項(xiàng)列表,<filegroup> 項(xiàng)用以定義用戶文件組及其文件。
 · LOG ON
  顯式定義用來存儲(chǔ)數(shù)據(jù)庫日志的磁盤文件(日志文件)。該關(guān)鍵字后跟以逗號(hào)分隔的 <filespec> 項(xiàng)列表,<filespec> 項(xiàng)用以定義日志文件。如果沒有指定 LOG ON,將自動(dòng)創(chuàng)建一個(gè)日志文件,它使用系統(tǒng)生成的名稱,大小為數(shù)據(jù)庫中所有數(shù)據(jù)文件總大小的25%。
 · FOR LOAD
  支持該子句是為了與早期版本的 SQL Server 兼容。表示將備份數(shù)據(jù)直接裝入新建的數(shù)據(jù)庫。但從SQL Server7.0開始就可以使用RESTORE語句完成相同的功能。
 · FOR ATTACH
  指定從現(xiàn)有的一組操作系統(tǒng)文件中建立數(shù)據(jù)庫。必須有指定第一個(gè)主文件的 <filespec> 條目。
 · PRIMARY
  定義數(shù)據(jù)庫的主數(shù)據(jù)文件。相應(yīng)<filespec>列表的第一個(gè)<filespec>條目成為主數(shù)據(jù)文件,該文件包含數(shù)據(jù)庫的邏輯起點(diǎn)及其系統(tǒng)表。一個(gè)數(shù)據(jù)庫只能有一個(gè)主數(shù)據(jù)文件。如果沒有指定PRIMARY,那么CREATE DATABASE語句中列出的第一個(gè)文件將成為主數(shù)據(jù)文件。
 · NAME
  為由<filespec>定義的文件指定邏輯名稱。如果指定了FOR ATTACH,則不需要指定 NAME參數(shù)。
 · logical_file_name
  用來在創(chuàng)建數(shù)據(jù)庫后執(zhí)行的 Transact-SQL 語句中引用文件的名稱。logical_file_name 在數(shù)據(jù)庫中必須唯一,并且符合標(biāo)識(shí)符的規(guī)則。
 · FILENAME
  為 <filespec> 定義的文件指定操作系統(tǒng)文件名。
 · 'os_file_name'
  操作系統(tǒng)創(chuàng)建 <filespec> 定義的物理文件時(shí)使用的路徑名和文件名。os_file_name 中的路徑必須指定 SQL Server 實(shí)例上的目錄。os_file_name 不能指定壓縮文件系統(tǒng)中的目錄。
  如果文件在原始分區(qū)上創(chuàng)建,則 os_file_name 必須只指定現(xiàn)有原始分區(qū)的驅(qū)動(dòng)器字母。每個(gè)原始分區(qū)上只能創(chuàng)建一個(gè)文件。原始分區(qū)上的文件不會(huì)自動(dòng)增長(zhǎng);因此,os_file_name 指定原始分區(qū)時(shí),不需要指定 MAXSIZE 和 FILEGROWTH 參數(shù)。
 · SIZE
  指定<filespec>中定義的文件的大小。如果主文件的<filespec>中沒有提供SIZE參數(shù),那么SQL Server將使用model數(shù)據(jù)庫中的主文件大小。如果輔助文件或日志文件的 <filespec>中沒有指定SIZE參數(shù),則SQL Server將使文件大小為1MB。
 · size
  <filespec> 中定義的文件的初始大小。可以使用千字節(jié) (KB)、兆字節(jié) (MB)、千兆字節(jié) (GB) 或兆兆字節(jié) (TB) 后綴。默認(rèn)值為 MB。指定一個(gè)整數(shù),不要包含小數(shù)位。size 的最小值為 512 KB。如果沒有指定 size,則默認(rèn)值為 1 MB。為主文件指定的大小至少應(yīng)與 model 數(shù)據(jù)庫的主文件大小相同。
 · MAXSIZE
  指定 <filespec> 中定義的文件可以增長(zhǎng)到的最大大小。
 · max_size
  <filespec> 中定義的文件可以增長(zhǎng)到的最大大小??梢允褂们ё止?jié) (KB)、兆字節(jié) (MB)、千兆字節(jié) (GB) 或兆兆字節(jié) (TB) 后綴。默認(rèn)值為 MB。指定一個(gè)整數(shù),不要包含小數(shù)位。如果沒有指定 max_size,那么文件將增長(zhǎng)到磁盤變滿為止。

  說明:在磁盤即將變滿時(shí),Windows NT 系統(tǒng)日志會(huì)警告 SQL Server 系統(tǒng)管理員。
 · UNLIMITED
  指定 <filespec> 中定義的文件將增長(zhǎng)到磁盤變滿為止。
 · FILEGROWTH
  指定 <filespec> 中定義的文件的增長(zhǎng)增量。文件的 FILEGROWTH 設(shè)置不能超過 MAXSIZE 設(shè)置。
 · growth_increment
  每次需要新的空間時(shí)為文件添加的空間大小。指定一個(gè)整數(shù),不要包含小數(shù)位。0 值表示不增長(zhǎng)。該值可以 MB、KB、GB、TB 或百分比 (%) 為單位指定。如果未在數(shù)量后面指定 MB、KB 或 %,則默認(rèn)值為 MB。如果指定 %,則增量大小為發(fā)生增長(zhǎng)時(shí)文件大小的指定百分比。如果沒有指定 FILEGROWTH,則默認(rèn)值為1MB;
例1,在查詢分析器中創(chuàng)建數(shù)據(jù)庫示例如圖4-6,其中相應(yīng)的c:\mssql\data目錄一定要事先存在。創(chuàng)建數(shù)據(jù)庫的T-SQL語句如下: 
 CREATE DATABASE my_libraryON PRIMARY( --數(shù)據(jù)主文件
 NAME = my_library_data, --邏輯文件名
 FILENAME ='c:\mssql\data\my_library.mdf', --數(shù)據(jù)主文件存儲(chǔ)路徑,操作系統(tǒng)文件名
 SIZE = 10 MB, --10 MB的主要數(shù)據(jù)庫文件
 MAXSIZE = 15 MB, --最大容量15MB
 FILEGROWTH = 20 % ) --當(dāng)主數(shù)據(jù)文件滿了,自動(dòng)增大20%的容量
 LOG ON( --日志文件
 NAME = my_library_log, --日志文件邏輯文件名
 FILENAME ='c:\mssql\data\my_library.ldf',
       --日志文件存儲(chǔ)路徑,操作系統(tǒng)文件名
 SIZE = 3 MB , --3MB的日志文件
 MAXSIZE = 5 MB , --最大容量5MB
 FILEGROWTH = 1 MB ) --當(dāng)日志文件滿了,自動(dòng)增大1MB。

  圖4-6 創(chuàng)建數(shù)據(jù)庫

 

     
    在SQL中,最常用的向表格中添加數(shù)據(jù)的方法是使用INSERT語句。但是,用INSERT語句每次只能插入一個(gè)元組。用帶子查詢插入語句,一個(gè)次可以插入一個(gè)或多個(gè)元組。
 ● 插入一個(gè)元組的語句格式:
   INSERT INTO 表名[(列名[,列名]…)]
   VALUES(值[,值]…..)
  插入單個(gè)元組,按順序在表名后給出表中每個(gè)列名,在VALUES后給出對(duì)應(yīng)的每個(gè)列值。插入一個(gè)完整的新元組時(shí),可省略表的列名。插入部分列值,必須在表名后給出要輸入值的列名。
 例1,插入單個(gè)元組,按順序給出表中每個(gè)列值。
  INSERT INTO DEPT VALUES( "CS","計(jì)算機(jī)","888", "10區(qū)" )

 例2,插入一個(gè)學(xué)生的部分列值,必須在表名后給出要輸入值的列名。
  INSERT INTO STUDENT (sno ,sname)
  VALUES( "J20045", "劉琉")

  在使用INSERT語句的時(shí)候,VALUES列表中的值或表達(dá)式必須匹配表中的列數(shù),并和相應(yīng)各列數(shù)據(jù)類型兼容。如果表格中存在某些列定義為NOT NULL,那么在插入時(shí)該列必須要出現(xiàn)在VALUES的列表中,否則插入會(huì)失敗。

 ● 用子查詢插入多個(gè)元組值的語句格式:
   INSERT INTO 表名[(列名[,列名]…)]
  子查詢
  注意:在使用子查詢的結(jié)果插入元組時(shí),子查詢的結(jié)果必須匹配待插入表中的列數(shù),并和相應(yīng)各列數(shù)據(jù)類型兼容。如果表格中存在某些列定義為NOT NULL,那么子查詢的結(jié)果在該列上必須有值,否則插入會(huì)失敗。
 例3,建立一個(gè)新表,存放每個(gè)學(xué)生的學(xué)號(hào)、姓名和平均成績(jī)。把子查詢結(jié)果插入新表中。
  CREATE TABLE savg( sno CHAR(8),sname CHAR(20), avage REAL )
  INSERT INTO savg (sno,sname,avage)
  ( SELECT sno,sname,AVG(grade)
  FROM SC,STUDENT
  WHERE SC.sno = STUDENT.sno
  GROUP BY sno )

 例4,在表Studio中插入屬性name,這些name是在表Movie中提到,但沒有在表Studio中出現(xiàn)的studioName。
  INSERT INTO Studio(name)
  SELECT DISTINCT studioName
  FROM Movie
  WHERE studioName NOT IN
  (SELECT name FROM Studio);

  考慮上述例子如果去掉DISTINCT會(huì)是什么樣子?和你想象的一樣嗎?
     
    在SQL中,最常用的向表格中添加數(shù)據(jù)的方法是使用INSERT語句。但是,用INSERT語句每次只能插入一個(gè)元組。用帶子查詢插入語句,一個(gè)次可以插入一個(gè)或多個(gè)元組。
 ● 插入一個(gè)元組的語句格式:
   INSERT INTO 表名[(列名[,列名]…)]
   VALUES(值[,值]…..)
  插入單個(gè)元組,按順序在表名后給出表中每個(gè)列名,在VALUES后給出對(duì)應(yīng)的每個(gè)列值。插入一個(gè)完整的新元組時(shí),可省略表的列名。插入部分列值,必須在表名后給出要輸入值的列名。
 例1,插入單個(gè)元組,按順序給出表中每個(gè)列值。
  INSERT INTO DEPT VALUES( "CS","計(jì)算機(jī)","888", "10區(qū)" )

 例2,插入一個(gè)學(xué)生的部分列值,必須在表名后給出要輸入值的列名。
  INSERT INTO STUDENT (sno ,sname)
  VALUES( "J20045", "劉琉")

  在使用INSERT語句的時(shí)候,VALUES列表中的值或表達(dá)式必須匹配表中的列數(shù),并和相應(yīng)各列數(shù)據(jù)類型兼容。如果表格中存在某些列定義為NOT NULL,那么在插入時(shí)該列必須要出現(xiàn)在VALUES的列表中,否則插入會(huì)失敗。

 ● 用子查詢插入多個(gè)元組值的語句格式:
   INSERT INTO 表名[(列名[,列名]…)]
  子查詢
  注意:在使用子查詢的結(jié)果插入元組時(shí),子查詢的結(jié)果必須匹配待插入表中的列數(shù),并和相應(yīng)各列數(shù)據(jù)類型兼容。如果表格中存在某些列定義為NOT NULL,那么子查詢的結(jié)果在該列上必須有值,否則插入會(huì)失敗。
 例3,建立一個(gè)新表,存放每個(gè)學(xué)生的學(xué)號(hào)、姓名和平均成績(jī)。把子查詢結(jié)果插入新表中。
  CREATE TABLE savg( sno CHAR(8),sname CHAR(20), avage REAL )
  INSERT INTO savg (sno,sname,avage)
  ( SELECT sno,sname,AVG(grade)
  FROM SC,STUDENT
  WHERE SC.sno = STUDENT.sno
  GROUP BY sno )

 例4,在表Studio中插入屬性name,這些name是在表Movie中提到,但沒有在表Studio中出現(xiàn)的studioName。
  INSERT INTO Studio(name)
  SELECT DISTINCT studioName
  FROM Movie
  WHERE studioName NOT IN
  (SELECT name FROM Studio);

  考慮上述例子如果去掉DISTINCT會(huì)是什么樣子?和你想象的一樣嗎?
 
     
    DELETE 語句從表中刪除一個(gè)或多個(gè)滿足條件的元組。語句格式:
  DELETE FROM 表名 [WHERE 條件表達(dá)式]
  WHERE子句中的條件表達(dá)式給出被刪除元組應(yīng)滿足的條件;若不寫WHERE子句,表示刪除表中的所有元組,但表的定義仍存在。
 例1,只涉及單個(gè)元組,從數(shù)據(jù)庫中刪除某個(gè)學(xué)生李楷:
   DELETE FROM STUDENT
   WHERE sname = "李楷"

 例2,刪除操作涉及多個(gè)元組,從數(shù)據(jù)庫中刪除某門課程的所有元組:
   DELETE FROM SC
   WHERE cno = "E001"
 
 
 

 
 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
有實(shí)例分析的查詢優(yōu)化課件
數(shù)據(jù)庫操作語言SQL數(shù)據(jù)處理的增、查、刪、改
5-2
【ODBC】ODBC連接數(shù)據(jù)庫詳細(xì)說明
第7章 存儲(chǔ)過程、觸發(fā)器和用戶定義函數(shù)
SQL Server表的創(chuàng)建及索引的控制
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服