MySQL數(shù)據(jù)庫
一、什么是MySQL?
數(shù)據(jù)的所有存儲、檢索、管理和處理都是由數(shù)據(jù)庫軟件-------DBMS完成的,MySQL是一種DBMS,即它是一種數(shù)據(jù)庫軟件。MySQL是小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),目前被應(yīng)用在Internet上的中小型網(wǎng)站中,體積小,速度快,成本低,開源。
數(shù)據(jù)庫相關(guān)名詞:DB、DBMS、DBS、DBA(數(shù)據(jù)庫管理員)
MySQL收到的唯一的批評就是它并不總是支持其他DBMS提供的功能和特性。
DBMS可分為兩類:
一類是基于共享文件系統(tǒng)的DBMS
另一類基于客戶機(jī)-服務(wù)器的DBMS
MySQL、Oracle以及Microsoft SQL Server等數(shù)據(jù)庫是基于客戶機(jī)-服務(wù)器的數(shù)據(jù)庫。服務(wù)器部分負(fù)責(zé)所有數(shù)據(jù)訪問和處理一個軟件,這個軟件運行在稱為數(shù)據(jù)庫服務(wù)的計算機(jī)上。
與數(shù)據(jù)文件打交道的只有服務(wù)器軟件。
關(guān)于數(shù)據(jù)、數(shù)據(jù)添加、刪除和數(shù)據(jù)更新的所有請求都由服務(wù)器軟件完成。這些請求或更改來自運行客戶機(jī)軟件的計算機(jī)。
客戶機(jī)是與用戶打交道 的軟件,客戶機(jī)可以是MySQL提供的工具、程序設(shè)計語言、腳本語言
二、常見的數(shù)據(jù)庫
1.關(guān)系型數(shù)據(jù)庫:建立在關(guān)系型模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等高等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù),現(xiàn)實世界中的各種聯(lián)系均用關(guān)系模型來表示
????????國外:Oracle、DB2、Microsoft SQL Server、MySQL、MicrosoftAccess
? ? ? ? 國產(chǎn):浪潮L-DB、武漢達(dá)夢、南大通用、人大金倉等
2.非關(guān)系型數(shù)據(jù)庫:被稱為NoSQL(Not Only SQL),意義不僅僅是sql,是一種輕量、開源、不兼容SQL功能的數(shù)據(jù)庫,對NoSQL最普遍的定義是“非關(guān)聯(lián)型的”,強調(diào)KEY-VALUE存儲和文檔數(shù)據(jù)庫的優(yōu)點,而不是單純的反對RDBMS(關(guān)系型數(shù)據(jù)庫管理系統(tǒng))。
主要學(xué)NoSQL:redis、mongodb
模型分類:
層次模型:
網(wǎng)狀模型:
關(guān)系模型:二維表,,,表示實體之間的關(guān)系
概念模型:
程序員對數(shù)據(jù)庫的要求:
基本的SQL操作,CRUD操作
多表連接查詢、分組查詢和子查詢
常用數(shù)據(jù)庫的單行函數(shù)
常用數(shù)據(jù)庫的基本命令
常用數(shù)據(jù)庫的開發(fā)工具
事務(wù)概念、索引、視圖、存儲過程和觸發(fā)器
MySQL體系結(jié)構(gòu):
MySQL是由SQL接口、解析器、優(yōu)化器、緩存、存儲結(jié)構(gòu)組成的
Connectors指的是不同語言中與SQL的交互
Managerment Serveices & Utilities:系統(tǒng)管理和控制工具
Connection Pool:連接池。管理緩沖用戶連接,線程處理等需要緩存的需求
SQL Interface:SQL接口,接受用戶的SQL命令,并且返回用戶需要查詢的結(jié)果。比如select from就是調(diào)用SQL Interface
Parser:解析器。SQL命令傳遞到解析器的時候會被解析器驗證和解析
Optimizer:查詢優(yōu)化器。SQL語句在查詢之前會使用查詢優(yōu)化器對查詢進(jìn)行優(yōu)化
Cache和Buffer:查詢緩存。如果查詢緩存有命中的查詢結(jié)果,查詢語句就可以直接去查詢緩存中取數(shù)據(jù)
Engine:存儲引擎。存儲引擎是MySQL中具體的與文件打交道的子系統(tǒng)
MySQL相關(guān)名詞概念:
數(shù)據(jù)庫:存儲和管理數(shù)據(jù)的集合
表:數(shù)據(jù)庫中的數(shù)據(jù)組織形式,包含多個字段和行
字段:表中的每一列,定義數(shù)據(jù)類型和約束條件
行:表中的每一行,包含各個字段對應(yīng)的數(shù)據(jù)
主鍵:一個唯一標(biāo)識符,用于標(biāo)識表中的每一行
索引:對表中的字段進(jìn)行優(yōu)化,加快數(shù)據(jù)檢索速度
視圖:虛擬表,存儲查詢的結(jié)果,可以被其他查詢使用
存儲過程:一段預(yù)編譯的代碼,可以被多次調(diào)用,用于復(fù)雜的數(shù)據(jù)操作
事務(wù):一組數(shù)據(jù)庫操作,要么全部執(zhí)行成功,要么全部撤回
用戶權(quán)限:控制用戶對數(shù)據(jù)庫的訪問權(quán)限和操作權(quán)限
三、一些SQL指令
如何選擇數(shù)據(jù)庫?
輸入:USE 數(shù)據(jù)庫名;
輸出:Database changed

USE語句并不返回任何結(jié)果,必須先用USE打開數(shù)據(jù)庫,才能讀取里面的數(shù)據(jù)
? ? ? ? 如果不知道可以使用的數(shù)據(jù)庫名怎么辦?數(shù)據(jù)庫、表、列、用戶、權(quán)限等信息存儲在數(shù)據(jù)庫和表中,可以使用MySQL的SHOW命令來顯示這些東西
1. SHOW DATABASES;返回可用數(shù)據(jù)庫的一個列
輸入:SHOW DATABASES;
輸出:

2.為了獲得數(shù)據(jù)庫中的表,使用SHOW TABLES;
SHOW TABLES;返回當(dāng)前選擇的數(shù)據(jù)庫內(nèi)可用表的列表。
輸入:SHOW TABLES;
輸出:

3. SHOW也可以用來顯示表列:
輸入:SHOW COLUMNS FROM customers;
?輸出:

分析:SHOW COLUMNS 要求給出一個表名,對每個字段返回一行
快捷方式:describe DESCRIBE customers; = SHOW COLUMNS FROM customers;
4.其他支持SHOW的語句:
SHOW STATUS:用于顯示廣泛的服務(wù)器狀態(tài)信息
SHOW CREATE DATABASE和SHOW CRREATE TABLE:分別用來顯示創(chuàng)建特定數(shù)據(jù)庫表或表的MySQL語句
SHOW GRANTS:用來顯示授予用戶(所有用戶或特定用戶)的安全權(quán)限