AUTO_INCREMENT: 自動增長,假如一個列聲明了自增列,無需手動賦值,直接賦值為NULL,會獲取最大值,然后加1插入
注意: 只適用於整數型的主鍵列上,允許手動賦值
簡單查詢
(1)查詢特定的列
示例: 查詢所有員工的姓名、工資
SELECT ename,salary FROM emp;
練習: 查詢所有員工的編號,姓名,性別,生日
SELECT eid,ename,sex,birthday FROM emp;
(2)查詢所有的列
SELECT * FROM emp;
SELECT eid,ename,sex,birthday,salary,deptId FROM emp;
(3)給列起別名
示例: 查詢所有的員工姓名和工資,使用漢字別名
SELECT ename AS 姓名,salary AS 工資 FROM emp;
練習: 查詢所有員工的編號,姓名,工資,生日,使用漢字別名
SELECT eid AS 編號,ename AS 姓名,salary 工資,birthday 生日 FROM emp;
練習: 查詢所有員工的編號和姓名,使用1個字母作為別名
SELECT eid a,ename b FROM emp;
(4)顯示不同的記錄/合並相同的記錄
示例: 查詢出員工都分布在哪些部門
SELECT DISTINCT deptId FROM emp;
練習: 查詢出都有哪些性別的員工
SELECT DISTINCT sex FROM emp;
(5)查詢時執行計算
示例: 計算2+5*3+7/2-9
SELECT 2+5*3+7/2-9;
練習: 查詢出所有員工的姓名及其年薪
SELECT ename,salary*12 FROM emp;
練習: 假設每個員工的工資增加500,年終獎為5000,查詢出所有員工的姓名及其年薪,給列使用漢字別名
SELECT ename 姓名, (salary+500)*12+5000 年薪 FROM emp;
(6)查詢結果集排序
示例: 查詢所有的部門,結果集按照編號從小到大排序
SELECT * FROM dept ORDER BY did ASC; #ascendant
示例: 查詢所有的部門,結果集按照編號從大到小排序
SELECT * FROM dept ORDER BY did DESC;
#descendant
練習: 查詢所有的員工,結果集按照工資從高到低排列
SELECT * FROM emp ORDER BY salary DESC;
練習: 查詢所有的員工,結果集按照年齡從小到大排列
SELECT * FROM emp ORDER BY birthday DESC;
練習: 查詢所有的員工,結果集按照姓名的升序排列
SELECT * FROM emp ORDER BY ename;
練習: 查詢所有的員工,結果集按照工資降序排列,如果工資相同,按照姓名排列
SELECT * FROM emp ORDER BY salary DESC,ename;
練習: 查詢所有的員工,結果集按照性別排序,如果性別相同按照生日降序排列
SELECT * FROM emp ORDER BY sex,birthday DESC;
ORDER BY 可以按照數值、字符串、日期時間來排序 默認是ASC升序排列 |
(7)條件查詢
示例: 查詢出編號為5的員工
SELECT * FROM emp WHERE eid=5;
練習: 查詢出姓名為king的員工的編號,姓名,工資
SELECT eid,ename,salary FROM emp WHERE ename='king';
練習: 查詢出20號部門下的員工有哪些
SELECT * FROM emp WHERE deptId=20;
練習: 查詢出所有的女員工
SELECT * FROM emp WHERE sex=0;
練習: 查詢出工資在5000以上的員工有哪些
SELECT * FROM emp WHERE salary>5000;
比較運算符: > < >= <= = !=(不等於) |
練習: 查詢出1991-1-1前出生的員工有哪些
SELECT * FROM emp WHERE birthday<'1991-1-1';
練習: 查詢出不在20部門的員工有哪些
SELECT * FROM emp WHERE deptId!=20;
練習: 查詢出沒有明確部門的員工有哪些
SELECT * FROM emp WHERE deptId IS NULL;
練習: 查詢出有明確部門的員工有哪些
SELECT * FROM emp WHERE deptId IS NOT NULL;
練習: 查詢出工資在5000~7000之間的員工有哪些
SELECT * FROM emp WHERE salary>=5000 AND salary<=7000;
SELECT * FROM emp WHERE salary BETWEEN 5000 AND 7000;
練習: 查詢出工資在5000以下和7000以上的員工有哪些
SELECT * FROM emp WHERE salary<5000 OR salary>7000;
SELECT * FROM emp WHERE salary NOT BETWEEN 5000 AND 7000;
練習: 查詢出1990年之前和1993年之后出生的員工有哪些
SELECT * FROM emp WHERE birthday<'1990-1-1' OR birthday>'1993-12-31';
SELECT * FROM emp WHERE birthday NOT BETWEEN '1990-1-1' AND '1993-12-31';
練習: 查詢出1993年出生的員工有哪些
SELECT * FROM emp WHERE birthday>='1993-1-1' AND birthday<='1993-12-31';
SELECT * FROM emp WHERE birthday BETWEEN '1993-1-1' AND '1993-12-31';
練習: 查詢出1994年后出生的男員工有哪些
SELECT * FROM emp WHERE birthday>'1994-12-31' AND sex=1;
練習: 查詢出20號部門和30號的員工有哪些
SELECT * FROM emp WHERE deptId=20 OR deptId=30;
SELECT * FROM emp WHERE deptId IN(20,30);
練習: 查詢出不在20號部門和30號部門的員工有哪些
SELECT * FROM emp WHERE deptId NOT IN(20,30);
(8)模糊條件查詢
示例: 查詢姓名中含有字母e的員工有哪些
SELECT * FROM emp WHERE ename LIKE '%e%';
練習: 查詢出姓名中以e結尾的員工有哪些
SELECT * FROM emp WHERE ename LIKE '%e';
練習: 查詢出姓名中倒數第2個字符為e的員工有哪些
SELECT * FROM emp WHERE ename LIKE '%e_';
% 可以匹配任意多個字符 >=0 _ 可以匹配任意1個字符 =1 以上兩個匹配符必須結合着LIKE使用 |
(9)分頁查詢
查詢的結果集中有太多的數據,一次顯示不完,可以分頁顯示
需要有兩個已知條件: 當前的頁碼、每頁的數據量
SELECT * FROM emp LIMIT start,count;
start: 從哪一條數據開始查詢
start = (當前的頁碼-1)*每頁的數據量 |
count: 每頁的數據量
假設每頁顯示5條數據
第1頁: SELECT * FROM emp LIMIT 0,5;
第2頁: SELECT * FROM emp LIMIT 5,5;
第3頁: SELECT * FROM emp LIMIT 10,5;
假設每頁顯示7條數據
第1頁: SELECT * FROM emp LIMIT 0,7;
第2頁: SELECT * FROM emp LIMIT 7,7;
第3頁: SELECT * FROM emp LIMIT 14,7;