Mysql資料庫基礎學習筆記 1.mysql查看當前登錄的賬戶名以及資料庫 一、單表查詢 1、創建資料庫yuzly,創建表fruits 創建表 插入內容 2、查詢所有欄位 3.查詢指定欄位 4.帶IN關鍵字的查詢 IN關鍵字:IN(xx,yy,...) 滿足條件範圍內的一個值即為匹配項 5.帶BET ...
Mysql資料庫基礎學習筆記
1.mysql查看當前登錄的賬戶名以及資料庫
一、單表查詢
1、創建資料庫yuzly,創建表fruits
創建表
CREATE TABLE fruits(f_id CHAR(10) NOT NULL,s_id INT NOT NULL,f_name char(255) NOT NULL,f_price DECIMAL(8,2) NOT NULL,PRIMARY KEY(f_id));
插入內容
INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('a1',101,'apple',5.2); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('b1',101,'blackberry',10.2); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('bs1',102,'orange',11.2); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('bs2',105,'melon',8.2); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('t1',102,'banana',10.3); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('t2',102,'grape', 5.3); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('o2',103,'coconut',9.2); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('c0',101,'cherry',3.2); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('a2',103,'apricot',2.2); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('l2',104,'lemon',6.4); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('b2',104,'berry',7.6); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('m1',106,'mango',15.6); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('m2',105,'xbabay',2.6); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('t4',107,'xbababa',3.6); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('m3',105,'xxtt',11.6); INSERT INTO fruits(f_id,s_id,f_name,f_price) VALUES('b5',107,'xxxx',3.6 );
2、查詢所有欄位
3.查詢指定欄位
4.帶IN關鍵字的查詢
IN關鍵字:IN(xx,yy,...) 滿足條件範圍內的一個值即為匹配項
5.帶BETWEEN AND的範圍查詢
BETWEEN ... AND ... : 在...到...範圍內的值即為匹配項
6.帶LIKE的字元匹配查詢
LIKE: 相當於模糊查詢,和LIKE一起使用的通配符有 "%"、"_"
"%":作用是能匹配任意長度的字元。
"_":只能匹配任意一個字元
7.查詢空值
空值不是指為空字元串""或者0,一般表示數據未知或者在以後在添加數據,也就是在添加數據時,其欄位上預設為NULL,也就是說,如果該欄位上不插入任何值,就為NULL。此時就可以查詢出來。
SELECT * FROM 表名 WHERE 欄位名 IS NULL; //查詢欄位名是NULL的記錄
SELECT * FROM 表名 WHERE 欄位名 IS NOT NULL; //查詢欄位名不是NULL的記錄
8.帶AND的多條件查詢
9.帶OR的多條件查詢
10.關鍵字DISTINCT(查詢結果不重覆)
11.對查詢結果排序(ORDER BY)
12.分組查詢(GROUP BY)
分組之後還可以進行條件過濾,將不想要的分組丟棄,使用關鍵字 HAVING
HAVING和WHERE都是進行條件過濾的,區別就在於 WHERE 是在分組之前進行過濾,而HAVING是在分組之後進行條件過濾。
13.使用LIMIT限制查詢結果的數量
14.COUNT()函數
COUNT(*):計算表中的總的行數,不管某列有數值或者為空值,因為*就是代表查詢表中所有的數據行。
COUNT(欄位名):計算該欄位名下總的行數,計算時會忽略空值的行,也就是NULL值的行。
15.SUM()函數
16.AVG()函數
17.MAX()函數、MIN()函數
二、多表查詢
1.創建表,插入數據
CREATE TABLE suppliers(s_id INT NOT NULL,s_name CHAR(50) NOT NULL,s_city CHAR(50) NULL,s_zip CHAR(10) NULL,s_call CHAR(50) NOT NULL,PRIMARY KEY(s_id)); INSERT INTO suppliers VALUES(101,'Supplies A','Tianjin','400000','18075'); INSERT INTO suppliers VALUES(102,'Supplies B','Chongqing','400000','44333'); INSERT INTO suppliers VALUES(103,'Supplies C','Shanghai','400000','90046'); INSERT INTO suppliers VALUES(104,'Supplies D','Zhongshan','400000','11111'); INSERT INTO suppliers VALUES(105,'Supplies E','Taiyuang','400000','22222'); INSERT INTO suppliers VALUES(106,'Supplies F','Beijing','400000','45678'); INSERT INTO suppliers VALUES(107,'Supplies G','Zhengzhou','400000','33332'); INSERT INTO suppliers VALUES(108,'Supplies H','Xiaan','400000','44442'); INSERT INTO suppliers VALUES(109,'Supplies I','Fuzhou','400000','55552'); INSERT INTO suppliers VALUES(110,'Supplies J','Xiamen','400000','66662');
2.普通雙表連接查詢
3.內連接查詢
格式:表名 INNER JOIN 表名 ON 連接條件
4.外連接查詢
內連接是將符合查詢條件(符合連接條件)的行返回,也就是相關聯的行就返回。
外連接除了返回相關聯的行之外,將沒有關聯的行也會顯示出來。
左外連接查詢
格式: 表名 LEFT JOIN 表名 ON 條件;
返回包括左表中的所有記錄和右表中連接欄位相等的記錄,通俗點講,就是除了顯示相關聯的行,還會將左表中的所有記錄行都顯示出來。
5.右外連接查詢
格式: 表名 RIGHT JOIN 表名 ON 條件
返回包括右表中的所有記錄和右表中連接欄位相等的記錄
6.複合條件連接查詢
7.使用INNER JOIN語法進行內連接查詢,並對查詢結果進行排序
8.子查詢
將查詢一張表得到的結果來充當另一個查詢的條件,這樣嵌套的查詢就稱為子查詢。
搭建環境
9.帶ANY、SOME關鍵字的子查詢
ANY關鍵字接在一個比較操作符的後面,表示若與子查詢返回的任何值比較為TRUE,則返回TRUE,通俗點講,只要滿足任意一個條件,就返回TRUE。
10.帶ALL關鍵字的子查詢
使用ALL時表示需要同時滿足所有條件。
11.帶EXISTS關鍵字的子查詢
EXISTS關鍵字後面的參數是任意一個子查詢,如果子查詢有返回記錄行,則為TRUE,外層查詢語句將會進行查詢,如果子查詢沒有返回任何記錄行,則為FALSE,外層查詢語句將不會進行查詢。
12.帶IN關鍵字的子查詢
13.合併結果查詢
利用UNION關鍵字,可以將查詢出的結果合併到一張結果集中,也就是通過UNION關鍵字將多條SELECT語句連接起來,註意,合併結果集,只是增加了表中的記錄,並不是將表中的欄位增加,僅僅是將記錄行合併到一起。其顯示的欄位應該是相同的,不然不能合併。
UNION:執行的時候會刪除重覆的記錄,所有返回的行度是唯一的,
UNION ALL:不刪除重覆航也不對結果進行自動排序。
14.使用UNION,而不用UNION ALL的話,重覆的記錄就會被刪除掉。