1. 程式人生 > 其它 >Mysql過濾與視覺化軟體

Mysql過濾與視覺化軟體

1. 查詢關鍵字之having過濾

  having與where的功能是一模一樣的 都是對資料進行篩選
  where用在分組之前的篩選
  havng用在分組之後的篩選
為了更好的區分 所以將where說成篩選 havng說成過濾

# 統計每個部門年齡在30歲以上的員工的平均薪資並且保留平均薪資大於10000的部門
'''編寫SQL語句 不要指望著一步到位 邊寫邊看慢慢拼湊'''
# 1.先獲取每個部門年齡在30歲以上的員工的平均薪資
    先篩選出30歲以上的員工資料 然後再對資料進行分組
    select post,avg(salary) from emp where age>30 group by post;
# 2.在過濾出平均薪資大於10000的資料 針對分組之後的資料再次篩選 需要使用having而不是where select post,avg(salary) from emp where age>30 group by post having avg(salary) > 10000 ; '''針對聚合函式 如果還需要在其他地方作為條件使用 可以先起別名''' select post,avg(salary) as avg_salary from emp where age>30 group by post having avg_salary
> 10000 ;

 

 

 

2. 查詢關鍵字之distinct去重

# 去重的前提 資料必須是一模一樣的才可以(如果資料有主鍵肯定無法去重)
select distinct age from emp;
"""
等我們學到django orm之後 資料會被封裝成物件 
那個時候主鍵很容易被我們忽略 從而導致去重沒有效果!!!
"""

 

 

 

3. 查詢關鍵字之order by排序

# 1.按照薪資高低排序
    select * from emp order by salary;        # 預設是升序(從小到大)
    select * from emp order by salary asc;    #
關鍵字asc 可以省略 select * from emp order by salary desc; # 降序(從大到小) # 2.先按照年齡升序排序 如果年齡相同 則再按照薪資降序排序 select * from emp order by age asc,salary desc; # 3.統計各部門年齡在10歲以上的員工平均工資 並且保留平均工資大於1000的部門並按照從大到小的順序排序 select post,avg(salary) as avg_salary from emp where age > 10 group by post having avg_salary > 1000 order by avg_salary desc;

 

 

 

 

 

4. 查詢關鍵字之limit分

# 分頁即限制展示條數
# 1.限制只展示五條資料
    select * from emp limit 5;
# 2.分頁效果
    select * from emp limit 5,5;
# 3.查詢工資最高的人的詳細資訊
    select * from emp order by salary desc limit 1;
"""
當資料特別多的時候 經常使用limit來限制展示條數 節省資源 防止系統崩潰
"""

 

 

5. 查詢關鍵字之regexp正則

select * from emp where name regexp '^j.*(n|y)$';
"""
補充說明:我們目前所講的是MySQL查詢關鍵字中使用頻率較高的一些
其實還有一些關鍵字目前無需講解 並且SQL語句裡面同樣還支援流程控制語法
如果感興趣的話 課後可以自行百度檢視 非常簡單!!!
"""

 

 

 

 6. 多表查詢思路

# 多表查詢的思路總共就兩種
    1.子查詢
      就相當於是我們日常生活中解決問題的方式(一步步解決)
    將一條SQL語句的查詢結果加括號當做另外一條SQL語句的查詢條件
    eg:以昨天的員工表和部門表為例 查詢jason所在的部門名稱
          子查詢的步驟
            1.先查jason所在的部門編號
          2.根據部門編號去部門表中查詢部門名稱
          
  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所在的部門名稱
# 1.先獲取jason的部門編號
    select dep_id from emp where name='jason';
# 2.將結果加括號作為查詢條件
    select name from dep where id=(select dep_id from emp where name='jason');
  
# 使用連表操作  獲取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填充''' 答案求解 select dep.name from emp inner join dep on emp.dep_id=dep.id where emp.name='jason' ; """ 瞭解 我們學會了連表操作之後 其實就可以將N多張表拼接到一起 思路:我們可以將兩張表拼接之後的結果起別名當做一張表使用 然後再去跟另外一張表拼接 select * from emp inner join (select emp.id as epd,emp.name,dep.id from emp inner join dep on emp.dep_id=dep.id) as t1 on emp.id=t1.epd; """

子查詢

 

 笛卡爾積

 

 

 連表查詢

 

 

7. 視覺化軟體之Navicat

Navicat可以充當很多資料庫軟體的客戶端 提供了圖形化介面能夠讓我們更加快速的操作資料庫
# 下載
    navicat有很多版本 並且預設都是收費使用
  正版可以免費體驗14天 
  針對這種圖形化軟體 版本越新越好(不同版本圖示顏色不一樣 但是主題功能是一樣的)
# 使用
    內部封裝了SQL語句 使用者只需要滑鼠點點點就可以快速操作
  連線資料庫  建立庫和表 錄入資料 操作資料
  外來鍵 SQL檔案 逆向資料庫到模型 查詢(自己寫SQL語句)
  # 使用navicat編寫SQL 如果自動補全語句 那麼關鍵字都會變大寫
  SQL語句註釋語法(快捷鍵與pycharm中的一致 ctrl+?)
      # 
    --
# 執行SQL檔案