版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章表的管理目錄數(shù)據(jù)類(lèi)型約束創(chuàng)建表修改表結(jié)構(gòu)刪除表設(shè)置表的數(shù)據(jù)完整性表關(guān)系導(dǎo)入和導(dǎo)出數(shù)據(jù)插入行更新行刪除行數(shù)據(jù)類(lèi)型1.數(shù)值數(shù)據(jù)類(lèi)型(1)
整形數(shù)用于存儲(chǔ)精確的整數(shù),包括4種類(lèi)型:。Bigint
。Int
。Smallint
。Tinyint數(shù)據(jù)類(lèi)型數(shù)據(jù)范圍占用存儲(chǔ)空間bigint?263~263?18個(gè)字節(jié)int?231~231?14個(gè)字節(jié)smallint?215~215?12個(gè)字節(jié)tinyint0~2551個(gè)字節(jié)(2)精確數(shù)值型由整數(shù)和小數(shù)部分構(gòu)成,包括兩種類(lèi)型:
。Decimal。numeric存儲(chǔ)范圍:?1038+1~1038?1聲明格式:numeric(p,[s])或者decimal(p,[s])
p為精度,最多可以存儲(chǔ)的十進(jìn)制數(shù)字的總位數(shù),包括小數(shù)點(diǎn)左邊和右邊的位數(shù)。
s為小數(shù)位數(shù),小數(shù)點(diǎn)右邊可以存儲(chǔ)的十進(jìn)制數(shù)字的最大位數(shù)。小數(shù)位數(shù)必須是從0到p之間的值。僅在指定精度后才可以指定小數(shù)位數(shù)。默認(rèn)的小數(shù)位數(shù)為0。(3)近似數(shù)值型存儲(chǔ)精度不是很高,取值范圍卻非常大的數(shù)據(jù)。借助科學(xué)計(jì)數(shù)法來(lái)表示,兩種類(lèi)型。表示形式:尾數(shù)E階數(shù)數(shù)據(jù)類(lèi)型數(shù)據(jù)范圍占用存儲(chǔ)空間real?3.40E+38~3.40E+384個(gè)字節(jié)float?1.79E308~1.79E3088個(gè)字節(jié)
(4)貨幣型用十進(jìn)制數(shù)來(lái)表示貨幣值。說(shuō)明:。必須在數(shù)據(jù)前加上貨幣表示符($);
。數(shù)據(jù)中間不能有逗號(hào)(,);
。在數(shù)據(jù)前加上符號(hào)(?)表示負(fù)數(shù);。兩種類(lèi)型:smallmoney和Money。注意區(qū)分:數(shù)據(jù)類(lèi)型數(shù)據(jù)范圍占用存儲(chǔ)空間smallmoney?231~231?14個(gè)字節(jié)Money?263~263?18個(gè)字節(jié)(5)位(bit)型相當(dāng)高級(jí)語(yǔ)言中的邏輯型,存儲(chǔ)0和1,占用1個(gè)字節(jié)存儲(chǔ)空間。2.字符數(shù)據(jù)類(lèi)型由字母、數(shù)字和其他特殊符號(hào)(如$,#,@)構(gòu)成的字符串(1)char和varchar。說(shuō)明:。用單引號(hào)括起來(lái),最多包含8000個(gè)字符;。聲明格式:char(n)—固定長(zhǎng)度非Unicode數(shù)據(jù)
varchar(n)—可變長(zhǎng)度非Unicode數(shù)據(jù)
。注意區(qū)分:
前者:字符長(zhǎng)度不足n時(shí)則用空格補(bǔ)足。
后者:輸入的字符長(zhǎng)度就是實(shí)際的長(zhǎng)度。(2)text用途:當(dāng)字符數(shù)目大于8000時(shí)使用text,存儲(chǔ)可變長(zhǎng)度的非Unicode數(shù)據(jù)
。(3)nchar,nvarchar,ntext存儲(chǔ)Unicode字符。存儲(chǔ)長(zhǎng)度為實(shí)際字符數(shù)。最大長(zhǎng)度為230?1個(gè)Unicode字符,但存儲(chǔ)長(zhǎng)度為實(shí)際字符個(gè)數(shù)的兩倍,Unicode字符用雙字節(jié)表示。
nchar、nvarchar則最多存儲(chǔ)4000個(gè)字符,不論是英文還是漢字;而char、varchar最多能存儲(chǔ)8000個(gè)英文,4000個(gè)漢字。
3.日期和時(shí)間數(shù)據(jù)類(lèi)型日期時(shí)間型數(shù)據(jù)以字符串形式表示,即要用單引號(hào)括起來(lái)。日期時(shí)間型有六種:。Smalldatetime
。Datetime
。Date。Time。Datetime2。DatetimeOffset(1)smalldatetime范圍:從1900年1月1日到2079年6月6日。存儲(chǔ)長(zhǎng)度:4個(gè)字節(jié),其中:。前2個(gè)字節(jié):存儲(chǔ)日期部分距1900年1月1日之后的天數(shù)。。后2個(gè)字節(jié):存儲(chǔ)時(shí)間部分距中午12點(diǎn)的分鐘數(shù)。(2)datetime范圍:1753年1月1日到9999年12月31日。存儲(chǔ)長(zhǎng)度:8個(gè)字節(jié),其中:。前4個(gè)字節(jié):存儲(chǔ)距1900年1月1日的天數(shù)。。后4個(gè)字節(jié):存儲(chǔ)距中午12點(diǎn)的毫秒數(shù)。(3)date范圍:從1900年1月1日到9999年12月31日,精度為1天。默認(rèn)值為1900年1月1日。存儲(chǔ)長(zhǎng)度:3個(gè)字節(jié)。
(4)time范圍:00:00:00.0000000到23:59:59.9999999,精度為100毫微秒。默認(rèn)值為00:00:00.0000000(午夜)。存儲(chǔ)長(zhǎng)度:支持用戶定義的小數(shù)秒精度,存儲(chǔ)大小根據(jù)指定的精度在3字節(jié)到6字節(jié)之間變化。
(5)datetime2datetime2數(shù)據(jù)類(lèi)型將date和time數(shù)據(jù)類(lèi)型的范圍和精度組合成單個(gè)數(shù)據(jù)類(lèi)型。默認(rèn)值和字符串格式與date和time數(shù)據(jù)類(lèi)型中定義的相同。
(6)datetimeoffsetdatetimeoffset數(shù)據(jù)類(lèi)型具有datetime2的所有功能,并附加了時(shí)區(qū)偏移量。時(shí)區(qū)偏移量表示為[+|-]HH:MM。HH是范圍從00到14的2位數(shù),表示時(shí)區(qū)偏移量的小時(shí)數(shù)。MM是范圍從00到59的2位數(shù),表示時(shí)區(qū)偏移量的附加分鐘數(shù)。時(shí)間格式支持的精度為100毫微秒。4.二進(jìn)制數(shù)據(jù)類(lèi)型
二進(jìn)制數(shù)據(jù)類(lèi)型用于存儲(chǔ)二進(jìn)制數(shù)據(jù),包括binary、varbinary和image數(shù)據(jù)類(lèi)型。。Binary:存儲(chǔ)固定長(zhǎng)度二進(jìn)制數(shù)據(jù)。
。Varbinary:存儲(chǔ)可變長(zhǎng)度二進(jìn)制數(shù)據(jù)。
。Image:存儲(chǔ)圖像信息。5.用戶自定義數(shù)據(jù)類(lèi)型提供一種加強(qiáng)數(shù)據(jù)庫(kù)內(nèi)部元素和基本數(shù)據(jù)類(lèi)型之間的一致性的機(jī)制。用戶基于系統(tǒng)的數(shù)據(jù)類(lèi)型設(shè)計(jì)并實(shí)現(xiàn)的數(shù)據(jù)類(lèi)型就稱為用戶自定義數(shù)據(jù)類(lèi)型。用SSMS創(chuàng)建用戶自定義類(lèi)型【對(duì)象資源管理器】→【數(shù)據(jù)庫(kù)】→StuManage→【可編程性】→【類(lèi)型】→【用戶定義數(shù)據(jù)類(lèi)型】,右擊選擇【新建用戶定義數(shù)據(jù)類(lèi)型】→【新建用戶定義數(shù)據(jù)類(lèi)型】對(duì)話框。用sp_addtype創(chuàng)建(1)定義用戶自定義數(shù)據(jù)類(lèi)型語(yǔ)法:sp_addtype<新類(lèi)型名>,system_data_type,
[null_type],[owner_name]示例:Execsp_addtypephone,‘char(10)’參數(shù)說(shuō)明:①sp_addtype:系統(tǒng)存儲(chǔ)過(guò)程。②新類(lèi)型名稱:要求名稱必須唯一。③system_data_type:新類(lèi)型依賴的系統(tǒng)數(shù)據(jù)類(lèi)型,必須用單引號(hào)括起來(lái)。但如下類(lèi)型可不用單引號(hào):BIG,INT,SMALLINT,TEXT,DATETIME,REAL,IMAGE,UNIQUEIDENTIFIER。④null_type:新類(lèi)型處理空值的方式,可以取'NULL'或'NOTNULL'。默認(rèn)值是'NULL'。(2)刪除用戶自定義數(shù)據(jù)類(lèi)型
語(yǔ)法:sp_droptypetype
示例:Execsp_droptype‘phone’
說(shuō)明:①sp_droptype:系統(tǒng)存儲(chǔ)過(guò)程。②type:要?jiǎng)h除的數(shù)據(jù)類(lèi)型的名稱,必須用單引號(hào)括起來(lái)。③若自定義類(lèi)型被引用,則不能刪除。用戶自定義數(shù)據(jù)類(lèi)型創(chuàng)建好后,可以像系統(tǒng)數(shù)據(jù)類(lèi)型一樣使用。例如:創(chuàng)建數(shù)據(jù)表,引用birthday和phone。CREATETABLEstudent_Info(student_IDINTnotnullPRIMARYKEY,student_NameCHAR(10)NULL,student_SexCHAR(2)NOTNULL,born_Datebirthday,class_NOINT,tele_Numberphone,ru_DateDATETIME,addressVARCHAR(50),commentVARCHAR(200))約束20高等教育出版社
約束是SQLServer提供的自動(dòng)保持?jǐn)?shù)據(jù)庫(kù)完整的一種方法,它通過(guò)限制字段中數(shù)據(jù)、記錄中數(shù)據(jù)和表之間的數(shù)據(jù)來(lái)保證數(shù)據(jù)的完整性。在SQLServer2008中提供了以下約束:主鍵約束、唯一性約束、非空約束、標(biāo)識(shí)列、外鍵約束、默認(rèn)值約束、默認(rèn)值對(duì)象、規(guī)則約束、檢查約束。1.主鍵約束(PrimaryKey)主鍵約束不允許一個(gè)或多個(gè)列輸入重復(fù)的值,以此來(lái)保證一個(gè)表中所有行的唯一性,使所有行都是可區(qū)分的。一個(gè)表只能有一個(gè)主鍵,且組成主鍵的列的數(shù)據(jù)都不能為空。定義主鍵時(shí),SQLServer在主鍵列上建立唯一索引,這個(gè)索引在查詢主鍵時(shí)可以提高查詢速度。主鍵由多個(gè)列組成時(shí),某列上的數(shù)據(jù)是可重復(fù)的,但這幾列的組合值必須是唯一的。Image和text類(lèi)型的列不能被定義為主鍵。創(chuàng)建主鍵可以在設(shè)計(jì)表結(jié)構(gòu)時(shí)進(jìn)行,也可以在修改表結(jié)構(gòu)時(shí)進(jìn)行。2.唯一性約束(Unique)唯一性約束是指定一個(gè)或多個(gè)列的組合值具有唯一性,以防止在列輸入重復(fù)的值。由于一個(gè)表只能有一個(gè)主鍵,若要保證一個(gè)或多個(gè)列的組合值具有唯一性,就可以使用唯一性約束。使用唯一性約束的列允許為空,但只能有一行為空。一個(gè)表中可以有多個(gè)唯一性約束??梢园盐ㄒ恍约s束定義在多個(gè)列上。3.非空約束(NotNull)非空約束就是設(shè)置列值不允許為空。主鍵列不允許為空。唯一性約束列可以為空,但只能有一行為空,否則就不唯一。創(chuàng)建表時(shí)需要確定該列的取值能否為空值(NULL),默認(rèn)允許為空值??罩挡煌诳瞻?空字符串)或數(shù)值零,通常表示未填寫(xiě)、未知(Unknown)、不可用或?qū)⒃谝院筇砑拥臄?shù)據(jù)。允許空值:表示該列取值是不確定的。4.標(biāo)識(shí)列(Identity(種子,增量))一個(gè)標(biāo)識(shí)列是唯一標(biāo)識(shí)表中每行的特殊列。當(dāng)新的一行添加到表中時(shí),這個(gè)列就被自動(dòng)賦給一個(gè)新值,不需要用戶輸入。默認(rèn)情況下從1開(kāi)始(種子是1),按1遞增(增量是1)。刪除一行時(shí),此行標(biāo)識(shí)列的值不被新增加的行的標(biāo)識(shí)列使用。標(biāo)識(shí)列是一個(gè)數(shù)字,能唯一代表一行,作用和主鍵是一樣的,相當(dāng)于Access數(shù)據(jù)庫(kù)中的自動(dòng)編號(hào)。標(biāo)識(shí)列的數(shù)據(jù)類(lèi)型只能是bitint、int、smallint、tinyint、decimal、numeric數(shù)據(jù)類(lèi)型。5.外鍵約束(ForeignKey)外鍵:是用于建立和加強(qiáng)兩個(gè)表數(shù)據(jù)之間的鏈接的一列或多列。實(shí)現(xiàn):通過(guò)將保存表中主鍵值的一列或多列添加到另一個(gè)表中,可創(chuàng)建兩個(gè)表之間的鏈接。這個(gè)列就成為第二個(gè)表的外鍵。特點(diǎn):外鍵數(shù)據(jù)必須存在于另一個(gè)基本表的主鍵上。外鍵主鍵6.默認(rèn)值約束(Default)默認(rèn)值可以是計(jì)算結(jié)果為常量的任何值,如常量、內(nèi)置函數(shù)、數(shù)學(xué)表達(dá)式。用戶在向表中插入一行時(shí),如果沒(méi)有為該列指定值,默認(rèn)值就指定該列中使用的值。7.默認(rèn)值對(duì)象與默認(rèn)值約束相同:用戶在向表中插入一行時(shí),如果沒(méi)有為該列指定值,默認(rèn)值就指定該列中使用的值。與默認(rèn)值約束不同:默認(rèn)值對(duì)象是一種數(shù)據(jù)庫(kù)對(duì)象,在數(shù)據(jù)庫(kù)中只需要定義一次后,就可以被一次或多次應(yīng)用于任意表中的一列或多列,還可以用于用戶定義的數(shù)據(jù)類(lèi)型。8.規(guī)則約束通過(guò)使用規(guī)則,可以指定插入到表中列的數(shù)據(jù)的有效值,從而確保數(shù)據(jù)在指定的取值范圍內(nèi)。規(guī)則也是一種數(shù)據(jù)對(duì)象,在數(shù)據(jù)庫(kù)中只需要定義一次后,就可以被一次或多次應(yīng)用于任意表中的一列或多列,還可以用于用戶定義的數(shù)據(jù)類(lèi)型。9.CHECK約束CHECK約束對(duì)一列或表中多個(gè)列的值設(shè)置CHECK約束,以限制輸入值,保證數(shù)據(jù)庫(kù)數(shù)據(jù)的完整性。列級(jí)CHECK約束只能與限制的列有關(guān),表級(jí)CHECK約束只能與限制的表中的列有關(guān)。一個(gè)表中可以定義多個(gè)CHECK約束。在多個(gè)列上定義CHECK約束,必須將約束定義為表級(jí)約束。例如:性別列的取值(男或女)是列級(jí)約束。工作年月的值大于出生年月的值,是表級(jí)約束。創(chuàng)建表創(chuàng)建表的方法:通過(guò)SSMS創(chuàng)建通過(guò)CREATETABLE語(yǔ)句創(chuàng)建表30高等教育出版社完整命令:CREATETABLE[[<數(shù)據(jù)庫(kù)名>]<數(shù)據(jù)表所有者>]<數(shù)據(jù)表名>(<列名><數(shù)據(jù)類(lèi)型>[列級(jí)約束]|<列名>as<計(jì)算列>[,<列名><數(shù)據(jù)類(lèi)型>[列級(jí)約束]]…[,<表級(jí)約束>])列級(jí)約束指定義在屬性列上的完整性約束
表級(jí)約束指定義在表上的完整性約束31高等教育出版社簡(jiǎn)單格式:CREATETABLE[[<數(shù)據(jù)庫(kù)名>]<數(shù)據(jù)表所有者>]<數(shù)據(jù)表名>(<列名><數(shù)據(jù)類(lèi)型>[NULL|NOTNULL][PRIMARYKEY|UNIQUE]|<列名>as<計(jì)算列表達(dá)式>[,…n])參數(shù)說(shuō)明:①NULL|NOTNULL:空或者不為空,默認(rèn)是NULL②PRIMARYKEY|UNIQUE:主鍵或者惟一③[,…n]:表明可以定義多個(gè)字段示例:CREATETABLEStudent(Stu_IDchar(12)NOTNULLPRIMARYKEY,Stu_Namevarchar(50),Stu_Passwdvarchar(50),Ssexchar(2),Sageint,Sdeptvarchar(50))問(wèn)題:表Student建在哪個(gè)數(shù)據(jù)庫(kù)中?怎么在指定數(shù)據(jù)庫(kù)中建表?方法一:先切換數(shù)據(jù)庫(kù),再建表。useStuManagegoCREATETABLEStudent(Stu_IDchar(12)NOTNULLPRIMARYKEY,Stu_Namevarchar(50),Stu_Passwdvarchar(50),Ssexchar(2),Sageint,Sdeptvarchar(50))方法二:在建表時(shí)指定表所屬的數(shù)據(jù)庫(kù)。CREATETABLEStuManage.dbo.Student(Stu_IDchar(12)NOTNULLPRIMARYKEY,Stu_Namevarchar(50),Stu_Passwdvarchar(50),Ssexchar(2),Sageint,Sdeptvarchar(50))例
對(duì)計(jì)算列使用表達(dá)式。CREATETABLEsalarys(姓名varchar(10),
基本工資money,
獎(jiǎng)金money,
總計(jì)AS基本工資+獎(jiǎng)金)例
定義表autouser自動(dòng)獲取用戶名稱。CREATETABLEautouser(編號(hào)intidentity(1,1)NOTNULL,
用戶代碼varchar(18),
登錄時(shí)間ASGetdate(),
用戶名ASUser_name())例
創(chuàng)建臨時(shí)表。CREATETABLE#students(學(xué)號(hào)varchar(8),
姓名varchar(10),
性別varchar(2),
班級(jí)varchar(10))createtableCourse(Course_IDchar(9)PrimaryKeyNOTNULL,Course_Namevarchar(50)NOTNULL,Book_IDchar(12),Course_Creidtint,Course_Pro_IDchar(9))createtableStu_Course(Stu_IDchar(12)NOTNULL,Course_IDchar(9)NOTNULL,Termchar(6),Scoredecimal(5,2),Creidtint,ConstraintPK_Stu_Course
PrimaryKey(Stu_ID,Course_ID))createtableTeacher(Tea_IDchar(9)NOTNULL,Tea_Namevarchar(50)NOTNULL,Tea_Sexchar(2)NULLConstraintDF_Tea_SexDefault('男'),Tea_AgeintNULL,Tea_Course_IDchar(9)NULL,ConstraintPK_Tea_IDPrimaryKeyClustered(Tea_ID),ConstraintCK_Tea_SexCheck(Tea_Sexin('男','女')),ConstraintCK_Tea_AgeCheck(Tea_Age>0andTea_Age<99),ConstraintFK_Tea_Course_IDForeignKey(Tea_Course_ID)ReferencesCourse(Course_ID))修改表結(jié)構(gòu)修改表結(jié)構(gòu)的方法:通過(guò)SSMS修改表通過(guò)ALTERTABLE語(yǔ)句修改表42高等教育出版社ALTERTABLE[[<數(shù)據(jù)庫(kù)名>]<數(shù)據(jù)庫(kù)所有者>]<數(shù)據(jù)表名>[WITHNOCHECK]ADD{[<列名><數(shù)據(jù)類(lèi)型>[列級(jí)約束]|表級(jí)約束]}[,n]|DROP{[CONSTRAINT]約束名|COLUMN<列名>}WITHNOCHECK指定該選項(xiàng)表明允許在表中添加CHECK或FOREIGNKEY約束,但不驗(yàn)證現(xiàn)有數(shù)據(jù)是否違反約束。反之,不指定該選項(xiàng)(默認(rèn)情況),則在增加任何約束時(shí)都要檢查現(xiàn)有數(shù)據(jù)是否違反約束。若有違反約束的情況,則終止語(yǔ)句的執(zhí)行,并返回錯(cuò)誤信息。ADD指為數(shù)據(jù)表添加新列或約束。DROP指刪除數(shù)據(jù)表中的一個(gè)列或約束。簡(jiǎn)單格式:ALTERTABLE<表名>{ALTERCOLUMN字段名新類(lèi)型(寬度[,小數(shù)位數(shù)])[NULL|NOTNULL]|ADD字段名類(lèi)型[NULL|NOTNULL]|DROPCOLUMN字段名[,…n]}例
更改表以添加新列,然后再刪除該列。ALTERTABLEStudentADDStu_Heightdecimal(3,2)NULLGOsp_helpStudentALTERTABLEStudentDROPCOLUMNStu_Height
GOsp_helpStudent例
在學(xué)生信息表Student中添加列Stu_Tel,記錄學(xué)生的聯(lián)系電話,其數(shù)據(jù)類(lèi)型為char(20),默認(rèn)值為“0”。ALTERTABLEStuManage.dbo.StudentADDStu_Telchar(20)NULLDEFAULT('0')例:將學(xué)生表中的Stu_Tel列刪除。ALTERTABLEStuManage.dbo.StudentDROPCOLUMNStu_Tel例
將表Student的列Stu_Name改為char(10)數(shù)據(jù)類(lèi)型,并且不允許為空。ALTERTABLEStudentALTERCOLUMNStu_Namechar(10)ALTERTABLEStu_ScoreADDCONSTRAINTFK_Stu_IDFOREIGNKEY(Stu_ID)REFERENCESStudent(Stu_ID),CONSTRAINTFK_Course_IDFOREIGNKEY(Course_ID)REFERENCESCourse(Course_ID),CONSTRAINTCK_ScoreCHECK(Score>=0andScore<=100)ALTERTABLEStu_ScoreDROPCONSTRAINTCK_Tea_Age,CONSTRAINTDF_Tea_Sex刪除表使用Transact-SQL語(yǔ)句刪除表語(yǔ)句格式如下:DROPTABLE<表名>注意:(1)定義有外鍵約束的表必須先刪除外鍵約束,才能刪除。(2)系統(tǒng)表不能使用DROPTABLE語(yǔ)句刪除。例
刪除當(dāng)前數(shù)據(jù)庫(kù)內(nèi)的表。USEStuManageGODROPTABLETeacher本例從當(dāng)前數(shù)據(jù)庫(kù)StuManage中刪除Student表及其數(shù)據(jù)和索引。例
刪除另外一個(gè)數(shù)據(jù)庫(kù)內(nèi)的表。DROPTABLE庫(kù)房管理.dbo.產(chǎn)品本例刪除“庫(kù)房管理”數(shù)據(jù)庫(kù)內(nèi)的“產(chǎn)品”表??梢栽谌魏螖?shù)據(jù)庫(kù)內(nèi)執(zhí)行此操作。用SSMS設(shè)置表的完整性在SSMS中設(shè)置如下約束:主鍵約束(PrimaryKey)唯一性約束(唯一索引)非空約束(NULL|NOTNULL)默認(rèn)值約束(Default)標(biāo)識(shí)列(自動(dòng)編號(hào)Identity)CHECK約束外鍵約束(在關(guān)系圖中創(chuàng)建)表關(guān)系用CREATETABLE創(chuàng)建表時(shí)指定表關(guān)系用SSMS創(chuàng)建導(dǎo)入和導(dǎo)出數(shù)據(jù)53高等教育出版社
導(dǎo)入數(shù)據(jù)就是把其他數(shù)據(jù)(如Access數(shù)據(jù)、Excel數(shù)據(jù)、Vfp數(shù)據(jù)、文本數(shù)據(jù))導(dǎo)入到SQLServer2008中。導(dǎo)出數(shù)據(jù)就是把SQLServer數(shù)據(jù)庫(kù)導(dǎo)出為其它數(shù)據(jù)格式。啟動(dòng)導(dǎo)入和導(dǎo)出數(shù)據(jù)程序有兩個(gè)辦法:一是通過(guò)windows的【開(kāi)始】→【所有程序】→【MicrosoftSQLServer2008】→【導(dǎo)入和導(dǎo)出數(shù)據(jù)(32位)】程序啟動(dòng)。二是在【對(duì)象資源管理器】中,展開(kāi)【數(shù)據(jù)庫(kù)】節(jié)點(diǎn),在任意一個(gè)數(shù)據(jù)庫(kù)上右擊,選擇【任務(wù)】→【導(dǎo)入數(shù)據(jù)】或【導(dǎo)出數(shù)據(jù)】啟動(dòng)。插入行使用insertvalues語(yǔ)句插入行使用insertselect語(yǔ)句插入行使用行構(gòu)造器的insert語(yǔ)句插入行使用selectinto語(yǔ)句創(chuàng)建表插入行1.使用insertvalues語(yǔ)句插入行insert語(yǔ)句是SQL語(yǔ)句中最常用的、用于向數(shù)據(jù)表中插入數(shù)據(jù)的語(yǔ)句,使用insert語(yǔ)句可以向表中插入一行數(shù)據(jù)。insert語(yǔ)句的基本語(yǔ)法格式如下:
insert[into]
表名或視圖名[(列名[,列名])]
values(數(shù)據(jù)值[,數(shù)據(jù)值])例
向?qū)W生表(student)表中插入記錄。InsertStudent(Stu_ID,Stu_Name,Stu_Passwd,Ssex,Sage,Sdept)values('200617012901','張三','000000','女',21,'土木工程系')---into可以省略InsertStudent(Stu_ID,Stu_Name,Stu_Passwd,Ssex,Sage,Sdept)values('200617012902',null,null,null,null,null)---除了Stu_ID外,其他字段都允許為空InsertStudent(Stu_ID,Stu_Name,Stu_Passwd,Ssex,Sage,Sdept)values('200617012903',null,null,default,null,null)---Ssex字段默認(rèn)值為’男’InsertStudent(Stu_ID)values('200617012904')---只給Stu_ID字段賦值InsertStudent(Stu_ID,Stu_Name)values('200617012905','王一')---只給Stu_ID,Stu_Name字段賦值/*如果給所有列賦值,可以省略字段列表*/InsertStudentvalues('200617012906','張三','000000','女',21,'土木工程系')InsertStudentvalues('200617012907',null,null,null,null,null)InsertStudentvalues('200617012908',null,null,default,null,null)2.使用insertselect語(yǔ)句插入行使用insertselect語(yǔ)句可以把其他數(shù)據(jù)表的記錄添加到現(xiàn)有的表中。使用insertselect語(yǔ)句比使用插入一行記錄的insertvalues效率要高很多。使用insertselect語(yǔ)句應(yīng)該遵循如下的原則:
要插入新行的表必須是已經(jīng)存在的表。保證接受新記錄的表中的列的數(shù)據(jù)類(lèi)型與源表中相應(yīng)列的數(shù)據(jù)類(lèi)型一致。如果要插入新行的表中的列,沒(méi)有默認(rèn)值,也不允許為空,插入數(shù)據(jù)時(shí),必須為其提供值。insertselect語(yǔ)句的基本語(yǔ)法如下:
insert[into]
表名select
字段列表from
源表where查詢條件例
在StuManage數(shù)據(jù)庫(kù)中,建立一個(gè)表stu,把student表中性別是“男”的記錄的Stu_id、stu_name、ssex、Sage字段添加到新表stu中。stu表結(jié)構(gòu)字段名稱類(lèi)型及長(zhǎng)度說(shuō)明Stu_idchar(12)主鍵Stu_namevarchar(50)允許為空Ssexchar(2)默認(rèn)值是“男”,允許為空Sageint允許為空createtableStu(Stu_idchar(12)primarykey,Stu_namevarchar(50),Ssexchar(2)default'男',Sageint)insertintoStuselectStu_id,stu_name,ssex,SagefromStudentwhereSsex='男'或insertstu(Stu_id,stu_name,ssex,Sage)selectStu_id,stu_name,ssex,SagefromStudentwhereSsex='男'或insertintoStu(Stu_id,stu_name,Sage)selectStu_id,stu_name,SagefromStudentwhereSsex='男'3.使用行構(gòu)造器的insert語(yǔ)句插入行
Server2008提供了一種能夠簡(jiǎn)化數(shù)據(jù)插入過(guò)程的新方法—行構(gòu)造器,它可以在一個(gè)insertvalues語(yǔ)句中一次插入多行語(yǔ)句。例:向Student表中一次插入5條數(shù)據(jù)。insertintoStudentvalues('200616013901','張三','11111','女',20,'中文系'),('200616013902','李四','11111','男',21,'數(shù)學(xué)系'),('200616013903','王五','11111','女',22,'物理系'),('200616013904','趙六','11111','女',23,'化學(xué)系'),('200616013905','田七','11111','女',24,'生物系')4.使用selectinto語(yǔ)句創(chuàng)建表
selectinto的基本語(yǔ)法如下:
select<select_list>intonew_tablefrom
{table_sources}[,…,n]wheresearch_condition例
把student表中女生的記錄選出來(lái),生成一個(gè)新表。
select*intoxyzfromstudentwhereSsex=’女’例
用selectinto語(yǔ)句創(chuàng)建一個(gè)空表。selectStu_id,stu_name,ssex,SageintowajfromStudentwhereSsex='王‘/*因?yàn)樾詣e不可能是“王”,所以無(wú)數(shù)據(jù),只有表結(jié)構(gòu)。*/更新行1.使用UPDATE語(yǔ)句更新行update表名或視圖名
set{列名=表達(dá)式→default→null}[,…,][where
查詢條件]其中update子句和set子句是必須的,而where子句是可選的,如果省略where子句將更新表中該列的所有數(shù)據(jù)。WHERE子句作用:指定查詢的條件,即指定數(shù)據(jù)記錄應(yīng)滿足的條件。條件:關(guān)系表達(dá)式、邏輯表達(dá)式和特殊表達(dá)式。(1)關(guān)系表達(dá)式
定義:用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接在一起的式子
結(jié)果:邏輯值(TRUE、FALSE),
格式:<表達(dá)式1><關(guān)系運(yùn)算符><表達(dá)式2>
舉例:WHEREstudent_sex=‘男’
關(guān)系運(yùn)算符:=、<、<=、>、>=、!=或<>。不同類(lèi)型數(shù)據(jù)的比較字符型數(shù)據(jù)比較:采用對(duì)字符的ASCII值進(jìn)行比較的方法。
注意:任何字符都有對(duì)應(yīng)的ASCII值。字符串的比較:從左向右依次逐個(gè)進(jìn)行比較。日期字符串:按照“年-月-日”的格式書(shū)寫(xiě)。漢字比較:按照漢語(yǔ)拼音字母逐個(gè)比較。數(shù)字:按數(shù)值大小比較。(2)邏輯表達(dá)式定義:用邏輯運(yùn)算符將兩個(gè)關(guān)系表達(dá)式連接起來(lái)的式子。結(jié)果:邏輯值(TRUE、FALSE)。格式:[<關(guān)系表達(dá)式1>]<邏輯運(yùn)算符><關(guān)系表達(dá)式2>邏輯運(yùn)算符:AND、OR、NOT運(yùn)算符號(hào)意義%通配符,包含零個(gè)或更多字符的任意字符串_(下劃線)通配符,表示任意單個(gè)字符[]指定范圍([a-f])或集合([abcdef])中的任何單個(gè)字符[^]不屬于指定范圍([a-f])或集合([abcdef])中的任何單個(gè)字符BETWEEN…AND定義一個(gè)區(qū)間范圍IS[NOT]NULL測(cè)試字段值是否為空值[NOT]LIKE模式匹配,字符串匹配操作符[NOT]IN檢查一個(gè)字段值是否屬于一組值之中[NOT]EXISTS檢查某一個(gè)字段值是否有值,EXISTS是ISNULL的反義詞(3)特殊表達(dá)式例
將student表中姓王的學(xué)生的年齡加1歲,密碼改為“000000”。updateStudentsetSage=Sag
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 年度基礎(chǔ)地質(zhì)勘查服務(wù)競(jìng)爭(zhēng)策略分析報(bào)告
- 二零二五年度違約民事起訴狀合同起草技巧與法律適用3篇
- 2024-2025學(xué)年新教材高中數(shù)學(xué)第十章概率單元質(zhì)量評(píng)估含解析新人教A版必修第二冊(cè)
- 2025年度文化旅游項(xiàng)目招投標(biāo)與合同管理規(guī)范解讀3篇
- 2024金融行業(yè)拓展訓(xùn)練合同
- 2025年度新能源居間服務(wù)合同范本英文版3篇
- 二零二五年度留守兒童特殊教育需求與個(gè)性化支持服務(wù)合同4篇
- 2025年度高科技企業(yè)派遣研發(fā)人員合同范本
- 2025版高性能鋁合金模板制造與租賃服務(wù)合同詳盡條款全文4篇
- 2025年度家庭經(jīng)濟(jì)困難子女撫養(yǎng)費(fèi)減免專項(xiàng)合同
- 鋪大棚膜合同模板
- 長(zhǎng)亭送別完整版本
- 《鐵路軌道維護(hù)》課件-更換道岔尖軌作業(yè)
- 股份代持協(xié)議書(shū)簡(jiǎn)版wps
- 職業(yè)學(xué)校視頻監(jiān)控存儲(chǔ)系統(tǒng)解決方案
- 《銷(xiāo)售心理學(xué)培訓(xùn)》課件
- 2024年安徽省公務(wù)員錄用考試《行測(cè)》真題及解析
- 你比我猜題庫(kù)課件
- 豐順縣鄉(xiāng)鎮(zhèn)集中式飲用水水源地基礎(chǔ)狀況調(diào)查和風(fēng)險(xiǎn)評(píng)估報(bào)告
- 無(wú)人駕駛航空器安全操作理論復(fù)習(xí)測(cè)試附答案
- 2024年山東省青島市中考語(yǔ)文試卷(附答案)
評(píng)論
0/150
提交評(píng)論