1. 程式人生 > >大聊MySQL查詢(2)

大聊MySQL查詢(2)

在《大聊MySQL查詢(1)》中已經介紹了,簡單查詢、條件查詢、分組查詢、分組函式。

(本文中用到的資料庫下載:https://download.csdn.net/my

現在,再介紹查詢的接下來的幾個內容,首先我還是把查詢順序圖放在這裡:

   

1、order by    前面提到過 order by 現在詳細介紹一下

        按照薪水由小到大排序(系統預設由小到大)                select * from emp order by sal;

                注: select * from emp order by sal asc; (這是系統預設的升序排列方式,所以可以省略asc)

                        select * from emp order by sal desc; (降序排列方式)

         取得job為MANAGER的員工,按照薪水由小到大排序         select * from emp where job='MANAGER' order by sal;

                注:如果包含where語句order by必須放到where後面,如果沒有where語句order by放到表的後面。其實也就是說,先按照一定的條件進行篩選,然後將結果按照升序或降序顯示出來。

         按照job和薪水升序     select * from emp order by job,sal;

               注:其實也就是說,先按照job的升序排列,在此基礎上,如果有多條記錄的job相同,則再把同一種的job按照sal的升序排列。

2、資料處理函式/單行處理函式

        簡單說一下這一部分的內容,(這部分內容,主要是摘錄 power node 那個老師講的)

Lower

轉換小寫

upper

轉換大寫

substr

取子串(substr(被擷取的字串,起始下標,擷取的長度)

length

取長度

trim

去空格

str_to_date

將字串轉換成日期

date_format

格式化日期

format

設定千分位

round

四捨五入

rand()

生成隨機數

Ifnull

可以將null轉換成一個具體值

     選幾個來說一下

     a)  substr         查詢姓名以M開頭所有的員工              select * from emp where substr(ename, 1, 1)=upper('m');

     b)  trim             取得工作崗位為manager的所有員工      select * from emp where job=trim(upper('manager  '));

                 注:trim會去首尾空格,不會去除中間的空格   

     c) str_to_date    查詢1981-02-20入職的員工(第二種方法,將字串轉換成date型別)

                  select * from emp where HIREDATE=str_to_date('1981-02-20','%Y-%m-%d');

                  select * from emp where HIREDATE=str_to_date('02-20-1981','%m-%d-%Y');

    d) date_format    查詢1981-02-20以後入職的員工,將入職日期格式化成yyyy-mm-dd hh:mm:ss

                  select empno, ename, date_format(hiredate, '%Y-%m-%d %H:%i:%s') as hiredate from emp;

    e) format      查詢員工薪水加入千分位和保留兩位小數        select empno, ename, Format(sal, 2) from emp;

    f) case … when … then …..else …end          如果job為MANAGERG薪水上漲10%,如果job為SALESMAN工資上漲50%select        empno, ename, job, sal, case job when 'MANAGER' then sal*1.1 when 'SALESMAN' then sal*1.5 end as newsal from emp;

    g)  ifnull      select ifnull(comm,0) from emp;        如果commnull 就替換為 0

3、子查詢

       這個地方我也不說什麼,沒有什麼好說的,多寫幾個關於子查詢的程式碼

         

    子查詢就是巢狀的select語句,可以理解為子查詢是一張表

4、limit 的使用

 

     取得前5條資料    select * from emp  limit 5;

     從第二條開始取兩條資料   select * from emp  limit 1,2;

     limit 起始位置 ,長度

    算是完了吧,其實沒有太多好寫的,多練練可能比較好!!!!!!!!!!!!!