柚子快報(bào)激活碼778899分享:初識MySQL · 數(shù)據(jù)庫
柚子快報(bào)激活碼778899分享:初識MySQL · 數(shù)據(jù)庫
目錄
前言:
數(shù)據(jù)庫
簡單使用 + 存儲(chǔ)引擎
前言:
本文也是MySQL的第一篇文章了,新的知識點(diǎn)已經(jīng)出現(xiàn),怎么能夠停止不前,穿越時(shí)空……(迪迦奧特曼亂入哈哈哈)。
言歸正傳,我們在本文的目標(biāo)有:
1 什么是數(shù)據(jù)庫 2 主流數(shù)據(jù)庫有哪些 3 MySQL的基本使用 4 MySQL的基本架構(gòu) 5 存儲(chǔ)引擎
進(jìn)入正題吧!
數(shù)據(jù)庫
首先提問,按照常理來說,什么是數(shù)據(jù)庫呢?
不少人想到的一點(diǎn)就是,不就是數(shù)據(jù)的集合嗎?是的,數(shù)據(jù)庫從數(shù)據(jù)存儲(chǔ)方面確實(shí)只是數(shù)據(jù)的集合,但是數(shù)據(jù)庫不只是為了集合數(shù)據(jù)而存在。
如果是為了集合數(shù)據(jù),像我們磁盤中任意的文件,本質(zhì)上也是集合數(shù)據(jù):
這是一種集合數(shù)據(jù)。
集合完數(shù)據(jù)之后我們應(yīng)該干什么呢?單純?yōu)榱思蠑?shù)據(jù)肯定不行,我們應(yīng)該需要某個(gè)東西/軟件來管理我們的數(shù)據(jù),方便我們可以在日常使用,或者是程序處理問題的時(shí)候更加方便,效率更高,這個(gè)時(shí)候,數(shù)據(jù)庫就閃亮登場了。
沒錯(cuò),我們學(xué)習(xí)的MySQL本質(zhì)上就是數(shù)據(jù)庫,給我們提供了數(shù)據(jù)存儲(chǔ)的功能以外,還可以提供數(shù)據(jù)的各方面管理。
那么,提問,我們使用ubuntu登錄到MySQL的時(shí)候,可是看到了兩個(gè)東西的:
一個(gè)是mysql一個(gè)是mysqld,它們所在的目錄分別為:
它們是什么關(guān)系呢?
這里不賣關(guān)子了,mysql是數(shù)據(jù)庫服務(wù)的客戶端,mysqld是數(shù)據(jù)庫服務(wù)的服務(wù)端,而我們使用指令netstat也是可以查到mysql的,所以得出結(jié)論,是什么:
mysql實(shí)際上是一種網(wǎng)絡(luò)服務(wù),而且是一種基于C(mysql)S(mysqld)的網(wǎng)絡(luò)服務(wù)。
那么服務(wù)的是什么呢?服務(wù)的是數(shù)據(jù)存取。
所以數(shù)據(jù)庫是:在磁盤或者是內(nèi)存中以特定結(jié)構(gòu)組成而成的數(shù)據(jù),那么數(shù)據(jù)庫服務(wù)就是mysqld。
那么又是如何服務(wù)的呢?
給某種特定的要求,或者某種特定的字段,mysqld直接給結(jié)果就可以了。
所以數(shù)據(jù)庫的本質(zhì)是:對數(shù)據(jù)內(nèi)容處理的一種解決方案。
以上是對數(shù)據(jù)庫的一些基本理解,我們上文提及的,數(shù)據(jù)庫不只是有一個(gè),目前主流的數(shù)據(jù)庫有的如下:
SQL Sever: 微軟的產(chǎn)品,.Net程序員的最愛,中大型項(xiàng)目。
Oracle: 甲骨文產(chǎn)品,適合大型項(xiàng)目,復(fù)雜的業(yè)務(wù)邏輯,并發(fā)一般來說不如MySQL。
MySQL:世界上最受歡迎的數(shù)據(jù)庫,屬于甲骨文,并發(fā)性好,不適合做復(fù)雜的業(yè)務(wù)。主要用在電 商,SNS,論壇。對簡單的SQL處理效果好。
PostgreSQL :加州大學(xué)伯克利分校計(jì)算機(jī)系開發(fā)的關(guān)系型數(shù)據(jù)庫,不管是私用,商用,還是學(xué)術(shù)研 究使用,可以免費(fèi)使用,修改和分發(fā)。
SQLite: 是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個(gè)相對小的C庫中。它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。
?H2: 是一個(gè)用Java開發(fā)的嵌入式數(shù)據(jù)庫,它本身只是一個(gè)類庫,可以直接嵌入到應(yīng)用項(xiàng)目中。
那么具體的差異就交給同學(xué)們自己查閱了,因?yàn)镸ySQL是免費(fèi)的,所以我們用它來介紹sql語句,而我們有了該數(shù)據(jù)庫的基礎(chǔ),學(xué)習(xí)其他數(shù)據(jù)庫起來也是十分輕松的了。
而對于MySQL來說,數(shù)據(jù)庫肯定和表拉不開關(guān)系,那么對于表的上一層是DB,也就是Database,數(shù)據(jù)庫,對于程序員來說,一般來說都會(huì)為不同的軟件專門分配不同的數(shù)據(jù)庫,多個(gè)數(shù)據(jù)庫中又會(huì)創(chuàng)建不同的表,用來保存數(shù)據(jù)。
這是MySQL,Database,表的基本關(guān)系。
說了那么多,我們來簡單使用一下。
簡單使用 + 存儲(chǔ)引擎
我們先登入到MySQL上面:
現(xiàn)在我們MySQL里面有沒有數(shù)據(jù)庫我們是不知道的,我們應(yīng)該先看看,所以show databases:
這里和我們平常使用Linux的命令行有所不同是,我們提供的字段是需要加;的,所以是show databases;
那么我們發(fā)現(xiàn)我們目前有的數(shù)據(jù)庫是那4個(gè),我們先不管,先自己添加一個(gè)數(shù)據(jù)庫試試:
此時(shí)提示創(chuàng)建成功,我們重新看看:
不出意外的話,數(shù)據(jù)庫是多了一個(gè),我們最開始也提到了,
我們使用root權(quán)限(注意,這里使用普通用戶是進(jìn)不去的),切換到了root之后,我們進(jìn)入到/var/lib/mysql,可以發(fā)現(xiàn)里面的內(nèi)容,目錄好像有幾個(gè)是我們才看到的?
那么我們是否可以認(rèn)為,建數(shù)據(jù)庫的過程就是建立目錄的過程呢?
答案:是!數(shù)據(jù)庫本質(zhì)上就是一個(gè)一個(gè)的目錄。
這是一個(gè)新認(rèn)識,那么我們不妨看看我們的數(shù)據(jù)庫里面都有什么:
ubuntu環(huán)境下是什么也沒有的,但是在Centos的環(huán)境下,存在文件dp.opt,里面存儲(chǔ)的就是對應(yīng)的編碼格式。
現(xiàn)在,返回到MySQL:
現(xiàn)在我們已經(jīng)成功切換到了test_mysql里面,那么前文提及,數(shù)據(jù)庫里面都是有表的,所以我們不妨創(chuàng)建一張表:
這里的語法和之前學(xué)習(xí)Linux或是C++的差別還有點(diǎn)大,所以得多練習(xí)。
那么表有了,我們總得插入幾個(gè)數(shù)據(jù)吧?
使用指令insert into ...,注意,這里使用的引號用了單引號和雙引號,那么使用是否有差別呢?我們后面提及。
此時(shí)數(shù)據(jù)插入完畢,我們使用指令:
select * from student;
成功查詢到了我們剛才插入的所有數(shù)據(jù)。
那么在數(shù)據(jù)庫里面的列和行和平常意義的都是一樣的。
這是最最基本的使用。
現(xiàn)在我們來看看MySQL的架構(gòu)部分,對于最上層的肯定是客戶端,我們主要是關(guān)系存儲(chǔ)引擎部分。
這個(gè)存儲(chǔ)引擎的特點(diǎn)是熱插拔,就像我們平常寫了一個(gè)類,需要用的時(shí)候?qū)嵗粋€(gè)對象就可以了,用完刪除即可,這個(gè)也是,用的時(shí)候激活即可。
MySQL中的存儲(chǔ)引擎是數(shù)據(jù)庫管理系統(tǒng)的核心組成部分,它負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)、檢索以及處理。每個(gè)存儲(chǔ)引擎都有其特定的設(shè)計(jì)理念和性能特點(diǎn),常見的就是上面的。
但是實(shí)際上平常用的多的也就是InnoDB, MyISAM,具體我們放在后面介紹,這里作為了解即可。?
那么我們查看存儲(chǔ)引擎就是show engines:
而我們看Support那一行,InnoDB是default,也就是默認(rèn)打開的,也可以看出它十分的常用。
以上是對MySQL的粗略介紹,如有不足,請多多指正!?
感謝閱讀!
柚子快報(bào)激活碼778899分享:初識MySQL · 數(shù)據(jù)庫
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。