SQL Server數(shù)據(jù)庫(kù)教程第4章 創(chuàng)建和使用表_第1頁(yè)
SQL Server數(shù)據(jù)庫(kù)教程第4章 創(chuàng)建和使用表_第2頁(yè)
SQL Server數(shù)據(jù)庫(kù)教程第4章 創(chuàng)建和使用表_第3頁(yè)
SQL Server數(shù)據(jù)庫(kù)教程第4章 創(chuàng)建和使用表_第4頁(yè)
SQL Server數(shù)據(jù)庫(kù)教程第4章 創(chuàng)建和使用表_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章創(chuàng)建和使用表4.1表的基本概念4.2以命令方式創(chuàng)建SQLServe表4.3以圖形界面方式創(chuàng)建SQLServe表4.4以命令方式操作SQLServe表數(shù)據(jù)4.5以圖形界面方式操作SQLServe表數(shù)據(jù)

1SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念4.1.1表和表結(jié)構(gòu)表是SQLServer中最基本的數(shù)據(jù)庫(kù)對(duì)象,用于存儲(chǔ)數(shù)據(jù)的一種邏輯結(jié)構(gòu),由行和列組成,它又稱為二維表。例如,在學(xué)生成績(jī)管理系統(tǒng)中的學(xué)生表(student),如表4.1所示。表4.1學(xué)生表(student)2學(xué)號(hào)姓名

性別出生日期專業(yè)總學(xué)分121001李賢友

男1991-12-30通信52121002周映雪

女1993-01-12通信49121005劉剛

男1992-07-05通信50122001郭德強(qiáng)

男1991-10-23計(jì)算機(jī)48122002謝萱

女1992-09-11計(jì)算機(jī)52122004孫婷

女1992-02-24計(jì)算機(jī)50SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念3(1)表表是數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)對(duì)象,每個(gè)數(shù)據(jù)庫(kù)包含了若干個(gè)表,表由行和列組成。例如,表.1由6行6列組成。(2)表結(jié)構(gòu)每個(gè)表具有一定的結(jié)構(gòu),表結(jié)構(gòu)包含一組固定的列,由數(shù)據(jù)類型、長(zhǎng)度、允許Null值等組成。(3)記錄每個(gè)表包含若干行數(shù)據(jù),表中一行稱為一個(gè)記錄(Record)。表4.1有6個(gè)記錄。(4)字段表中每列稱為字段(Field),每個(gè)記錄由若干個(gè)數(shù)據(jù)項(xiàng)(列)構(gòu)成,構(gòu)成記錄的每個(gè)數(shù)據(jù)項(xiàng)就稱為字段。表4.1有6個(gè)字段。(5)空值空值(Null)通常表示未知、不可用或?qū)⒃谝院筇砑拥臄?shù)據(jù)。SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念(6)關(guān)鍵字

關(guān)鍵字用于唯一標(biāo)識(shí)記錄,如果表中記錄的某一字段或字段組合能唯一標(biāo)識(shí)記錄,則該字段或字段組合稱為候選關(guān)鍵字(CandidateKey)。如果一個(gè)表有多個(gè)候選關(guān)鍵字,則選定其中的一個(gè)為主關(guān)鍵字(PrimaryKey),又稱為主鍵。表4.1的主鍵為“學(xué)號(hào)”。4SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念4.1.2系統(tǒng)數(shù)據(jù)類型創(chuàng)建數(shù)據(jù)庫(kù)最重要的一步為創(chuàng)建其中的數(shù)據(jù)表,創(chuàng)建數(shù)據(jù)表必須定義表結(jié)構(gòu)和設(shè)置列的數(shù)據(jù)類型、長(zhǎng)度等,下面,我們介紹SQLServer系統(tǒng)數(shù)據(jù)類型,如表4.2所示。5SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念1.整數(shù)型整數(shù)包括bigint、int、smallint和tinyint4類。●

bigint(大整數(shù))精度為19位,長(zhǎng)度為8字節(jié),數(shù)值范圍為-263~263-1。●int(整數(shù))精度10位,長(zhǎng)度為4字節(jié),數(shù)值范圍為-231~231-1?!駍mallint(短整數(shù))精度為10位,長(zhǎng)度為2字節(jié),數(shù)值范圍為-215~215–1。●tinyint(微短整數(shù))精度為3位,長(zhǎng)度為1字節(jié),數(shù)值范圍為0~255。6SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念2.

精確數(shù)值型

精確數(shù)值型包括decimal和numeric兩類,這兩種數(shù)據(jù)類型在SQLServer2008中,在功能上是完全等價(jià)的。精確數(shù)值型數(shù)據(jù)由整數(shù)部分和小數(shù)部分構(gòu)成,可存儲(chǔ)從-1038+1到1038–1的固定精度和小數(shù)位的數(shù)字?jǐn)?shù)據(jù),它存儲(chǔ)長(zhǎng)度最少為5字節(jié),最多為17字節(jié)。精確數(shù)值型數(shù)據(jù)的格式是:numeric|decimal(p[,s])其中p為精度,s為小數(shù)位數(shù),s的缺省值為0。例如指定某列為精確數(shù)值型,精度為7,小數(shù)位數(shù)為2,則為decimal(7,2)。7SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念3.浮點(diǎn)型浮點(diǎn)型又稱近似數(shù)值型,近似數(shù)值數(shù)據(jù)類型包括float[(n)]和real兩類,這兩類通常都使用科學(xué)記數(shù)法表示數(shù)據(jù)??茖W(xué)記數(shù)法的格式為:尾數(shù)E階數(shù)

其中,階數(shù)必須為整數(shù)。例如,4.804E9,3.682-E6,78594E-8等都是浮點(diǎn)型數(shù)據(jù)?!駌eal精度為7位,長(zhǎng)度為4字節(jié),數(shù)值范圍為-3.40E+38~3.40E+38。●float[(n)]當(dāng)n在1~24之間時(shí),精度為7位,長(zhǎng)度為4字節(jié),數(shù)值范圍為-3.40E+38~3.40E+38。當(dāng)n在25~53之間時(shí),精度為15位,長(zhǎng)度為8字節(jié),數(shù)值范圍為-1.79E+308~1.79E+308。8SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念4.貨幣型處理貨幣的數(shù)據(jù)類型有money和smallmoney,它們用十進(jìn)制數(shù)表示貨幣值。●money精度為19,小數(shù)位數(shù)為4、長(zhǎng)度為8字節(jié),數(shù)值范圍為-263~263-1?!駍mallmoney精度為10,小數(shù)位數(shù)為4、長(zhǎng)度為4字節(jié),數(shù)值范圍–231~231–1。5.位型SQLServer中的位(bit)型數(shù)據(jù)只存儲(chǔ)0和1,長(zhǎng)度為一個(gè)字節(jié),相當(dāng)于其它語(yǔ)言中的邏輯型數(shù)據(jù)。當(dāng)一個(gè)表中有小于8位的bit列,將作為一個(gè)字節(jié)存儲(chǔ),如果表中有9到16位bit列,將作為兩個(gè)字節(jié)存儲(chǔ),依此類推。當(dāng)為bit類型數(shù)據(jù)賦0時(shí),其值為0;而賦非0時(shí),其值為1。字符串值TRUE和FALSE可以轉(zhuǎn)換的bit值:TRUE轉(zhuǎn)換為1,F(xiàn)ALSE轉(zhuǎn)換為0。9SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念6.字符型字符型數(shù)據(jù)用于存儲(chǔ)字符串,字符串中可包括字母數(shù)字和其它特殊符號(hào)。在輸入字符串時(shí),需將串中的符號(hào)用單引號(hào)或雙引號(hào)括起來,如'def'、"Def<Ghi"?!馽har[(n)]

固定長(zhǎng)度字符數(shù)據(jù)類型,其中n定義字符型數(shù)據(jù)的長(zhǎng)度,n在1~8000之間,默認(rèn)值為1。若輸入字符串長(zhǎng)度小于n時(shí),則系統(tǒng)自動(dòng)在它的后面添加空格以達(dá)到長(zhǎng)度n。例如某列的數(shù)據(jù)類型為char(100),而輸入的字符串為"NewYear2013",則存儲(chǔ)的是字符NewYear2013和89個(gè)空格。若輸入字符串長(zhǎng)度大于n,則截?cái)喑龅牟糠?。?dāng)列值的字符數(shù)基本相同時(shí)可采用數(shù)據(jù)類型char[(n)]。10SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念●

varchar[(n)]可變長(zhǎng)度字符數(shù)據(jù)類型,其中n的規(guī)定與定長(zhǎng)字符數(shù)據(jù)類型char[(n)]中n完全相同,與char[(n)]不同的是varchar(n)數(shù)據(jù)類型的存儲(chǔ)空間隨列值的字符數(shù)而變化。例如,表中某列的數(shù)據(jù)類型為varchar(100),而輸入的字符串為"NewYear2013",則存儲(chǔ)的字符NewYear2013的長(zhǎng)度為11字節(jié),其后不添加空格,因而varchar(n)數(shù)據(jù)類型可以節(jié)省存儲(chǔ)空間,特別在列值的字符數(shù)顯著不同時(shí)。11SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念7.Unicode字符型Unicode是“統(tǒng)一字符編碼標(biāo)準(zhǔn)”,用于支持國(guó)際上非英語(yǔ)語(yǔ)種的字符數(shù)據(jù)的存儲(chǔ)和處理。Unicode字符型包括nchar[(n)]和nvarchar[(n)]兩類。nchar[(n)]、nvarchar[(n)]和char[(n)]、varchar(n)類似,只是前者使用Unicode字符集,后者使用ASCII字符集?!?/p>

nchar[(n)]

固定長(zhǎng)度Unicode數(shù)據(jù)的數(shù)據(jù)類型,n的取值為1~4000,長(zhǎng)度為2n字節(jié),若輸入的字符串長(zhǎng)度不足n,將以空白字符補(bǔ)足。●

nvarchar[(n)]可變長(zhǎng)度Unicode數(shù)據(jù)的數(shù)據(jù)類型,n的取值為1~4000,長(zhǎng)度是所輸入字符個(gè)數(shù)的兩倍。12SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念

8.文本型由于字符型數(shù)據(jù)的最大長(zhǎng)度為8000個(gè)字符,當(dāng)存儲(chǔ)超出上述長(zhǎng)度的字符數(shù)據(jù)(如較長(zhǎng)的備注、日志等),即不能滿足應(yīng)用需求,此時(shí)需要文本型數(shù)據(jù)。文本型包括text和ntext兩類,分別對(duì)應(yīng)ASCII字符和Unicode字符。9.二進(jìn)制型二進(jìn)制數(shù)據(jù)類型表示的是位數(shù)據(jù)流,包括binary(固定長(zhǎng)度)和varbinary(可變長(zhǎng)度)兩種。13SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念10.日期時(shí)間類型●datetimedatetime類型可表示的日期范圍從1753年1月1日到9999年12月31日的日期和時(shí)間數(shù)據(jù),精確度為百分之三秒(3.33毫秒或0.00333秒)。datetime類型數(shù)據(jù)長(zhǎng)度為8字節(jié),日期和時(shí)間分別使用4個(gè)字節(jié)存儲(chǔ)。前4字節(jié)用于存儲(chǔ)基于1900年1月1日之前或之后的天數(shù),正數(shù)表示日期在1900年1月1日之后,負(fù)數(shù)則表示日期在1900年1月1日之前。后4個(gè)字節(jié)用于存儲(chǔ)距12:00(24小時(shí)制)的毫秒數(shù)。默認(rèn)的日期時(shí)間是January1,190012:00A.M??梢越邮艿妮斎敫袷接校篔anuary102012、Jan102012、JAN102012、January10,2012等?!駍malldatetimeSmalldatetime與datetime數(shù)據(jù)類型類似,但日期時(shí)間范圍較小,表示從1900年1月1日到2079年6月6日的日期和時(shí)間,存儲(chǔ)長(zhǎng)度為4字節(jié)。14SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念●datedate類型可表示從公元元年1月1日到9999年12月31日期,表示形式與datetime數(shù)據(jù)類型的日期部分相同,只存儲(chǔ)日期數(shù)據(jù),不存儲(chǔ)時(shí)間數(shù)據(jù),存儲(chǔ)長(zhǎng)度為3個(gè)字節(jié)。●time

time數(shù)據(jù)類型只存儲(chǔ)時(shí)間數(shù)據(jù),表示格式為“hh:mm:ss[.nnnnnnn]”。hh表示小時(shí),范圍為0到23。mm表示分鐘,范圍為0到59。ss表示秒數(shù),范圍為0到59。n是0到7位數(shù)字,范圍為0到9999999,表示秒的小數(shù)部分,即微秒數(shù)。所以time數(shù)據(jù)類型的取值范圍為00:00:00.0000000到23:59:59.9999999。time類型的存儲(chǔ)大小為5個(gè)字節(jié)。另外可以自定義time類型微秒數(shù)的位數(shù),例如time(1)表示小數(shù)位為1,默認(rèn)為7。15SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念●datetime2新的datetime2數(shù)據(jù)類型和datetime類型一樣,也用于存儲(chǔ)日期和時(shí)間信息。但是datetime2類型取值范圍更廣,日期部分取值范圍從公元元年1月1日到9999年12月31日,時(shí)間部分的取值范圍從00:00:00.0000000到23:59:59.999999。另外,用戶還可以自定義datetime2數(shù)據(jù)類型中微秒數(shù)的位數(shù),例如datetime(2)表示小數(shù)位數(shù)為2?!?/p>

datetimeoffsetdatetimeoffset數(shù)據(jù)類型也用于存儲(chǔ)日期和時(shí)間信息,取值范圍與datetime2類型相同。但datetimeoffset類型具有時(shí)區(qū)偏移量,此偏移量指定時(shí)間相對(duì)于協(xié)調(diào)世界時(shí)(UTC)偏移的小時(shí)和分鐘數(shù)。datetimeoffset的格式為“YYYY-MM-DDhh:mm:ss[.nnnnnnn][{+|-}hh:mm]”,其中hh為時(shí)區(qū)偏移量中的小時(shí)數(shù),范圍為00到14,mm為時(shí)區(qū)偏移量中的額外分鐘數(shù),范圍為00到59。16SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念11.時(shí)間戳型反映系統(tǒng)對(duì)該記錄修改的相對(duì)(相對(duì)于其他記錄)順序,標(biāo)識(shí)符是timestamp,timestamp類型數(shù)據(jù)的值是二進(jìn)制格式數(shù)據(jù),其長(zhǎng)度為8字節(jié)。若創(chuàng)建表時(shí)定義一個(gè)列的數(shù)據(jù)類型為時(shí)間戳類型,那么每當(dāng)對(duì)該表加入新行或修改已有行時(shí),都由系統(tǒng)自動(dòng)將一個(gè)計(jì)數(shù)器值加到該列,即將原來的時(shí)間戳值加上一個(gè)增量。12.圖像數(shù)據(jù)類型用于存儲(chǔ)圖片、照片等,標(biāo)識(shí)符為image,實(shí)際存儲(chǔ)的是可變長(zhǎng)度二進(jìn)制數(shù)據(jù),介于0與231-1(2,147,483,647)字節(jié)之間。13.其它數(shù)據(jù)類型●cursor游標(biāo)數(shù)據(jù)類型,用于創(chuàng)建游標(biāo)變量或定義存儲(chǔ)過程的輸出參數(shù)17SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念●sql_variant一種存儲(chǔ)SQLServer支持的各種數(shù)據(jù)類型(除text、ntext、image、timestamp和sql_variant外)值的數(shù)據(jù)類型。●table

用于存儲(chǔ)結(jié)果集的數(shù)據(jù)類型,結(jié)果集可以供后續(xù)處理。●

uniqueidentifier唯一標(biāo)識(shí)符類型,系統(tǒng)將為這種類型的數(shù)據(jù)產(chǎn)生唯一標(biāo)識(shí)值?!?/p>

xml用來在數(shù)據(jù)庫(kù)中保存xml文檔和片段的一種類型,文件大小不能超過2GB?!?/p>

hierarchyidhierarchyid數(shù)據(jù)類型是SQLServer新增加的一種長(zhǎng)度可變的系統(tǒng)數(shù)據(jù)類型,可使用hierarchyid表示層次結(jié)構(gòu)中置。18SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念4.1.3表結(jié)構(gòu)設(shè)計(jì)創(chuàng)建表的核心是定義表結(jié)構(gòu)及設(shè)置表和列的屬性,創(chuàng)建表以前,首先要確定表名和表的屬性,表所包含的列名、列的數(shù)據(jù)類型、長(zhǎng)度、是否為空、是否主鍵等,這些屬性構(gòu)成表結(jié)構(gòu)。我們以學(xué)生成績(jī)管理系統(tǒng)的student(學(xué)生表)、course(課程表)、score(成績(jī)表)、teacher(教師表)為例介紹表結(jié)構(gòu)設(shè)計(jì)。學(xué)生表student包含stno,stname,stsex,stbirthday,speciality,tc等列,其中,stno列是學(xué)生的學(xué)號(hào),例如121001中12表示學(xué)生入學(xué)年代為2012年,10表示學(xué)生的班級(jí),01表示學(xué)生的序號(hào),所以stno列的數(shù)據(jù)類型選定長(zhǎng)的字符型char[(n)],n的值為6,不允許空;stname列是學(xué)生的姓名,姓名一般不超過4個(gè)中文字符,所以選定長(zhǎng)的字符型數(shù)據(jù)類型,n的值為8,不允許空;stsex列是學(xué)生的出生日期,選date數(shù)據(jù)類型,不允許空;19SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.1表的基本概念speciality列是學(xué)生的專業(yè),選定長(zhǎng)的字符型數(shù)據(jù)類型n的值為12,允許空;tc列是學(xué)生的總學(xué)分,選整數(shù)型數(shù)據(jù)類型,不允許空。在student表中,只有stno列能唯一標(biāo)識(shí)一個(gè)學(xué)生,所以將stno列設(shè)為主鍵。student的表結(jié)構(gòu)設(shè)計(jì)如表4.3所示。表4.3student表的表結(jié)構(gòu)20SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.2以命令方式創(chuàng)建SQLServe表4.2.1創(chuàng)建表使用CREATETABLE語(yǔ)句創(chuàng)建表。語(yǔ)法格式:

CREATETABLE

[database_name.[schema_name].|schema_name.]table_name({<column_definition>|column_nameAScomputed_column_expression[PERSISTED[NOTNULL]]}[<table_constraint>][,...n])[ON{partition_scheme_name(partition_column_name)|filegroup|"default"}][{TEXTIMAGE_ON{filegroup|"default"}][FILESTREAM_ON{partition_scheme_name|filegroup|"default"}][WITH(<table_option>[,...n])][;]

21SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.2以命令方式創(chuàng)建SQLServe表<column_definition>::=column_namedata_type[FILESTREAM][COLLATEcollation_name][NULL|NOTNULL][[CONSTRAINTconstraint_name]DEFAULTconstant_expression]|[IDENTITY[(seed,increment)][NOTFORREPLICATION]][ROWGUIDCOL] [<column_constraint>[...n]] [SPARSE]

22SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.2以命令方式創(chuàng)建SQLServe表說明:(1)database_name是數(shù)據(jù)庫(kù)名,schema_name是表所屬架構(gòu)名,table_name是表名。如果省略數(shù)據(jù)庫(kù)名則默認(rèn)在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建表,如果省略架構(gòu)名,則默認(rèn)是“dbo”。(2)<column_definition>列定義:

column_name為列名,data_type為列的數(shù)據(jù)類型。

FILESTREAM是SQLServer2008引進(jìn)的一項(xiàng)新特性,允許以獨(dú)立文件的形式存放大對(duì)象數(shù)據(jù)。

NULL|NOTNULL:確定列是否可取空值。

DEFAULTconstant_expression:為所在列指定默認(rèn)值。

IDENTITY:表示該列是標(biāo)識(shí)符列。

23SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.2以命令方式創(chuàng)建SQLServe表

●ROWGUIDCOL:表示新列是行的全局唯一標(biāo)識(shí)符列。

<column_constraint>:列的完整性約束,指定主鍵、外鍵等。

SPARSE:指定列為稀疏列。(3)column_nameAScomputed_column_expression[PERSISTED[NOTNULL]]:用于定義計(jì)算字段。(4)<table_constraint>:表的完整性約束。(5)ON子句:filegroup|"default"指定存儲(chǔ)表的文件組。(6)TEXTIMAGE_ON{filegroup|"default"}:TEXTIMAGE_ON指定存儲(chǔ)text、ntext、image、xml、varchar(MAX)、nvarchar(MAX)、varbinary(MAX)和CLR用戶定義類型數(shù)據(jù)的文件組。(7)FILESTREAM_ON子句:filegroup|"default"指定存儲(chǔ)FILESTREAM數(shù)據(jù)的文件組。

24SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.2以命令方式創(chuàng)建SQLServe表【例4.1】使用T-SQL語(yǔ)句,在stsc數(shù)據(jù)庫(kù)中創(chuàng)建student表、score表。USEstscCREATETABLEstudent(stnochar(6)NOTNULLPRIMARYKEY,stnamechar(8)NOTNULL,stsexchar(2)NOTNULL,stbirthdaydateNOTNULL,specialitychar(12)NULL,tcintNULL)GO

25SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.2以命令方式創(chuàng)建SQLServe表上述語(yǔ)句中的GO命令不是Transact-SQL語(yǔ)句,它是由SQLServerManagementStudio代碼編輯器識(shí)別的命令。SQLServer實(shí)用工具將GO解釋為應(yīng)該向SQLServer實(shí)例發(fā)送當(dāng)前批Transact-SQL語(yǔ)句的信號(hào)。當(dāng)前批語(yǔ)句由上一條GO命令后輸入的所有語(yǔ)句組成,如果是第一條GO命令,則由會(huì)話或腳本開始后輸入的所有語(yǔ)句組成。GO命令和Transact-SQL語(yǔ)句不能在同一行中,但在GO命令行中可包含注釋。

26SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.2以命令方式創(chuàng)建SQLServe表在stsc數(shù)據(jù)庫(kù)中創(chuàng)建score表語(yǔ)句如下:USEstscCREATETABLEscore(stnochar(6)NOTNULL,cnochar(3)NOTNULL,gradeintNULL,PRIMARYKEY(stno,cno))GO

27

SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.2以命令方式創(chuàng)建SQLServe表【例4.2】在test數(shù)據(jù)庫(kù)中創(chuàng)建clients表。USEtestCREATETABLEclients(cidint,cnamechar(8),csexchar(2),addresschar(40))

28SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.2以命令方式創(chuàng)建SQLServe表2.由其它表創(chuàng)建新表使用SELECTINTO語(yǔ)句創(chuàng)建一個(gè)新表,并用SELECT的結(jié)果集填充該表。語(yǔ)法格式:

SELECT列名表INTO表1FROM表2該語(yǔ)句的功能是由“表2”的“列名表”來創(chuàng)建新表“表1”。【例4.3】在stsc數(shù)據(jù)庫(kù)中,由student表創(chuàng)建student1表。USEstscSELECTstno,stname,stbirthdayINTOstudent1FROMstudent29SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.2以命令方式創(chuàng)建SQLServe表4.2.2修改表語(yǔ)法格式:ALTERTABLEtable_name{ALTERCOLUMNcolumn_name {new_data_type[(precision,[,scale])][NULL|NOTNULL] |{ADD|DROP}{ROWGUIDCOL|PERSISTED|NOTFORREPLICATION|SPARSE}}/ |ADD{[<colume_definition>]}[,…n] |DROP{[CONSTRAINT]constraint_name|COLUMNcolumn}[,…n]}說明:

●table_name為表名。●ALTERCOLUMN子句:修改表中指定列的屬性?!馎DD子句:增加表中的列?!馜ROP子句:刪除表中的列或約束。30SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.2以命令方式創(chuàng)建SQLServe表【例4.4】在student1表中新增加一列remarks。

USEstscALTERTABLEstudent1ADDremarkschar(10)

4.2.3刪除表使用DROPTABLE語(yǔ)言刪除表。語(yǔ)法格式:

DROPTABLEtable_name

其中,table_name是要?jiǎng)h除的表的名稱?!纠?.5】刪除stsc數(shù)據(jù)庫(kù)中student1表。

USEstscDROPTABLEstudent131SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.3以圖形界面的方式創(chuàng)建SQLServe表1.創(chuàng)建表【例4.6】在stsc數(shù)據(jù)庫(kù)中創(chuàng)建student表(學(xué)生表)。操作步驟如下:(1)啟動(dòng)“SQLServerManagementStudio”,在“對(duì)象資源管理器”中展開“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),選中“stsc”數(shù)據(jù)庫(kù),展開該數(shù)據(jù)庫(kù),選中表,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中,選擇“新建表”命令,如圖4.1所示。32SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.3以圖形界面的方式創(chuàng)建SQLServe表(2)屏幕出現(xiàn)表設(shè)計(jì)器窗口,根據(jù)已經(jīng)設(shè)計(jì)好student的表結(jié)構(gòu)分別輸入或選擇各列的數(shù)據(jù)類型、長(zhǎng)度、允許Null值,根據(jù)需要,可以在每列的”列屬性”表格填入相應(yīng)內(nèi)容,輸入完成后的結(jié)果如圖4.2所示。33SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.3以圖形界面的方式創(chuàng)建SQLServe表(3)在“stno”行上右擊鼠標(biāo),在彈出的快捷菜單選擇“設(shè)置主鍵”命令,如圖4.3所示,此時(shí),“stno”左邊會(huì)出現(xiàn)一個(gè)鑰匙圖標(biāo)。34SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.3以圖形界面的方式創(chuàng)建SQLServe表(4)單擊工具欄中的“保存”按鈕,出現(xiàn)“選擇名稱”對(duì)話框,輸入表名“student”,如圖4.4所示,單擊“確定”按鈕即可創(chuàng)建student表,如圖4.5所示。圖4.4設(shè)置表的名稱圖4.5創(chuàng)建student表35SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.3以圖形界面的方式創(chuàng)建SQLServe表2.修改表為了在進(jìn)行表的修改時(shí)不必刪除原表,需要進(jìn)行的操作如下:在“SQLServerManagementStudio”面板中單擊“工具”主菜單,選擇“選項(xiàng)”子菜單,在出現(xiàn)的“選項(xiàng)”窗口中展開“Designers”,選擇“表設(shè)計(jì)器和數(shù)據(jù)庫(kù)設(shè)計(jì)器”選項(xiàng)卡,將窗口右面的“阻止保存要求重新創(chuàng)建表的更改”復(fù)選框前的對(duì)勾去掉,單擊“確定”按鈕,就可進(jìn)行表的修改了。36SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.3以圖形界面的方式創(chuàng)建SQLServe表【例4.7】在student表中增加一列stclass(班級(jí))在tc列之前,然后刪除該列。(1)啟動(dòng)“SQLServerManagementStudio”,在“對(duì)象資源管理器”中展開“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),選中“stsc”數(shù)據(jù)庫(kù),展開該數(shù)據(jù)庫(kù),選中表,將其展開,選中表“dbo.student”,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“設(shè)計(jì)”命令,打開“表設(shè)計(jì)器”窗口,為在tc列之前加入新列,右擊該列,在彈出的快捷菜單中選擇“插入列”命令,如圖4.6所示。37SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.3以圖形界面的方式創(chuàng)建SQLServe表(2)在“表設(shè)計(jì)器”窗口中的tc列前出現(xiàn)空白行,輸入列名“stclass”,選擇數(shù)據(jù)類型“char(6)”,允許空,如圖4.7所示,完成插入新列操作。38SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.3以圖形界面的方式創(chuàng)建SQLServe表(3)在“表設(shè)計(jì)器”窗口中選擇需刪除的stclass列,右擊鼠標(biāo),在彈出的快捷菜單中選擇“刪除列”命令,該列即被刪除,如圖4.8所示。39SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.3以圖形界面的方式創(chuàng)建SQLServe表【例4.8】將def表(已創(chuàng)建)表名修改為xyz表。(1)啟動(dòng)“SQLServerManagementStudio”,在“對(duì)象資源管理器”中展開“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),選中“stsc”數(shù)據(jù)庫(kù),展開該數(shù)據(jù)庫(kù),選中表,將其展開,選中表“dbo.def”,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“重命名”命令。(2)此時(shí),表“dbo.def”的名稱已變?yōu)榭删庉?,將名稱修改“dbo.xyz”,修改表名完成。3.刪除表【例4.9】刪除xyz表(已創(chuàng)建)。(1)啟動(dòng)“SQLServerManagementStudio”,在“對(duì)象資源管理器”中展開“數(shù)據(jù)庫(kù)”節(jié)點(diǎn),選中“stsc”數(shù)據(jù)庫(kù),展開該數(shù)據(jù)庫(kù),選中表,將其展開,選中表“dbo.xyz”,單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“刪除”命令。(2)系統(tǒng)彈出“刪除對(duì)象”窗口,單擊“確定”按鈕,即可刪除xyz表。40SQLServer數(shù)據(jù)庫(kù)教程(第3版)4.4以命令方式操作SQLServe表數(shù)據(jù)

4.4.1插入語(yǔ)句

語(yǔ)法格式:

INSERT[TOP(expression)[PERCENT]][INTO]{table_name/*表名*/|view_name /*視圖名*/|rowset_function_limited/*可OPENQUERY或OPENROWSET函數(shù)*/[WITH(<table_hint_limited>[…n])]/*指定表提示,可省略*/}{[(column_list)] /*列名表*/{VALUES(({DEFAULT|NULL|expression}[,...n])[,...n]) /*指定列值的value子句*/|derived_table /*結(jié)果集*/|execute_statement /*有效的EXECTUTE語(yǔ)句*/|DEFAULTVALUES /*強(qiáng)制新行包含為每個(gè)列定義的默認(rèn)值*/}}41SQLServer數(shù)據(jù)庫(kù)教程(第3版)

4.4以命令方式操作SQLServe表數(shù)據(jù)說明:●table_name:被操作的表名?!駐iew_name:視圖名?!馽olumn_list:列名表,包含了新插入數(shù)據(jù)行的各列的名稱。如果只給出表的部分列插入數(shù)據(jù)時(shí),需要用column_list指出這些列?!馰ALUES子句:包含各列需要插入的數(shù)據(jù),數(shù)據(jù)的順序要與列的順序相對(duì)應(yīng)。若省略colume_list,則VALUES子句給出每一列(除IDENTITY屬性和timestamp類型以外的列)的值。VALUES子句中的值有三種:DEFAULT:指定為該列的默認(rèn)值,這要求定義表時(shí)必須指定該列的默認(rèn)值。NULL:指定該列為空值。expression:可以是一個(gè)常量、變量或一個(gè)表達(dá)式,其值的數(shù)據(jù)類型要與列的數(shù)據(jù)類型一致。注意表達(dá)式中不能有SELECT及EXECUTE語(yǔ)句。42SQLServer數(shù)據(jù)庫(kù)教程(第3版)

4.4以命令方式操作SQLServe表數(shù)據(jù)【例4.10】向clients表中插入一個(gè)客戶記錄(1,'李君','男','東大街10號(hào)')。USEtestINSERTINTOclientsvalues(1,'李君','男','上東大街10號(hào)')【例4.11】向student表插入表4.1各行數(shù)據(jù)。USEstscINSERTINTOstudentvalues('1001','李賢友','男','1991-12-30','通信',52),('1002','周映雪','女','1993-01-12','通信',49),('1005','劉剛','男','1992-07-05','通信',50),('2001','郭德強(qiáng)','男','1991-10-23','計(jì)算機(jī)',48),('2002','謝萱','女','1992-09-11','計(jì)算機(jī)',52),('2004','孫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論