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.通用函式