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 結構化查詢語言
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(#)
對象存儲:
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