雖然筆者從事的是Android客戶端的開發(fā),平時和數(shù)據(jù)庫打的交道并不多,但是我們對于數(shù)據(jù)庫這一塊的學(xué)習(xí)還是很重要的,今天筆者想總結(jié)下MySQL關(guān)系型數(shù)據(jù)庫的一些常用知識點(diǎn) 數(shù)據(jù)庫概述一、常見的概念數(shù)據(jù)庫(DataBase):數(shù)據(jù)庫是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫。數(shù)據(jù)庫管理系統(tǒng)(Database Management SystemDBMS):是專門用于管理數(shù)據(jù)庫的計(jì)算機(jī)系統(tǒng)軟件。數(shù)據(jù)庫管理系統(tǒng)能夠?yàn)閿?shù)據(jù)庫提供數(shù)據(jù)的定義、建立、維護(hù)、查詢和統(tǒng)計(jì)等操作功能,并完成對數(shù)據(jù)完整性、安全性進(jìn)行控制的功能。 二、發(fā)展歷程我們一般說的數(shù)據(jù)庫,就是指的DBMS: 數(shù)據(jù)庫服務(wù)器。數(shù)據(jù)庫技術(shù)發(fā)展歷程如下:
隨著大數(shù)據(jù)的不斷發(fā)展,非關(guān)系型的數(shù)據(jù)庫現(xiàn)在成了一個極其熱門的新領(lǐng)域,非關(guān)系數(shù)據(jù)庫產(chǎn)品的發(fā)展非常迅速,產(chǎn)生了一系列出色的NoSQL數(shù)據(jù)庫。 常見的NoSQL數(shù)據(jù)庫分為四大類
常見的關(guān)系數(shù)據(jù)庫:
特點(diǎn)比較:
三、SQL:結(jié)構(gòu)化查詢語言(Structured Query Language)。結(jié)構(gòu)化查詢語言是關(guān)系型數(shù)據(jù)庫標(biāo)準(zhǔn)語言。特點(diǎn):簡單,靈活,功能強(qiáng)大。 SQL包含6個部分:
四、書寫規(guī)則1.數(shù)據(jù)庫中,SQL語句大小寫不敏感
2.SQL語句可單行或多行書寫
3.在SQL語句中,關(guān)鍵字不能跨多行或縮寫
4.為了提高可讀性,一般關(guān)鍵字大寫,其他小寫
5.空格和縮進(jìn)使程序易讀
五、表的理解什么是表?表是用來干嘛的?表又叫二維表(有行和列) ,用來存儲數(shù)據(jù), MySQL安裝和配置一、MySQL安裝過程中注意:
二、操作數(shù)據(jù)庫的流程
三、啟動和連接MySQL1.啟動MySQL服務(wù):打開數(shù)據(jù)庫連接之前:一定要保證MySQL服務(wù)已經(jīng)開啟了.在服務(wù)中找到MySQL的服務(wù),查看是否處于正在運(yùn)行的狀態(tài) 在Windows中使用命令控制服務(wù)的狀態(tài)(必須使用管理員身份開啟命令行) 2.連接MySQL數(shù)據(jù)庫:
四、MySQL圖形化管理軟件Navicat:
MySQL數(shù)據(jù)庫操作一、數(shù)據(jù)庫操作和存儲引擎1.數(shù)據(jù)庫和數(shù)據(jù)庫對象一般來說我們說的數(shù)據(jù)庫(MySQL/Oracle等)指的都是數(shù)據(jù)庫服務(wù)器(DBMS)
information_schema:存儲數(shù)據(jù)庫對象信息,如:用戶表信息,列信息,權(quán)限,字符,分區(qū)等信息 performance_schema:存儲數(shù)據(jù)庫服務(wù)器性能參數(shù)信息。 mysql:存儲數(shù)據(jù)庫用戶權(quán)限信息。 sys:系統(tǒng)配置信息。1234512345
2.數(shù)據(jù)庫操作命令(1)查看和選擇數(shù)據(jù)庫
(2)創(chuàng)建和刪除數(shù)據(jù)庫
3.數(shù)據(jù)庫存儲引擎二、MySQL常用列類型1.整數(shù)類型最常用的整數(shù)類型:
MySQL 以一個可選的顯示寬度指示器的形式對 SQL 標(biāo)準(zhǔn)進(jìn)行擴(kuò)展,這樣當(dāng)從數(shù)據(jù)庫檢索一個值時,可以把這個值加長到指定的長度。例如,指定一個字段的類型為 INT(6),就可以保證所包含數(shù)字少于 6 個的值從數(shù)據(jù)庫中檢索出來時能夠自動地用空格填充。需要注意的是,使用一個寬度指示器不會影響字段的大小和它可以存儲的值的范圍。一般不用指定位寬。 2.小數(shù)類型FLOAT[(s,p)] :
3.字符類型char(size) 定長字符,0 - 255字節(jié),size指N個字符數(shù),若插入字符數(shù)超過設(shè)定長度,會被截取并警告。 注意:在MySQL中,字符類型必須指定長度,值要使用單引號引起來。 相當(dāng)于Java中字符串(String,StringBuilder/StringBuffer); 對比char(4)和varchar(4)占用空間的問題? 4.日期和時間類型日期和時間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。 5.二進(jìn)制類型存放圖形、聲音和影像,二進(jìn)制對象,0-4GB。 三、MySQL表的操作1.創(chuàng)建表步驟: CREATE TABLE 表名(
列名1 列的類型 [約束],
列名2 列的類型 [約束],
....
列名N 列的類型 [約束] ); 注意:最后一行沒有逗號 使用使用標(biāo)識符時不要用SQL的關(guān)鍵字,如果用到的話怎么辦呢?比如新建一張訂單表(order),但是order是數(shù)據(jù)庫中的關(guān)鍵字(排序使用).
2.查看表結(jié)構(gòu)和刪除表
3.表的約束:表的約束(針對于某一列):
主鍵設(shè)計(jì): 1:單列主鍵,單列作為主鍵,建議使用。 復(fù)合主鍵,使用多列充當(dāng)主鍵,不建議。 2:主鍵分為兩種: 1)自然主鍵:使用有業(yè)務(wù)含義的列作為主鍵(不推薦使用); 2)代理主鍵:使用沒有業(yè)務(wù)含義的列作為主鍵(推薦使用);1234512345 單表查詢(DQL上)一、簡單查詢1.簡單數(shù)據(jù)查詢語法:
SELECT {*, column [alias],...}
FROM table_name;
說明:
SELECT 選擇查詢列表
FROM 提供數(shù)據(jù)源(表、視圖或其他的數(shù)據(jù)源)
如果為 * 和創(chuàng)建表時的順序一致。
可以自己調(diào)整順序,在select后邊加上要查詢的列名。 2.避免重復(fù)數(shù)據(jù)-DISTINCT消除結(jié)果中重復(fù)的數(shù)據(jù)。 需求:查詢商品的分類編號。 語法: SELECT DISTINCT 列名,...FROM table_name;1234512345 3.實(shí)現(xiàn)數(shù)學(xué)運(yùn)算查詢對NUMBER型數(shù)據(jù)可以使用算數(shù)操作符創(chuàng)建表達(dá)式( - * /)
對DATE型數(shù)據(jù)可以使用部分算數(shù)操作符創(chuàng)建表達(dá)式 ( -)
運(yùn)算符優(yōu)先級:1、乘法和除法的優(yōu)先級高于加法和減法2、同級運(yùn)算的順序是從左到右3、表達(dá)式中使用'括號'可強(qiáng)行改變優(yōu)先級的運(yùn)算順序 4.設(shè)置列的別名設(shè)置列名的別名。 1、改變列的標(biāo)題頭; 2、用于表示計(jì)算結(jié)果的含義; 3、作為列的別名; 4、如果別名中使用特殊字符,或者是強(qiáng)制大小寫敏感,或有空格時,都需加雙引號;1234512345 二、過濾查詢1.比較運(yùn)算符比較運(yùn)算符 含義
= 等于
> 大于
>= 大于或等于
< 小于
<= 小于或等于
!=(<>) 不等于
注意:字符串和日期要用單引號擴(kuò)起來.
要讓MySQL查詢區(qū)分大小寫,可以:SELECT * FROM table_name WHERE BINARY productName='g9x'SELECT * FROM table_name WHERE BINARY productName='G9X' 2.邏輯運(yùn)算符邏輯運(yùn)算符 含義AND(&&) 如果組合的條件都是TRUE,返回TRUEOR(||) 如果組合的條件之一是TRUE,返回TRUENOT(!) 如果下面的條件是FALSE,返回TRUE1234512345 3.優(yōu)先級規(guī)則運(yùn)算優(yōu)先級 運(yùn)算符1 所有比較運(yùn)算符2 NOT3 AND4 OR注意:括號將跨越所有優(yōu)先級規(guī)則
分析SQL:SELECT * FROM product WHERE (NOT productName LIKE '%M%' AND salePrice > 100) OR (dir_id = 2) 4.范圍查詢 -BTEWEEN AND使用BETWEEN運(yùn)算符顯示某一值域范圍的記錄,這個操作符最常見的使用在數(shù)字類型數(shù)據(jù)的范圍上,但對于字符類型數(shù)據(jù)和日期類型數(shù)據(jù)同樣可用。 格式:SELECT <columnList> FROM table_nameWHERE 列名 BETWEEN minvalue AND maxvalue:閉區(qū)間。12341234 5.集合查詢 -IN使用IN運(yùn)算符,判斷列的值是否在指定的集合中。
格式: WHERE 列名 IN (值1,值2....);
IS NULL:判斷列的值是否為空。 格式:WHERE 列名 IS NULL;1212 7.模糊查詢使用LIKE運(yùn)算符執(zhí)行通配查詢,查詢條件可包含文字字符或數(shù)字:%通配符:可表示零或多個字符。
_通配符:可表示一個字符。
通配符:用來實(shí)現(xiàn)匹配部分值得特殊字符。 三、結(jié)果排序排序通過ORDER BY 實(shí)現(xiàn) ASC升序 DESC降序 默認(rèn)是升序 1.排序語法和規(guī)則2.按單列排序3.按多列排序4.列的別名排序四、MySQL分頁查詢分頁設(shè)計(jì): 假分頁(內(nèi)存分頁):所有數(shù)據(jù)已經(jīng)存在內(nèi)容中,只是顯示部分而已, 優(yōu)點(diǎn):每次翻頁時都從內(nèi)存中取數(shù)據(jù),翻頁速度極快,簡單 缺點(diǎn):消耗內(nèi)存大,容易內(nèi)存溢出 真分頁(數(shù)據(jù)庫分頁):每次翻頁都去數(shù)據(jù)庫查詢數(shù)據(jù) 優(yōu)點(diǎn):不會造成內(nèi)存溢出 缺點(diǎn):翻頁比較慢,復(fù)雜 此時,我們講解MySQL特有的分頁方式(LIMIT,在Oracle12C中也提供類似的語法). 設(shè)置每頁最多3條記錄: 語法: LIMIT ?, ? 參數(shù)1: 參數(shù)2: 第一頁: 第二頁: 第三頁: 第四頁: 第N頁: 演示下公式的分頁查詢效果 LIMIT (currentPage-1) 五、聚合函數(shù)什么是聚合函數(shù)/統(tǒng)計(jì)函數(shù):
聚合函數(shù)作用于一組數(shù)據(jù),并對一組數(shù)據(jù)返回一條記錄。
COUNT:統(tǒng)計(jì)結(jié)果記錄數(shù)
MAX: 統(tǒng)計(jì)計(jì)算最大值MIN: 統(tǒng)計(jì)計(jì)算最小值SUM: 統(tǒng)計(jì)計(jì)算求和
AVG: 統(tǒng)計(jì)計(jì)算平均值 |
|