MySQL---------基本使用和查詢命令

一,MySQL的基本使用

1. 庫,表 ,表結構,數據

mysql -u 用戶名 -p 密碼 ---------->登錄命令

show databases; ---------------------->查看所有庫名

creat databases 數據庫名; ---------------------->創建數據庫

use 數據庫名; ---------------------->進入數據庫

describe 表名; ---------------------->查看錶結構

INSERT INTO 表名(field1,field2,field3,…) VALUES(‘field1的值’field2的值【不帶’’,說明不是字符】,‘field3的值’,…);; ---------------------->增加“一行”數據

select * from 表名; ---------------------->列出所有數據

2.創建數據庫,表,插入數據

2.1 創建庫,表

  • 在這裏插入圖片描述

NOT NULL 爲約束條件 -->非空

  • 在這裏插入圖片描述

2.2插入數據記錄

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 列出數據

  • 在這裏插入圖片描述

3.刪除數據

delete from 表名

二,SQL查詢語句

1. ????sql語句的執行順序????

SQL執行順序
 (1)from   
    (2) on 
       (3) join 
           (4) where 
                (5)group by 
                      (6) avg,sum.... 
                                (7)having 
                                         (8) select 
                                               (9) distinct 
                                                         (10) order by

2. 單表查詢語句

1.1查詢所有字段

SELECT * FROM 表名;

  • 在這裏插入圖片描述
1.2 列出指定field(可以理解爲列)

SELECT field1 , foeld2 FROM 表;

  • -
1.3 where語句添加過濾條件

①查詢指定字段

  • 在這裏插入圖片描述
    ②or 或選擇
    在這裏插入圖片描述
    ③and 與選擇
    在這裏插入圖片描述
  • 在這裏插入圖片描述

④帶IN字查詢
IN關鍵字:IN(xx,yy,…) 滿足條件範圍內的一個值即爲匹配項

  • 在這裏插入圖片描述

⑤帶BETWEEN AND的範圍查詢
BETWEEN … AND … : 在…到…範圍內的值即爲匹配項

  • 在這裏插入圖片描述

⑥模糊查找 -->like

LIKE: 相當於模糊查詢,和LIKE一起使用的通配符有  "%"、"_"  
  "%":作用是能匹配任意長度的字符。
  "_":只能匹配任意一個字符

		姓名 like 【張% |  張--】
  • 在這裏插入圖片描述

⑦查詢空值

空值不是指爲空字符串""或者0,一般表示數據未知或者在以後在添加數據,也就是在添加數據時,其字段上默認爲NULL,也就是說,如果該字段上不插入任何值,就爲NULL。此時就可以查詢出來。
 
  SELECT * FROM 表名 WHERE 字段名 IS NULL;  //查詢字段名是NULL的記錄
      SELECT * FROM 表名 WHERE 字段名 IS NOT NULL;  //查詢字段名不是NULL的記錄
1.4 去重複查詢distinct
  • 在這裏插入圖片描述
1.5 對查詢結果排序 ORDER BY
order by   field_name     [asc]  升序排列  (默認)
order by    field_name    desc   降序排列

  • 在這裏插入圖片描述
  • 在這裏插入圖片描述
1.6 集合函數查詢

①COUNT()函數

 COUNT(*):計算表中的總的行數,不管某列有數值或者爲空值,因爲*就是代表查詢表中所有的數據行。
 COUNT(字段名):計算該字段名下總的行數,計算時會忽略空值的行,也就是NULL值的行。

-在這裏插入圖片描述

②sum()函數

  • 在這裏插入圖片描述

④AVG()函數

  • 在這裏插入圖片描述

⑤MAX()函數、MIN()函數

  • 在這裏插入圖片描述
1.7 分組查詢 (GROUP BY)

適合用於表的記錄比較混合

l例如:查詢男女生的人數
在沒有學習分組查詢之前,我們可以安裝常規的思路解決查詢需求
select count(*) from student where sex=‘男’

select count(*) from student where sex=‘女’

那麼現在又要個需要時,查詢每個班級的總人數

如果按照常規解決查詢,那麼我們應該思考的是
1.每個班級,我們並不知道在表裏有哪些班級,那麼我們where 後的條件如何寫
2.如果該表裏有1000個班級,那麼我難道要寫一千條where查詢語句
面對這樣的問題 sql server爲我們準備了Group by 關鍵字實現分組查詢

①不帶過濾條件的分組查詢

  • 在這裏插入圖片描述

②帶過濾條件的分組查詢

分組之後還可以進行條件過濾,將不想要的分組丟棄,使用關鍵字 HAVING

HAVING和WHERE都是進行條件過濾的,區別就在於 WHERE 是在分組之前進行過濾,而HAVING是在分組之後進行條件過濾。

2.1 having 和 group by連用

  • 在這裏插入圖片描述

2.1 where 和group by連用

  • 在這裏插入圖片描述
    2.3 where和group by和having連用

  • 在這裏插入圖片描述

1.8 使用LIMIT限制查詢結果的數量
select * from 表名   limit 4;      【顯示前4行】
select * from 表名   limit 4,3;     【從第四行開始顯示,顯示三行】     --->第一行是0行
  • 在這裏插入圖片描述

  • 在這裏插入圖片描述

3. 多表查詢語句

  • 在這裏插入圖片描述
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');
3.1 普通雙表連接查詢

查詢兩表字段一致的數據

  • 在這裏插入圖片描述
3.2 內,連接查詢

格式:表名 INNER JOIN 表名 ON 連接條件
內連接是將符合查詢條件(符合連接條件)的行返回,也就是相關聯的行就返回

外連接除了返回相關聯的行之外,將沒有關聯的行也會顯示出來。

  • 1.左外聯查詢:格式: 表名 LEFT JOIN 表名 ON 條件;
    返回包括左表中的所有記錄和右表中連接字段相等的記錄,通俗點講,就是除了顯示相關聯的行,還會將左表中的所有記錄行都顯示出來。
  • 2.右外聯查詢:格式: 表名 RIGHT JOIN 表名 ON 條件
    返回包括右表中的所有記錄和右表中連接字段相等的記錄

爲什麼需要將不沒關聯的行也顯示出來呢?這就要根據不同的業務需求了,就比如,order和customers,顧客可以有訂單也可以沒訂單,現在需要知道所有顧客的下單情況,而我們不能夠只查詢出有訂單的用戶,而把沒訂單的用戶丟在一邊不顯示,這個就跟我們的業務需求不相符了,有人說,既然知道了有訂單的顧客,通過單表查詢出來不包含這些有訂單顧客,不就能達到我們的要求嗎,這樣是可以,但是很麻煩,如何能夠將其一起顯示並且不那麼麻煩呢?爲了解決這個問題,就有了外連接查詢這個東西了

①內連接查詢

  • 在這裏插入圖片描述

②外連接查詢

左外連接查詢

  • 在這裏插入圖片描述
3.3 子查詢
將查詢一張表得到的結果來充當另一個查詢的條件,這樣嵌套的查詢就稱爲子查詢
    
子查詢(一張表的查詢結果做條件)
		外層查詢能否執行-->取決與內層
			①ANY【任意】  
			②SOME【一些】     
			③ALL【】 關鍵字
				   eg:ANY(SELECT num2 from tables2)

①any和some

ANY和SOME關鍵字接在一個比較操作符的後面,表示若與子查詢返回的任何值比較爲TRUE,則返回TRUE,通俗點講,只要滿足任意一個條件,就返回TRUE。

  • 在這裏插入圖片描述

②ALL

  • 在這裏插入圖片描述

④帶EXISTS(是否存在)關鍵字的子查詢

EXISTS關鍵字後面的參數是任意一個子查詢,如果子查詢有返回記錄行,則爲TRUE,外層查詢語句將會進行查詢,如果子查詢沒有返回任何記錄行,則爲FALSE,外層查詢語句將不會進行查詢。

  • 在這裏插入圖片描述

⑤帶IN的子查詢
外層某數據是否在內層 --> 若在 --> 執行

  • 在這裏插入圖片描述

⑥合併結果查詢

利用UNION關鍵字,可以將查詢出的結果合併到一張結果集中,也就是通過UNION關鍵字將多條SELECT語句連接起來,注意,合併結果集,只是增加了表中的記錄,並不是將表中的字段增加,僅僅是將記錄行合併到一起。其顯示的字段應該是相同的,不然不能合併。

UNION:執行的時候會去重,排序
UNION ALL:不刪除重複航也不對結果進行自動排序。

  • 在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章