sql語句練習題


6.Mysql不要用top用limit

在我們使用查詢語句的時候,經常要返回前幾條或者中間某幾行數據,這個時候怎么辦呢?

查找時Mysql不能用top,反正我用不了,查了下可以用limit來替換。

比如,想查詢下TotalPay前20有哪些人,不能用SELECT TOP 20 * FROM 加州薪水 WHERE OtherPay > 23;那用啥?答案是order by +limit,先排序再查前幾

select * from 加州薪水 order by TotalPay desc limit 10 


7.SQL LIKE 操作符

超喜歡這個like有木有,比如我只知道某個人叫John什么的,用它查就可以查到全名

select * from 加州薪水 where EmployeeName like 'John%'

好吧有2377人叫John什么的。

like用法很相似,上述語句中可以'%xxx'、'xxx%'、'%xxx%',如果不想包含某個字段,用如下:

select * from 加州薪水 where EmployeeName not like 'John%'

這里還有一個關於通配符的延伸,除了%,常用的還有 _ [] [! ]

圖片來源:http://www.w3school.com.cn/sql/sql_wildcards.asp

舉個例子:

知道某個人叫John_on Y_U什么的,查詢一下:

select * from 加州薪水 where EmployeeName like 'John_on Y_U'

想找名字開頭是J或A或P的人,查找一下:

select * from 加州薪水 where EmployeeName like '[JAP]%'

如果要排除名字開頭是J或A或P的人,直接在[]中加個感嘆號

8. in和between

要找兩個人,知道他們名字,直接查找:(Mysql中不分大小寫,所有有時候可能會出現名字大小寫的同一個人返回兩次)

select *from 加州薪水 where EmployeeName in ('GARY JIMENEZ','VINCENT NOLAN')

between類似in,理解為介於某某與某某之間的行,不介於就在前加個not

9.SQL Alias(別名)

給表取個小別名jia

select EmployeeName from 加州薪水 as jia

給列EmployeeName取個小別名Em

select EmployeeName as Em from 加州薪水

四、SQL函數練習

這一節針對於數據庫中的計算

1.最基礎模板

根據下面這個模板,我們也知道了除了avg外,像first、last、count、max、min、sum、mid、len用法

select 函數(column) from table_name

2.group by

對於稍微復雜點的計算,group by函數不能忘記,比如在加州薪水例子中,我們需要查不同職位的薪水為多少,代碼如下:

select JobTitle,avg(BasePay) from 加州薪水 group by JobTitle

 

3.HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與合計函數一起使用。舉個例子,我們希望查找平均基本工資超過70000的職位

select JobTitle,avg(BasePay) from 加州薪水 group by JobTitle having avg(BasePay>70000)

4.大小寫轉換

UCASE() 函數把字段的值轉換為大寫。如果要把大寫轉為小寫,用LCASE 函數

select ucase(column_name) from table_name

5.round函數

round函數用於把數值字段舍入為指定的小數位數。

比如我想把basepay部分的數值精確到后一位小數點:

select round(BasePay,1) from 加州薪水


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM