Mysql數據庫技術Mysql數據庫技術應用(微課版)課件 項目4 數據操作_第1頁
Mysql數據庫技術Mysql數據庫技術應用(微課版)課件 項目4 數據操作_第2頁
Mysql數據庫技術Mysql數據庫技術應用(微課版)課件 項目4 數據操作_第3頁
Mysql數據庫技術Mysql數據庫技術應用(微課版)課件 項目4 數據操作_第4頁
Mysql數據庫技術Mysql數據庫技術應用(微課版)課件 項目4 數據操作_第5頁
已閱讀5頁,還剩30頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

項目4數據操作教材編寫組任務1MySQL運算符和表達式一、

算術運算符和算術表達式運算符描述+加法運算-減法運算*乘法運算/(DIV)除法運算,返回商%(MOD)求余運算,返回余數在MySQL中,靈活地使用算術運算符,是衡量MySQL用戶水平高低的標準之一。MySQL支持的算術運算符見表4-1。表4-1算術運算符任務1

MySQL運算符和表達式算術運算符及使用示例在對數值進行除法和求余運算時,除數不能為0,如果為0,那么MySQL計算的結果將返回null。二、比較運算符和關系表達式任務1MySQL運算符和表達式運算符描述=等于<=>安全等于<>/(!=)不等于<=小于等于>=大于等于>

大于isnull字段是否為nullisnotnull字段是否不為nullbetween…and…是否在某個閉區間,適用于數值型、日期時間型等[not]in是否在/不在集合中like匹配…格式,通常和通配符“%”和“_”配合使用“%”表示0個或任意個字符,“_”表示單個字符表4-2常用比較運算符比較運算符是查詢數據時最常用的一類運算符。一個比較運算符的結果總是1、0或null。select語句中的條件語句經常要使用比較運算符,通過這些比較運算符,來查詢滿足指定條件的記錄。MySQL中的常用比較運算符見表4-2。比較運算符使用示例任務1MySQL運算符和表達式任務1MySQL運算符和表達式三、

邏輯運算符和邏輯表達式運算符描述非(NOT)單目運算符。運算規則:真為假,假為真與(AND)雙目運算符。運算規則:全真為真,有假即假或(OR)雙目運算符。運算規則:全假為假,有真即真表4-3邏輯運算符任務1MySQL運算符和表達式邏輯運算符使用示例任務1MySQL運算符和表達式四、

運算符優先級優先級運算符1()2*、/、%3+、-4比較運算符5NOT6AND7OR表4-4運算符優先級當一個復雜的表達式有多個運算符時,運算符優先級決定執行運算的先后次序。執行順序可能對結果值有明顯的影響。運算符優先級見表4-4。在較低級別的運算符之前先對較高級別的運算符進行求值。任務2MySQL內置函數一、

數學函數表4-5部分常用的數學函數函數功能ABS(x)返回x的絕對值CEIL(x)/CEILING(x)返回大于或等于x的最小整數,即向上取整FLOOR(x)返回小于或等于x的最大整數,即向下取整GREATEST(expr1,expr2,expr3,……)返回列表中的最大值LEAST(exprl,expr2,expr3,……)返回列表中的最小值POWER(x,y)返回x的y次方SQRT(x)返回x的算術平方根RAND()返回0到1的隨機float數ROUND(x)返回離x最近的整數ROUND(x,y)返回離x最近的值,保留小數位數y位TRUNCATE(x,y)對數值x進行截取,保留小數點后y位數字數學函數的使用示例任務2MySQL內置函數truncate()和round()的區別在于truncate()僅僅是截斷,而不進行四舍五入。二、

日期時間函數表4-6MySQL中常用的日期與時間函數任務2MySQL內置函數函數功能NOW()以YYYY-MM-DDHH:MM:SS格式返回當前的日期時間CURRENT_TIMESTAMP()以YYYY-MM-DDHH:MM:SS格式返回當前的日期時間CURDATE()/CURRENT_DATE()以YYYY-MM-DD格式返回當前日期CURTIME()/CURRENT_TIME()以HH:MM:SS格式返回當前時間ADDDATE(d,n)計算起始日期d加上n天的日期ADDT1ME(t,n)時間t加上n秒的時間DATEDIFF(dl,d2)計算日期d1-d2之間相隔的天數(d1>d2)DATE_ADD(d,INTERVALexprtype)在日期上加指定的時間間隔,type可以是year、month、day、week、hour等。如DATE_ADD(d1,INTERVAL1year)就是計算對日期d1向后推算1年后的日期DATE_SUB(date,INTERVALexprtype)在日期上減去指定的時間間隔,type含義同DATE_ADD()YEAR(d)返回日期d的年份MONTH(d)返回日期d的月份MONTHNAME(d)以字符串格式返回日期d的月份DAY(d)返回日期d的日期DAYNAME(d)返回日期d是星期幾,如MondayDAYOFMONTH(d)計算日期d是本月的第幾天DAYOFWEEK(d)返回日期d是星期幾,1星期日,2星期一,以此類推DAYOFYEAR(d)計算日期d是本年的第幾天表4-6MySQL中常用的日期與時間函數1.獲取日期和時間任務2MySQL內置函數執行curdate()、curtime()和now()函數,具體SQL語句如下selectcurdate(),curtime(),now();執行上述語句,其輸出結果如下。任務2MySQL內置函數2.操作指定日期可以對指定的日期進行操作,如獲取日期所對應的年份、月份、星期幾、當前日期是本年的第幾天等。分別獲得當前日期,當前日期的月份,當前日期是星期幾、是本年的第幾天、本月的第幾天、與0000年1月1日之間間隔的天數、是第幾季度,具體SQL語句如下selectcurdate()當前日期,monthname(curdate())月份,dayname(curdate())星期幾,dayofyear(curdate())本年的第幾天,dayofmonth(curdate())本月的第幾天,to_days(curdate())間隔的天數,quarter(curdate())第幾季度;任務2MySQL內置函數3.日期間隔、時間間隔函數日期間隔函數to_days(x)函數用于計算日期x距離0000年1月1日的天數;from_days(x)函數用于計算從0000年1月1日開始x天后的日期;datediff(x1,x2)函數計算日期d1與d2之間相隔的天數。adddate(x,n)函數返回起始日期x加上n天的日期;subdate(x,n)函數返回起始日期x減去n天的日期。任務2MySQL內置函數例:執行datediff(x1,x2)、adddate(x,n)函數,具體SQL語句如下。select

datediff(‘2024-5-12’,’2023-10-25’),adddate(‘2024-5-12’,

20);練練:selectcurdate(),

to_days(curdate(),

from_days(600000),subdate(curdate(),365);任務2MySQL內置函數三、

字符串函數表4-7MySQL中常用的字符串函數及其功能函數功能LENGTH(s)返回字符串占用的字節數CHAR_LENGTH(s)返回字符串s的字符個數REVERSE(str)反轉字符串LOCATE(sl,s)從字符串s中獲取s1第1個字符的開始位置,從1開始計數CONCAT(sl,s2,…)字符串s1,s2等多個字符申合并為一個字符串REPEAT(str,n)返回字符串str重復n次的結果REPLACE(str,s1,s2)用字符串s2替換字符串str中的字符串s1LEFT(str,n)返回字符串str最左邊的n個字符RIGHT(str,n)返回字符串str最右邊的n個字符SUMSTRING(str,m,n)返回字符串str從左邊第m個字符開始的n個字符LOWER(str)將字符串str的所有字母變成小寫字母UPPER(str)將字符串str中的字母全部轉換為大寫STRCMP(s1,s2)比較字符串s1和s2,相等返回0,若str1<str2返回-1,否則返回1;不區分大小寫任務2MySQL內置函數1、字符串操作函數任務2MySQL內置函數2、字符串比較函數strcmp(str1,str2)函數用來比較兩個字符串str1和str2。selectstrcmp('ABCD',‘ABBC'

),strcmp('ABCD','adcd'),strcmp('AB'

,ba'

);任務2MySQL內置函數3、子字符串操作函數substring(str,start,length)函數從字符串str的第start個位置開始獲取長度為length的字符串。任務3插入表數據一、

插入單條記錄1.插入全部字段值語法格式:INSERTINTO表名[(字段名列表)]VALUES(字段值列表)說明:(字段名列表)可以省略,VALUES子句中的字段值必須和各字段名一一對應。字段值類型要與對應字段的數據類型一致。若字段為字符串類型和日期類型,插入的字段值必須要用英文半角單引號或雙引號括起來。如果某個字段值為空,其值必須設置為null或NULL,否則會出錯。命令中所有符號均為英文半角符號。要遵守表的相關約束輸入數據,如主鍵約束、檢查約束、外鍵約束等。尤其當兩表之間存在主外鍵約束關系時,必須要先輸入主表內容,再輸入從表內容。如class表和student表,要先輸入主鍵所在表class的內容,然后才能輸入外鍵所在表student的內容。例1:采用保留字段名向數據庫dbschool中的班級表class插入第1條記錄的全部內容,采用省略字段名方式插入第2-5條記錄的全部內容。任務3插入表數據usedbschoolinsertintoclass(classid,classname,department)values('211101','21大數據與會計1班','會計學院');insertintoclassvalues('221101','22大數據與會計1班','會計學院');insertintoclassvalues('211201','21會計信息管理1班','會計學院');insertintoclassvalues('221301','22大數據與財管1班','會計學院');insertintoclassvalues('221302','22大數據與財管2班','會計學院');練練:向course表中插入前11條記錄的全部內容2.插入部分字段內容語法格式:INSERTINTO表名(字段名列表)VALUES(字段值列表)或者INSERTINTO表名SET字段名1=值1,字段名1=值2,…說明:字段值與字段名要一一對應。任務3插入表數據例2:向student表插入姓名為“吳鑫”和“孫月茹”2條記錄的內容,民族字段nation由默認值自動填入。任務3插入表數據usedbschoolinsertintostudent(sno,sname,gender,birthday,subject,classid)values('22320401','吳鑫','男','2004-2-2','空中乘務','223204');insertintostudent(sno,sname,gender,birthday,subject,classid)values('22420101','孫月茹','女','2004-6-29','金融科技應用','224201');可以使用“select*fromstudent”查詢結果,該命令的詳細用法在項目5中學習。任務3插入表數據例3:采用插入部分字段內容的兩種方法向course表插入課程名為“數據庫基礎”、“平面設計”和“Python數據分析”3門課程的內容。usedbschoolinsertintocoursesetcno=‘21004’,cname=‘數據庫基礎’;insertintocourse(cno,cname,period,credit)values(‘21005’,’’平面設計’,64,4);insertintocourse(cno,cname,period,credit)values(‘21006’,’’Python數據分析’,64,4);思考:采用合適的方法向course表中插入剩余的所有記錄任務3插入表數據二、

同時插入多條記錄內容例4:不省略表字段名,使用一條INSERT命令向study表中插入前6條記錄。usedbschoolinsertintostudy(sno,cno,score)values(‘21110101’,’11003’,80),(‘21110101’,’11004’,66),(‘21110102’,’11003’,52),(‘21110102’,’11004’,85),(‘21120101’,’11003’,73),(‘21120101’,’21004’,88);任務3插入表數據例5:省略表字段名,使用一條INSERT命令向study表中插入6條記錄。usedbschoolinsertintostudy(sno,cno,score)values(‘21211101’,’21002’,62),(‘21211101’,’11004’,77),(‘21211101’,’11003’,82),(‘21211001’,’11004’,78),(‘21220101’,’11003’,72),(‘21220101’,’21004’,71);任務4修改表數據一、單表數據修改語法格式:UPDATE表名SET字段名1=表達式1[,字段名2=表達式2,…][WHERE條件表達式]說明:SET短語是對指定的字段按滿足WHERE子句中的條件表達式進行修改,可以同時對多個字段的值進行修改,它們之間用英文半角逗號分隔。省略WHERE子句時,修改表中所有記錄的指定字段值。表達式可以是常量、變量、函數或表達式。更新后的數據不能違背原表的相關約束條件。一般情況下,不建議修改主鍵的值,特別是被從表引用的主鍵值。任務4修改表數據1.修改表中的全部數據例1:對student表進行復制,副本表名為s。將s表中所有學生的民族字段的內容在原來的數據后加上“族”字。復制student表,得到副本表s。createtablesasselect*fromstudent;對s表中所有學生的民族字段值進行修改。updatessetnation=concat(nation,'族');任務4修改表數據2.修改表中的部分數據例2:備份course表為c;在c表中,將第1學期開設課程的課時增加4。復制course表,得到副本表c。createtablecasselect*fromcourse;修改前,查看s表第1學期開設課程的課時。select*fromcwhereterm='1';使用where子句,限定只修改第1學期開設課程的課時。updatecsetperiod=period+4whereterm='1';任務4修改表數據二、

多表數據修改例3:備份study表為cj;將s表中的學生吳鑫的專業由原來的“空中乘務”調整為“數字媒體”,學號改為22250302,并自動修改cj表中的對應學號。將第1學期開設課程的課時增加4。復制study表,得到副本表cj。createtablecjasselect*fromstudy;分別在主表s和從表cj的sno字段上創建主鍵約束和可以級聯更新的外鍵約束。altertablesaddprimarykey(sno);altertablecjaddforeignkey(sno)referencess(sno)onupdatecascade;修改前,查看s表中吳鑫的學號和專業名。selectsno,subjectfromswheresname='吳鑫';查看cj表中吳鑫的課程成績。(吳鑫的原學號是22320401)select*fromcjwheresno='22320401';修改s表中吳鑫的專業名和學號,where子句中的學號是吳鑫的原學號。updatessetsubject='數字媒體',sno='22250302'wheresno='22320401';修改后,查看s表中吳鑫的學號和專業名。selectsno,subjectfromswheresname='吳鑫';

任務5刪除表數據

一、使用DELETE命令刪除單表數據語法格式:DELETEFROM表名[WHERE條件表達式]說明:WHERE子句是可選項,若省略該子句,會刪除指定表中所有數據,否則,刪除滿足WHERE條件的記錄行。任務5刪除表數據例1:刪除cj表中成績不及格的成績信息。deletefromcjwherescore<60;例2:刪除cj表中的所有成績信息,并從數據庫dbschool中刪除cj表。deletefromcj;droptablecj;任務5刪除表數據

二、

溫馨提示

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

評論

0/150

提交評論