日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Python攻城师的成长————MySQL数据库关键字

發布時間:2024/1/8 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python攻城师的成长————MySQL数据库关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今日學習目標

  • 熟悉關鍵字用法,掌握多表查詢思路

文章目錄

  • 今日學習目標
  • 學習內容
  • 一、查詢關鍵字
    • 查詢關鍵字之having過濾
    • 查詢關鍵字之distinct去重
    • 查詢關鍵字之order by排序
    • 查詢關鍵字之limit分頁
    • 查詢關鍵字之regexp正則
  • 二、多表查詢思路
    • 多表查詢的思路
  • 三、可視化軟件navicat


學習內容

  • 查詢關鍵字
  • 多表查詢思路
  • 可視化軟件navicat

一、查詢關鍵字

關鍵字功能講解依靠例題講解,爭取做到通俗易懂。
例題數據

create table emp(id int primary key auto_increment,name varchar(20) not null,sex enum('male','female') not null default 'male', #大部分是男的age int(3) unsigned not null default 28,hire_date date not null,post varchar(50),post_comment varchar(100),salary double(15,2),office int, #一個部門一個屋子depart_id int );create table emp(id int primary key auto_increment,name varchar(20) not null,sex enum('male','female') not null default 'male', #大部分是男的age int(3) unsigned not null default 28,hire_date date not null,post varchar(50),post_comment varchar(100),salary double(15,2),office int, #一個部門一個屋子depart_id int );#插入記錄 #三個部門:教學,銷售,運營 insert into emp(name,sex,age,hire_date,post,salary,office,depart_id) values ('jason','male',18,'20170301','張江第一帥形象代言',7300.33,401,1), #以下是教學部 ('tom','male',78,'20150302','teacher',1000000.31,401,1), ('kevin','male',81,'20130305','teacher',8300,401,1), ('tony','male',73,'20140701','teacher',3500,401,1), ('owen','male',28,'20121101','teacher',2100,401,1), ('jack','female',18,'20110211','teacher',9000,401,1), ('jenny','male',18,'19000301','teacher',30000,401,1), ('sank','male',48,'20101111','teacher',10000,401,1), ('哈哈','female',48,'20150311','sale',3000.13,402,2),#以下是銷售部門 ('呵呵','female',38,'20101101','sale',2000.35,402,2), ('西西','female',18,'20110312','sale',1000.37,402,2), ('樂樂','female',18,'20160513','sale',3000.29,402,2), ('拉拉','female',28,'20170127','sale',4000.33,402,2), ('僧龍','male',28,'20160311','operation',10000.13,403,3), #以下是運營部門 ('程咬金','male',18,'19970312','operation',20000,403,3), ('程咬銀','female',18,'20130311','operation',19000,403,3), ('程咬銅','male',18,'20150411','operation',18000,403,3), ('程咬鐵','female',18,'20140512','operation',17000,403,3);

查詢關鍵字之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数据库关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。