萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mariadb(mysql)的基礎知識及使用

mariadb(mysql)的基礎知識及使用

下在我們來看一篇關於mariadb(mysql)的基礎知識及使用細節吧,希望這篇文章能夠幫助到各位朋友,具體的細節步驟如下文介紹.

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

copyright © 萬盛學電腦網 all rights reserved