公司宣傳片ppt模板西安網(wǎng)絡優(yōu)化大的公司
目錄
一、mysql內(nèi)置函數(shù)
1.1.日期函數(shù)
1.2.字符串函數(shù)
1.3.數(shù)學函數(shù)
1.4.其他函數(shù)
二、復合查詢
2.2 自連接
2.3 子查詢
2.3.1單行自查詢
2.3.2 多行子查詢
?2.3.3 多列子查詢
2.3.4在from子句中使用子查詢
2.3.5合并查詢
三、表的內(nèi)連和外連
3.1內(nèi)連接
3.2外連接
3.2.1 左外連接
3.2.2右外連接
一、mysql內(nèi)置函數(shù)
1.1.日期函數(shù)
?獲得時間:
🖊獲得年月日:select current_date();
🖊獲得時分秒:select current_time();
🖊獲得時間戳:select current_timestamp();
🖊在日期的基礎上加日期:
🖊在日期的基礎上減去時間:
?
🖊計算兩個日期之間相差多少天:
?
案例:
創(chuàng)建一個留言表:
插入數(shù)據(jù):
顯示所有留言信息,發(fā)布日期只顯示日期,不用顯示時間:
?
查詢在五分鐘內(nèi)發(fā)布的貼子:
?🖊:select *from msg where date_add(sendtime,interval 5 minute)>now();
或🖊:select *from msg where date_sub(now(),interval 5 minute)<sendtime;
理解:
1.2.字符串函數(shù)
?案例:
sql獲取:碼云
案例:
獲取emp表的ename列的字符集:
要求顯示exam_result表中的信息,顯示格式:“XXX的語文是XXX分,數(shù)學XXX分,英語XXX分”
求學生表中學生姓名占用的字節(jié)數(shù):
注意:length函數(shù)返回字符串長度,以字節(jié)為單位。如果是多字節(jié)字符則計算多個字節(jié)數(shù);如果是單字節(jié)字符則算作一個字節(jié)。比如:字母,數(shù)字算作一個字節(jié),中文表示多個字節(jié)(與字符集編碼有關)。
將emp表中所有名字中有S的替換為‘北京’
截取emp表中ename字段的第二個到第三個字符
?
以首字母小寫的方式顯示所有員工的姓名:
select concat(lcase(substring(ename,1,1)),substring(ename,2)) from emp;
1.3.數(shù)學函數(shù)
絕對值:select abs();
向上取整:select ceiling();
向下取整: select floor();
理解:
向上取整簡單來說,就是向大的整數(shù)方向取整,舍棄小數(shù)部分。比如23.04向上取整就是24,-5.9向上取整就是-5.
同理,向下取整是朝著小的整數(shù)取整,舍棄小數(shù)部分。3.7向下取整是3.-1.3向下取整是-2.
向0取整,是朝0靠攏,5.6向零取整是5,-6.6向0取整是-6
保留n位小數(shù)位數(shù):select format(小數(shù),n);
產(chǎn)生隨機數(shù):select rand();
mysql中,產(chǎn)生隨機數(shù),產(chǎn)生的是0-1的小數(shù)。
如果要得到0-100的隨機數(shù):
1.4.其他函數(shù)
🖊user()查詢當前用戶
select user();
🖊md5(str)對一個字符串進行md5摘要,摘要后得到一個32位字符串
通常用于加密。
🖊password()函數(shù),mysql數(shù)據(jù)庫使用該函數(shù)對用戶進行加密
🖊ifnull(val1,val2)如果val1為null,返回val2,否則返回val1的值。
二、復合查詢
2.1.多表查詢
實際開發(fā)中往往數(shù)據(jù)來自不同的表,所以需要多表查詢。在此借用一個簡單的公司管理系統(tǒng),還是從碼云下載。有三張表emp,dept,salgrade來演示如何進行多表查詢。
案例:
🖊顯示雇員名、雇員工資以及所在部門的名字因為上面的數(shù)據(jù)來自emp表和dept表,因此要聯(lián)合查詢。
這種結果稱為笛卡爾積。
🖊顯示部門號為10的部門名,員工名和工資
🖊顯示各個員工的姓名,工資,及工資級別
2.2 自連接
自連接是指在同一張表連接查詢
案例:員工FORD的上級領導的編號和姓名(mgr是員工領導的編號)
🖊使用的子查詢:
🖊使用多表查詢(自查詢)
2.3 子查詢
子查詢是指嵌入在其他sql語句中的select語句,也叫嵌套查詢。
2.3.1單行自查詢
返回一行記錄的子查詢
🖊顯示SMITH同一部門的員工
2.3.2 多行子查詢
?返回多行記錄的子查詢
🖊in關鍵字;
查詢和10號部門的工作崗位相同的雇員的名字,崗位,工資,部門號,但是不包含自己的。
🖊all關鍵字;
顯示工資比部門30的所有員工的工資高的員工的姓名,工資和部門號
第一種方式,當然可以找出部門30最高的工資,只要比這個工資高即可:
比部門30所有的員工工資高,使用all:?
🖊any關鍵字:顯示工資比部門30的任意一個員工工資高的員工的姓名,工資和部門號
?2.3.3 多列子查詢
單行子查詢是指子查詢只返回單列,單行數(shù)據(jù);多行子查詢是指返回單列多行數(shù)據(jù),都是針對單列而言的,而多列子查詢則是指查詢返回多個列數(shù)據(jù)的子查詢語句。
案例: 查詢和SMITH的部門和崗位完全相同的所有雇員,不包含SMITH本人。
2.3.4在from子句中使用子查詢
子查詢語句出現(xiàn)在from子句中。子查詢當作一個臨時表使用。
🖊顯示每個高于自己部門平均工資的員工的姓名、部門、工資、平均工資
🖊查找每個部門工資最高的人的姓名,工資,部門,最高工資。
🖊顯示每個部門的信息(部門號,編號,地址)和人員數(shù)量
2.3.5合并查詢
🖊union
union操作符用于取得兩個結果集的并集,當使用該操作符時,會自動去掉結果集中的重復行。
案例:將工資大于2500或職位是MANAGER的人找出來
去掉了重復數(shù)據(jù):
🖊union all
該操作符用于取得兩個結果集的并集。當使用該操作符時,不會去掉結果集中的重復行。
案例:將工資大于25000或職位是MANAGER的人找出來
三、表的內(nèi)連和外連
3.1內(nèi)連接
內(nèi)連接實際上就是利用where子句對兩種表形成的笛卡爾積進行篩選,前面講述的都是內(nèi)連接,實際開發(fā)過程中使用最多的連接查詢。
語法:
? ? ? ? select 字段 from 表1 inner join 表2 on 連接條件 and 其他條件;
案例:顯示SMITH的名字和部門名稱:
之前的寫法:
標準的內(nèi)連接寫法:
3.2外連接
外連接分為左外連接和右外連接
3.2.1 左外連接
如果聯(lián)合查詢時左側(cè)的表完全顯示我們就說是左外連接。
語法: select 字段名 from 表1 left join 表2 on 連接條件
案例:
建兩張表:
🖊查詢所有學生的成績,如果這個學生沒有成績,也要講學生的個人信息顯示出來
--當左邊表和右邊表沒有匹配時,也會顯示左邊表的數(shù)據(jù)
3.2.2右外連接
語法:select 字段 from 表1 right join 表2 on 連接條件
案例:對stu表和exam表聯(lián)合查詢,把所有的成績都顯示出來,即使這個成績沒有學生與它對應,也要顯示出來。