Python攻城师的成长————MySQL数据库关键字
今日學習目標
- 熟悉關鍵字用法,掌握多表查詢思路
文章目錄
- 今日學習目標
- 學習內容
- 一、查詢關鍵字
- 查詢關鍵字之having過濾
- 查詢關鍵字之distinct去重
- 查詢關鍵字之order by排序
- 查詢關鍵字之limit分頁
- 查詢關鍵字之regexp正則
- 二、多表查詢思路
- 多表查詢的思路
- 三、可視化軟件navicat
學習內容
- 查詢關鍵字
- 多表查詢思路
- 可視化軟件navicat
一、查詢關鍵字
關鍵字功能講解依靠例題講解,爭取做到通俗易懂。
例題數據
查詢關鍵字之having過濾
where 和 having都是用來篩選數據的,但是where 用于分組之前的篩選、having用于分組之后的篩選eg: 統計各部門年齡在30歲以上的員工平均薪資,并保留平均工資大于10000的部門 select post,avg(salary) from emp where age > 30 group by post having avg(salary)>100000;查詢關鍵字之distinct去重
去重的前提是存在一模一樣的數據
? 如果存在主鍵無法去重
#對有重復的展示數據進行去重操作 select distinct id,age from emp; select distinct post from emp;查詢關鍵字之order by排序
order by 默認是升序 默認關鍵字是asc
select * from emp order by salary asc; select * from emp order by salary desc;order by 排序支持多個字段組合 select * from emp order by age,salary; select * from emp order by age asc,salary desc;查詢關鍵字之limit分頁
#只跟一個數字select * from emp limit 5; #從頭開始展示幾行數據#求薪資最高的員工所有數據 1、先按照薪資降序排序 2、再使用limit限制取一行 select * from emp order by salary desc limit 1;查詢關鍵字之regexp正則
select * from emp where name regexp '^j.*(n|y)$';#以j開頭的所有任意字符,以n和y結尾的名字二、多表查詢思路
多表查詢的思路
子查詢
就相當于是我們日常生活中解決問題的方式(一步步解決)
將一條SQL語句的查詢結果加括號當做另外一條SQL語句的查詢條件
eg:以昨天的員工表和部門表為例 查詢jason所在的部門名稱
子查詢的步驟
1.先查jason所在的部門編號
2.根據部門編號去部門表中查找部門名稱
連表操作
先將多張表拼接到一起 形成一張大表 然后基于單表查詢獲取數據
eg:以昨天的員工表和部門表為例 查詢jason所在的部門名稱
連表操作
1.先將員工表和部門表按照某個字段拼接到一起
2.基于單表查詢
-
實際演練
create table dep(id int primary key auto_increment,name varchar(32) ); create table emp(id int primary key auto_increment,name varchar(32),gender enum('male','female','others') default 'male',age int,dep_id int ); insert into dep values(200,'技術'),(201,'人力資源'),(202,'銷售'),(203,'運營'),(205,'安保'); insert into emp(name,age,dep_id) values('jason',18,200),('tony',28,201),('oscar',38,201),('jerry',29,202),('kevin',39,203),('jack',48,204);
使用子查詢 獲取jason所在的部門名稱
先獲取jason的部門編號
select dep_id from emp where name='jason';將結果加括號作為查詢條件
select name from dep where id=(select dep_id from emp where name='jason');使用連表操作 獲取jason所在的部門名稱
select dep.name from emp inner join dep on emp.dep_id=dep.id where emp.name='jason'笛卡爾積(了解知識)
select * from emp,dep; # 會講所有的數據全部對應一遍select * from emp,dep where emp.dep_id=dep.id; # 效率低下1.一條SQL語句的查詢結果 我們也可以看成是一張虛擬表 2.如果一條SQL語句中設計到多張表的字段名稱編寫 建議使用表名前綴做區分連表操作有四個關鍵字
-
inner join 內連接
select * from emp inner join dep on emp.dep_id=dep.id;只連接兩張表中有對應關系的數據
-
left join 左連接
select * from emp left join dep on emp.dep_id=dep.id;以左表為基準 展示所有的數據 沒有對應項則用NULL填充
-
right join 右連接
select * from emp right join dep on emp.dep_id=dep.id;以右表為基準 展示所有的數據 沒有對應項則用NULL填充
-
union 全連接
select * from emp left join dep on emp.dep_id=dep.id union select * from emp right join dep on emp.dep_id=dep.id;左右兩表數據全部展示 沒有對應項則用NULL填充
分析總結:
我們學會了連表操作之后 其實就可以將N多張表拼接到一起
思路:我們可以將兩張表拼接之后的結果起別名當做一張表使用然后再去跟另外一張表拼接
三、可視化軟件navicat
Navicat可以充當很多數據庫軟件的客戶端 提供了圖形化界面能夠讓我們更加快速的操作數據庫
內部封裝了SQL語句 用戶只需要鼠標點點點就可以快速操作
連接數據庫 創建庫和表 錄入數據 操作數據
外鍵 SQL文件 逆向數據庫到模型 查詢(自己寫SQL語句)
使用navicat編寫SQL 如果自動補全語句 那么關鍵字都會變大寫
對于基礎使用個人比較推薦看一下這篇博客
總結
以上是生活随笔為你收集整理的Python攻城师的成长————MySQL数据库关键字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kafka集群Error creatin
- 下一篇: python写邮箱系统_Python d