1. 程式人生 > >12、條件查詢和排序

12、條件查詢和排序

學習目標:

1、熟練掌握select語句的條件查詢

2、掌握Order By語法

學習過程:

前面的查詢都比較簡單,都是查詢全部的內容的,但是在現實生活中我們經常會需要查詢符合一些條件的資料,而不是每一次都是全部資料。比如如果我們只需要查詢工資在3000至5000之間員工,部門1的員工等等。這樣我們可以在基本的查詢語句後面通過where關鍵字新增查詢條件即可。基本格式如下:

select * from table [where conditions]

1、比較條件

可以使用的比較符合是等於=、大於>、小於

1

2

3

4

--查詢姓名等於zhangsan的員工

select * from employee where employee_name='zhangsan'

--查詢工資大於3000的員工。

select * from employee where salary >3000

2、其它比較運算子

BETWEEN  num1 AND num2  介於num1和num2之間

IN(set)  在一列資料中。

LIKE     模糊匹配

IS NULL  判斷是否是一個null值

Between two values (inclusive),  

示例程式碼如下:

1

2

3

  -- is null 

-- is not null 

select employee_name,salary, dep_id from employee where salary is not null

1

2

 --工資在10005000之間

select * from employee where salary between 1000 and 5000

 

-- 查詢工資是1000,2000,3000的員工

select employee_name,salary, dep_id from employee where salary in(1000,2000,3000)

-- 查詢工資不是1000,2000,3000的員工

select employee_name,salary, dep_id from employee where salary not in(1000,2000,3000)

 

這裡重點講講like模糊查詢,這裡我們知道兩個特殊的符號。% 表示任意長字元

_ 表示一個字元

1

2

3

4

 --如查詢姓劉的所有的員工

select employee_name,salary, dep_id from employee where employee_name like '劉%'

--如查詢姓名只有兩個字,而且是姓劉的員工

select employee_name,salary, dep_id from employee where employee_name like '劉_'

3、邏輯條件

AND:如果組合的條件都是TRUE,返回TRUE

OR:如果組合的條件之一是TRUE,返回TRUE

NOT:如果下面的條件是FALSE,返回TRUE

上面的判斷使用和java類似。如下面這個例子

1

2

--查詢姓劉,並且工資大於5000的員工。

select * from employee where employee_name like '劉%' and salary>5000)

4、優先順序

運算級預設從高到低的排列,當然其實也可以使用小括號改變運算的優先級別:

  1. 算術運算子

  2. 連線運算子

  3. 比較運算子

  4. IS [NOT] NULL, LIKE, [NOT] IN

  5. [NOT] BETWEEN

  6. NOT 邏輯條件

  7. AND邏輯條件

  8. OR邏輯條件

5、排序order by

使用ORDER BY 子句將記錄排序

ASC: 升序,從小到大 預設

DESC: 降序,從大到小

ORDER BY 子局在SELECT指令的最後

select * from table [where conditions] [order by column1 asc|desc,column2 asc|desc]

如下面這個例子

1

2

3

4

--按照工資大降序排列,也就是工資從高到低的排列

select employee_name,salary as 工資, dep_id from employee order by  salary desc

--先按照工資降序排列,如果工資相等就按照員工的id升序排列

 select * from employee order by salary desc,employee_id asc

和where語句一起使用

select employee_name, dep_id from employee

         where salary  in(1000,2000,3000)

                order by salary desc