1.什麼是數據庫?mysql
簡單的說,數據庫就是一個存放數據的倉庫,這個倉庫是按照必定的數據結構(數據結構是指數據的組織形式或數據之間的聯繫)來組織,存儲的,咱們能夠經過數據庫提供的多種方法來管理數據庫裏的數據web
更簡單的理解形象,數據庫和咱們生活追蹤存放雜物的儲物間倉庫性質同樣,區別只是存放的東西不通,雜物間存放實體的物件,而數據庫裏存儲的是數據,這樣咱們就對數據庫有一個初步瞭解了。sql
數據庫誕生於1950年,隨着信息技術的發展和人類社會的不斷進步,特別是2000年後,數據庫不在僅僅是存儲和管理數據了,而轉變成用戶所須要的各類數據管理的方式,數據庫有不少種類和功能,從最簡單的存儲有各類數據的表格到可以進行海量數據存儲的大型數據庫系統都在各個方面獲得了普遍的應用。mongodb
按照早起的數據庫理論,比較流行的數據庫模型有三種,分別爲層次式數據庫,網絡式數據庫和關係型數據庫,而在當今的互聯網中,最多見的數據庫模型主要是兩種,即關係型數據庫和非關係型數據庫數據庫
(1)關係型數據庫的由來
雖然網狀數據庫和層次數據庫已經很好的解決了數據的集中和共享問題,可是在數據獨立性和抽象級別上仍有很大欠缺,用戶在對這兩種數據庫進行存取時,仍然須要明確數據庫的存儲結構,支出存取路徑,而關係型數據庫就能夠很好的解決這些問題vim
(2)關係型數據庫介紹
關係型數據庫模型是把複雜的數據結構歸結爲簡單的二元關係(既二維格式表)。例如宏福教育某一期的學生關係就是一個二元關係,在關係型數據庫中,對數據的操做幾乎所有創建在一個或多個關係表上,經過對這些關聯表格分類,合併,鏈接或選取等運算來實現數據的管理。centos
關係型數據庫誕生距今已經有40多年了,從理論產生髮展到現實產品,例如:你們最多見的mysql和oracle數據庫,oracle在數據庫領域裏上升到了霸主的地位,造成每一年高達數百億美圓的龐大產業市場,而mysql也是不容忽視的數據庫,以致於被oracle中心收購了。微信
(3)關係型數據庫表之間的關係列舉網絡
非關係型數據庫也稱之爲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系統來講的優點在於簡單,易部署,高併發
非關係型數據庫(nosql):mongodb,redias
關係型數據庫:oracle,db2,sqlserver,mysql,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,都沒有及時加入到發佈版本之中。
Relational Database Management System
sql語句主要分爲:
CCL:指針控制語言,經過控制指針完成表的操做,如declare cursor
不區分大小寫
表是結構化的文件,用來存儲特定類型的數據,表可能存儲客戶清單,產品目錄,或者其餘信息列表。
存儲在表中的數據是一種類型的數據或一個列表,絕對不該該將顧客的列表信息和訂單的列表信息存儲到同一個數據庫表中,
這樣作會使隨後的數據檢索和訪問變得困難,代替的解決方案是建立兩個表,在每一個表中存儲其相應的列表信息。
數據庫中每一個表都有一個名字來標識它,
而且在一個數據庫中表名是惟一的
列( Column): 表中的一個字段,表由一列或多列構成,列中存儲表的一部分信息
每一列存儲一條特定信息。例如在客戶表中,一列存儲客戶編號,另外一列存儲客戶姓名,
而地址,城 市,州,郵政編碼存儲在各自的列中。數據庫中每一列都有相應的數據類型,
數據類型定義了該列能夠存儲哪一種類型的數據。例如,若是某列要存儲數字,就應該使用numeric數據類型。
若是某列存儲日期,文本,提示,金額等 就須要用恰當的數據類型來指定。
行( Row):表中的一條記錄
表中的數據存儲在行裏,把表當作相似電子表格的網格,在網格中垂直的列就是表的列 ,水平的行就是表的行。
例如,客戶表可能在每一行存儲一個客戶,表中行的數量也就是表中記錄的條數。
注: NULL 在SQL中NULL用來指代空值( no value),若是一列被定義爲容許爲NULL,
當插入或者更新行時,能夠忽略該列的數據。
##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;
查看數據庫
mysqladmin --version
查看數據庫版本
show create database mysql;
查看建立數據庫狀態
use db_name
使用哪一個庫
create database test03
建立數據庫
drop database test03
刪除數據庫
alter database 庫名 default character set=utf8;
修改數據庫默認字符集
select user();
查看當前用戶
grant select,create,update,delete on test03.grade to 'aaa'@'%';
給aaa添加查詢,建立,更新,刪除的權限(在任意主機上)
grant all privileges on test03.grade to 'aaa'@'%';
給aaa賦予test03數據庫的grade表最高權限(在任意主機上)
show grants for 'aaa';
查看aaa用戶的權限(root用戶)
revoke all on . from 'aaa'@'%';
收回aaa在任意數據庫的任意表的最高權限
show grants
查看權限