




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第十三講MYSQL-增刪改查第十三講MYSQL-增刪改查1
插入記錄操作語法:
敘述:如果表名后面沒寫字段名,則默認(rèn)是向所有的字段添加值,另外字符串值應(yīng)該用‘’或“”引號括起來舉例1:向people表中添加一條記錄:insertintopeople(name,age)
values(“zhangsan”,20);INSERT
[INTO]<表名>[列名]
VALUES
<值列表> 插入記錄操作語法: INSERT[INTO]<表名>2插入案例創(chuàng)建一張學(xué)生信息表,往表中插入數(shù)據(jù)createtablestudents( scodeintnotnullauto_increment, snamevarchar(20)notnull, saddressvarchar(20)default‘未知’, sageint, semailvarchar(20), ssexbit, primarykey(scode));插入案例創(chuàng)建一張學(xué)生信息表,往表中插入數(shù)據(jù)3插入數(shù)據(jù)行1注意事項1:每次插入一行數(shù)據(jù),不可能只插入半行或者幾列數(shù)據(jù),因此,插入的數(shù)據(jù)是否有效將按照整行的完整性的要求來檢驗;INSERTINTOStudents(SName,SAddress,Sage,SEmail,SSEX)VALUES(‘小明')×插入數(shù)據(jù)行1注意事項1:每次插入一行數(shù)據(jù),不可能只插入半行插入數(shù)據(jù)行2注意事項2:每個數(shù)據(jù)值的數(shù)據(jù)類型、精度和小數(shù)位數(shù)必須與相應(yīng)的列匹配;INSERTINTOStudents(SName,SAddress,Sage,SEmail,SSEX)VALUES(‘張青裁’,‘上海松江’,ZQC,‘ZQCSohu’,‘男')×插入數(shù)據(jù)行2注意事項2:每個數(shù)據(jù)值的數(shù)據(jù)類型、精度和小數(shù)位插入數(shù)據(jù)行3注意事項4:如果在設(shè)計表的時候就指定了某列不允許為空,則必須插入數(shù)據(jù);INSERTINTOStudents(SAddress,Sage,SEmail,SSEX)VALUES('上海松江',6,'ZQCSohu',0)
×插入數(shù)據(jù)行3注意事項4:如果在設(shè)計表的時候就指定了某列不允許插入數(shù)據(jù)行4注意事項6:具有缺省值的列,可以使用DEFAULT(缺省)關(guān)鍵字來代替插入的數(shù)值INSERTINTOStudents(SName,SAddress,Sage,SEmail,SSEX)VALUES('張青裁',DEFAULT,6,'ZQCSohu',0)插入數(shù)據(jù)行4注意事項6:具有缺省值的列,可以使用DEFAUL插入多行數(shù)據(jù)INSERTSTUDENTS(SName,Sage,SSex)VALUES('測試女生1',35,0),('測試女生2',17,0),('測試女生3',13,0),(‘測試男生1',11,1),('測試女生4',20,0),(‘測試男生2',24,1),('測試女生5',11,0),(‘測試男生3',23,1);INSERTINTO
<表名>(列名)VALUES(<列名值>),(<列名值>),(<列名值>)……插入多行數(shù)據(jù)INSERTSTUDENTS(SName,插入多行數(shù)據(jù)INSERTINTO TongXunLu('姓名','地址','電子郵件')
SELECT SName,SAddress,SEmailFROM StudentsINSERTINTO
<表名>(列名)SELECT
<列名>FROM
<源表名>插入多行數(shù)據(jù)INSERTINTO TongXunLu(學(xué)生、課程、成績插入數(shù)據(jù)學(xué)生信息'95001','洛燕妮','女',20,'信息系''95002','歐陽炎','男',19,'計算機(jī)系''95003','何東升','男',21,'美術(shù)系''95004','劉晨','男',18,'計算機(jī)系''95005','沙明華','女',21,'美術(shù)系''95006','歐陽寶寶','男',19,'美術(shù)系’課程信息1,'JAVA'2,'C'3,'.NET'成績信息'95001',1,98'95002',1,50'95004',1,70'95003',4,95'95005',4,40'95006',4,77'95001',2,80'95002',3,58'95006',2,70學(xué)生、課程、成績插入數(shù)據(jù)學(xué)生信息10
更改記錄操作語法:敘述:
where子句是判斷語句,用來設(shè)定條件,限制只更新匹配的行,如果不帶where子句,則更新所有行數(shù)據(jù)。舉例:
將student表中的所有學(xué)生名稱為"Alex"的改為"Tom":updatestudentsetsname="Tom"wheresname="Alex";UPDATE
<表名>
SET<列名
=更新值>
[WHERE<更新條件>] 更改記錄操作語法:UPDATE<表名>SET<列名11更新數(shù)據(jù)行UPDATEStudentSETSSEX=0UPDATEStudentSETSdept='家政系'WHERESdept='刺繡系'UPDATEScSETGrade=Grade+5WHEREGrade<=95更新數(shù)據(jù)行UPDATEStudentSETSSEX=刪除記錄操作語法:敘述:此語句刪除表中的行,如果不帶where子句,則刪除整個表中的記錄,但是表不被刪除。舉例:刪除student表中的所有年齡小于18歲的記錄:
deletefromstudentwheresage<18;DELETEFROM<表名>[WHERE
<刪除條件>]刪除記錄操作語法:DELETEFROM<表名>[WHE13補充說明刪除學(xué)生編號為'95005'的學(xué)生信息包括成績信息deletefromstudent,scusingstudent,sc
wherestudent.sno=sc.studentid
andstudent.sno='95005';說明:表和字段的引用方式有兩種:絕對引用和相對引用絕對引用:數(shù)據(jù)庫名.表名(.字段名)相對引用:表名.(字段名)補充說明14刪除數(shù)據(jù)行河南新鄉(xiāng)趙可以0010016河南新鄉(xiāng)張麗鵑0010015江西南昌雷銅0010014湖南新田吳蘭0010013山東定陶李山0010012….地址姓名學(xué)號980010016數(shù)學(xué)810010013語文670010012語文740010013數(shù)學(xué)880010012數(shù)學(xué)….分?jǐn)?shù)學(xué)號科目DELETEFROM學(xué)員信息表
WHERE學(xué)號
='0010012'刪除數(shù)據(jù)行河南新鄉(xiāng)趙可以0010016河南新鄉(xiāng)張麗鵑0010什么是查詢?ApplicationLogic客戶程序查詢請求查詢結(jié)果集SQLSERVERABCDEFG
SELECT*FROMSALES查詢產(chǎn)生一個虛擬表,看到的是表形式顯示的結(jié)果,但結(jié)果并不真正存儲,每次執(zhí)行查詢只是現(xiàn)從數(shù)據(jù)表中提取數(shù)據(jù),并按照表的形式顯示出來什么是查詢?ApplicationLogic客戶程序查詢請16怎么查的?學(xué)員編號學(xué)員姓名地址所在班級…….001張明全湖南長沙S201002李菲湖北宜昌S202003于寄謙甘肅天水S204004劉國正山東荷澤S201005周接輪臺灣新竹S204006鞏小妹香港龍灣S203007鞏大妹香港龍灣S203008張明敏北京順義S202009矛十八四川棉陽S204010羅林光陜西臨潼S202011司馬坡新疆喀什S201S202陜西臨潼羅林光010…S202湖北宜昌李菲002S202北京順義張明敏008SELECT*FROMStudentWHERE所在班級
=‘S202’怎么查的?學(xué)員編號學(xué)員姓名地址所在班級…….001張明全湖南17SQL語法SELECT[DISTINCT|DISTINCTROW|ALL]select_expression,...
[FROMtable_references
[WHEREwhere_definition]
[GROUPBYcol_name,...]
[HAVINGwhere_definition]
[ORDERBY{unsigned_integer|col_name| formula}[ASC|DESC],...]
[LIMIT[offset,]rows]
[PROCEDUREprocedure_name]
]SQL語法SELECT[DISTINCT|DISTIN18查詢記錄操作from子句:指定查詢數(shù)據(jù)的表where子句:查詢數(shù)據(jù)的過濾條件groupby子句:對匹配where子句的查詢結(jié)果進(jìn)行分組having子句:對分組后的結(jié)果進(jìn)行條件限制orderby子句:對查詢結(jié)果結(jié)果進(jìn)行排序,后面跟desc降序或asc升序(默認(rèn))。
limit子句:對查詢的顯示結(jié)果限制數(shù)目procedure子句:查詢存儲過程返回的結(jié)果集數(shù)據(jù)查詢記錄操作from子句:指定查詢數(shù)據(jù)的表19查詢舉例SELECT<列名>FROM
<表名>[WHERE<查詢條件表達(dá)式>][ORDERBY<排序的列名>[ASC或DESC]]
列名稱SELECT
Scode,
SName, Sdept
表名FROMStudents過濾條件WHERE
SSEX=0排序條件ORDERBY
SageSELECT
Scode,SNameFROM
StudentsWHERE
SSEX=0
ORDERBY
Sage查詢舉例SELECT<列名>
列名稱SELECT20舉例1: 查詢?nèi)w學(xué)生的學(xué)號與姓名。selectsno,snamefromstudent;舉例2: 查詢?nèi)w學(xué)生的詳細(xì)記錄。selectsno,sname,ssex,sage,sdeptfromstudent;或select*
fromstudent;舉例3:
查全體學(xué)生的姓名及其出生年份。selectsname,2019-sagefromstudent;
舉例4:
查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名。 selectsname,'yearofbirth:',2019-sage,islower(sdept)fromstudent;舉例5:
查詢選修了課程的學(xué)生學(xué)號(去掉重復(fù)的記錄)selectdistinctstudentidfromsc;舉例1: 查詢?nèi)w學(xué)生的學(xué)號與姓名。21舉例6: 查詢?nèi)w學(xué)生的學(xué)號與姓名,用中文顯示列名。selectsnoas‘編號’,snameas‘姓名’fromstudent;舉例7: 給表設(shè)置別名。selects.sno,s.sname
fromstudentass;舉例8:
查詢年齡在20以下的學(xué)生的姓名。selectsnamefromstudentwheresage<20;
舉例9:
查詢?nèi)w學(xué)生的姓名、年齡,要求按照年齡降序排序。 selectsname,sagefromstudentorderbysagedesc;舉例10:
查詢年齡最大的前3個學(xué)生的姓名和年齡,或第4、5個學(xué)生selectsname,sagefromstudentorderbysagedesclimit3;或(limit3,2)舉例6: 查詢?nèi)w學(xué)生的學(xué)號與姓名,用中文顯示列名。22
使用集函數(shù)SQL提供的統(tǒng)計函數(shù)稱為集函數(shù).主要的集函數(shù):記數(shù)函數(shù):count(列名)計算元素的個數(shù)求和函數(shù):sum(列名) 對某一列的值求和,但屬性必須是整型計算平均值:avg(列名)對某一列的值計算平均值求最大值:max(列名)找出某一列的最大值求最小值:min(列名)找出某一列的最小值使用集函數(shù)SQL提供的統(tǒng)計函數(shù)稱為集函數(shù).23舉例11: 查詢學(xué)生總數(shù)。
selectcount(*)fromstudent;舉例12: 查詢選修了課程的學(xué)生人數(shù)。
selectcount(distinctstudentid)fromsc;舉例13: 查詢1號課程的學(xué)生平均成績。
selectavg(grade)fromscwherecourseid=1;舉例14: 查詢1號課程的學(xué)生最高分和最低分。selectmax(grade)as‘最高分’,min(grade)as‘最低分’fromscwherecourseid=1;舉例15: 查詢每個學(xué)生的平均成績。selectstudentid,avg(grade)as‘平均成績’fromscgroupbystudentid;舉例16: 查詢學(xué)生的平均成績在70分以上的。selectstudentid,avg(grade)as‘平均成績’fromscgroupbystudentidhavingavg(grade)>70;舉例11: 查詢學(xué)生總數(shù)。
selectco24在WHERE子句中使用謂詞:
BETWEEN
AND:在兩數(shù)之間 NOTBETWEENAND:不在兩數(shù)之間 IN<值表> :是否在特定的集合里(枚舉) NOTIN<值表>:與上面相反 LIKE :是否匹配于一個模式 ISNULL(為空的)或ISNOTNULL(不為空的)REGEXP:檢查一個值是否匹配一個常規(guī)表達(dá)式。在WHERE子句中使用謂詞:25舉例17: 查詢年齡在20~23歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡。selectsname,sdept,sagefromstudentwheresagebetween20and23;舉例18: 查詢年齡不在20~23歲之間的學(xué)生姓名、系別和年齡。selectsname,sdept,sagefromstudentwheresagenotbetween20and23;舉例19: 查詢'信息系'、'美術(shù)系'和'計算機(jī)系'學(xué)生的姓名和性別。selectsname,ssexfromstudentwheresdeptin(‘信息系',‘美術(shù)系',‘計算機(jī)系');舉例17: 查詢年齡在20~23歲(包括20歲和23歲)之26舉例20: 查詢學(xué)號為95001的學(xué)生的詳細(xì)情況。select*fromstudentwheresnolike'95001';等價于:select*fromstudentwheresno='95001';舉例21: 查詢所有姓劉學(xué)生的姓名、學(xué)號和性別。
selectsname,sno,ssexfromstudentwheresnamelike‘劉%';舉例22: 某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢?nèi)鄙俪煽兊膶W(xué)生的學(xué)號和相應(yīng)的課程號。selectstudentid,courseidfromsc
wheregradeisnull;舉例23: 查所有有成績的學(xué)生學(xué)號和課程號。
selectstudentid,courseidfromsc
wheregradeisnotnull;舉例24: 查詢計算機(jī)系年齡在20歲以下的學(xué)生姓名。selectsnamefromstudentwheresdept=‘計算機(jī)系'andsage<20;舉例20: 查詢學(xué)號為95001的學(xué)生的詳細(xì)情況。27舉例25: 查詢信息系、美術(shù)系和計算機(jī)系學(xué)生的姓名和性別selectsname,ssexfromstudentwheresdeptin(‘信息系','美術(shù)','計算機(jī)系');可改寫為:Selectsname,ssexfromstudentwheresdept='信息系'orsdept='美術(shù)'orsdept='計算機(jī)系';舉例26: 查詢選修了3號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分?jǐn)?shù)降序排列。selectstudentid,gradefromscwherecourseid=3orberbygradedesc;舉例27: 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號升序排列,同一系中的學(xué)生按年齡降序排列。select*fromstudentorderbysdept,sagedesc;舉例25: 查詢信息系、美術(shù)系和計算機(jī)系學(xué)生的姓名和性別28多表查詢—問題學(xué)員內(nèi)部測試成績查詢的每次顯示的都是學(xué)員的編號信息,因為該表中只存儲了學(xué)員的編號;實際上最好顯示學(xué)員的姓名,而姓名存儲在學(xué)員信息表;如何同時從這兩個表中取得數(shù)據(jù)?多表查詢—問題學(xué)員內(nèi)部測試成績查詢的每次顯示的都是學(xué)員的編號29多表查詢—分類連接查詢同時涉及多個表的查詢稱為連接查詢用來連接兩個表的條件稱為連接條件內(nèi)連接(INNERJOIN)外連接——左外聯(lián)結(jié)(LEFTJOIN)——右外聯(lián)結(jié)(RIGHTJOIN)外連接與普通連接的區(qū)別普通連接操作只輸出滿足連接條件的元組外連接操作以指定表為連接主體,將主體表中不滿足連接條件的元組一并輸出:多表查詢—分類連接查詢30SELECT
S.SName,C.CourseID,C.Grade
From
ScASCINNERJOIN
StudentsASSON
C.StudentID=S.SNoScStudentsIDCourseIDGrade122300100100200297896776300381猜一猜:這樣寫,返回的查詢結(jié)果是一樣的嗎?SELECT
S.SName,C.CourseID,C.Grade
From
StudentsASSINNERJOIN
ScASCON
C.StudentID=S.SNo再猜一猜:以下返回多少行?SELECT
S.SName,C.CourseID,C.Grade
From
StudentsASSINNERJOIN
ScASCON
C.StudentID<>S.SNo多表查詢—內(nèi)連接-1StundentsSName梅超風(fēng)陳玄風(fēng)陸乘風(fēng)曲靈風(fēng)SNo1234查詢結(jié)果SName梅超風(fēng)陳玄風(fēng)陳玄風(fēng)陸乘風(fēng)CourseIDGrade00100100200297896776陸乘風(fēng)00381SELECT S.SName,C.CourseID,C.G31多表查詢—內(nèi)連接-2SELECTStudents.SName,Sc.CourseID,Sc.GradeFROM Students,ScWHERE
Students.SNo=Sc.StudentID多表查詢—內(nèi)連接-2SELECTStudents.SNam32多表查詢—三表連接SELECT
S.SNameAS姓名,CS.CNameAS課程,C.GradeAS成績FROMStudentsASSINNERJOINScASCON(S.SCode=C.StudentID)INNERJOINCourseASCSON(CS.CourseID=C.CourseID)多表查詢—三表連接SELECT33ScStudentsIDCourseIDGrade122300100100200297896776300381多表查詢—左外連接StundentsSName梅超風(fēng)陳玄風(fēng)陸乘風(fēng)曲靈風(fēng)SNo1234查詢結(jié)果SName梅超風(fēng)陳玄風(fēng)陳玄風(fēng)陸乘風(fēng)CourseIDGrade00100100200297896776陸乘風(fēng)00381曲靈風(fēng)NULLNULLSELECT
S.SName,C.CourseID,C.Grade
From
StudentsASSLEFTJOIN
ScASCON
C.StudentID=S.SNo猜一猜:這樣寫,返回的查詢結(jié)果是一樣的嗎?SELECT
S.SName,C.CourseID,C.Grade
From
ScASCLEFTJOIN
StudentsASSON
C.StudentID=S.SNoScStudentsIDCourseIDGrade1223034多表查詢—右外連接SELECTTitles.Title_id,Titles.Title,Publishers.Pub_nameFROMtitlesRIGHTOUTERJOINPublishersONTitles.Pub_id=Publishers.Pub_id多表查詢—右外連接SELECTTitles.Title_i35子查詢:將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為子查詢。一個SELECT-FROM-WHERE語句稱為一個查詢塊例如:selectsnamefromstudentwheresnoin(selectstudentidfromscwherecourseid=2);子查詢:36例如:查詢選修了課程名為“Java”的學(xué)生學(xué)號和姓名selectsno,snamefromstudent
wheresnoin(selectstudentidfromsc
wherecno=(selectcnofromcourse
wherecname=‘Java’)
);例如:37復(fù)制表我們來創(chuàng)建一個副本:復(fù)制表我們來創(chuàng)建一個副本:38復(fù)制表可以通過在SELECT查詢中指定字段來限制出現(xiàn)在附表中的字段復(fù)制表可以通過在SELECT查詢中指定字段來限制出現(xiàn)在附表中39復(fù)制表通過使用SELECT語句創(chuàng)建已存在表的空副本,并且返回一個空結(jié)果集。復(fù)制表通過使用SELECT語句創(chuàng)建已存在表的空副本,并且返40數(shù)據(jù)庫之路未完,待續(xù)…..數(shù)據(jù)庫之路未完,待續(xù)…..41第十三講MYSQL-增刪改查第十三講MYSQL-增刪改查42
插入記錄操作語法:
敘述:如果表名后面沒寫字段名,則默認(rèn)是向所有的字段添加值,另外字符串值應(yīng)該用‘’或“”引號括起來舉例1:向people表中添加一條記錄:insertintopeople(name,age)
values(“zhangsan”,20);INSERT
[INTO]<表名>[列名]
VALUES
<值列表> 插入記錄操作語法: INSERT[INTO]<表名>43插入案例創(chuàng)建一張學(xué)生信息表,往表中插入數(shù)據(jù)createtablestudents( scodeintnotnullauto_increment, snamevarchar(20)notnull, saddressvarchar(20)default‘未知’, sageint, semailvarchar(20), ssexbit, primarykey(scode));插入案例創(chuàng)建一張學(xué)生信息表,往表中插入數(shù)據(jù)44插入數(shù)據(jù)行1注意事項1:每次插入一行數(shù)據(jù),不可能只插入半行或者幾列數(shù)據(jù),因此,插入的數(shù)據(jù)是否有效將按照整行的完整性的要求來檢驗;INSERTINTOStudents(SName,SAddress,Sage,SEmail,SSEX)VALUES(‘小明')×插入數(shù)據(jù)行1注意事項1:每次插入一行數(shù)據(jù),不可能只插入半行插入數(shù)據(jù)行2注意事項2:每個數(shù)據(jù)值的數(shù)據(jù)類型、精度和小數(shù)位數(shù)必須與相應(yīng)的列匹配;INSERTINTOStudents(SName,SAddress,Sage,SEmail,SSEX)VALUES(‘張青裁’,‘上海松江’,ZQC,‘ZQCSohu’,‘男')×插入數(shù)據(jù)行2注意事項2:每個數(shù)據(jù)值的數(shù)據(jù)類型、精度和小數(shù)位插入數(shù)據(jù)行3注意事項4:如果在設(shè)計表的時候就指定了某列不允許為空,則必須插入數(shù)據(jù);INSERTINTOStudents(SAddress,Sage,SEmail,SSEX)VALUES('上海松江',6,'ZQCSohu',0)
×插入數(shù)據(jù)行3注意事項4:如果在設(shè)計表的時候就指定了某列不允許插入數(shù)據(jù)行4注意事項6:具有缺省值的列,可以使用DEFAULT(缺省)關(guān)鍵字來代替插入的數(shù)值INSERTINTOStudents(SName,SAddress,Sage,SEmail,SSEX)VALUES('張青裁',DEFAULT,6,'ZQCSohu',0)插入數(shù)據(jù)行4注意事項6:具有缺省值的列,可以使用DEFAUL插入多行數(shù)據(jù)INSERTSTUDENTS(SName,Sage,SSex)VALUES('測試女生1',35,0),('測試女生2',17,0),('測試女生3',13,0),(‘測試男生1',11,1),('測試女生4',20,0),(‘測試男生2',24,1),('測試女生5',11,0),(‘測試男生3',23,1);INSERTINTO
<表名>(列名)VALUES(<列名值>),(<列名值>),(<列名值>)……插入多行數(shù)據(jù)INSERTSTUDENTS(SName,插入多行數(shù)據(jù)INSERTINTO TongXunLu('姓名','地址','電子郵件')
SELECT SName,SAddress,SEmailFROM StudentsINSERTINTO
<表名>(列名)SELECT
<列名>FROM
<源表名>插入多行數(shù)據(jù)INSERTINTO TongXunLu(學(xué)生、課程、成績插入數(shù)據(jù)學(xué)生信息'95001','洛燕妮','女',20,'信息系''95002','歐陽炎','男',19,'計算機(jī)系''95003','何東升','男',21,'美術(shù)系''95004','劉晨','男',18,'計算機(jī)系''95005','沙明華','女',21,'美術(shù)系''95006','歐陽寶寶','男',19,'美術(shù)系’課程信息1,'JAVA'2,'C'3,'.NET'成績信息'95001',1,98'95002',1,50'95004',1,70'95003',4,95'95005',4,40'95006',4,77'95001',2,80'95002',3,58'95006',2,70學(xué)生、課程、成績插入數(shù)據(jù)學(xué)生信息51
更改記錄操作語法:敘述:
where子句是判斷語句,用來設(shè)定條件,限制只更新匹配的行,如果不帶where子句,則更新所有行數(shù)據(jù)。舉例:
將student表中的所有學(xué)生名稱為"Alex"的改為"Tom":updatestudentsetsname="Tom"wheresname="Alex";UPDATE
<表名>
SET<列名
=更新值>
[WHERE<更新條件>] 更改記錄操作語法:UPDATE<表名>SET<列名52更新數(shù)據(jù)行UPDATEStudentSETSSEX=0UPDATEStudentSETSdept='家政系'WHERESdept='刺繡系'UPDATEScSETGrade=Grade+5WHEREGrade<=95更新數(shù)據(jù)行UPDATEStudentSETSSEX=刪除記錄操作語法:敘述:此語句刪除表中的行,如果不帶where子句,則刪除整個表中的記錄,但是表不被刪除。舉例:刪除student表中的所有年齡小于18歲的記錄:
deletefromstudentwheresage<18;DELETEFROM<表名>[WHERE
<刪除條件>]刪除記錄操作語法:DELETEFROM<表名>[WHE54補充說明刪除學(xué)生編號為'95005'的學(xué)生信息包括成績信息deletefromstudent,scusingstudent,sc
wherestudent.sno=sc.studentid
andstudent.sno='95005';說明:表和字段的引用方式有兩種:絕對引用和相對引用絕對引用:數(shù)據(jù)庫名.表名(.字段名)相對引用:表名.(字段名)補充說明55刪除數(shù)據(jù)行河南新鄉(xiāng)趙可以0010016河南新鄉(xiāng)張麗鵑0010015江西南昌雷銅0010014湖南新田吳蘭0010013山東定陶李山0010012….地址姓名學(xué)號980010016數(shù)學(xué)810010013語文670010012語文740010013數(shù)學(xué)880010012數(shù)學(xué)….分?jǐn)?shù)學(xué)號科目DELETEFROM學(xué)員信息表
WHERE學(xué)號
='0010012'刪除數(shù)據(jù)行河南新鄉(xiāng)趙可以0010016河南新鄉(xiāng)張麗鵑0010什么是查詢?ApplicationLogic客戶程序查詢請求查詢結(jié)果集SQLSERVERABCDEFG
SELECT*FROMSALES查詢產(chǎn)生一個虛擬表,看到的是表形式顯示的結(jié)果,但結(jié)果并不真正存儲,每次執(zhí)行查詢只是現(xiàn)從數(shù)據(jù)表中提取數(shù)據(jù),并按照表的形式顯示出來什么是查詢?ApplicationLogic客戶程序查詢請57怎么查的?學(xué)員編號學(xué)員姓名地址所在班級…….001張明全湖南長沙S201002李菲湖北宜昌S202003于寄謙甘肅天水S204004劉國正山東荷澤S201005周接輪臺灣新竹S204006鞏小妹香港龍灣S203007鞏大妹香港龍灣S203008張明敏北京順義S202009矛十八四川棉陽S204010羅林光陜西臨潼S202011司馬坡新疆喀什S201S202陜西臨潼羅林光010…S202湖北宜昌李菲002S202北京順義張明敏008SELECT*FROMStudentWHERE所在班級
=‘S202’怎么查的?學(xué)員編號學(xué)員姓名地址所在班級…….001張明全湖南58SQL語法SELECT[DISTINCT|DISTINCTROW|ALL]select_expression,...
[FROMtable_references
[WHEREwhere_definition]
[GROUPBYcol_name,...]
[HAVINGwhere_definition]
[ORDERBY{unsigned_integer|col_name| formula}[ASC|DESC],...]
[LIMIT[offset,]rows]
[PROCEDUREprocedure_name]
]SQL語法SELECT[DISTINCT|DISTIN59查詢記錄操作from子句:指定查詢數(shù)據(jù)的表where子句:查詢數(shù)據(jù)的過濾條件groupby子句:對匹配where子句的查詢結(jié)果進(jìn)行分組having子句:對分組后的結(jié)果進(jìn)行條件限制orderby子句:對查詢結(jié)果結(jié)果進(jìn)行排序,后面跟desc降序或asc升序(默認(rèn))。
limit子句:對查詢的顯示結(jié)果限制數(shù)目procedure子句:查詢存儲過程返回的結(jié)果集數(shù)據(jù)查詢記錄操作from子句:指定查詢數(shù)據(jù)的表60查詢舉例SELECT<列名>FROM
<表名>[WHERE<查詢條件表達(dá)式>][ORDERBY<排序的列名>[ASC或DESC]]
列名稱SELECT
Scode,
SName, Sdept
表名FROMStudents過濾條件WHERE
SSEX=0排序條件ORDERBY
SageSELECT
Scode,SNameFROM
StudentsWHERE
SSEX=0
ORDERBY
Sage查詢舉例SELECT<列名>
列名稱SELECT61舉例1: 查詢?nèi)w學(xué)生的學(xué)號與姓名。selectsno,snamefromstudent;舉例2: 查詢?nèi)w學(xué)生的詳細(xì)記錄。selectsno,sname,ssex,sage,sdeptfromstudent;或select*
fromstudent;舉例3:
查全體學(xué)生的姓名及其出生年份。selectsname,2019-sagefromstudent;
舉例4:
查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名。 selectsname,'yearofbirth:',2019-sage,islower(sdept)fromstudent;舉例5:
查詢選修了課程的學(xué)生學(xué)號(去掉重復(fù)的記錄)selectdistinctstudentidfromsc;舉例1: 查詢?nèi)w學(xué)生的學(xué)號與姓名。62舉例6: 查詢?nèi)w學(xué)生的學(xué)號與姓名,用中文顯示列名。selectsnoas‘編號’,snameas‘姓名’fromstudent;舉例7: 給表設(shè)置別名。selects.sno,s.sname
fromstudentass;舉例8:
查詢年齡在20以下的學(xué)生的姓名。selectsnamefromstudentwheresage<20;
舉例9:
查詢?nèi)w學(xué)生的姓名、年齡,要求按照年齡降序排序。 selectsname,sagefromstudentorderbysagedesc;舉例10:
查詢年齡最大的前3個學(xué)生的姓名和年齡,或第4、5個學(xué)生selectsname,sagefromstudentorderbysagedesclimit3;或(limit3,2)舉例6: 查詢?nèi)w學(xué)生的學(xué)號與姓名,用中文顯示列名。63
使用集函數(shù)SQL提供的統(tǒng)計函數(shù)稱為集函數(shù).主要的集函數(shù):記數(shù)函數(shù):count(列名)計算元素的個數(shù)求和函數(shù):sum(列名) 對某一列的值求和,但屬性必須是整型計算平均值:avg(列名)對某一列的值計算平均值求最大值:max(列名)找出某一列的最大值求最小值:min(列名)找出某一列的最小值使用集函數(shù)SQL提供的統(tǒng)計函數(shù)稱為集函數(shù).64舉例11: 查詢學(xué)生總數(shù)。
selectcount(*)fromstudent;舉例12: 查詢選修了課程的學(xué)生人數(shù)。
selectcount(distinctstudentid)fromsc;舉例13: 查詢1號課程的學(xué)生平均成績。
selectavg(grade)fromscwherecourseid=1;舉例14: 查詢1號課程的學(xué)生最高分和最低分。selectmax(grade)as‘最高分’,min(grade)as‘最低分’fromscwherecourseid=1;舉例15: 查詢每個學(xué)生的平均成績。selectstudentid,avg(grade)as‘平均成績’fromscgroupbystudentid;舉例16: 查詢學(xué)生的平均成績在70分以上的。selectstudentid,avg(grade)as‘平均成績’fromscgroupbystudentidhavingavg(grade)>70;舉例11: 查詢學(xué)生總數(shù)。
selectco65在WHERE子句中使用謂詞:
BETWEEN
AND:在兩數(shù)之間 NOTBETWEENAND:不在兩數(shù)之間 IN<值表> :是否在特定的集合里(枚舉) NOTIN<值表>:與上面相反 LIKE :是否匹配于一個模式 ISNULL(為空的)或ISNOTNULL(不為空的)REGEXP:檢查一個值是否匹配一個常規(guī)表達(dá)式。在WHERE子句中使用謂詞:66舉例17: 查詢年齡在20~23歲(包括20歲和23歲)之間的學(xué)生的姓名、系別和年齡。selectsname,sdept,sagefromstudentwheresagebetween20and23;舉例18: 查詢年齡不在20~23歲之間的學(xué)生姓名、系別和年齡。selectsname,sdept,sagefromstudentwheresagenotbetween20and23;舉例19: 查詢'信息系'、'美術(shù)系'和'計算機(jī)系'學(xué)生的姓名和性別。selectsname,ssexfromstudentwheresdeptin(‘信息系',‘美術(shù)系',‘計算機(jī)系');舉例17: 查詢年齡在20~23歲(包括20歲和23歲)之67舉例20: 查詢學(xué)號為95001的學(xué)生的詳細(xì)情況。select*fromstudentwheresnolike'95001';等價于:select*fromstudentwheresno='95001';舉例21: 查詢所有姓劉學(xué)生的姓名、學(xué)號和性別。
selectsname,sno,ssexfromstudentwheresnamelike‘劉%';舉例22: 某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢?nèi)鄙俪煽兊膶W(xué)生的學(xué)號和相應(yīng)的課程號。selectstudentid,courseidfromsc
wheregradeisnull;舉例23: 查所有有成績的學(xué)生學(xué)號和課程號。
selectstudentid,courseidfromsc
wheregradeisnotnull;舉例24: 查詢計算機(jī)系年齡在20歲以下的學(xué)生姓名。selectsnamefromstudentwheresdept=‘計算機(jī)系'andsage<20;舉例20: 查詢學(xué)號為95001的學(xué)生的詳細(xì)情況。68舉例25: 查詢信息系、美術(shù)系和計算機(jī)系學(xué)生的姓名和性別selectsname,ssexfromstudentwheresdeptin(‘信息系','美術(shù)','計算機(jī)系');可改寫為:Selectsname,ssexfromstudentwheresdept='信息系'orsdept='美術(shù)'orsdept='計算機(jī)系';舉例26: 查詢選修了3號課程的學(xué)生的學(xué)號及其成績,查詢結(jié)果按分?jǐn)?shù)降序排列。selectstudentid,gradefromscwherecourseid=3orberbygradedesc;舉例27: 查詢?nèi)w學(xué)生情況,查詢結(jié)果按所在系的系號升序排列,同一系中的學(xué)生按年齡降序排列。select*fromstudentorderbysdept,sagedesc;舉例25: 查詢信息系、美術(shù)系和計算機(jī)系學(xué)生的姓名和性別69多表查詢—問題學(xué)員內(nèi)部測試成績查詢的每次顯示的都是學(xué)員的編號信息,因為該表中只存儲了學(xué)員的編號;實際上最好顯示學(xué)員的姓名,而姓名存儲在學(xué)員信息表;如何同時從這兩個表中取得數(shù)據(jù)?多表查詢—問題學(xué)員內(nèi)部測試成績查詢的每次顯示的都是學(xué)員的編號70多表查詢—分類連接查詢同時涉及多個表的查詢稱為連接查詢用來連接兩個表的條件稱為連接條件內(nèi)連接(INNERJOIN)外連接——左外聯(lián)結(jié)(LEFTJOIN)——右外聯(lián)結(jié)(RIGHTJOIN)外連接與普通連接的區(qū)別普通連接操作只輸出滿足連接條件的元組外連接操作以指定表為連接主體,將主體表中不滿足連接條件的元組一并輸出:多表查詢—分類連接查詢71SELECT
S.SName,C.CourseID,C.Grade
From
ScASCINNERJOIN
StudentsASSON
C.StudentID=S.SNoScSt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能家居產(chǎn)品研發(fā)及應(yīng)用合作協(xié)議
- 電子油門踏板相關(guān)項目投資計劃書
- 市場調(diào)研員-市場分析崗位簡歷
- 汽車發(fā)動機(jī)技術(shù)測試試題及答案
- 精釀啤酒行業(yè)相關(guān)投資計劃提議
- 礦物質(zhì)藥品專利藥相關(guān)行業(yè)投資規(guī)劃報告范本
- 胃石癥護(hù)理查房
- 八年級英語上冊課文背景及知識點解析
- 小學(xué)生心靈成長類讀物后感
- 公司合作推廣廣告投放協(xié)議
- 納米生物醫(yī)用材料課件
- 八年級-現(xiàn)在完成時復(fù)習(xí)(共26張)課件
- 第十章可持續(xù)發(fā)展理論與實踐課件
- 電氣基礎(chǔ)知識培訓(xùn)要點課件
- 洗浴中心轉(zhuǎn)讓合同(5篇)
- 外研版小學(xué)英語五年級下冊課文翻譯
- YY-T 1823-2022 心血管植入物 鎳鈦合金鎳離子釋放試驗方法
- 年產(chǎn)12000噸水合肼(100%)項目環(huán)評報告書
- 鉆芯法檢測混凝土抗壓強度原始記錄1
- 液壓支架與泵站(第二版)課件匯總?cè)珪娮咏贪竿暾嬲n件最全幻燈片(最新)
- 分布式光伏電站支架結(jié)構(gòu)及荷載計算書
評論
0/150
提交評論