-- 1 基礎查詢
-- 1.1 查詢所有列
SELECT * FROM stu;
-- 1.2 在stu表中查詢指定列 sid, sname, age
SELECT sid, sname, age FROM stu;
-- 2 條件查詢
-- 2.2 查詢性別為女,并且年齡50的記錄
SELECT * FROM stu WHERE gender='female' AND ge<50;
-- 2.3 查詢學號為1,或者姓名為王的記錄
SELECT * FROM stu WHERE sid ='1' OR sname='王';
-- 2.4 查詢學號為1,2,3的記錄
SELECT * FROM stu WHERE sid IN ('1','2','3');
-- 2.5 查詢學號不是1,2,3的記錄
SELECT * FROM tab_student WHERE s_number NOT IN ('1','2','3');
-- 2.6 查詢年齡為22的記錄
SELECT * FROM stu WHERE age IS 22;
-- 2.7 查詢年齡在20到24之間的學生記錄
SELECT * FROM stu WHERE age>=20 AND age<=24;
-- 或者
SELECT * FROM stu WHERE age BETWEEN 20 AND 24;
-- 或者
SELECT * FROM stu WHERE age(20,21,22,23,24);
-- 2.8 查詢性別非男的學生記錄
SELECT * FROM stuWHERE gender!='男';
-- 或者
SELECT * FROM stuWHERE gender<>'男';
-- 或者
SELECT * FROM stuWHERE NOT gender='男';
-- 或者
SELECT * FROM stuWHERE gender='女';
-- 2.9 查詢姓名不為null的學生記錄
SELECT * FROM stu WHERE NOT sname IS NULL;
-- 或者
SELECT * FROM stu WHERE sname IS NOT NULL;
-- 3 模糊查詢
-- 3.1 查詢姓名由5個字母構成的學生記錄
SELECT * FROM stu WHERE sname LIKE '_____';
-- 3.2 查詢姓名由5個字母構成,并且第5個字母為“i”的學生記錄
SELECT * FROM stu WHERE sname LIKE '____i';
-- 3.3 查詢姓名以“張”開頭的學生記錄
SELECT * FROM stu WHERE sname LIKE '張%';
-- 3.4 查詢姓名中第2個字母為“小”的學生記錄
SELECT * FROM stu WHERE sname LIKE '_小%';
-- 3.5 查詢姓名中包含“麗”字母的學生記錄
SELECT * FROM stu WHERE sname LIKE '%麗%';
-- 4 字段控制查詢
-- 4.1 去除重復記錄
SELECT DISTINCT sal FROM emp;
-- 4.2 查看雇員的月薪與傭金之和
SELECT *,sal+comm FROM emp;
-- comm列有很多記錄的值為NULL,因為任何東西與NULL相加結果還是NULL,所以結算結果可能會出現NULL。下面使用了把NULL轉換成數值0的函數IFNULL:
SELECT *,sal+IFNULL(comm,0) FROM emp;
--- 4.3 給列名添加別名
-- 在上面查詢中出現列名為sal+IFNULL(comm,0),這很不美觀,現在我們給這一列給出一個別名,為total:
SELECT *, sal+IFNULL(comm,0) AS total FROM emp;
-- 給列起別名時,是可以省略AS關鍵字的:
SELECT *,sal+IFNULL(comm,0) total FROM emp;
-- 5 排序 ORDER BY
-- 5.1 查詢所有學生記錄,按年齡升序排序
SELECT * FROM stu ORDER BY sage ASC;
-- 或者
SELECT * FROM stu ORDER BY sage;
-- 5.2 查詢所有學生記錄,按年齡降序排序
SELECT * FROM stu ORDER BY age DESC;
-- 5.3 查詢所有雇員,按月薪降序排序,如果月薪相同時,按編號升序排序
SELECT * FROM empORDER BY sal DESC,empno ASC;
-- 6.1 COUNT
-- 查詢emp表中記錄數:
SELECT COUNT(*) AS cnt FROM emp;
-- 查詢emp表中有傭金的人數:
SELECT COUNT(comm) cnt FROM emp;
-- 查詢emp表中月薪大于2500的人數:
SELECT COUNT(*) FROM empWHERE sal > 2500;
-- 統計月薪與傭金之和大于2500元的人數:
SELECT COUNT(*) AS cnt FROM emp WHERE sal+IFNULL(comm,0) > 2500;
-- 查詢有傭金的人數,以及有領導的人數:
SELECT COUNT(comm), COUNT(mgr) FROM emp;
-- 6.2 SUM和AVG
-- 查詢所有雇員月薪和:
SELECT SUM(sal) FROM emp;
-- 查詢所有雇員月薪和,以及所有雇員傭金和:
SELECT SUM(sal), SUM(comm) FROM emp;
-- 查詢所有雇員月薪+傭金和:
SELECT SUM(sal+IFNULL(comm,0)) FROM emp;
-- 統計所有員工平均工資:
SELECT SUM(sal), COUNT(sal) FROM emp;
-- 或者
SELECT AVG(sal) FROM emp;
-- 6.3 MAX和MIN
-- 查詢最高工資和最低工資:
SELECT MAX(sal), MIN(sal) FROM emp;
-- 7.1 分組查詢
-- 查詢每個部門的部門編號和每個部門的工資和:
SELECT deptno, SUM(sal) FROM emp GROUP BY deptno;
-- 查詢每個部門的部門編號以及每個部門的人數:
SELECT deptno,COUNT(*) FROM emp GROUP BY deptno;
-- 查詢每個部門的部門編號以及每個部門工資大于1500的人數:
SELECT deptno,COUNT(*) FROM emp WHERE sal>1500 GROUP BY deptno;
-- 7.2 HAVING子句
-- 查詢工資總和大于9000的部門編號以及工資和:
SELECT deptno, SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal) > 9000;
-- 8.1 查詢5行記錄,起始行從0開始
SELECT * FROM emp LIMIT 0, 5;
-- 8.2 查詢10行記錄,起始行從3開始
SELECT * FROM emp LIMIT 3, 10;
8.3 分頁查詢 規則
(頁數-1)*行數=第二頁的第一個顯示行數。 ? 從幾行開始就寫幾。(前面是起始行數,后面是顯示行數)
8.3 分頁查詢?
查詢語句書寫順序:select – from- where- group by- having- order by-limit?
查詢語句執行順序:from - where -group by - having - select - order by-limit
完整的查詢順序
1:使用SHOW語句找出在服務器上當前存在什么數據庫:
mysql> SHOW DATABASES;
2:創建一個數據庫MYSQLDATA
mysql> CREATE DATABASE MYSQLDATA;
3:選擇你所創建的數據庫
mysql> USE MYSQLDATA; (按回車鍵出現Database changed 時說明操作成功!)
4:查看現在的數據庫中存在什么表
mysql> SHOW TABLES;
5:創建一個數據庫表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6:顯示表的結構:
mysql> DESCRIBE MYTABLE;
7:往表中加入記錄
mysql> insert into MYTABLE values (”hyq”,”M”);
8:用文本方式將數據裝入數據庫表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;
9:導入.sql文件命令(例如D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
10:刪除表
mysql>drop TABLE MYTABLE;
11:清空表
mysql>delete from MYTABLE;
12:更新表中數據
mysql>update MYTABLE set sex=”想要修改的內容” where name=’被修改的內容’;