MariaDB資料庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL授權許可 MariaDB的目的是完全相容MySQL,包括API和命令列,使之能輕鬆成為MySQL的代替品。在儲存引擎方面,使用XtraDB(英語:XtraDB)來代替MySQL的InnoDB。
MariaDB由MySQL的創始人Michael Widenius(英語:Michael Widenius)主導開發,他早前曾以10億美元的價格,將自己建立的公司MySQL AB賣給了SUN,此後,隨著SUN被甲骨文收購,MySQL的所有權也落入Oracle的手中。MariaDB名稱來自Michael Widenius的女兒Maria的名字。
MariaDB基於事務的Maria儲存引擎,替換了MySQL的MyISAM儲存引擎,它使用了Percona的 XtraDB,InnoDB的變體,分支的開發人員希望提供訪問即將到來的MySQL 5.4 InnoDB效能。這個版本還包括了 PrimeBase XT (PBXT) 和 FederatedX儲存引擎。
DBMS:DataBase Management System 資料庫管理系統
RDBMS:Relational DataBase Management System 關係型資料庫管理系統
SQL引擎
儲存引擎:Storage Engine
資料模型:
層次模型,網狀模型,關聯式模式…
關聯式模式:
二維關係:表
行;row,entity
列:colume,attribution
索引:資料結構,輔助完成資料尋找
SQL介面:
SQL:Structure Query Language 結構化查詢語言 (SQL)
ANSI:SQL-標準,SQL-86,SQL-89,SQL-92…
SQL代碼:
儲存常式:Storage routing
預存程序:storage procedure
儲存函數:storage function
觸發器:trigger
事件調度器;event scheduler
事務:一個由單個或多個SQL語句組成的不可分割原子操作
ACID:
A:原子性
C:一致性
I:隔離性
D:持久性
資料類型:
作用:儲存格式,資料範圍,所能參與的運算,排序方式
字元型:
定長字元型:CHAR(#),BINARY(#)
變長字元型:VARCHAE(#),VARBINARY(#)
Object Storage Service:
TEXT
BLOB
內建類型:
ENUM,SET
數值型:
精確數值型:
INT:TINYINT,SMALLINIT,MEDIUMINT,INT,BIGINT
近似數值型:
FLOAT
DOUBLE
日期時間型:
DATE
TIME
DATETIME
TIMESTAMP
YEAR
修飾符:
NOT NULL,DEFAULT
類型符:
UNSIGNED
資料庫的設計範式;
第一範式:欄位是原子性的
第二範式:存在可用的主鍵
第三範式:任何欄位都不應該依賴於其他表的非主鍵欄位
巴斯-科德範式:對於BCNF,在主碼的任何一個 真子集 都不能決定於主屬性。關係中U主碼,若U中的任何一個真子集X都不能決定於主屬性Y,則該設計規範屬性BCNF。例如:在關係R中,U為主碼,A屬性是主碼中的一個屬性,若存在A->Y,Y為主屬性,則該關係不屬於BCNF
資料約束:向資料表中插入資料是要遵守的限制規則
主鍵:primary key,表上一個或多個欄位的組合,填入主鍵欄位中的資料,必須不同於已經存在的其他行的相同欄位上的資料,而且也不可為空,一個表只能存一個主鍵
唯一鍵:unique key,表上一個或多個欄位的組合,填入其中欄位中的資料,必須不同於已經存在的其他行的相同欄位上的資料,但可以為空白,一個表可以有多個唯一鍵
外鍵:foreign key,一個表中的外鍵欄位中所能夠插入的資料取值範圍,取決於引用的另一個表上主鍵欄位上的已經存在資料集合
預設約束:default
檢查條件約束:check,自訂的邏輯運算式
MariaDB的基礎應用:
MariaDB程式組成:
C:Client
mysql,mysqladmin,mysqldump,mysqlbinlog…
S:Server
mysqld,mysqld_safe,mysqld_multi
管理類工具:
myisapack,myisachk…
通訊端地址:
IPv4:PORT:基於IPv4的通訊
IPv6:PORT:基於IPv6的通訊
Unix_SOCK:基於Unix_SOCK的通訊,不需要經由鏈路層的資料的本機通訊
/var/lib/mysql/mysql.sock,/tmp/mysql.sock
命令列用戶端程式mysql
mysql [options][database]
常用選項:
-uUSERNAME:指明登入資料庫的使用者身份
-hHOST:指明要登入到哪台資料庫伺服器上
-pPASSWORD:指明密碼
-Ddb_name:指明要使用的哪個資料庫
-S sock_file_path:指明sock檔案路徑
-p port:指明連接埠
-e 'STATEMENT':可以指明執行的語句,並退出,不需要登入到資料庫伺服器中,而可以直接取得資料
命令;
用戶端命令:在用戶端執行
服務端命令:SQL語句,發往服務端運行,並取回結果,需要顯示的語句結束符
DDL:資料庫定義語言,主要用於資料庫組件,例如資料庫,表,索引,視圖,觸發器,事件調度器,預存程序,儲存函數 CREATE DROP ALTER
DML:資料操縱語言,CRUD操作,主要用於動作表中的資料
INSERT,DELETE,UPDATE,SELETE
DCL:資料控制語言
GRANT,REVOKE
SQL語句:
擷取協助:
mysql> help KEYWORD
mysql> help contents
資料庫管理:
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name
ALTER {DATABASE|SCHEMA}[db_name] CHARACTER SET [=] character_name
DROP {DATABASE|SCHEMA}[IF_EXISTS] db_name
相關命令:
SHOW CHARACTER SET
SHOW COLLATION
SHOW CREATE DATABASE db_name
表管理:
表建立:
CREATE TABLE [IF NOT EXISTS] tb_name (create_defination,…) [table “” not found /]
create_definition:由逗號分隔的列表
欄位定義:
column_name column_defination
約束定義:
PRIMARY KEY(col1[,col2…])
UNIQUE KEY
FOREIGN KEY
CHECK(expr)
索引定義:
{INDEX|KEY}
{FULLTEXT|SPATIAL}
column_defination:
data_type [NOT NULL|NULL][DEFAULT default_value][AUTO_INCREMENT][UNIQUE [KEY]|[PRIMARY] KEY][COMMENT 'string']
table_option:
ENGINE[=]engine_name
查看資料庫支援的儲存引擎種類
SHOW ENGINES;
查看錶狀態資訊:
SHOW TABLE STATUS [WHERE CLAUSE][LIKE CLAUSE]
表修改:
ALTER TABLE tb_name [alter_specification[,alter_specification]…]
alter_specification:
1)表選項
ENGINE=engine_name
…
2)表定義
(a)欄位
ADD DROP CHANGE MODIFY
3)鍵和索引
ADD {PRIMARY|UNIQUE|FOREIGN} KEY(col1,col2,…)
ADD INDEX(col1,col2…)
DROP {PRIMARY|UNIQUE|FOREIGN} KEY key_name
DROP INDEX index_name
查看錶上的索引資訊
SHOW INDEXES FROM tb_name
表刪除:
DROP TABLE [IF EXISTS] tb_name[,tb2_name];
查看錶建立語句;
SHOW CREATE TABLE tb_name
索引管理:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON tbl_name (index_col_name,…)
index_col_name:
col_name [(length)] [ASC | DESC]
DROP INDEX index_name ON tbl_name
SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name [{FROM | IN} db_name] [WHERE expr]
DML語句:
INSERT,SELECT,DELETE,UPDATE
INSERT:
INSERT [INTO] tbl_name [(col_name,…)] {VALUES | VALUE} ({expr | DEFAULT},…),(…),…
SELECT:
(1) SELECT * FROM tbl_name;
(2) SELECT col1, col2, … FROM tbl_name;
欄位別名:col1 AS ALIAS
(3) ELECT col1, col2, … FROM tbl_name WHERE CLUASE;
WHERE expr:布林運算式;
col_name OPERATOR value|col_name;
操作符:
>, <, <=, >=, =, !=
BETWEEN … AND …
LIKE 'PATTERN':
萬用字元:
_:匹配任意單個字元;
%:任意長度的任一字元;
RLIKE 'PATTERN':
IN(list)
組合條件:
and, or, not
(4) SELECT col1, … FROM tbl1_name [WEHRE CLAUSE] ORDER BY col1, col2, … [ASC|DESC]
DELETE:
DELETE FROM tbl_name
[WHERE where_condition]
UPDATE:
UPDATE table_reference SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] …
[WHERE where_condition]
MySQL(MariaDB)的圖形管理工具
phpMyAdmin
Navicat
mysql-front
SQLyog
ToadForMySQL