固定長度字符串_第1頁
固定長度字符串_第2頁
固定長度字符串_第3頁
固定長度字符串_第4頁
固定長度字符串_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

固定長度字符串:通常用CHAR(n)表示可變長度字符串:通常用VARCHAR(n)表示整數(shù):Integer、int,一般為4個(gè)字節(jié)浮點(diǎn)數(shù):Float、DecimalMoney:幣值數(shù)值,在小數(shù)點(diǎn)后恰好包含兩位的數(shù)字Bit:二值數(shù)值數(shù)據(jù),僅取0、1或NULL日期:date,形為YYYY-MM-DD時(shí)間:time,形為HH:MM:SS刪除數(shù)據(jù)庫的方法DROPDATABASE語句DROPDATABASE數(shù)據(jù)庫名[,…n]建立一個(gè)數(shù)據(jù)庫createdatabase數(shù)據(jù)庫名撤消一個(gè)數(shù)據(jù)庫dropdatabase數(shù)據(jù)庫名指定當(dāng)前數(shù)據(jù)庫use數(shù)據(jù)庫名▲在當(dāng)前數(shù)據(jù)庫中創(chuàng)建新表Createtable基本表名

(列名類型,完整性約束,)

完整性約束包括主鍵子句(PrimaryKey、檢查子句(Check)、外鍵子句(ForeignKey)和Null/NotNull、Unique。▲用Createtable語句創(chuàng)建表結(jié)構(gòu)Createtable表名({字段名字段屬性字段約束}[,…n])列的定義必須放在圓括號(hào)中。語法中參數(shù)順序不能改動(dòng)。最多可以設(shè)置1024個(gè)字段。1、字段屬性數(shù)據(jù)類型[(長度)][identity(初始值,步長值)][null/notnull]默認(rèn)長度的數(shù)據(jù)類型“(長度)”不允許指定,需要指定長度時(shí)圓括號(hào)不能省略。identity用于指定該列為自動(dòng)編號(hào)字段(標(biāo)識(shí)列);null/notnull指定該列允許空值(默認(rèn))或不允許空值。2、字段約束定義格式:[constraint約束名]primarykey[(主鍵列名)][constraint約束名]unique[(惟一列名)][constraint約束名][foreignkey[(外鍵列名)]]references引用表名(引用列名)[constraint約束名]check(檢查表達(dá)式)[constraint約束名]default默認(rèn)值約束名為以后修改管理時(shí)使用,省略為系統(tǒng)默認(rèn)的約束名。字段約束也可以在創(chuàng)建表結(jié)構(gòu)以后另外單獨(dú)設(shè)置。如:設(shè)置notnull值:createtables(snochar(10)notnull,snamechar(8),agesmallint,sexchar(2))2.缺省約束default:createtables

(snochar(10)notnull,

snamechar(8),

agesmallint,sexchar(2)default’男‘)--性別缺省時(shí)默認(rèn)為’男’3.主鍵約束primarykeycreatetables

(snochar(10),

snamechar(8),

agesmallint,sexchar(2)default’男‘,primarykey(sno))--S表的主鍵設(shè)置為sno有了主鍵約束,主鍵為非空,所以sno的notnull可以省寫4.外鍵約束foreignkey…references…createtableSC(snochar(10)notnull,cnochar(3)notnull, gradenumeric(3,1),primarykey(sno,cno), foreignkey(sno)referencesS(sno), foreignkey(cno)referencesC(cno))--與S的sno及C的cno建立外鍵5.檢查約束checkcreatetables(snochar(10)primarykey,snamechar(8)notnull,

agesmallintcheck(agebetween15and45),sexchar(2)default’男‘,)--約束年齡在15至45歲之間check(agebetween15and45)相當(dāng)于check(age>=15andage<=45)▲建表小結(jié):createtable表名(列名數(shù)據(jù)類型[default缺省值][notnull][,列名數(shù)據(jù)類型[default缺省值][notnull]][,primarykey(列名[,列名]…)][,foreignkey(列名[,列名]…)references表名(列名[,列名]…)] [,check(條件)][,unique(列名)])常用完整性約束主碼約束:PRIMARYKEY唯一性約束(不重復(fù)):UNIQUE非空值約束:NOTNULL參照完整性約束如:createtableCourse(cnochar(5)notnull,cnamenvarchar(30)notnull,credittinyintnotnullcheck(credit>0),pcnochar(5),primarykey(cno),foreignkey(pcno)referencescourse(cno))1.建立course,增加一條件:課程名不能重復(fù)createtableCourse(cnochar(5)notnull,cnamenvarchar(30)notnull,credittinyintnotnullcheck(credit>0),pcnochar(5),primarykey(cno),foreignkey(pcno)referencescourse(cno)unique(cname))▲用Altertable語句修改表結(jié)構(gòu)SQL修改表結(jié)構(gòu)語句ALTERTABLE的語法格式:ALTERTABLE表名add列名數(shù)據(jù)類型[(長度)][null/notnull][default’默認(rèn)值’]altercolumn列名數(shù)據(jù)類型[(長度)][null/notnull]dropcolumn字段名[,…n]addconstraint{約束名約束類型定義}列約束定義[,…n][FOR列名]dropconstraint約束名[,…n]注意:ALTERTABLE語句中只能使用單個(gè)子句,即各個(gè)子句不能組合使用?!褂胊dd子句添加列altertable表名add字段名數(shù)據(jù)類型[(長度)][null/notnull][default‘默認(rèn)值’]新增加字段時(shí)可以同時(shí)設(shè)置空值約束、默認(rèn)值約束。若不允許為空時(shí)則必須給新增加的列指定默認(rèn)值,否則語句執(zhí)行錯(cuò)誤。如:usediannaoxsaltertable供貨商表add聯(lián)系電話char(13)notnulldefault'00000000'注意:添加的字段若不允許為空則必須設(shè)置默認(rèn)值,如果不允許為空又不需要默認(rèn)值,可在添加字段時(shí)先允許為空,再用altercolumn子句修改為不允許為空,則沒有默fromSTUDENT▲取消重復(fù)行distinctSelectdistinctsnofromsc▲如果沒有指定distinct,則缺省為ALL,即保留重復(fù)行selectALLSnofromSC▲確定集合IN,NOTIN謂詞IN可以用來查找屬性值屬于指定集合的元組如:查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)系的學(xué)生姓名和性別Selectsname,sagefromstudentWheresdeptnotin(‘IS’,’MA’,’CS’)▲字符匹配謂詞LIKE可以用來進(jìn)行字符串的匹配。其一般語法格式:[NOT]LIKE‘<匹配串>’[ESCAPE‘<換碼字符>’]含義:查找指定的屬性列值與<匹配串>相匹配的元組如:查詢姓名為李勇的學(xué)生信息Select*fromstudentWheresnamelike‘李勇’匹配串可以是一個(gè)完整的字符串,也可以含有通配符%和_。其中:%(百分號(hào))代表任意長度(可以為0)的字符串。例如a%b表示以a開頭,以b結(jié)尾的任意長度的字符串。如acb,addgb,ab等都滿足該匹配串。_(下橫線)代表任意單個(gè)字符例如a_b代表以a開頭,以b結(jié)尾的長度為3的任意字符串,比如acb,afb都滿足該匹配串.如:查詢所有姓劉的學(xué)生姓名、學(xué)號(hào)和性別Selectsname,sno,ssexftomstudentWheresnamelike‘劉%’▲要查詢的字符串本身就含有%或_,這時(shí)就要使用ESCAPE’<轉(zhuǎn)義字符>’短語對通配符進(jìn)行轉(zhuǎn)義查詢DB_design的課程的課程號(hào)和學(xué)分selectCno,CcreditfromCoursewherecnamelike‘db\_design’escape‘\’查詢以“DB_”開頭,且倒數(shù)第三個(gè)字符為i的課程的詳細(xì)情況select*fromCoursewherecnamelike‘DB\_%i__’ESCAPE’\’▲多重條件查詢▲邏輯運(yùn)算符AND和OR可用來聯(lián)結(jié)多個(gè)查詢條件。如:查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)系(CS)學(xué)生的姓名和性別Selectsname,ssexfromstudentWheresdept=’IS’ORSdept=’MA’ORSdept=’CS’等價(jià)于Selectsname,ssexfromstudentWheresdeptin(‘IS’,‘MA’,‘CS’)AND的優(yōu)先級(jí)高于OR,但用戶可以用括號(hào)改變優(yōu)先級(jí)。如:檢索年齡大于25歲的男學(xué)生的學(xué)號(hào)和姓名,結(jié)果按年齡降序、學(xué)號(hào)升序排序。SelectSno,snameFromstudentWhereSage>25andSsex=’男’Orderbysagedesc,snoasc集函數(shù)(或稱聚集函數(shù))聚集函數(shù)用于對數(shù)據(jù)表的的記錄進(jìn)行統(tǒng)計(jì),如統(tǒng)計(jì)記錄總數(shù)、平均值、最小值和最大值等。count(*):統(tǒng)計(jì)表中所有行的行數(shù)。count(列名):統(tǒng)計(jì)表中指定列非null值的行數(shù)。count(distinct列名):統(tǒng)計(jì)表中指定列名除去重復(fù)值的行數(shù)。avg(distinct/all列名):求一列值的平均值(此列必須是數(shù)值型)SUM(distinct/all列名):求一列值的總和(此列必須是數(shù)值型)lmax(distinct/all列名):求一列中的最大值lmin(distinct/all列名):求一列中的最小值。where子句用于對分組前的每個(gè)記錄進(jìn)行篩選。Having是對分組以后對結(jié)果進(jìn)行篩選。groupby與orderby。orderby子句可以與Groupby子句共同使用來查詢結(jié)果進(jìn)行排序。orderby子句必須跟在Groupby子句后面,順序不能調(diào)換。groupby子句、orderby中不能包含Select清單組成部分以外的列名?!樵冋Z句的一般格式:SELECT[all|distinct]<目標(biāo)表達(dá)式>[,<目標(biāo)表達(dá)式>]FROM<表名或者視圖名>[,<表名或者視圖名>][WHERE<條件表達(dá)式>][GROUPBY<列名1>[HAVING<條件表達(dá)式>]][ORDERBY<列名2>[ASC|DESC]]WHERE子句作用于基本表或視圖(分組前),HAVING子句作用于組groupby子句、orderby中不能包含Select清單組成部分以外的列名。INSERT語句—插入數(shù)據(jù)插入數(shù)據(jù)的語句是INSERT語句。方式有兩種:元組值的插入和查詢結(jié)果的插入1、插入元組值一次插入一個(gè)元組值INSERTINTO基本表名(列名表)VALUES(元組值)一次插入多個(gè)元組值INSERTINTO基本表名(列名表)Select元組值1unionallSelect元組值2unionallSelect元組值32、插入子查詢結(jié)果INSERTINTO基本表名(列名表)SELECT查詢語句如:在student中,把學(xué)生的專業(yè),平均年齡存入另一個(gè)已知的基本S_G(S#,Avgage)INSERTINTOS_G(S#,Avgage)SELECTS#,AVG(age)FROMstudentGROUPBYS#語法格式CREATE[UNIQUE][CLUSTER]INDEX<索引名>ON<表名>(<列名>[<次序>][,<列名>[<次序>]]…) 用<表名>指定要建索引的基本表名字索引可以建立在該表的一列或多列上,各列名之間用逗號(hào)分隔用<次序>指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCUNIQUE表明此索引的每一個(gè)索引值只對應(yīng)唯一的數(shù)據(jù)記錄CLUSTER表示要建立的索引是聚集索引數(shù)據(jù)庫的修改1、刪除記錄:DELETE語句DELETEFROM<表名>

[WHERE<條件>]2、修改記錄:UPDATE語句update表名set列名=表達(dá)式|子查詢列名=[,表達(dá)式|子查詢]…[where條件表達(dá)式]如:刪除低于平均工資的老師記錄(表S,工資SAL)。deletefromSwhereSAL<(selectavg(SAL)fromS)將選修C1課程的學(xué)生的成績改為該課程的平均成績Update Setscore=(Selectavg(score) FromSC Wherecno='C1') Wherecno='C1'▲刪除數(shù)據(jù)庫中的對象:DROP語句1、刪除基本表DROPTABLE表名2、刪除索引DROPINDEX表名.索引名3、刪除數(shù)據(jù)庫DROPDATABASE數(shù)據(jù)庫名▲修改基本表定義(ALTER)altertable表名 [add子句]增加新列或添加主鍵、外鍵 [dropcolumn子句] 刪除列[altercolumn子句]修改列的定義[Dropconstraint約束名]刪除約束如果要?jiǎng)h除或修改有約束限制的字段,則應(yīng)先刪除其約束,然后在刪除或修改。WHERE子句作用于基本表或視圖(分組前),HAVING子句作用于組orderby子句必須跟在Groupby子句后面,順序不能調(diào)換。groupby子句、orderby中不能包含Select清單組成部分以外的列名。連接查詢在查詢中,同時(shí)涉及兩個(gè)或兩個(gè)以上的表,要根據(jù)表中數(shù)據(jù)的情況作連接。連接查詢:一個(gè)查詢涉及兩個(gè)以上的表2、連接條件(或稱連接謂詞)連接條件,其一般格式為:[<表名1>.]<列名1><比較運(yùn)算符>[<表名2.>]<列名2>連接條件中的列名稱為連接字段其中比較運(yùn)算符主要有:=、>、<、>=、<=、!=。當(dāng)連接運(yùn)算符為=時(shí),稱為等值連接。使用其他運(yùn)算符稱為非等值連接。需要連接的表要具有公共屬性(個(gè)人認(rèn)為是主外鍵的聯(lián)系)如果連接條件中兩個(gè)屬性里的任何一個(gè)屬性包含空值,那一條記錄就將被剔除,當(dāng)這兩個(gè)屬性都是空值時(shí)也同樣被剔除。一、廣義笛卡爾積(不帶連接謂詞的連接)例:SELECTStudent.*,SC.*FROMStudent,SC帶連接謂詞的連接SELECTSNAME,CNOFROMSTUDENT,SCWHERESTUDENT.SNO=SC.SNO二、等值與非等值連接查詢[<表名1>.]<列名1><比較運(yùn)算符>[<表名2.>]<列名2>當(dāng)比較運(yùn)算符為=時(shí),稱為等值連接。使用其他運(yùn)算符時(shí),稱為非等值連接。連接查詢注意事項(xiàng):需要連接的表要具有公共屬性連接的屬性最好是主鍵和外鍵若連接的兩個(gè)表包含相同的字段,則需要在字段前加其所屬的表名2、使用別名若連接的表名較長,可為表起別名。SQL語言允許在FROM子句中為表名指定別名。為表名執(zhí)行別名,只需將別名寫在表名之后,它們之間用空格隔開就可以了。如:selects.sno,snameFromstudents,scWherecno=’002’ands.sno=sc.sno三、自身連接連接操作不僅可以在兩個(gè)表之間進(jìn)行,也可以是一個(gè)表與自己進(jìn)行連接。一個(gè)表與其自己進(jìn)行連接,稱為表的自身連接需要給表起別名以示區(qū)別由于所有屬性名都是同名屬性,因此必須使用別名前綴如:查詢每一門課的間接先修課(即先修課的先修課)SELECTFIRST.Cno,SECOND.CpnoFROMCourseFIRST,CourseSECONDWHEREFIRST.Cpno=SECOND.Cno查詢與劉晨在同一個(gè)系學(xué)習(xí)的學(xué)生的詳細(xì)資料selectb.*fromstudenta,studentbwherea.Sdept=b.Sdeptanda.Sname='劉晨'既選修了001又選修002課程的學(xué)生學(xué)號(hào)selecta.snofromsca,scbwherea.sno=b.snoando='001'ando='002'四、外連接外連接與普通連接的區(qū)別1.普通連接操作只輸出滿足連接條件的元組2.外連接操作以指定表為連接主體,將主體表中不滿足連接條件的元組一并輸出左外連接外連接符(*)出現(xiàn)在連接條件的左邊 右外連接外連接符(*)出現(xiàn)在連接條件的右邊如:查詢每個(gè)學(xué)生的基本情況以及選課情況。包括沒有選修課程的學(xué)生selectstudent.*,cno,scorefromstudent,scwherestudent.sno=sc.snoselectstudent.*,cno,scorefromstudent,scwherestudent.sno*=sc.sno查詢學(xué)生的學(xué)號(hào),選修課的課程名,成績,要求沒有學(xué)生選修的課程名也顯示出來。selectsc.sno,cname,scorefromsc,coursewhereo=*o五、復(fù)合條件連接WHERE子句中含多個(gè)連接條件時(shí),稱為復(fù)合條件連接如:查詢選修002號(hào)課程且成績在90分以上的所有學(xué)生的學(xué)號(hào)、姓名SELECTStudent.Sno,student.SnameFROMStudent,SCWHEREStudent.Sno=SC.SnoANDSC.Cno='002'ANDSC.Score>90多表連接連接操作除了可以是兩表連接,還可以是兩張以上的表的連接,稱為多表連接。Selectstudent.sno,sname,cname,scoreFromstudent,sc,coutseWherestudent.sno=sc.snoandcoutse,cno=o關(guān)系數(shù)據(jù)庫與SQL語言----嵌套查詢嵌套查詢在SQL語言中,一個(gè)SELECT-FROM-WHERE語句稱為一個(gè)查詢塊,將一個(gè)查詢塊嵌套在另一個(gè)查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢,而置入的SELECT語句稱為子查詢。如:selectSnamefromStudentwheresnoin(selectsnofromscwherecno=‘001’)一、使用in的子查詢表達(dá)式[not]in(子查詢)判斷表達(dá)式的值是否在子查詢的結(jié)果中。如:查詢與“劉晨”在同一個(gè)系學(xué)習(xí)的學(xué)生。selectSno,Sname,SdeptfromStudentwhereSdeptIN(selectSdeptfromStudentwhereSname='劉晨')選修了001號(hào)課程的學(xué)生的學(xué)號(hào)及姓名。Selectsno,snamefromstudentwhereSnoin(selectsnofromSCwherecno=‘001')二、帶有比較運(yùn)算符的子查詢當(dāng)用戶確切知道內(nèi)層查詢返回的是單值,可以用>,<,>=,<=,!=,<>等比較運(yùn)算符查詢與劉晨在同一個(gè)系學(xué)習(xí)的學(xué)生selectSno,Sname,SdeptfromStudentwhereSdept=(selectSdeptfromStudentwhereSname=‘劉晨’)三、集合之間的比較some/any/all子查詢(some與any等效)表達(dá)式比較運(yùn)算符any(子查詢)表達(dá)式的值至少與子查詢結(jié)果中的一個(gè)值相比滿足比較運(yùn)算符。表達(dá)式比較運(yùn)算符all(子查詢)

溫馨提示

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

評論

0/150

提交評論