MySQL微講解 四 MySQL微講解 四

2022-10-10 21:18:17 字數 3217 閱讀 5727

h**ing與where的功能一模一樣,都是對資料進行篩選,where是用在分組之前,h**ing用在分組之後,為了區分兩者,我們將where說為篩選,h**ing稱之為過濾

# 統計每個部門年齡在30歲以上的員工的平均薪資,並且保留平均薪資大於10000的部門

1.先獲取每個部門年齡在30歲以上的員工的平均薪資

select post,**g(salary) from emp where age > 30 group by post;

2.在第一步的基礎上過濾出平均薪資大於10000的資料

select post,**g(salary) from emp where age > 30 group by post h**ing **g(salary) > 10000;

# 針對聚合函式,如果還需要在其他地方繼續作為條件使用的可以先使用別名

select post,**g(salary) as **g_salary from emp where age > 30 group by post h**ing **g_salary > 10000;

# 去重的前提是資料必須一模一樣才可以,如果資料有主鍵肯定無法去重

select distinct age from emp; # 對年齡資料進行去重

# 1.薪資按照高低排序

select * from emp order by salary; # 預設是公升序

select * from emp order by salary asc; # 公升序的關鍵字,也可以不寫

select * from emp order by salary desc; # 降序的關鍵字

# 2.先按照年齡公升序排列,如果年齡相同,在按照薪資降序排列

select * from emp order by age,salary desc;

# 3.統計各部門年齡在10歲以上的員工平均薪資,並且保留平均工資大於1000的部門並按照從大到小的順序排列

select post,**g(salary) from emp where age > 10 group by post h**ing **g(salary)>1000 order by **g(salary) desc;

分頁就是限制展示條數

# 1.限制只展示五條資料

select * from emp limit 5;

# 2.分頁效果

select * from emp limit 6,5;

# 3.查詢工資最高的人的詳情資訊

select * from emp order by salary desc limit 1;

select * from emp where name regexp '^j.';

select * from emp where name regexp '^j.*(n|y)';

# 1.子查詢

子查詢就相當於一步一步的解決問題,將一條sql語句的查詢結果加括號當做另一條sql語句的查詢條件

# 2.連表查詢

連表查詢的思路就是將多張表拼接到一起,形成乙個大表,然後基於單錶查詢獲取資料

# **演練

create table z_1(

id int primary key auto_increment,

name varchar(255)

);create table z_2(

id int primary key auto_increment,

name varchar(255),

gender enum('male','female','others') default 'male',

age int,

dep_id int

);insert into z_1 values(200,'技術'),(201,'安保'),(202,'黑客'),(203,'間諜'),(205,'魔法師');

insert into z_2(name,age,dep_id) values('oscar',21,200),('jason',18,201),('tony',28,201),('jerry',26,202)

,('kevin',38,203),('jack',48,204);

# 使用子查詢,獲取oscar所在的部門名稱

我們可以先獲取oscar的部門編號,然後在將該結果作為條件進行查詢即可

1.獲取oscar的部門編號

select dep_id from z_2 where name = 'oscar';

2.將1的結果作為條件進行查詢

select name from z_1 where id = (select dep_id from z_2 where name = 'oscar');

# 使用連表查詢獲取oscar所在的部門編號

使用連表查詢我們應該先把兩張表拼接到一起,組合成一張表然後我們在查詢

select * from z_1,z_2 where z_1.id = z_2.dep_id; # 把兩張表拼接成一張表

'''注意:如果一條sql語句中涉及到多張表的欄位名稱編寫,建議使用表名字首作區分

'''# 連線表操作的四個關鍵字

1.inner join # 內連線

select * from z_1 inner join z_2 on z_1.id = z_2.dep_id; # 只連線兩張表中有對應關係的資料

2.left join # 左連線

select * from z_1 left join z_2 on z_1.id=z_2.dep_id; # 以左表為基準,展示所有的資料,沒有對應的則用null填充

3.rignt join # 右連線

select * from z_1 right join z_2 on z_1.id=z_2.dep_id; # 以右表為基準,展示所有的資料,沒有對應的則用null填充

4.union # 全連線

select * from z_1 left join z_2 on z_1.id=z_2.dep_id union select * from z_1 right join z_2 on z_1.id=z_2.dep_id; # 左右兩邊表全部展示,沒有對應的就用null填充

所以這一題我們可以這這麼做:select z_1.name from z_1 inner join z_2 on z_1.id=z_2.dep_id where z_2.name = 'oscar';

這裡是it小白陸祿緋,歡迎各位大佬的指點!!!

原文位址:

微mysql命令列 mysql命令大全

mysql命令大全 02 05 啟動 net start mysql 進入 mysql u root p mysql h localhost u root p databasename 列出資料庫 show databases 選擇資料庫 use databasename 列出 show table...

微信開發MySQL篇(一)

1mysql是一種資料庫,定義儲存資訊的結構。2mysql資料庫連線,並建立資料庫和資料庫表 步驟是 首先連線資料庫,然後建立資料庫 現在沒有考慮資料庫已存在,建立的是不存在的資料庫 然後選擇這個資料庫,目的是告訴程式在哪個資料庫中建立表,或者執行其他操作。一般先將操作儲存在乙個變數中,然後去將變數...

微信開發MySQL篇(二)

如何將頁面表單資料存入資料庫呢?表單內資料可以提交到乙個php檔案中,然後通過post或者get方式我們可以獲取到這些資訊,然後通過資料庫操作進行儲存。來乙個簡單的例子 con mysql connect localhost root password if con die cannot conne...