數(shù)據(jù)產(chǎn)品經(jīng)理技能必備:MySQL入門

9 評論 23928 瀏覽 207 收藏 9 分鐘

作為一枚數(shù)據(jù)產(chǎn)品經(jīng)理,需要掌握基本的SQL查詢語句技能,之后才能進(jìn)一步了解與搭建數(shù)據(jù)倉庫、元數(shù)據(jù)、指標(biāo)字典體系。本文首先介紹MySQL基本知識。

一、了解數(shù)據(jù)庫

  1. 模式:關(guān)于數(shù)據(jù)庫和表的布局及特性的信息;
  2. 行是表中的記錄,列是字段;
  3. 主鍵列中的值不能修改,且不能重用;
  4. 數(shù)據(jù)庫中包含表及其它相關(guān)sql結(jié)構(gòu)。

二、檢索數(shù)據(jù)

2.1 select語句

檢索所有列:select * from products

2.2 排序檢索數(shù)據(jù)

order by:select prod_name from products order by prod_name。

注意:order by的子句必須是select語句的最后一個(gè)子句。

按多個(gè)列排序:select prod_id,prod_name,prod_price from products order by prod_price,prod_name。那么輸出結(jié)果先按prod_price排序,然后再將排序后的結(jié)果按prod_name排序。

按列位置排序:select prod_id,prod_name,prod_price from products order by 2,3。語句與上一句結(jié)果相同。

降序排序(系統(tǒng)默認(rèn)升序):order by prod_price DSC,prod_name。則結(jié)果先按prod_price降序排序,再按price_name升序排序。

三、過濾數(shù)據(jù)

(1)使用where子句(在from之后)

  • 范圍值檢查:between and:where prod_price between 5 and 10。
  • 空值檢查:where prod_price is NULL。語句返回沒有價(jià)格的所有產(chǎn)品(空字段,不是價(jià)格為0)

(2)使用組合where子句

  • AND操作符:where vend AND prod_price<=4 #檢索由供應(yīng)商DLL01制造且產(chǎn)品價(jià)格低于4美元的所有產(chǎn)品注意AND用在where子句中的關(guān)鍵字,用來指示檢索滿足所給定條件的行。
  • OR操作符:where OR OR用在where子句中的關(guān)鍵字,用來表示檢索匹配任一給定條件的行。
  • AND,OR相結(jié)合(AND優(yōu)先級比OR高):所以注意使用圓括號,where (vend or vend) and prod_price>=10。
  • IN操作符:where vend_id in(‘DLL01′,’BRS01’),其功能與where or相當(dāng)。
  • NOT:否定跟在它之后的任何條件(mysql不支持此操作符), where NOT vend #檢索除DLL01之外所有供應(yīng)商的產(chǎn)品(此句等價(jià)于where vend_id <> ‘DLL01’) #NOT一定要緊跟在where后。

(3)用通配符進(jìn)行過濾(通配符:用來匹配值的一部分的特殊字符,用于“字符串”),使用LIKE+通配符

  • 百分號(%):where prod_name like ‘Fish%’ #檢索任意以Fish起頭的詞(匹配單個(gè)或多個(gè)字符)。
  • 下劃線(_ ) : where prod_name like ‘Fish__’ #檢索出的字符必須為Fish+兩個(gè)字符 (與%能匹配0個(gè)字符不一樣,_必須匹配一個(gè)字符,不能多也不能少)。
  • 方括號([]):where contact like [JM]% #[JM]匹配任何以J,M開頭的人名,但它也只能匹配單個(gè)字符,為此在[]后加%,則可匹配多個(gè)字符。(若改為[^JM],則為檢索不以J,M起頭的任意聯(lián)系人名,等價(jià)于:where NOT contact like [JM]%)。

四、創(chuàng)建計(jì)算字段

(1)拼接字段(將值聯(lián)結(jié)到一起構(gòu)成單個(gè)值)

  • concat函數(shù)(mysql用):select concat(vend_id,’ (‘,vend_country,’)’) #select語句聯(lián)結(jié)以上4個(gè)元素。
  • ‘+’號(Access,SQL Server,Sybase使用):select vend_id + ‘ (‘ + vend_country + ‘)’。
  • ‘||’號(DB2,Oracle使用):select vend_id || ‘ (‘ || vend_country || ‘)’。
  • TRIM函數(shù):RTRIM()去掉值右邊所有空格,LTRIM()去掉值左邊所有空格,TRIM()去掉值兩邊所有空格。
  • AS關(guān)鍵字:給聯(lián)結(jié)字段取別名。
  • 完整聯(lián)結(jié)字段語句:?select RTRIM(vend_id) + ‘ (‘ + TRIRM(vend_country) + ‘)’ AS vendor_title FROM Vendors ORDER BY vend_name。

(2)執(zhí)行算數(shù)計(jì)算

五、使用視圖

視圖是虛擬的表,視圖本身不包含數(shù)據(jù),因此它們返回的數(shù)據(jù)是從其他表中檢索出來的,在更改這些表中的數(shù)據(jù)時(shí),視圖將返回改變過后的數(shù)據(jù)。

(1)視圖的規(guī)則和限制

  • 視圖可以嵌套;
  • 禁止在視圖查詢時(shí)使用ORDER BY語句。

(2)創(chuàng)建視圖(creat view)

  • 利用視圖簡化復(fù)雜的聯(lián)結(jié);
  • 用視圖重新格式化檢索出的數(shù)據(jù);
  • 用視圖過濾不想要的數(shù)據(jù)(where子句);
  • 使用視圖與計(jì)算字段。

六、使用存儲(chǔ)過程

為以后的使用而存儲(chǔ)一條或多條SQL語句的集合。

七、管理事務(wù)處理

(1)什么是事務(wù)處理

事務(wù)管理用來管理必須成批執(zhí)行的SQL操作,以保證數(shù)據(jù)庫不包含不完整的操作結(jié)果。利用事務(wù)處理,可以保證一組數(shù)據(jù)不會(huì)中途停止,它們或者作為整體執(zhí)行,或者完全不執(zhí)行(除非明確指示)。

如果沒有錯(cuò)誤發(fā)生,則整組語句寫到數(shù)據(jù)庫表,如果發(fā)生錯(cuò)誤,則進(jìn)行回退(撤銷)以恢復(fù)數(shù)據(jù)庫到某個(gè)已知且安全的狀態(tài)。

(2)幾個(gè)術(shù)語

  • 事務(wù)(transction):一組SQL語句;
  • 回退(rollback):指撤銷指定SQL語句的過程;
  • 提交(commit):指將未存儲(chǔ)的SQL語句結(jié)果寫入數(shù)據(jù)庫表;
  • 保留點(diǎn)(savepoint):指事務(wù)處理中設(shè)置的臨時(shí)占位符,你可以對它發(fā)布回退(與回退整個(gè)事務(wù)處理不同)。

(3)可以回退哪些語句

可管理INSERT,UPDATE,DELETE語句,不能回退SELECT語句也不能回退CREATE,DROP操作。事務(wù)處理中可以使用這些語句,但回退時(shí)它們不被撤銷。

(4)控制事務(wù)處理

創(chuàng)建占位符:

  1. mysql:savepoint delete1;
  2. sql server:save trasaction delete1; #delete1為此占位符的名字。

rollback:#撤銷整個(gè)事務(wù)處理

  1. rollback to delete1;
  2. rollback transaction delete1;#回退到保留點(diǎn)delete1;

八、使用游標(biāo)(cursor)

游標(biāo)不是一條select語句,而是被該語句檢索出來的結(jié)果集,在存儲(chǔ)了游標(biāo)之后,應(yīng)用程序可以根據(jù)需要滾動(dòng)或?yàn)g覽其中的數(shù)據(jù)。游標(biāo)主要用于交互式應(yīng)用,其中用戶需要滾動(dòng)屏幕上的數(shù)據(jù),并對數(shù)據(jù)進(jìn)行瀏覽或更改。

  • 聲明:declare
  • 打開:open cursor
  • 檢索:fetch… into…
  • 關(guān)閉:close

九、了解高級SQL特性

約束:管理如何插入或處理數(shù)據(jù)庫數(shù)據(jù)的規(guī)則

主鍵:一種特殊約束

外鍵:可幫助防止意外刪除,唯一約束:與主鍵類似但區(qū)別于主鍵

 

本文由 @兩人一杯奶茶 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 您好,想申請轉(zhuǎn)載您的這篇文章到公眾號

    來自黑龍江 回復(fù)
  2. 大家期待已久的《數(shù)據(jù)產(chǎn)品經(jīng)理實(shí)戰(zhàn)訓(xùn)練營》終于在起點(diǎn)學(xué)院(人人都是產(chǎn)品經(jīng)理旗下教育機(jī)構(gòu))上線啦!

    本課程非常適合新手?jǐn)?shù)據(jù)產(chǎn)品經(jīng)理,或者想要轉(zhuǎn)崗的產(chǎn)品經(jīng)理、數(shù)據(jù)分析師、研發(fā)、產(chǎn)品運(yùn)營等人群。

    課程會(huì)從基礎(chǔ)概念,到核心技能,再通過典型數(shù)據(jù)分析平臺(tái)的實(shí)戰(zhàn),幫助大家構(gòu)建完整的知識體系,掌握數(shù)據(jù)產(chǎn)品經(jīng)理的基本功。

    學(xué)完后你會(huì)掌握怎么建指標(biāo)體系、指標(biāo)字典,如何設(shè)計(jì)數(shù)據(jù)埋點(diǎn)、保證數(shù)據(jù)質(zhì)量,規(guī)劃大數(shù)據(jù)分析平臺(tái)等實(shí)際工作技能~

    現(xiàn)在就添加空空老師(微信id:anne012520),咨詢課程詳情并領(lǐng)取福利優(yōu)惠吧!

    來自廣東 回復(fù)
  3. 哈哈哈

    回復(fù)
  4. 怎么入門數(shù)據(jù)產(chǎn)品經(jīng)理

    來自上海 回復(fù)
  5. 受教 ??
    占位符的作用是什么呢

    來自北京 回復(fù)
  6. 新手學(xué)習(xí)中,還沒太弄懂,有一個(gè)疑問,什么時(shí)候用in和and or類似,那什么情況下用in,什么情況下用and or呢?
    不知道是不是可以這樣理解,where column_name in表明如果查詢的數(shù)據(jù)再同一列用in,而數(shù)據(jù)在多個(gè)列時(shí)用and or更方便,謝謝解答。

    來自湖北 回復(fù)
    1. 我的理解是where in簡化了對同一個(gè)字段的where or,比如,where id=1 or id=2,這時(shí)就可以寫where id in (1,2)

      來自浙江 回復(fù)
    2. 條件多的時(shí)候用IN,查詢效率快,IN語句會(huì)查詢每行同時(shí)滿足后面條件的數(shù)據(jù),OR逐個(gè)條件查。

      來自北京 回復(fù)
  7. 請問where NOT contact like [JM]%中是否應(yīng)該加單引號寫為 ‘[JM]%’

    來自湖北 回復(fù)