第5章創(chuàng)建和管理表_第1頁
第5章創(chuàng)建和管理表_第2頁
第5章創(chuàng)建和管理表_第3頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 表是包含數(shù)據(jù)庫中所有數(shù)據(jù)的數(shù)據(jù)庫對象,用來存表是包含數(shù)據(jù)庫中所有數(shù)據(jù)的數(shù)據(jù)庫對象,用來存儲各種各樣的信息。儲各種各樣的信息。 在在SQL Server 2000SQL Server 2000中,一個數(shù)據(jù)庫中最多可以創(chuàng)中,一個數(shù)據(jù)庫中最多可以創(chuàng)立立200200萬個表,用戶創(chuàng)立數(shù)據(jù)庫表時,最多可以定萬個表,用戶創(chuàng)立數(shù)據(jù)庫表時,最多可以定義義10241024列列, ,每行最多每行最多80608060字節(jié)。在同一數(shù)據(jù)庫的不字節(jié)。在同一數(shù)據(jù)庫的不同表中,可以有相同的字段,但在同一個表中不允同表中,可以有相同的字段,但在同一個表中不允許有相同的字段,而且每個字段都要求數(shù)據(jù)類型相許有相同的字段,而且每個字

2、段都要求數(shù)據(jù)類型相同。同。 在創(chuàng)立表之前,需要定義表中的列字在創(chuàng)立表之前,需要定義表中的列字段的名稱,同時還需要定義每列的數(shù)段的名稱,同時還需要定義每列的數(shù)據(jù)類型和寬度。數(shù)據(jù)類型指定了在每列據(jù)類型和寬度。數(shù)據(jù)類型指定了在每列中存儲的數(shù)據(jù)的類型,例如文本、數(shù)字、中存儲的數(shù)據(jù)的類型,例如文本、數(shù)字、日期等等。寬度指定了可以向列中輸入日期等等。寬度指定了可以向列中輸入多少個字符或數(shù)字,也可以使用用戶自多少個字符或數(shù)字,也可以使用用戶自定義型數(shù)據(jù)。除此之外,還需要設定表定義型數(shù)據(jù)。除此之外,還需要設定表中列是否允許為空,是否有缺省值,是中列是否允許為空,是否有缺省值,是否設置為標識列。否設置為標識列。

3、一、語法格式:一、語法格式: CREATE TABLE CREATE TABLE 表名表名( ( 列名列名 數(shù)據(jù)類型和寬度數(shù)據(jù)類型和寬度 NULL|NOT NULL| NULL|NOT NULL| ,n ,n ) ) 1. 幾個與表結(jié)構設計相關的概念幾個與表結(jié)構設計相關的概念 NULL與與 NOT NULL 在數(shù)據(jù)庫中在數(shù)據(jù)庫中NULL是一個特殊值,表示數(shù)值未知。是一個特殊值,表示數(shù)值未知。 NULL不同于空字符或數(shù)字不同于空字符或數(shù)字0,也不同于零長度字符串。,也不同于零長度字符串。 比較兩個空值或?qū)⒖罩蹬c任何其它數(shù)值相比均返回未知,比較兩個空值或?qū)⒖罩蹬c任何其它數(shù)值相比均返回未知,這是因為

4、每個空值均為未知。空值通常表示未知、不可用這是因為每個空值均為未知??罩低ǔ1硎疚粗?、不可用或以后添加數(shù)據(jù)?;蛞院筇砑訑?shù)據(jù)。 如果某個列上的空值屬性為如果某個列上的空值屬性為NULL,表示接受空值;空值,表示接受空值;空值屬性為屬性為NOT NULL,表示拒絕空值。,表示拒絕空值。 在程序代碼中,要檢查空值以便只在具有有效或非空在程序代碼中,要檢查空值以便只在具有有效或非空數(shù)據(jù)的行上進行某些計算。執(zhí)行計算時消除空值很重要,數(shù)據(jù)的行上進行某些計算。執(zhí)行計算時消除空值很重要,因為如果包含空值列,某些計算如平均值會不準確。因為如果包含空值列,某些計算如平均值會不準確。假設要測試數(shù)據(jù)列中的空值,可在假

5、設要測試數(shù)據(jù)列中的空值,可在WHERE子句中使用子句中使用IS NULL 或或 IS NOT NULL。 注意:為了減少對已有查詢或報表的維護和可能的影響,注意:為了減少對已有查詢或報表的維護和可能的影響,建議盡量少使用空值。建議盡量少使用空值。 缺省值缺省值DEFAULT 缺省值表示在用戶未輸入數(shù)據(jù)時列的取值。缺省值表示在用戶未輸入數(shù)據(jù)時列的取值。 計算列計算列CALCULATED COLUMN 一個表的某些列的取值是由基于定義該列的表達式計算一個表的某些列的取值是由基于定義該列的表達式計算得到的。該列不是存儲數(shù)據(jù)的列,是表的虛擬列,該列得到的。該列不是存儲數(shù)據(jù)的列,是表的虛擬列,該列中的值

6、并未存儲在表中,而是在運行時經(jīng)過計算而得到中的值并未存儲在表中,而是在運行時經(jīng)過計算而得到的。的。 標識列標識列IDENTITY IDENTITY屬性使得某一列的取值是基于上一行的列值屬性使得某一列的取值是基于上一行的列值和為該列定義的步長自動生成的。和為該列定義的步長自動生成的。IDENTITY列的值可列的值可以唯一地標識表中的一行。以唯一地標識表中的一行。 定義一個定義一個IDENTITY列,必須給出一個種子值初始列,必須給出一個種子值初始值,一個步長值增量。在一個值,一個步長值增量。在一個IDENTITY列定義列定義后,每當向表中插入一行數(shù)據(jù)時,后,每當向表中插入一行數(shù)據(jù)時,IDENTI

7、TY列就會自列就會自動產(chǎn)生下一個值。在插入數(shù)據(jù)行的語句中,不應包含動產(chǎn)生下一個值。在插入數(shù)據(jù)行的語句中,不應包含IDENTITY列的值,該列的值由系統(tǒng)自動給出。列的值,該列的值由系統(tǒng)自動給出。 定義定義IDENTITY列時,應注意如下幾點:列時,應注意如下幾點: 每張表只允許有一個每張表只允許有一個IDENTITY列。列。 IDENTITY列不能被更新。列不能被更新。 IDENTITY列不允許有列不允許有NULL值。值。 IDENTITY列只能用于具有以下數(shù)據(jù)類列只能用于具有以下數(shù)據(jù)類型之一的列:型之一的列:INT、SMALLINT、TINYINT、NUMERIC(小數(shù)局部為小數(shù)局部為0)、D

8、ECIMAL小數(shù)局部為小數(shù)局部為0。例例1 創(chuàng)立學生表創(chuàng)立學生表 CREATE TABLE student ( sid int not null, name varchar(8) not null, sex char(2) not null, age smallint not null, endate datetime null, speciality varchar(16) null, address varchar(40) null )例例2 創(chuàng)立課程表創(chuàng)立課程表CREATE TABLE course ( cid smallint not null, course varchar(20)

9、not null, credit dec(4,1) null, teacher varchar(8) null ) 例例3 創(chuàng)立成績單表創(chuàng)立成績單表 CREATE TABLE report ( Sid int not null, cid smallint not null, result Numeric(5,1) not NULL ) 5.2 5.2 設置約束設置約束使用使用T-SQL語句設置約束語句設置約束 1設置主鍵約束設置主鍵約束語法格式:語法格式:CONSTRAINT 約束名稱約束名稱 PRIMARY KEY (字段名字段名 ,n) 例例4 4:創(chuàng)立課程表:創(chuàng)立課程表course2 c

10、ourse2 ,同時創(chuàng)立主鍵,同時創(chuàng)立主鍵CREATE TABLE course2 (CREATE TABLE course2 ( 課程號課程號 smallint NOT NULL PRIMARY smallint NOT NULL PRIMARY KEY,KEY, 課程名課程名 varchar(20) NOT NULL, varchar(20) NOT NULL, 學分學分 dec(4,1) NULL, dec(4,1) NULL, 任課教師任課教師 varchar(8) NULL varchar(8) NULL ) ) 例例5:創(chuàng)立成績單表:創(chuàng)立成績單表report2 ,同時創(chuàng)立組合主鍵,

11、同時創(chuàng)立組合主鍵 CREATE TABLE report2 ( 學號學號 int NOT NULL, 課程號課程號 smallint NOT NULL, 成績成績 numeric(5,1) NOT NULL, CONSTRAINT pk_cid_sid PRIMARY KEY(學學號號 ,課程號課程號 ) ) 2設置唯一性約束設置唯一性約束語法格式:語法格式:CONSTRAINT 約束名稱約束名稱UNIQUE (字段名字段名 ,n) 例例6:創(chuàng)立學生表:創(chuàng)立學生表student2 ,同時創(chuàng)立主鍵和唯一性約束。,同時創(chuàng)立主鍵和唯一性約束。 CREATE TABLE student2 ( 學號學號

12、 int NOT NULL PRIMARY KEY, 姓名姓名 varchar(8) NOT NULL UNIQUE, 性別性別 char(2) NOT NULL, 年齡年齡 smallint NOT NULL, 入學日期入學日期 datetime NULL, 所學專業(yè)所學專業(yè) varchar(16) NULL, 家庭住址家庭住址 varchar(40) NULL ) 例例7:創(chuàng)立創(chuàng)立report 3表表,同時創(chuàng)立組合主鍵及外鍵約束同時創(chuàng)立組合主鍵及外鍵約束. CREATE TABLE report3 ( 學號學號 int NOT NULL, 課程號課程號 smallint NOT NULL,

13、 成績成績 numeric(5,1) NOT NULL, CONSTRAINT pk_cid_sid PRIMARY KEY(學號學號 ,課程課程號號 ), CONSTRAINT FK_report foreign key(課程號課程號 ) REFERENCES course2 (課程號課程號 ) ) 例例8:創(chuàng)立學生表:創(chuàng)立學生表student3 ,同時創(chuàng)立主鍵和姓名列默認值,同時創(chuàng)立主鍵和姓名列默認值“無名的約束。無名的約束。 CREATE TABLE student3 ( 學號學號 int NOT NULL PRIMARY KEY, 姓名姓名 varchar(8) DEFAULT 無名無

14、名, 性別性別 char(2) NOT NULL, 年齡年齡 smallint NOT NULL, 入學日期入學日期 datetime NULL, 所學專業(yè)所學專業(yè) varchar(16) NULL, 家庭住址家庭住址 varchar(40) NULL ) 例例9:創(chuàng)立:創(chuàng)立report4及計算列總分。及計算列總分。 CREATE TABLE report4 ( 學號學號 int NOT NULL, 高數(shù)高數(shù) smallint NOT NULL, 英語英語 smallint NOT NULL, 數(shù)據(jù)庫數(shù)據(jù)庫 smallint NOT NULL, 總分總分 as (高數(shù)高數(shù)+英語英語+數(shù)據(jù)庫數(shù)據(jù)

15、庫)5.2 修改表結(jié)構的修改表結(jié)構的T-SQL命令命令 語法格式:語法格式: ALTER TABLE table ALTER COLUMN ALTER COLUMN 列名列名新的數(shù)據(jù)類型新的數(shù)據(jù)類型 |ADD ,n |DROP COLUMN 列名列名 ,n 說明:請參見教材說明:請參見教材P93頁頁例例1:刪除學生表:刪除學生表student姓名列姓名列ALTER TABLE studentDROP COLUMN name 例例2:增加學生表:增加學生表student姓名列姓名列ALTER TABLE student ADD name char(8) 一、一、INSERT語句的一般用法:語句的

16、一般用法: INSERT INTO 表名表名|視圖名視圖名列名列表列名列表 VALUES(數(shù)據(jù)值數(shù)據(jù)值)例:例:INSERT INTO course VALUES(1,數(shù)據(jù)結(jié)構數(shù)據(jù)結(jié)構,3.0,張老師張老師) 二、二、INSERTSELECT語句插入符合條件的語句插入符合條件的多行多行例:例:INSERT INTO report (sid) SELECT sid FROM student WHERE age18 三、插入局部數(shù)據(jù)三、插入局部數(shù)據(jù)1.在在INSERT子句中子句中,指定要插入數(shù)據(jù)指定要插入數(shù)據(jù)的列名。的列名。2.在在VALUES子句中,列出與列名對子句中,列出與列名對應的數(shù)據(jù),列名

17、的順序和數(shù)據(jù)的順應的數(shù)據(jù),列名的順序和數(shù)據(jù)的順序應該完全對應。序應該完全對應。3.在在INSERT子句中,沒有列出的列應子句中,沒有列出的列應該至少具有這四種類型之一:該至少具有這四種類型之一: 具有具有IDENTITY屬性;屬性; Timestamp數(shù)據(jù)類型;數(shù)據(jù)類型; 允許允許NULL; 或者有一個指定的默認值。否那么會出或者有一個指定的默認值。否那么會出現(xiàn)錯誤信息?,F(xiàn)錯誤信息。例:例:INSERT INTO course (cid,course,teacher) VALUES(3,Java程序設計程序設計,李老師李老師) 格式:格式: UPDATE 表名表名|視圖名視圖名 SET列名列名

18、=列值表達式列值表達式,n WHERE 子句子句例:將所有學分加例:將所有學分加1分分 UPDATE course set credit =credit+1 :DROP TABLE DROP TABLE course11檢索表中的全部信息,即全部列和全部行。檢索表中的全部信息,即全部列和全部行。Select * from student2使用使用select語句插入數(shù)據(jù)語句插入數(shù)據(jù) INSERT course1 Select * from course 需要給一個表建立每一個主鍵,方法是把光標置于需要給一個表建立每一個主鍵,方法是把光標置于要設定為主鍵的列名上,在工具欄中點擊要設定為主鍵的列名

19、上,在工具欄中點擊 按鈕,按鈕,就把當前列設置成了主鍵。就把當前列設置成了主鍵。 建立好了數(shù)據(jù)庫和表后,就可以把我們自己的數(shù)據(jù)建立好了數(shù)據(jù)庫和表后,就可以把我們自己的數(shù)據(jù)輸入到表中了,輸入數(shù)據(jù)到表中的方法很簡單,只輸入到表中了,輸入數(shù)據(jù)到表中的方法很簡單,只要翻開表就可以在其中輸入了,翻開表的方法是選要翻開表就可以在其中輸入了,翻開表的方法是選中要輸入數(shù)據(jù)的表,然后鼠標右鍵單擊,選擇中要輸入數(shù)據(jù)的表,然后鼠標右鍵單擊,選擇“翻翻開表菜單中的開表菜單中的“返回所有行或返回所有行或“返回首行,返回首行,就可以翻開表,然后只要用戶把光標置于第一個空就可以翻開表,然后只要用戶把光標置于第一個空白行就可

20、以添加數(shù)據(jù)了白行就可以添加數(shù)據(jù)了(如圖如圖b);或者用戶也可以在;或者用戶也可以在操作菜單中選擇操作菜單中選擇“翻開表菜單下的相應菜單項來翻開表菜單下的相應菜單項來翻開表。翻開表。 1分別對分別對 student、course、report表建立表建立主鍵。主鍵。見操作例如見操作例如2建立建立report表與表與student及及course的外鍵的外鍵連接連接見操作例如見操作例如見操作例如。見操作例如。 9、靜夜四無鄰,荒居舊業(yè)貧。4月-224月-22Thursday, April 21, 202210、雨中黃葉樹,燈下白頭人。16:04:2016:04:2016:044/21/2022 4

21、:04:20 PM11、以我獨沈久,愧君相見頻。4月-2216:04:2016:04Apr-2221-Apr-2212、故人江海別,幾度隔山川。16:04:2016:04:2016:04Thursday, April 21, 202213、乍見翻疑夢,相悲各問年。4月-224月-2216:04:2016:04:20April 21, 202214、他鄉(xiāng)生白發(fā),舊國見青山。21 四月 20224:04:20 下午16:04:204月-2215、比不了得就不比,得不到的就不要。四月 224:04 下午4月-2216:04April 21, 202216、行動出成果,工作出財富。2022/4/21

22、16:04:2016:04:2021 April 202217、做前,能夠環(huán)視四周;做時,你只能或者最好沿著以腳為起點的射線向前。4:04:20 下午4:04 下午16:04:204月-229、沒有失敗,只有暫時停止成功!。4月-224月-22Thursday, April 21, 202210、很多事情努力了未必有結(jié)果,但是不努力卻什么改變也沒有。16:04:2016:04:2016:044/21/2022 4:04:20 PM11、成功就是日復一日那一點點小小努力的積累。4月-2216:04:2016:04Apr-2221-Apr-2212、世間成事,不求其絕對圓滿,留一份缺乏,可得無限完美。16:04:2016:04:2016:04Thursday, April 21, 202213、不知香積寺,數(shù)里入云峰。4月-224月-2216:04:2116:04:21April 21, 202214、意志堅強的人能把世界放在手中像泥塊一樣任意揉捏。21 四月 20224:04:21 下午16:04:214月-2215、楚塞三湘接,荊門九派通。四月 224:04 下午4月-2216:04April 21, 202216、少年十五二十時,步行奪得胡馬騎。2022/4/21 16:04:2116:04:2121 April 202217

溫馨提示

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

最新文檔

評論

0/150

提交評論