數據庫介紹
關係型數據庫
(1)關係型數據庫介紹html
關係型數據庫模型是把複雜的數據結構歸結爲簡單的二元關係(既二維格式表)。例如宏福教育某一期的學生關係就是一個二元關係,在關係型數據庫中,對數據的操做幾乎所有創建在一個或多個關係表上,經過對這些關聯表格分類,合併,鏈接或選取等運算來實現數據的管理。mysql
關係型數據庫誕生距今已經有40多年了,從理論產生髮展到現實產品,例如:你們最多見的mysql和oracle數據庫,oracle在數據庫領域裏上升到了霸主的地位,造成每一年高達數百億美圓的龐大產業市場,而mysql也是不容忽視的數據庫,以致於被oracle中心收購了。web
(2)關係型數據庫表之間的關係列舉sql
非關係型數據庫(nosql)
非關係型數據庫也稱之爲nosql數據庫,請注意,nosql的本意是「not only SQL」,指的是非關係型數據庫,而不是「no SQL」的意思,所以nosql的產生並非要完全否認關係型數據庫,而是做爲傳統關係型數據庫的一個有效補充,NoSQL數據庫在特定的場景下能夠發揮出不可思議的高效率和高性能。mongodb
隨着互聯網的興起,超大規模和高併發量的微博,微信,SNS類型的web2.0純動態網站已經顯得力不從心,暴露了不少難以克服的問題,例如:傳統的關係型數據庫IO瓶頸,性能瓶頸都難以有效突破,因而開始出現了大批針對特定場景,以高性能和使用便利爲目的的功能特異化的數據庫產品,NoSQL類的數據庫就是在這樣的情景中誕生並獲得了很是迅速的發展數據庫
NoSQL是非關係型數據庫的廣義定義。它打破了長久以來關係型數據庫與ACID理論大一統的局面,NoSQL數據存儲不須要固定的表結構,一般也不存在鏈接操做,在大數據存取上具有關係型數據庫沒法比擬的性能優點,該術語(NoSQL)在2009年初獲得了普遍的認同vim
google的BigTable與Amazon的Dynamo是很是成功的商業NoSQL,一些開源的NoSQL體系,如centos
Redis, mongodb也逐漸的愈來愈受到各大中小型企業的歡迎和追捧微信
1、關係型數據庫
關係型數據庫最典型的數據結構是表,由二維表及其之間的聯繫所組成的一個數據組織
優勢:數據結構
- 易於維護:都是使用表結構,格式一致;
- 使用方便:SQL語言通用,可用於複雜查詢;
- 複雜操做:支持SQL,可用於一個表以及多個表之間很是複雜的查詢。
缺點:
- 讀寫性能比較差,尤爲是海量數據的高效率讀寫;
- 固定的表結構,靈活度稍欠;
- 高併發讀寫需求,傳統關係型數據庫來講,硬盤I/O是一個很大的瓶頸。
2、非關係型數據庫
非關係型數據庫嚴格上不是一種數據庫,應該是一種數據結構化存儲方法的集合,能夠是文檔或者鍵值對等。
優勢:
- 格式靈活:存儲數據的格式能夠是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,使用靈活,應用場景普遍,而關係型數據庫則只支持基礎類型。
- 速度快:nosql可使用硬盤或者隨機存儲器做爲載體,而關係型數據庫只能使用硬盤;
- 高擴展性;
- 成本低:nosql數據庫部署簡單,基本都是開源軟件。
缺點:
- 不提供sql支持,學習和使用成本較高;
- 無事務處理;
- 數據結構相對複雜,複雜查詢方面稍欠。
常見的數據庫
非關係型數據庫(nosql):mongodb,redias
關係型數據庫:oracle,db2,sqlserver,mysql,mariadb
Mariadb發源
MySQL之父Widenius先生離開了Sun以後,以爲依靠Sun/Oracle來發展MySQL,實在很不靠譜,因而決定另開分支,這個分支的名字叫作MariaDB。
RDBMS
Relational Database Management System
- sql語句主要分爲:
- DQL:數據查詢語言,用於對數據進行查詢,如select
- DML:數據庫操做語言,對數據庫進行增刪改查,如:insert,update,delete
- TPL:事物處理語言,對事物進行處理,包括begin,transaction,commit,rollback
- DCL:數據控制語言,如grant,revoke
- DDL:數據定義語言:進行數據庫,表的管理等,如create,drop
- CCL:指針控制語言,經過控制指針完成表的操做,如declare cursor
- sql是一門特殊的語言,專門用來操做關係型數據庫
- 不區分大小寫
mariadb安裝 [mariadb] name = MariaDB baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/ gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1 忘記mysql的root密碼 vim /etc/my.conf.d/server.conf 添加skip-grant-tables mysql -uroot | mysql -u root -p 查看數據庫 show databases; #查看建立數據庫狀態 show create database testdb; #使用哪一個庫 use testdb 修改數據庫 create database test03 #建立數據庫 create database testdb character set utf8; #刪除數據庫 drop database testdb; #修改數據庫默認字符集 alter database 庫名 default character set utf8; #查看當前用戶 select user(); #給aaa添加查詢,建立,更新,刪除的權限(在任意主機上) grant select,create,update,delete on test03.grade to aaa@'%';
#給aaa賦予test03數據庫的grade表最高權限(在任意主機上) grant all privileges on test03.grade to aaa@'%'; #查看aaa用戶的權限(root用戶) show grants for 'aaa'; #收回aaa在任意數據庫的任意表的最高權限 revoke all on *.* from aaa@'%'; #查看本身權限
show grants