MariaDB


知道自己學的什么版本的數據庫

mariadb版本:10.3

1.數據庫介紹(默認端口號=3306)

簡單的說,數據庫就是一個存放數據的倉庫,這個倉庫是按照一定的數據結構(數據結構是指數據的組織形式或數據之間的聯系)來組織,存儲的,我們可以通過數據庫提供的多種方法來管理數據庫里的數據

更簡單的理解形象,數據庫和我們生活追蹤存放雜物的儲物間倉庫性質一樣,區別只是存放的東西不通,雜物間存放實體的物件,而數據庫里存儲的是數據,這樣我們就對數據庫有一個初步了解了。

數據庫誕生於1950年,隨着信息技術的發展和人類社會的不斷進步,特別是2000年后,數據庫不在僅僅是存儲和管理數據了,而轉變成用戶所需要的各種數據管理的方式,數據庫有很多種類和功能,從最簡單的存儲有各種數據的表格到能夠進行海量數據存儲的大型數據庫系統都在各個方面得到了廣泛的應用。

2.數據庫的種類

按照早起的數據庫理論,比較流行的數據庫模型有三種,分別為層次式數據庫,網絡式數據庫和關系型數據庫,而在當今的互聯網中,最常見的數據庫模型主要是兩種,即關系型數據庫和非關系型數據庫。

3.關系型數據庫(安全)

(1)關系型數據庫的由來

雖然網狀數據庫和層次數據庫已經很好的解決了數據的集中和共享問題,但是在數據獨立性和抽象級別上仍有很大欠缺,用戶在對這兩種數據庫進行存取時,仍然需要明確數據庫的存儲結構,支出存取路徑,而關系型數據庫就可以很好的解決這些問題

(2)關系型數據庫介紹

關系型數據庫模型是把復雜的數據結構歸結為簡單的二元關系(既二維格式表)。例如宏福教育某一期的學生關系就是一個二元關系,在關系型數據庫中,對數據的操作幾乎全部建立在一個或多個關系表上,通過對這些關聯表格分類,合並,連接或選取等運算來實現數據的管理。

關系型數據庫誕生距今已經有40多年了,從理論產生發展到現實產品,例如:大家最常見的mysql和oracle數據庫,oracle在數據庫領域里上升到了霸主的地位,形成每年高達數百億美元的龐大產業市場,而mysql也是不容忽視的數據庫,以至於被oracle中心收購了。

(3)表之間有關系

數列

數據

4.非關系型數據庫(nosql)

非關系型數據庫也稱之為nosql數據庫,請注意,nosql的本意是“not only SQL”,指的是非關系型數據庫,而不是“no SQL”的意思,因此nosql的產生並不是要徹底否定關系型數據庫,而是作為傳統關系型數據庫的一個有效補充,NoSQL數據庫在特定的場景下可以發揮出難以想象的高效率和高性能。

隨着互聯網的興起,超大規模和高並發量的微博,微信,SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,例如:傳統的關系型數據庫IO瓶頸,性能瓶頸都難以有效突破,於是開始出現了大批針對特定場景,以高性能和使用便利為目的的功能特異化的數據庫產品,NoSQL類的數據庫就是在這樣的情景中誕生並得到了非常迅速的發展

NoSQL是非關系型數據庫的廣義定義。它打破了長久以來關系型數據庫與ACID理論大一統的局面,NoSQL數據存儲不需要固定的表結構,通常也不存在連接操作,在大數據存取上具備關系型數據庫無法比擬的性能優勢,該術語(NoSQL)在2009年初得到了廣泛的認同

google的BigTable與Amazon的Dynamo是非常成功的商業NoSQL,一些開源的NoSQL體系,如

Redis, mongodb也逐漸的越來越受到各大中小型企業的歡迎和追捧

非關系型數據庫的種類

鍵值(key-value)存儲數據

鍵值數據庫就類似傳統語言中使用的哈希表,可以通過key來添加,查詢或者刪除數據,因為使用key主鍵訪問,所以會獲得很高的性能及擴展性

鍵值(key-value)數據庫主要是使用一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的數據,key/value模型對於IT系統來說的優勢在於簡單,易部署,高並發。

面試題:


clip_image002

5.常見的數據庫

非關系型數據庫(nosql):mongodb,redis

關系型數據庫:oracle,db2,sqlserver,mysql,mariadb

6.Mariadb發源

MySQL之父Widenius先生離開了Sun之后,覺得依靠Sun/Oracle來發展MySQL,實在很不靠譜,於是決定另開分支,這個分支的名字叫做MariaDB。

MariaDB跟MySQL在絕大多數方面是兼容的,對於開發者來說,幾乎感覺不到任何不同。目前MariaDB是發展最快的MySQL分支版本,新版本發布速度已經超過了Oracle官方的MySQL版本。

在Oracle控制下的MySQL開發,有兩個主要問題:1. MySQL核心開發團隊是封閉的,完全沒有Oracle之外的成員參加。很多高手即使有心做貢獻,也沒辦法做到。2. MySQL新版本的發布速度,在Oracle收購Sun之后大為減緩。Widenius有一個ppt,用數據比較了收購之前和之后新版本的發布速度。有很多bugfix和新的feature,都沒有及時加入到發布版本之中。

7.RDBMS 數據庫管理工具

Relational Database Management System

clip_image003

sql語句主要分為:

DQL:數據查詢語言,用於對數據進行查詢,如select

DML:數據庫操作語言,對數據庫進行增刪改查,如:insert,update,delete

TPL:事物處理語言,對事物進行處理,包括begin,transaction,commit,rollback

DCL:數據控制語言,如grant(賦予權限),revoke(收回權限)

DDL:數據定義語言:進行數據庫,表的管理等,如create(創建庫),drop(丟棄庫)

CCL:指針控制語言,通過控制指針完成表的操作,如declare cursor

sql是一門特殊的語言,專門用來操作關系型數據庫

不區分大小寫

8.表(Table) 特定類型數據的結構化列表

表是結構化的文件,用來存儲特定類型的數據,表可能存儲客戶清單,產品目錄,或者其他信息列表。

存儲在表中的數據是一種類型的數據或一個列表,絕對不應該將顧客的列表信息和訂單的列表信息存儲到同一個數據庫表中,這樣做會使隨后的數據檢索和訪問變得困難,代替的解決方案是創建兩個表,在每個表中存儲其相應的列表信息。數據庫中每個表都有一個名字來標識它,並且在一個數據庫中表名是唯一的

列( Column): 表中的一個字段,表由一列或多列構成,列中存儲表的一部分信息

每一列存儲一條特定信息。例如在客戶表中,一列存儲客戶編號,另一列存儲客戶姓名,

而地址,城 市,州,郵政編碼存儲在各自的列中。數據庫中每一列都有相應的數據類型,

數據類型定義了該列可以存儲哪種類型的數據。例如,如果某列要存儲數字,就應該使用numeric數據類型。

如果某列存儲日期,文本,提示,金額等 就需要用恰當的數據類型來指定。

9.行( Row):表中的一條記錄

表中的數據存儲在行里,把表當做類似電子表格的網格,在網格中垂直的列就是表的列 ,水平的行就是表的行。

例如,客戶表可能在每一行存儲一個客戶,表中行的數量也就是表中記錄的條數。

注: NULL 在SQL中NULL用來指代空值( no value),如果一列被定義為允許為NULL,

當插入或者更新行時,可以忽略該列的數據。

10.mariadb安裝(該yum源安裝的是10.3版本)

新建一個mariadb的yum源

[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

yum install MariaDB -y #區分大小寫

11.mysql的root密碼

[root@localhost ~]# mysql_secure_installation #初始化數據庫

clip_image004

clip_image005

接下來的所有都輸入y

忘記mysql的root密碼:

vim /etc/my.cnf.d/server.cnf

clip_image006

重啟

mysql -u root 即可免密登陸

修改密碼:

MariaDB [(none)]> use mysql;

MariaDB [mysql]> select host,user,password from user;

clip_image007

MariaDB [mysql]> update user set password=password('456') where user='user';

此時用戶user的密碼就修改成了456

將mariadb的配置文件中的skip-grant-tables注釋掉,重啟數據庫,密碼就生效了。

12.登陸數據庫

mysql -uroot -p123456 #-u接數據庫用戶名 -p接數據庫的密碼

clip_image008

13.查看數據庫

show databases; #查看數據庫

clip_image009

mysqladmin --version; #查看數據庫版本

clip_image010

show create database mysql; #查看創建數據庫狀態

use db_name;         #使用db_name數據庫

clip_image011

show tables; #查看該數據庫的所有表

clip_image012

這里除了可以修改user中的數據,其他的都不可更改!

select * from user; #查看user表中的所有數據

查看當前數據庫有哪些用戶:select host,user,password from user; #查看user表中的host,user,password字段,中間以,分隔,

clip_image013

localhost:只允許本地登錄,也就是說只能從linux端訪問數據庫,不允許第三方登陸。

show create database 1db; #查看創建數據庫狀態

clip_image014

14.用戶管理

select user();  #查看當前用戶

clip_image015

當前用戶為root

創建用戶

grant all privileges on test03.grade to 'user1'@'%' identified by 'user1'; #創建用戶user1且密碼為user1,賦予test03數據庫的grade表最高權限(在任意主機上%) *.*表示所有數據庫的所有表 %代表任意主機 identified by表示設置密碼為user1,此命令也可做修改用戶名密碼使用。

clip_image016

添加用戶user1成功

grant all privileges on test03.grade to 'root'@'%';#給root賦予test03數據庫的grade表最高權限(在任意主機上%) *.*表示所有數據庫的所有表 %代表任意主機

grant select,create,update,delete on test03.grade to 'aaa'@'%'; #給aaa添加查詢,創建,更新,刪除的權限(在任意主機上)

show grants for 'aaa'; #查看aaa用戶的權限(root用戶)                        

revoke all on *.* from 'aaa'@'%'; #收回aaa在任意數據庫的任意表的最高權限                    

show grants;        #查看權限

15.修改數據庫

create database test3 #創建數據庫test3

drop database test3 #刪除數據庫test3

create database 1db character set utf8; #修改1db數據庫默認字符集為中文(utf8)

alter database 1db character set utf8;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM