#求最高工資的員工信息 SELECT * FROM emp WHERE sal = (SELECT max(sal) FROM emp); #刪除工資最低的員工信息 DELETE FROM emp WHERE sal = (SELECT e.s FROM (SELECT min(sal) s FRO ...
#求最高工資的員工信息
SELECT * FROM emp WHERE sal = (SELECT max(sal) FROM emp);
#刪除工資最低的員工信息
DELETE FROM emp WHERE sal = (SELECT e.s FROM (SELECT min(sal) s FROM emp) e);
28、分組語句:GROUP BY colname1,colname2 ASC(預設升序)/DESC(降序)
例如:SELECT sal FROM emp GROUP BY sal DESC;
#查看每一個職位的最高工資
SELECT job,max(sal) FROM emp GROUP BY job;
29、分組條件語句:HAVING,是對分組之後的條件限制,且HAVING里可以使用聚合函數,HAVING後出現的列名(可以使用別名)必須要在SELECT語句中出現,但是WHERE語句不能使用別名
#查看最高工資超過10000的職位
SELECT job,max(sal) '最高工資' FROM emp GROUP BY job HAVING 最高工資 > 10000;
Day3
30、事務(transaction):可以一條SQL語句或一組SQL語句
事務的提交:commit;
INSERT,UPDATE,DELETE語句都需要提交事務(COMMIT;),事務中的SQL語句才會生效
查看當前資料庫是否設置自動提交事務
SHOW variables LIKE 'autocommit';
關閉事務自動提交:SET autocommit = OFF;
事務ACID特性
Atomicity(原子性),Consistency(一致性),Isolation(隔離性),Durability(持久性)
31、排序語句:ORDER BY colname1,colname2 ASC(預設升序)/DESC(降序)
例如:SELECT * FROM student ORDER BY mark DESC;
32、限制語句:LIMIT
例如:SELECT * FROM student ORDER BY mark DESC LIMIT 5;
其中LIMIT 5:表示返回前5條(包括第五條)數據
例如:SELECT * FROM student LIMIT 2,5;
其中LIMIT 2,5:表示從第3行(包括第三行)開始,往後查詢5條記錄
33、去重語句:DISTINCT 必須放在SELECT語句後的第一個
例如:SELECT DISTINCT sname FROM student; 表示對sname列的值進行去重
例如:SELECT DISTINCT sname,mark FROM student; 表示對sname和mark兩列數據都相同時 才會去重
#統計不同姓名的學生人數
SELECT count(DISTINCT sname) FROM student;
34、SELECT查詢語句的語法結構和執行順序
(5)SELECT (7)DISTINCT (6)聚合函數
(1)FROM 表名
(2)WHERE 條件語句
(3)GROUP BY 分組語句
(4)HAVING 分組條件語句
(8)ORDER BY 排序語句
(9)LIMIT 限制語句
35、新增列
新增一列:ALTER TABLE tbname ADD COLUMN colname 類型 約束條件;
新增多列:ALTER TABLE tbname ADD COLUMN (colname1 類型 約束條件, colname1 類型 約
束條件,…); 預設加在列尾
新增列在首列:ALTER TABLE tbname ADD COLUMN colname 類型 約束條件 FIRST;
新增列在某列之後:ALTER TABLE tbname ADD COLUMN colname1 類型 約束條件 AFTER
colname2;
36、刪除列
ALTER TABLE tbname DROP COLUMN colname;
37、修改列類型
ALTER TABLE tbname MODIFY COLUMN colname 新類型;
38、修改列名稱
ALTER TABLE tbname CHANGE COLUMN 舊名稱 新名稱 原類型 原約束;
39、修改表名稱
ALTER TABLE oldtbname1 RENAME newtbname2;
RENAME TABLE oldtbname1 TO newtbname2;