1. 程式人生 > >mysql單表、多表查詢語句

mysql單表、多表查詢語句

#navicat與mysql8.0連線問題解決
1251–Client does not support authentication protocol requested by server 的解決辦法:
下面這四步解決,可以忽略第二步也可以

USE mysql; 
ALTER USER ‘root’@’localhost’ IDENTIFIED BY 'password'  PASSWORDEXPIRE NEVER;
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘密碼自己設定’; 
FLUSH PRIVILEGES;

1.建立資料庫,create database ***,查詢資料庫 show databases,
2.資料表 ;據表是資料庫重要的組成部分,是其他物件的基礎,使用資料庫現有開啟資料庫,use ***,然後建立資料表:
create table test(
name varchar(20),
age tinyint unsigned,
salary float(6,2) unsigned
);
3. 檢視資料表 show tables;檢視資料表結構 show columns from ***;插入資料表內容 insert *** values();資料表記錄查詢 select * from ***;
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

a、簡單查詢
1.select * from ***; 第1個星號表示所有列,也可以單獨列和多列逗號隔開,後面三個星號是表名
SELECT * from tb5 LIMIT 3;

在這裡插入圖片描述
2.SELECT e.age from tb5 e; 別名操作
SELECT e.age as ‘年齡’ from tb5 e; 還可以改變顯示的列名
在這裡插入圖片描述
3.SELECT DISTINCT e.age from tb5 e; 表示去掉重複
4.SELECT CONCAT(“姓名”,e.username,“年齡”,e.age) from tb5 e; 多列連線成一列展示
在這裡插入圖片描述
#條件查詢
5.

SELECT * from tb5 WHERE id=3;
SELECT e.* from tb5 e WHERE id>2; 
SELECT e.* from tb5 e WHERE id>2 and id<5;
SELECT e.* from tb5 e WHERE id=2 or id=5;  
SELECT e.* from tb5 e WHERE id in (2,5);  #這in包含意思與上面or執行效果一樣
SELECT e.* from tb5 e WHERE e.id is not null; #不為空
SELECT e.* from tb5 e WHERE e.id !=0; #不為空
SELECT e.* from tb5 e WHERE username LIKE "k%";  #模糊查詢
SELECT e.* from tb5 e WHERE username LIKE "%l%";  #只要包含l不管在前在後,取反還可以在like前加not
SELECT e.* from tb5 e WHERE username !="tom";   #和下面一樣表示查詢不是tom的所有
SELECT e.* from tb5 e WHERE username  <> "tom";

SELECT e.* from tb5 e ORDER BY e.age; #排序,一個升序自動不寫預設asc,下面加desc降序
SELECT e.* from tb5 e ORDER BY e.age DESC;

在這裡插入圖片描述
在這裡插入圖片描述

#多表查詢(沒有關聯條件會產生笛卡爾積,數量變成兩個表數量積肯定不對)

新增外來鍵:後面不寫我直接在navicat直接右鍵表設計表外來鍵,參考連結
在這裡插入圖片描述
在這裡插入圖片描述
6.

SELECT e.* FROM tb5 e,tb6 f WHERE e.username=f.username;
SELECT f.* FROM tb5 e,tb6 f WHERE f.username=e.username;

SELECT f.sex,e.age  FROM tb5 e,tb6 f WHERE f.username=e.username; #多表多資訊查詢

SELECT f.id,e.age  FROM tb5 e,tb5 f WHERE f.age=e.id;  #自連結,兩個一樣的表進行關聯查詢

SELECT e.*  FROM tb5 e LEFT JOIN tb6 f on(f.username=e.username); #左連結以左邊為主,左邊資料全部展示,右邊如果關聯上了就展示不然展示null,on後面是連線條件

在這裡插入圖片描述
在這裡插入圖片描述

7.結果合併展示查詢union

SELECT * FROM tb5 
UNION ALL
SELECT * FROM tb5;   #全部展示
-------------------------------
SELECT * FROM tb5 
UNION 
SELECT * FROM tb5;   #去掉重複展示一半

8.通用函式
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述