MySQL
- select
- 列的別名
- 去除重復行
- 空值參與運算
- 著重號
- 查詢常數
- 顯示表結構
- 過濾數據
- 排序
- 使用 ORDER BY 對查詢到的數據進行排序操作。
- 使用列的別名,進行排序
- 二級排序
- 分頁
- LIMIT 分頁顯示公式:(當前頁數減一)*每頁條數,每頁條數
- 使用LIMIT句子好處
前言
潔潔的個人主頁
我就問你有沒有發揮!
知行合一,志存高遠。
select
最基本的SELECT語句
# SELECT 字段1,字段2...FROM表名```sql
SELECT 1+1,2*2;
此句運行結果·就是· 2,4
其實相當于·```sql
SELECT 1+1,2*2
FROM DUAL;#dual 偽表
SELECT *FROM employees
# * 代表表中所有的字段(列)
其中字段的名字要完全正確(及所寫的字段的名字在表中存在,不可以寫縮寫等)
列的別名
SELECT personname name,personage AS age,personsex "sex"
FROM employees
第一種:
name就是 personname的別名
第二種
age就是personage的別名
as 英文全稱 alias(別名),可以省略
第三種:
sex就是personsex的別名
注意:
不能使用單引號
日期時間,字符串類型的變量需要使用時使用一對 ’ '單引號
去除重復行
SELECT DISTINCT personage
FROM employees
只顯示出一種年齡,比如有兩個相同的年齡,經過此詞語后只會留下一個年齡。
錯誤示范:
SELECT personname, DISTINCT personage
FROM employees
personname沒有去重,但是personage卻去重了,導致無法通過
SELECT DISTINCT personname, personage
FROM employees
實際上對personname,personage兩個都進行卻重,不會報錯,但沒有實際·意義
空值參與運算
空值:NULL
空值不等同于0 或者 ‘ ’
空值參與運算時結果也一定為NULL
那么當字段中有NULL時怎么計算呢?
可以引入IFNULL函數
IFNULL(字段,0)
意思是如果 字段為NULL的話就會把其看作0
著重號
必須保證你到字段沒有和保留字,數據庫系統或常用方法沖突,如果堅持使用,請在sql語句中使用 ``引起來。
比如:
SELECT *FROM ORDER
ORDER 因為是一個排序的關鍵字,所以如果一運行會報錯。
解決方法就是加上一對``
SELECT *FROM `order`
查詢常數
就是在SELECT查詢結果中增加一列固定的常數列,這列的取值是我們規定的,不是從數據表中動態取出的、作為常量出現
SELECT “xiaojiejie”,personage
FROM employees;
結果及在每一個年齡·前面都匹配填充上“xiaojiejie”
顯示表結構
顯示表中字段的詳細信息
DESCRIBE employees;
#或者
DESC employees;
過濾數據
SELECT *
FROM employees
WHERE personage=12;
即只顯示表中年齡為12的數據
同理
SELECT *
FROM employees
WHERE personname='xiaojiejie';
即只顯示表中姓名為’xiaojiejie’的數據
因為‘xiaojiejie’是字符串,所以要用單引號
注意:‘xiaojiejie’ 由于Mysql的不嚴謹性,'xiaojiejie’的大小寫不會區分。和不區分單引號,雙引號一樣。
但是在oracl 中就會區分。所以還是要嚴格按照sql的標準來執行學習。
排序
如果假如沒有使用排序操作,默認情況下查詢返回的數據是按照添加數據的順序來顯示的。
SELECT *FROM employees;
使用 ORDER BY 對查詢到的數據進行排序操作。
升序:ASC(ascend)
降序:DESC(descend)
比如:
按照age從高到低的順序進行排序
SELECT age
FROM person
ORDER BY age DESC;
按照age從低到高的順序進行排序
SELECT age
FROM person
ORDER BY age ASC;
如果 ORDER BY age; 后面沒有顯示指定排序的方式的話,則默認按照升序排序。
SELECT age
FROM person
ORDER BY age;
使用列的別名,進行排序
SELECT age*12 agee
FROM person
ORDER BY agee;
注意:列的別名只能在ORDER BY 中使用,不能在WHERE 中使用
比如
SELECT age*12 agee
FROM person
WHERE agee > 10;
#會報錯
那么·當同時出現WHERE 和ORDER BY時應該·怎么寫呢?
格式強調:
WHERE的聲明要寫在FROM后,ORDER BY 之前
SELECT age
FROM person
WHERE age > 10
ORDER BY age;
二級排序
在對列進行排序的時候,首先排序的第一列必須有相同的列值,才會對第二列進行排序。
如果第一列的數據中所有值都是唯一的,將不再對第二列進行排序。
比如:
顯示員工信息。按照age降序排列,salary的升序排列
SELECT name,age,salary
FROM person
ORDER BY age,salary ASC;
分頁
LIMIT 分頁顯示公式:(當前頁數減一)*每頁條數,每頁條數
SELECT *
FROM table
LIMIT (pageNo-1)*pageSize,pageSize;
例如
顯示前10條記錄:
SELECT *
FROM table
LIMIT 0,10;
顯示第11條到20條記錄:
SELECT *
FROM table
LIMIT 10,10;
顯示第21條到20條記錄:
SELECT *
FROM table
LIMIT 20,10;
注意:在mysql8.0當中,可以使用“LIMIT 3 OFFSET 4”
意思是從第5條記錄開始,向后獲取3條記錄。與“LIMIT 4,3”結果一樣。
注意:LIMIT子句一定要放在整個SELECT語句的最后面。
使用LIMIT句子好處
約束返回結果的數量可以減少數據表的網絡傳輸量,也可以提升查詢效率。如果我們知道返回結果只有一條,就可以使用LIMIT 1
告訴SELECT 語句只需要返回一條記錄即可。這樣的好處就是SELECT語句不需要掃描完整的表,只需要檢索到一條符合條件的記錄即可返回。
文章到此結束啦,欲知后事如何,請看下篇!😘