MySQL學(xué)習(xí)第一天 第一次接觸MySQL
一、什么是數(shù)據(jù)庫(kù)?
數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)或多個(gè)不同的API用于創(chuàng)建,訪問,管理,搜索和復(fù)制所保存的數(shù)據(jù)。
我們也可以將數(shù)據(jù)存儲(chǔ)在文件中,但是在文件中讀寫數(shù)據(jù)速度相對(duì)較慢。所以,現(xiàn)在我們使用關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)來存儲(chǔ)和管理的大數(shù)據(jù)量。所謂的關(guān)系型數(shù)據(jù)庫(kù),是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
RDBMS即關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System)的特點(diǎn):
1)數(shù)據(jù)以表格的形式出現(xiàn)
2)每行為各種記錄名稱
3)每列為記錄名稱所對(duì)應(yīng)的數(shù)據(jù)域
4)許多的行和列組成一張表單
5)若干的表單組成database
二、關(guān)系型數(shù)據(jù)庫(kù)(RDBMS)術(shù)語(yǔ)
針對(duì)關(guān)系型數(shù)據(jù)庫(kù)作如下解釋:
1)關(guān)系型數(shù)據(jù)庫(kù)可以簡(jiǎn)單的理解為二維數(shù)據(jù)庫(kù),表格式類似于excel表格,我們平時(shí)我接觸的數(shù)據(jù)據(jù),一般都是關(guān)系型數(shù)據(jù)庫(kù)。
2)關(guān)系型數(shù)據(jù)庫(kù)不是唯一的高級(jí)數(shù)據(jù)庫(kù)模型,也不是最優(yōu)的一種,但是,關(guān)系型數(shù)據(jù)庫(kù)是現(xiàn)今使用最廣泛、最易于理解和使用的數(shù)據(jù)庫(kù)模型。
3)在我們開始學(xué)習(xí)MySQL數(shù)據(jù)庫(kù)前,讓我們先了解下RDBMS的一些術(shù)語(yǔ):
1數(shù)據(jù)庫(kù): 數(shù)據(jù)庫(kù)是一些關(guān)聯(lián)表的集合。
2數(shù)據(jù)表: 表是數(shù)據(jù)的矩陣。在一個(gè)數(shù)據(jù)庫(kù)中的表看起來像一個(gè)簡(jiǎn)單的電子表格。
3關(guān)系:可以理解成一張二維表,每個(gè)關(guān)系都有一個(gè)關(guān)系名,即表名。
4關(guān)系模式:對(duì)關(guān)系的描述,在數(shù)據(jù)庫(kù)中通常稱之為表結(jié)構(gòu)。
5元組:可以理解成二維表中的一行,在數(shù)據(jù)庫(kù)中常被稱作記錄。一行(=元組,或記錄)是一組相關(guān)的數(shù)據(jù),例如一條用戶訂閱的數(shù)據(jù)。
6屬性:可以理解成二維表中的一列,在數(shù)據(jù)庫(kù)中常被成為字段。一列(數(shù)據(jù)元素) 包含了相同的數(shù)據(jù), 例如郵政編碼的數(shù)據(jù)。
7域:屬性的取值范圍,也是數(shù)據(jù)庫(kù)中某一列的取值限制。
8關(guān)鍵字:一組可以唯一標(biāo)識(shí)元組的屬性。數(shù)據(jù)庫(kù)中常稱為主鍵有一個(gè)或多個(gè)列組成。
9冗余:存儲(chǔ)兩倍數(shù)據(jù),冗余可以使系統(tǒng)速度更快。
10主鍵:主鍵是唯一的。一個(gè)數(shù)據(jù)表中只能包含一個(gè)主鍵。你可以使用主鍵來查詢數(shù)據(jù)。
11外鍵:外鍵用于關(guān)聯(lián)兩個(gè)表。
12復(fù)合鍵:復(fù)合鍵(組合鍵)將多個(gè)列作為一個(gè)索引鍵,一般用于復(fù)合索引。
13索引:使用索引可快速訪問數(shù)據(jù)庫(kù)表中的特定信息。索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。類似于書籍的目錄。
14參照完整性: 參照的完整性要求關(guān)系中不允許引用不存在的實(shí)體。與實(shí)體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。
4)關(guān)系型數(shù)據(jù)庫(kù)特點(diǎn):
1容易理解:二維表結(jié)構(gòu)是非常貼近邏輯世界的一個(gè)概念,相對(duì)與網(wǎng)狀、層次以及其它模型更容易理解。
2使用方便:通過SQL語(yǔ)言程序員和數(shù)據(jù)管理員可以很方便的在邏輯層面操作數(shù)據(jù)庫(kù)而不必理解其底層實(shí)現(xiàn)。
3易于維護(hù):豐富的完整性(實(shí)體完整性、參照完整性、用戶自定義完整性)降低數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率。
5)關(guān)系操作:
1數(shù)據(jù)查詢:選擇、投影、連接、并、交、差、除
2數(shù)據(jù)操作:增加、刪除、修改、查詢
6)SQL(Structured Query Language):結(jié)構(gòu)化查詢語(yǔ)言,一種特殊目的的編程語(yǔ)言,數(shù)據(jù)庫(kù)查詢和程序設(shè)計(jì)語(yǔ)言,用于存儲(chǔ)數(shù)據(jù)以及查詢、更新和管理關(guān)系型數(shù)據(jù)庫(kù)。
SQL查詢語(yǔ)言組成部分:
1DDL(Data Definition Languages)語(yǔ)句:數(shù)據(jù)定義語(yǔ)句,用于定義不同的數(shù)據(jù)段、數(shù)據(jù)庫(kù)、表、列、索引等數(shù)據(jù)庫(kù)的對(duì)象定義。常用關(guān)鍵字主要包括create、drop、alter等。
2DML(Data Manipulation Language)語(yǔ)句:數(shù)據(jù)操縱語(yǔ)句,用于添加、刪除、更新和查詢數(shù)據(jù)庫(kù)記錄,并檢查數(shù)
據(jù)完整性。常用關(guān)鍵字包括insert、delete、update和select等。
3DCL(Data Control Language)語(yǔ)句:數(shù)據(jù)控制語(yǔ)句,用于控制不同數(shù)據(jù)段直接的許可和訪問級(jí)別的語(yǔ)句,用于
定義數(shù)據(jù)庫(kù)、表、字段、用戶的訪問權(quán)限和安全級(jí)別。常用關(guān)鍵字有g(shù)rant、revoke等。
三、MySQL數(shù)據(jù)庫(kù)
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB公司開發(fā),目前屬于Oracle公司。MySQL最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在Web應(yīng)用方面MySQL是最好的RDBMS(Relational Database Management System,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件之一。
MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的SQL語(yǔ)言是用于訪問數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。MySQL軟件采用了雙授權(quán)政策,它分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。由于其社區(qū)版的性能卓越,搭配PHP和Apache可組成良好的開發(fā)環(huán)境。
四、MySQL的特點(diǎn)
1)Mysql是開源的,所以你不需要支付額外的費(fèi)用。
2)Mysql支持大型的數(shù)據(jù)庫(kù)??梢蕴幚?yè)碛猩锨f條記錄的大型數(shù)據(jù)庫(kù)。
3)MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語(yǔ)言形式。
4)Mysql可以允許于多個(gè)系統(tǒng)上,并且支持多種語(yǔ)言。這些編程語(yǔ)言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
5)Mysql對(duì)PHP有很好的支持,PHP是目前最流行的Web開發(fā)語(yǔ)言。
6)MySQL支持大型數(shù)據(jù)庫(kù),支持5000萬條記錄的數(shù)據(jù)倉(cāng)庫(kù),32位系統(tǒng)表文件最大可支持4GB,64位系統(tǒng)支持最大的表文件為8TB。
7)Mysql是可以定制的,采用了GPL協(xié)議,你可以修改源碼來開發(fā)自己的Mysql系統(tǒng)。
五、MySQL系統(tǒng)特性
1)使用C和C++編寫,并使用了多種編譯器進(jìn)行測(cè)試,保證了源代碼的可移植性。
2)支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng)。
3)為多種編程語(yǔ)言提供了API。這些編程語(yǔ)言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby、.NET和Tcl 等。
4)支持多線程,充分利用 CPU 資源。
5)優(yōu)化的 SQL查詢算法,有效地提高查詢速度。
6)既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫(kù)而嵌入到其他的軟件中。
7)提供多語(yǔ)言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名。
8)提供 TCP/IP、ODBC 和 JDBC等多種數(shù)據(jù)庫(kù)連接途徑。
9)提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具。
10)支持大型的數(shù)據(jù)庫(kù)??梢蕴幚?yè)碛猩锨f條記錄的大型數(shù)據(jù)庫(kù)。
11)支持多種存儲(chǔ)引擎。
12)在線 DDL/更改功能,數(shù)據(jù)架構(gòu)支持動(dòng)態(tài)應(yīng)用程序和開發(fā)人員靈活性(5.6新增)。
13)復(fù)制全局事務(wù)標(biāo)識(shí),可支持自我修復(fù)式集群(5.6新增)。
14)復(fù)制無崩潰從機(jī),可提高可用性(5.6新增)。
15)復(fù)制多線程從機(jī),可提高性能(5.6新增)。
六、MySQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)模型

MySQL的核心組件(參照上圖)
1)連接池:用于完成用戶認(rèn)證、線程重用、并發(fā)連接數(shù)限制、內(nèi)存檢測(cè)以及連接緩存。
2)SQL接口:使用SQL結(jié)構(gòu)查詢語(yǔ)言對(duì)數(shù)據(jù)庫(kù)就行操作的接口(DDL DML等)
3)Parser:分析器,用來進(jìn)行查詢轉(zhuǎn)換、權(quán)限分析獲取的操作。
4)Optimizer:優(yōu)化器,生成并選擇最佳的訪問路徑。
5)Cache & Buffers:與存儲(chǔ)引擎相關(guān)的I/O性能提升工具。
6)存儲(chǔ)引擎(真正執(zhí)行數(shù)據(jù)查詢操作的工具M(jìn)yISAM、InnoDB、NDB、Archive、Federated、Memory、Merge、Partner、Community、Custom等等)。
有了這篇文章做基礎(chǔ),相信大家對(duì)MySQL已經(jīng)不再陌生了吧,接下來小編就和大家深入的學(xué)習(xí)MySQL,享受MySQL帶來樂趣。
- php+mysql 實(shí)現(xiàn)身份驗(yàn)證代碼
- MySQL驗(yàn)證用戶權(quán)限的方法
- PureFTP借助MySQL實(shí)現(xiàn)用戶身份驗(yàn)證的操作教程
- MySQL中數(shù)據(jù)類型的驗(yàn)證
- php+MySQL實(shí)現(xiàn)登錄時(shí)驗(yàn)證登錄名和密碼是否正確
- win7下MySql 5.7安裝配置方法圖文教程
- mysql 5.7.30安裝配置方法圖文教程
- MySQL安裝配置方法教程
- MySQL學(xué)習(xí)第二天 安裝和配置mysql winx64
- MySQL學(xué)習(xí)第三天 Windows 64位操作系統(tǒng)下驗(yàn)證MySQL
相關(guān)文章
淺談Mysql在什么情況下會(huì)使用內(nèi)部臨時(shí)表
內(nèi)部臨時(shí)表是一種特殊輕量級(jí)的臨時(shí)表,本文主要介紹了Mysql在什么情況下會(huì)使用內(nèi)部臨時(shí)表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
vscode安裝mysql相關(guān)插件的詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于vscode安裝mysql相關(guān)插件的詳細(xì)步驟,這將幫助你更高效地管理數(shù)據(jù)庫(kù)操作,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
mysql server is running with the --skip-grant-tables option
今天在mysql中新建數(shù)據(jù)庫(kù)提示The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement,原來是數(shù)據(jù)中配置的--skip-grant-tables,這樣安全就降低了,這個(gè)一般當(dāng)忘記root密碼的時(shí)候需要這樣操作2017-07-07
mysql數(shù)據(jù)庫(kù)優(yōu)化需要遵守的原則
這是我在網(wǎng)上看到的一篇不錯(cuò)的mysql數(shù)據(jù)庫(kù)優(yōu)化文章,拿出來和大家分享,希望可以幫助你們2012-12-12
淺談mysql 系統(tǒng)用戶最大文件打開數(shù)限制
這篇文章主要介紹了mysql 系統(tǒng)用戶最大文件打開數(shù)限制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03

