- 01-MySQL教程簡(jiǎn)介
- 02-為什么使用數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)常用概念
- 03-常見(jiàn)的DBMS的對(duì)比
- 04-RDBMS和非RDBMS的對(duì)比
- 05-ER模型與表記錄的4種關(guān)系
- 06-MySQL8.0的卸載
- 07-MySQL8.0與5.7版本的下載、安裝與配置
- 08-MySQL安裝常見(jiàn)問(wèn)題_服務(wù)啟動(dòng)與用戶登錄
- 09-MySQL的使用演示_MySQL5.7字符集的設(shè)置
- 10-Navicat_SQLyog_dbeaver等工具的使用
- 11-MySQL目錄結(jié)構(gòu)及前2章課后練習(xí)
- 12-SQL概述與SQL分類
- 13-SQL使用規(guī)范與數(shù)據(jù)的導(dǎo)入
- 14-最基本的SELECT...FROM結(jié)構(gòu)
- 15-列的別名_去重_NULL_DESC等操作
- 16-使用WHERE過(guò)濾數(shù)據(jù)
- 17-第3章基本SELECT查詢課后練習(xí)
- 18-算術(shù)運(yùn)算符的使用
- 19-比較運(yùn)算符的使用
- 20-邏輯運(yùn)算符與位運(yùn)算符的使用
- 21-第4章運(yùn)算符課后練習(xí)
- 22-ORDER BY實(shí)現(xiàn)排序操作
- 23-LIMIT實(shí)現(xiàn)分頁(yè)操作
- 24-第5章排序與分頁(yè)課后練習(xí)
- 25-為什么需要多表的查詢
- 26-笛卡爾積的錯(cuò)誤與正確的多表查詢
- 27-等值連接vs非等值連接、自連接vs非自連接
- 28-SQL92與99語(yǔ)法如何實(shí)現(xiàn)內(nèi)連接和外連接
- 29-使用SQL99實(shí)現(xiàn)7種JOIN操作
- 30-NATURAL JOIN與USING的使用
- 31-第6章多表查詢課后練習(xí)
- 32-函數(shù)的分類
- 33-數(shù)值類型的函數(shù)講解
- 34-字符串類型的函數(shù)講解
- 35-日期時(shí)間類型的函數(shù)講解
- 36-流程控制函數(shù)講解
- 37-加密解密_MySQL信息函數(shù)等講解
- 38-第7章單行函數(shù)課后練習(xí)
- 39-5大常用的聚合函數(shù)
- 40-GROUP BY的使用
- 41-HAVING的使用與SQL語(yǔ)句執(zhí)行過(guò)程
- 42-第8章聚合函數(shù)課后練習(xí)
- 43-子查詢舉例與子查詢的分類
- 44-單行子查詢案例分析
- 45-多行子查詢案例分析
- 46-相關(guān)子查詢案例分析
- 47-第9章子查詢課后練習(xí)1
- 48-第9章子查詢課后練習(xí)2
- 49-數(shù)據(jù)庫(kù)的創(chuàng)建、修改與刪除
- 50-常見(jiàn)的數(shù)據(jù)類型_創(chuàng)建表的兩種方式
- 51-修改表_重命名表_刪除表_清空表
- 52-DCL中COMMIT與ROLLBACK的使用
- 53-阿里MySQL命名規(guī)范及MySQL8DDL的原子化
- 54-第10章創(chuàng)建管理表課后練習(xí)
- 55-DML之添加數(shù)據(jù)
- 56-DML之更新刪除操作_MySQL8新特性之計(jì)算列
- 57-DDL和DML的綜合案例
- 58-第11章增刪改課后練習(xí)
- 59-MySQL數(shù)據(jù)類型概述_字符集設(shè)置
- 60-整型數(shù)據(jù)類型講解
- 61-浮點(diǎn)數(shù)、定點(diǎn)數(shù)與位類型講解
- 62-日期時(shí)間類型講解
- 63-文本字符串類型(含ENUM、SET)講解
- 64-二進(jìn)制類型與JSON類型講解
- 65-小結(jié)及類型使用建議
- 66-數(shù)據(jù)完整性與約束的分類
- 67-非空約束的使用
- 68-唯一性約束的使用
- 69-主鍵約束的使用
- 70-AUTO_INCREMENT
- 71-外鍵約束的使用
- 72-檢查約束與默認(rèn)值約束
- 73-第13章約束課后練習(xí)
- 74-數(shù)據(jù)庫(kù)對(duì)象與視圖的理解
- 75-視圖的創(chuàng)建與查看
- 76-更新視圖數(shù)據(jù)與視圖的刪除
- 77-第14章視圖課后練習(xí)
- 78-存儲(chǔ)過(guò)程使用說(shuō)明
- 79-存儲(chǔ)過(guò)程的創(chuàng)建與調(diào)用
- 80-存儲(chǔ)函數(shù)的創(chuàng)建與調(diào)用
- 81-存儲(chǔ)過(guò)程與函數(shù)的查看修改和刪除
- 82-第15章存儲(chǔ)過(guò)程函數(shù)課后練習(xí)
- 83-GLOBAL與SESSION系統(tǒng)變量的使用
- 84-會(huì)話用戶變量與局部變量的使用
- 85-程序出錯(cuò)的處理機(jī)制
- 86-分支結(jié)構(gòu)IF的使用
- 87-分支結(jié)構(gòu)CASE的使用
- 88-LOOP_WHILE_REPEAT三種循環(huán)結(jié)構(gòu)
- 89-LEAVE和ITERATE的使用
- 90-游標(biāo)的使用
- 91-第16章課后練習(xí)
- 92-創(chuàng)建觸發(fā)器
- 93-查看刪除觸發(fā)器_觸發(fā)器課后練習(xí)
- 94-MySQL8.0新特性_窗口函數(shù)的使用
- 95-公用表表達(dá)式_課后練習(xí)_最后寄語(yǔ)
- 96-MySQL高級(jí)特性篇章節(jié)概覽
- 97-CentOS環(huán)境的準(zhǔn)備
- 98-MySQL的卸載
- 99-Linux下安裝MySQL8.0與5.7版本
- 100-SQLyog實(shí)現(xiàn)MySQL8.0和5.7的遠(yuǎn)程連接
- 101-字符集的修改與底層原理說(shuō)明
- 102-比較規(guī)則_請(qǐng)求到響應(yīng)過(guò)程中的編碼與解碼過(guò)程
- 103-SQL大小寫規(guī)范與sql_mode的設(shè)置
- 104-MySQL目錄結(jié)構(gòu)與表在文件系統(tǒng)中的表示
- 105-用戶的創(chuàng)建_修改_刪除
- 106-用戶密碼的設(shè)置和管理
- 107-權(quán)限管理與訪問(wèn)控制
- 108-角色的使用
- 109-配置文件、系統(tǒng)變量與MySQL邏輯架構(gòu)
- 110-SQL執(zhí)行流程
- 111-MySQL8.0和5.7中SQL執(zhí)行流程的演示
- 112-Oracle中SQL執(zhí)行流程_緩沖池的使用
- 113-設(shè)置表的存儲(chǔ)引擎、InnoDB與MyISAM的對(duì)比
- 114-Archive、CSV、Memory等存儲(chǔ)引擎的使用
- 115-為什么使用索引及索引的優(yōu)缺點(diǎn)
- 116-一個(gè)簡(jiǎn)單的索引設(shè)計(jì)方案
- 117-索引的迭代設(shè)計(jì)方案
- 118-聚簇索引、二級(jí)索引與聯(lián)合索引的概念
- 119-InnoDB中B+樹注意事項(xiàng)_MyISAM的索引方案
- 120-Hash索引、AVL樹、B樹與B+樹對(duì)比
- 121-InnoDB數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)概述
- 122-頁(yè)結(jié)構(gòu)之文件頭部與文件尾部
- 123-頁(yè)結(jié)構(gòu)之最小最大記錄_行格式之記錄頭信息
- 124-頁(yè)結(jié)構(gòu)之頁(yè)目錄與頁(yè)頭
- 125-設(shè)置行格式與ibd文件剖析Compact行格式
- 126-行溢出與Dynamic、Compressed、Redundant行格式
- 127-區(qū)、段、碎片區(qū)與表空間結(jié)構(gòu)
- 128-索引的分類
- 129-表中添加索引的三種方式
- 130-刪除索引與索引新特性:降序索引、隱藏索引
- 131-適合創(chuàng)建索引的11種情況1
- 132-適合創(chuàng)建索引的11種情況2
- 133-不適合創(chuàng)建索引的7種情況
- 134-數(shù)據(jù)庫(kù)優(yōu)化步驟_查看系統(tǒng)性能參數(shù)
- 135-慢查詢?nèi)罩痉治觥HOW PROFILE查看SQL執(zhí)行成本
- 136-EXPLAIN的概述與table、id字段剖析
- 137-EXPLAIN中select_type、partitions、type、possible_keys、key、key_len剖析
- 138-EXPLAIN中ref、rows、filtered、extra剖析
- 139-EXPLAIN的4種格式與查看優(yōu)化器重寫SQL
- 140-trace分析優(yōu)化器執(zhí)行計(jì)劃與Sys schema視圖的使用
- 141-數(shù)據(jù)準(zhǔn)備與索引失效的11種情況1
- 142-索引失效的11種情況2
- 143-外連接與內(nèi)連接的查詢優(yōu)化
- 144-JOIN語(yǔ)句的底層原理
- 145-子查詢優(yōu)化與排序優(yōu)化
- 146-GROUP BY優(yōu)化、分頁(yè)查詢優(yōu)化
- 147-覆蓋索引的使用
- 148-索引條件下推(ICP)
- 149-其他查詢優(yōu)化策略
- 150-淘寶數(shù)據(jù)庫(kù)的主鍵如何設(shè)計(jì)
- 151-范式概述與第一范式
- 152-第二范式與第三范式
- 153-反范式化的應(yīng)用
- 154-巴斯范式、第四范式、第五范式和域鍵范式
- 155-范式的實(shí)戰(zhàn)案例
- 156-ER建模與轉(zhuǎn)換數(shù)據(jù)表的過(guò)程
- 157-數(shù)據(jù)庫(kù)的設(shè)計(jì)原則和日常SQL編寫規(guī)范
- 158-PowerDesigner創(chuàng)建概念、物理數(shù)據(jù)模型
- 159-數(shù)據(jù)庫(kù)調(diào)優(yōu)整體步驟、優(yōu)化MySQL服務(wù)器硬件和參數(shù)
- 160-數(shù)據(jù)庫(kù)結(jié)構(gòu)優(yōu)化、大表優(yōu)化、其它3個(gè)策略
- 161-事務(wù)的ACID特性與事務(wù)的狀態(tài)
- 162-顯式事務(wù)與隱式事務(wù)
- 163-事務(wù)的使用舉例
- 164-數(shù)據(jù)并發(fā)問(wèn)題與4種隔離級(jí)別
- 165-MySQL隔離級(jí)別的查看和設(shè)置
- 166-讀未提交隔離性下的演示
- 167-讀已提交和可重復(fù)讀的隔離性下的演示
- 168-幻讀的演示與解決方案
- 169-Redo日志和Undo日志的理解、為什么需要Redo日志
- 170-Redo日志的刷盤策略與過(guò)程剖析
- 171-寫入Redo Log Buffer和Redo Log File的寫入策略
- 172-Undo日志的概述與寫入過(guò)程
- 173-鎖的概述_讀寫的并發(fā)問(wèn)題
- 174-數(shù)據(jù)操作類型的角度理解S鎖與X鎖
- 175-表鎖之S鎖、X鎖、意向鎖
- 176-表鎖之自增鎖、元數(shù)據(jù)鎖
- 177-行鎖之記錄鎖、間隙鎖
- 178-行鎖之臨鍵鎖與插入意向鎖
- 179-頁(yè)鎖的理解、樂(lè)觀鎖與悲觀鎖的使用
- 180-加鎖方式劃分:隱式鎖與顯式鎖
- 181-全局鎖與死鎖的理解
- 182-鎖的內(nèi)存結(jié)構(gòu)與監(jiān)控策略
- 183-MVCC解決讀寫問(wèn)題
- 184-MVCC三劍客:隱藏字段、UndoLog版本鏈、ReadView規(guī)則
- 185-MVCC在讀已提交和可重復(fù)讀隔離級(jí)別下的操作流程
- 186-MVCC在可重復(fù)讀下解決幻讀的流程
- 187-六大日志文件的概述
- 188-通用查詢?nèi)罩尽㈠e(cuò)誤日志
- 189-binlog日志的參數(shù)設(shè)置與實(shí)現(xiàn)數(shù)據(jù)恢復(fù)演示
- 190-binlog的刪除、binlog的寫入機(jī)制與兩階段提交
- 191-中繼日志、主從復(fù)制的步驟與原理剖析
- 192-一主一從架構(gòu)搭建與主從同步的實(shí)現(xiàn)
- 193-binlog的format設(shè)置說(shuō)明
- 194-數(shù)據(jù)同步一致性問(wèn)題解決
- 195-數(shù)據(jù)備份概述與mysqldump實(shí)現(xiàn)邏輯備份數(shù)據(jù)
- 196-演示mysql實(shí)現(xiàn)邏輯恢復(fù)數(shù)據(jù)
- 197-物理備份和物理恢復(fù)的演示、表數(shù)據(jù)的導(dǎo)出與導(dǎo)入
- 198-數(shù)據(jù)庫(kù)遷移與如何刪庫(kù)不跑路
- 199-最后寄語(yǔ)
一、數(shù)據(jù)庫(kù)基礎(chǔ)(Database)
1.1 認(rèn)識(shí)數(shù)據(jù)庫(kù)
1.1.1 基本概念
DB:能將大量數(shù)據(jù)保存起來(lái),通過(guò)計(jì)算機(jī)加工而成的可以進(jìn)行高效訪問(wèn)的數(shù)據(jù)集合稱為數(shù)據(jù)庫(kù)(database,db)
DBMS:用來(lái)管理數(shù)據(jù)庫(kù)的計(jì)算機(jī)系統(tǒng)稱為數(shù)據(jù)庫(kù)管理系統(tǒng)(database management system,dbms)。
RDBMS:關(guān)系型數(shù)據(jù)庫(kù)通過(guò)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(relational database management system,rdbms)進(jìn)行管理。
我們常常會(huì)用“數(shù)據(jù)庫(kù)”簡(jiǎn)單代稱上面的三個(gè)概念,但是要注意使用場(chǎng)景。
1.1.2 數(shù)據(jù)庫(kù)作用
B站等網(wǎng)站、微信等APP背后都是一個(gè)巨大的數(shù)據(jù)庫(kù)系統(tǒng),我們點(diǎn)擊或者輸入文字都會(huì)存儲(chǔ)在數(shù)據(jù)庫(kù)中或者從數(shù)據(jù)庫(kù)中取出對(duì)應(yīng)數(shù)據(jù)。
數(shù)據(jù)庫(kù)管理系統(tǒng)的構(gòu)成:
a.能讓我們使用表、列和索引實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫(kù)(如何存入數(shù)據(jù))
b.解析和執(zhí)行一個(gè)SQL查詢,并將結(jié)果返回給客戶端(如何讀出數(shù)據(jù))
c.提供管理接口(如何管理數(shù)據(jù)I/O過(guò)程)
數(shù)據(jù)庫(kù)的構(gòu)成:
a.(子)數(shù)據(jù)庫(kù):是表的集合,帶有相關(guān)的元數(shù)據(jù)。
b.表:)一個(gè)表是由列和行組成的數(shù)據(jù)矩陣。數(shù)據(jù)庫(kù)基礎(chǔ)對(duì)象。
c.列(字段):一個(gè)列(數(shù)據(jù)元素)包含同一類型的數(shù)據(jù)。
d.行(記錄):是一組相關(guān)的數(shù)據(jù)。
e.約束:用于確保數(shù)據(jù)庫(kù)滿足業(yè)務(wù)規(guī)則。
1.1.3 數(shù)據(jù)庫(kù)分類
a.關(guān)系型數(shù)據(jù)庫(kù):
MySQL,oracle,SQLserver,db2,access等,傳統(tǒng)數(shù)據(jù)庫(kù)一般都是使用這類關(guān)系型數(shù)據(jù)庫(kù)。所有的數(shù)據(jù)存儲(chǔ)在不同表中,使用主鍵或外鍵建立表間的關(guān)系。
b.非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL):
文檔型數(shù)據(jù)庫(kù)(mongodb),鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)(redis),列存儲(chǔ)數(shù)據(jù)庫(kù)(Cassandra),圖形(Graph)數(shù)據(jù)庫(kù)等,為解決大規(guī)模數(shù)據(jù)集合、多重?cái)?shù)據(jù)種類、高并發(fā)的新需求。
1.1.4 數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)
a.數(shù)據(jù)庫(kù)文件
按照一定規(guī)則,存放在硬盤上的數(shù)據(jù)文件集合。所以,MySQL 里的數(shù)據(jù)庫(kù)都能在計(jì)算機(jī)硬盤內(nèi)某個(gè)文件夾里找到對(duì)應(yīng)的數(shù)據(jù)文件。
b.數(shù)據(jù)庫(kù)管理系統(tǒng)
用來(lái)管理數(shù)據(jù)庫(kù)文件一套程序(比如關(guān)系型/非關(guān)系型數(shù)據(jù)庫(kù))。
c.數(shù)據(jù)庫(kù)實(shí)例
指計(jì)算機(jī)內(nèi)存中處于運(yùn)行狀態(tài)的數(shù)據(jù)庫(kù)程序,以及為這些程序分配的一些內(nèi)存空間。
實(shí)例是位于內(nèi)存中,只在數(shù)據(jù)庫(kù)處運(yùn)行狀態(tài)時(shí)才存在。簡(jiǎn)單點(diǎn)來(lái)講,數(shù)據(jù)庫(kù)實(shí)例就是把數(shù)據(jù)庫(kù)加載到內(nèi)存里面。
d.數(shù)據(jù)庫(kù)應(yīng)用
建立在數(shù)據(jù)庫(kù)上,對(duì)其功能進(jìn)行擴(kuò)充的程序。比如支付寶和微信都屬于數(shù)據(jù)庫(kù)應(yīng)用程序,它們的后臺(tái)都需要數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù)。
1.2 MySQL
1.2.1 MySQL官方下載地址
MySQL :: Download MySQL Community Server
1.2.2 MySQL的種類
MySQL community server 社區(qū)版本,開(kāi)源免費(fèi),但不提供官方技術(shù)支持,通常情況下都是選擇社區(qū)版。
MySQL enterprise edition 企業(yè)版本,需付費(fèi),可以試用30天。
MySQL cluster集群版,開(kāi)源免費(fèi)。可將幾個(gè)MySQLserver封裝成一個(gè)server。
MySQL clustercge高級(jí)集群版,需付費(fèi)。
對(duì)MySQL的二次開(kāi)發(fā):percona(淘寶在用,用作定制化開(kāi)發(fā));mariadb(銀行經(jīng)常它用來(lái)取代MySQL)
1.2.3 MySQL版本
MySQL 的命名是根據(jù)發(fā)行版本不同由三個(gè)數(shù)字和一個(gè)后綴組成,如:MySQL-5.7.2。發(fā)行版名稱中的數(shù)字使用如下規(guī)則解析:
5表示主版本(major version),同時(shí)也定義了文件格式(file format)。所有主版本相同的版本有著同樣的文件格式,不用主版本的差別會(huì)很大;
7表示發(fā)行版本(release level),主版本和發(fā)行版本一同構(gòu)成該發(fā)行版序列號(hào)(series number);
5表示該發(fā)行版系列的小版本(version),該數(shù)字隨著發(fā)行版本的每次新發(fā)布遞增,通常我們會(huì)選擇最新的次版本。
1.3如何訪問(wèn)數(shù)據(jù)庫(kù)
要訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器,必須通過(guò)客戶端.客戶端可以分為兩大類:命令行(自帶),可視化工具。
1.3.1 通過(guò)命令行客戶端訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器
第一步:配置環(huán)境變量path
第二步:打開(kāi)命令窗口
在“開(kāi)始”輸入“cmd”+回車,也可以按鍵盤上的“微軟logo”+“R”
第三步:?jiǎn)?dòng)MySQL客戶端程序
如果數(shù)據(jù)庫(kù)在當(dāng)前電腦上,可以直接輸入指定賬戶和密碼,連接服務(wù)。如下圖輸入:
mysql -u -root -p
如果數(shù)據(jù)庫(kù)在服務(wù)器上,不在你電腦上。比如你們公司數(shù)據(jù)庫(kù)的ip 地址是:192.168.1.122。上面輸入命令行的時(shí)候需要改成輸入:
mysql -h 192.168.1.122-u -root -p
第四步:退出命令行模式
執(zhí)行退出語(yǔ)句“exit”
1.3.2 內(nèi)置的命令行模式訪問(wèn)
也可以不在cmd進(jìn)入命令行模式,通過(guò)MySQL內(nèi)置的命令行模式:
1.3.3 圖形化界面工具訪問(wèn)
常用的MySQL可視化工具:
MySQL workbench:官方自帶免費(fèi)工具
navicat:收費(fèi)版本,界面和功能更加強(qiáng)大,還可以支持SQLserver
MySQL workbench的使用
添加連接數(shù)據(jù)庫(kù)名字和IP地址,默認(rèn)的地址是本機(jī)數(shù)據(jù)庫(kù)地址。
1.4MySQL服務(wù)啟動(dòng)與關(guān)閉命令
從命令行或者圖形化界面客戶端連接數(shù)據(jù)庫(kù)服務(wù)器時(shí),一般都會(huì)自動(dòng)啟動(dòng)MySQL服務(wù)實(shí)例,但是有時(shí)候會(huì)出現(xiàn)意外,服務(wù)沒(méi)有啟動(dòng),這時(shí)候需要手動(dòng)啟動(dòng)。
方法一:命令行模式
在開(kāi)始菜單中輸入cmd,然后右擊“命令提示符”,用管理員權(quán)限打開(kāi),否則有可能無(wú)法訪問(wèn)。
使用啟動(dòng)或者關(guān)閉MySQL默認(rèn)服務(wù)實(shí)例:
使用net start/stop mysql57啟動(dòng)或者關(guān)閉MySQL默認(rèn)服務(wù)實(shí)例:
方法二:窗口模式
進(jìn)入控制面板-管理工具-服務(wù)-MySQL57,右鍵啟動(dòng)或關(guān)閉MySQL默認(rèn)服務(wù)實(shí)例。
右擊 MySQL57這一行,可以啟動(dòng)和關(guān)閉 MySQL57。
二、MySQL簡(jiǎn)介
2.1 SQL和MySQL
SQL:結(jié)構(gòu)化查詢語(yǔ)言(structured query language),是一種數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),是一種開(kāi)源的數(shù)據(jù)庫(kù)軟件,簡(jiǎn)單一點(diǎn)的理解就是 MySQL 用來(lái)存儲(chǔ)數(shù)據(jù),而 SQL 是用來(lái)管理 MySQL 的一種語(yǔ)言。
SQL是一種語(yǔ)言,MySQL 是一種數(shù)據(jù)庫(kù)軟件。
SQL的標(biāo)準(zhǔn)并不強(qiáng)制每種RDMS都必須使用。
2.2 SQL的基本書寫規(guī)則
SQL 語(yǔ)句以分號(hào)“;”結(jié)尾。
SQL語(yǔ)句不區(qū)分大小寫,但是插入到表中的數(shù)據(jù)是區(qū)分大小寫的。
字符串和日期常數(shù)需要使用單引號(hào)“ ' ”括起來(lái),數(shù)字直接寫即可。
單行注釋可以用“-- ”
多行注釋可以用快捷鍵:ctrl+/(小鍵盤的”/”)
2.3 數(shù)據(jù)庫(kù)基本操作
SQL用關(guān)鍵字、表名、列名等組合而成的一條語(yǔ)句(SQL語(yǔ)句)來(lái)描述操作的內(nèi)容。關(guān)鍵字是指那些含義或使用方法已事先定義好的英語(yǔ)單詞。
2.4 SQL語(yǔ)句分類
根據(jù)對(duì)RDBMS 賦予的指令種類的不同,SQL語(yǔ)句可以分為以下三類。
DDL
DDL(data definition language,數(shù)據(jù)定義語(yǔ)言)用來(lái)創(chuàng)建或者刪除存儲(chǔ)數(shù)據(jù)用的數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)中的表等對(duì)象。DDL包含以下幾種指令。
create:創(chuàng)建數(shù)據(jù)庫(kù)和表等對(duì)象
alter:修改數(shù)據(jù)庫(kù)和表等對(duì)象的結(jié)構(gòu)
drop:刪除數(shù)據(jù)庫(kù)和表等對(duì)象
DML
DML(data manipulation language,數(shù)據(jù)操縱語(yǔ)言)用來(lái)查詢或者變更表中的記錄。DML 包含以下幾種指令。
insert:向表中插入新數(shù)據(jù)
update:更新表中的數(shù)據(jù)
delete:刪除表中的數(shù)據(jù)
DCL
DCL(data control language,數(shù)據(jù)控制語(yǔ)言)用來(lái)確認(rèn)或者取消對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行的變更。除此之外,還可以對(duì) RDBMS的用戶是否有權(quán)限操作數(shù)據(jù)庫(kù)中的對(duì)象(數(shù)據(jù)庫(kù)表等)進(jìn)行設(shè)定。DCL 包含以下幾種指令。
commit:確認(rèn)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行的變更
rollback:取消對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行的變更
grant:賦予用戶操作權(quán)限
revoke:取消用戶的操作權(quán)限
DQL
DQL(data query language)數(shù)據(jù)查詢語(yǔ)言(select),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的讀操作。是數(shù)據(jù)分析重點(diǎn)學(xué)習(xí)的重點(diǎn)。
TCL
TCL(transaction control language) 事務(wù)控制語(yǔ)言(save commit roll back)用于事務(wù)的操作。
2.5 創(chuàng)建數(shù)據(jù)庫(kù)
方法一:使用SQL代碼
create database school;
use school;
方法二:在數(shù)據(jù)庫(kù)區(qū)域點(diǎn)擊建庫(kù)
2.6 顯示和使用數(shù)據(jù)庫(kù)
Show databases;
use school;
MySQL自身會(huì)有一些系統(tǒng)庫(kù),一般不要?jiǎng)h除或變動(dòng)。
sys庫(kù):MySQL5.7增加了sys系統(tǒng)數(shù)據(jù)庫(kù),通過(guò)這個(gè)庫(kù)可以快速的了解系統(tǒng)的元數(shù)據(jù)信息。
information_schema庫(kù):提供了訪問(wèn)數(shù)據(jù)庫(kù)元數(shù)據(jù)的方式。
mysql庫(kù):主要負(fù)責(zé)存儲(chǔ)數(shù)據(jù)庫(kù)的用戶、權(quán)限設(shè)置、關(guān)鍵字等MySQL自己需要使用的控制和管理信息。
performance_schema庫(kù):主要用于收集數(shù)據(jù)庫(kù)服務(wù)器性能參數(shù)。
2.7 刪除數(shù)據(jù)庫(kù)
方法一:SQL代碼
drop database school;
方法二:在workbench上刪除
2.8 創(chuàng)建表
方法一:SQL代碼
在建一個(gè)新表之前就指定數(shù)據(jù)庫(kù),這里指定數(shù)據(jù)庫(kù)school。
use school;
creat table+表名;
方法二:在workbench上建表
2.9 數(shù)據(jù)庫(kù)引擎
2.9.1 什么是數(shù)據(jù)庫(kù)引擎
相當(dāng)于數(shù)據(jù)庫(kù)實(shí)例的發(fā)動(dòng)機(jī)。數(shù)據(jù)庫(kù)引擎是用于存儲(chǔ)、處理和保護(hù)數(shù)據(jù)的核心服務(wù)。利用數(shù)據(jù)庫(kù)引擎可控制訪問(wèn)權(quán)限并快速處理事務(wù),從而滿足企業(yè)內(nèi)大多數(shù)需要處理大量數(shù)據(jù)的應(yīng)用程序的要求。使用數(shù)據(jù)庫(kù)引擎創(chuàng)建用于聯(lián)機(jī)事務(wù)處理或聯(lián)機(jī)分析處理數(shù)據(jù)的關(guān)系數(shù)據(jù)庫(kù)。這包括創(chuàng)建用于存儲(chǔ)數(shù)據(jù)的表和用于查看、管理和保護(hù)數(shù)據(jù)安全的數(shù)據(jù)庫(kù)對(duì)象(如索引、視圖和存儲(chǔ)過(guò)程)。
不同的數(shù)據(jù)庫(kù)引擎有不同的特點(diǎn),可以滿足各種不同的業(yè)務(wù)場(chǎng)景。MySQL。
2.9.2 常見(jiàn)的數(shù)據(jù)庫(kù)引擎
包括innodb、myisam、memery、csv、blackhole、archive、federated、performance_schema。其中innodb和myisam占到95%以上。
innodb是一個(gè)強(qiáng)大的事務(wù)型存儲(chǔ)引擎,這種存儲(chǔ)引擎已經(jīng)被很多互聯(lián)網(wǎng)公司使用,為用戶操作非常大的數(shù)據(jù)存儲(chǔ)提供了一個(gè)強(qiáng)大的解決方案。
innodb還引入了行級(jí)鎖定和外鍵約束,在以下場(chǎng)合下,使用innodb 是最理想的選擇:
更新密集的表:innodb 存儲(chǔ)引擎特別適合處理多重并發(fā)的更新請(qǐng)求。
事務(wù):innodb 存儲(chǔ)引擎是支持事務(wù)的標(biāo)準(zhǔn) MySQL 存儲(chǔ)引擎。
外鍵約束:MySQL支持外鍵的存儲(chǔ)引擎只有innodb
