要使用MariaDB/Mysql,先要利用yum安裝mysql
[root@localhost ~]# yum install -y mariadb-* //利用這條命令能把全部關於MariaDB的軟件工具安裝上
若原本Linux(CentOS)已經安裝,可用sql
[root@localhost ~]# ss -tnl //查看3306是否被監聽,有就已開啓服務
若沒有開啓則啓動服務數據庫
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> //已經進入mysql/MariaDB的交互界面
在Mysql/MariaDB的交互界面就能夠用MariaDB/Mysql的語句來進行數據庫的操做。安全
也能夠在Bash界面有條件對應使用:bash
mysql [options] [db_name]來進入Mysql界面;服務器
-p[password]
用於指定鏈接mysql服務器時,爲對應用戶指定身份驗證所需密碼;若是密碼部分省略不寫,執行命令後須要在新行中給出密碼,這種方式相對更安全;ide
-D db_name
用於指定使用mysql客戶端程序鏈接到mysql服務器以後,默認使用哪一個數據庫;若是不給定該選項,默認爲NULL;函數
-e statement
鏈接至mysql服務器並將後面的SQL語句交給服務器運行以後返回執行結果並直接退出交互式登陸模式,返回bash命令提示符;工具
-h host_name
用於指定這次mysql程序所鏈接的mysql服務器的主機名稱或主機IP地址;默認是localhost(127.0.0.1);ui
-u user_name
用於指定鏈接mysql服務器時使用的用戶名;默認的用戶名爲:'root'@'localhost'
mysql的用戶名:USERNAME@HOSTNAME
USERNAME表示登陸的用戶名稱;
HOSTNAME表示用戶經過哪一個特定的客戶端主機鏈接到mysql服務器;
如:'root'@'172.16.0.1'用戶
表示只有172.16.0.1主機能夠經過root用戶鏈接至myslq服務器;
HOSTNAME中可使用通配符:
_:任意單個字符;
%:任意長度的任意字符;
如:'root'@'172.16.%.%'
表示172.16.0.0/16網段中的全部主機均可以使用root用戶鏈接至mysql服務器;
如:'root'@'172.16._.%'
表示172.16.0.0~172.16.9.255地址的主機均可以使用root用戶鏈接至mysql服務器;
注意:默認狀況下,全部用戶均爲空密碼,而且還有匿名用戶存在,所以,爲了加強安全性,可使用mysql_secure_installation命令完成帳戶安全初始化;是的mysql服務器僅能讓root用戶在本地登陸,而且移除匿名用 戶和test數據庫;
進入mysql/MariaDB的交互界面後,能夠用mysql命令了;
Mysql命令分爲:客戶端命令和服務器端命令
客戶端命令:mysql程序自身完成或執行的命令,在客戶端所在地運行
clear (\c)
中止發送當前正在鍵入的命令或語句並直接返回提示符;
delimiter (\d)
設置語句結束標記;默認的語句結束標記爲";";
ego (\G)
將其前面的語句送往mysql服務器運行,並將返回的結果縱線顯示;
go (\g)
無需輸入語句結束標記,直接將其前面的語句送往服務器執行;
exit,quit (\q)
退出mysql程序的交互式模式;
status (\s)
獲取mysql服務器的狀態信息;
use (\u)
將指定的數據庫做爲當前正在使用的數據庫;
source (\.)
能夠在mysql交互式模式中執行SQL腳本文件;
?或help (\?)
獲取客戶端命令的幫助信息;
服務端命令:mysql客戶端程序經過mysql協議向mysql服務器端發送的SQL語句;每一個SQL語句都必須以指定的結束標記結尾,默認是";"
服務器端命令表明的SQL語句,能夠分爲三類:DDL,DML,DCL
DDL:數據定義語言,主要用於管理數據庫及數據庫的各組件;
例如:數據庫,表,視圖,索引,用戶,存儲過程,存儲函數,觸發器,事件等;
經常使用的SQL語句:CREATE,DROP,ALTER,SHOW
DML:數據操縱語言,主要用於管理表中的數據,實現數據的增,刪,改,查等操做;
經常使用的SQL語句:INSERT,DELETE,UPDATE,SELECT
DCL:數據控制語言,主要用於管理數據訪問的受權;
經常使用的SQL語句:GRANT,REVOKE
獲取指定的SQL語句的幫助信息;
mysql> help SQL_STATEMENT_KEYWORK
MariaDB [(none)]> help SQL_STATEMENT_KEYWORK
全部的SQL語句自己,不區分字符大小寫;建議使用小寫字母書寫SQL語句;
DDL中的數據庫
建立數據庫、修改數據庫的屬性、刪除數據庫
建立數據庫:
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [ create_specification ]
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
DATABASE | SCHEMA:
表示要建立的對象的類型爲"數據庫"或"方案";
IF NOT EXISTS:
若是指定要建立的數據庫已經存在,則不報錯也不執行建立操做;
db_name:
要建立的數據庫的名稱;
CHARACTER SET [=] charset_name:
爲新建立的數據庫指定其默認的字符集;
mysql> show character set
查看mysql服務器所支持的全部字符集及默認排序規則;
COLLATE [=] collation_name:
爲新建立的數據庫指定字符集的排序規則;
mysql> show collation
查看mysql服務器上每種字符集所支持的全部的排序規則;
修改數據庫的屬性:
ALTER {DATABASE | SCHEMA} db_name alter_specification ...
alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
注意:若是數據庫中已經有表,且表中已經插入數據時,更改數據庫的字符集和排序規則可能會致使已存數據的亂碼;
刪除數據庫:
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
DDL中的表:
數據類型、建立表、修改表、刪除表
數據類型:
定義數據類型的意義:
1.決定數據的存儲格式;
2.決定數據所能參與的運算;
3.決定數據能夠表示的有效範圍;
對於mysql來講,支持的數據類型:
數值型:
精確數值型:
TINYINT(3):8bits,0~255,-128~+127
SMALLINT(5):16bits,0~65535,-32768~+32767
MEDIUMINT(8):24bits,0~16777735
INT(10):32bits,
INTEGER:48bits,
BIGINT:64bits
近似數值型:
REAL
DOUBLE
FLOAT
字符串型:
變長字符型:
VARCHAR(length):字符不區分大小寫;65536個字符;
VARCHAR(30)
qhdlink$ -- 8字節存儲空間;
VARBINARY(length):字符區分大小寫;65536個字符;
定長字符型
CHAR(length):字符不區分大小寫;256個字符;
CHAR(30)
qhdlink -- 30字節空間;
BINARY(length):字符區分大小寫;256個字符;
對象存儲類型:
TEXT:存儲大量的純文本信息;
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
BLOB:存儲非純文本信息通過流式化處理以後的二進制數據;
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
日期時間型:
DATE:日期型,3字節;
TIME:時間型,3字節;
TIMESTAMP:時間戳類型,4字節;
DATETIME:日期時間型,8字節;
YEAR:年份,YEAR(2),YEAR(4)
內置特殊類型:
集合類型:
SET:集合,插入的數據能夠是集合中各個元素的任意組合;
SET('a','b','c','d')
a
aa
aab
abdc
枚舉類型:
ENUM:枚舉,只能存放列舉出來的固定的字符或字符串;
ENUM('F','M')
F
M
數據類型相關的修飾符:
與整數類型相關的:
UNSIGNED,無符號整數;
注意:UNSIGNED修飾符必須緊跟在精確數值類型標識符以後;
AUTO_INCREMENT [=] Value:
整型數據的遞增或遞減;
通用修飾符:
NOT NULL:非空約束;通常是爲主鍵作約束;
DEFAULT Value:爲字段設置默認值;
建立表:
CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options]
create_definition:
col_name data_type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string']
table_options:
ENGINE [=] engine_name | AUTO_INCREMENT [=] value
顯示錶的結構:
mysql> desc stu_info;
顯示建立表的SQL語句:
mysql> show create table stu_info;
修改表:
ALTER TABLE tbl_name [alter_specification [, alter_specification] ...]
增長表的字段:
ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ]
示例:
mysql> alter table stu_info add Stel_num varchar(20) not null after SAge;
修改表的字段屬性
CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
示例:
mysql> alter table stu_info change column Stel_num SMobile char(11) not null after Gender;
mysql> alter table stu_info modify SAge tinyint unsigned after Gender;
刪除表的字段:
DROP [COLUMN] col_name
刪除表:
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
DDL中的視圖:
建立視圖、刪除視圖
建立視圖:
CREATE VIEW view_name [(column_list)] AS SELECT clause;
刪除視圖:
DROP VIEW [IF EXISTS] view_name [, view_name] ... [RESTRICT | CASCADE]
DDL中的索引
索引類型、建立索引、查看索引、刪除索引、
索引的類型:
彙集索引、非彙集索引:
彙集索引:索引和數據存放在一塊兒,找到索引即找到數據;
非彙集索引:索引和數據不存放在一塊兒,索引經過索引指針指向數據所在位置;
稠密索引、稀疏索引:是否索引了每一條數據記錄;
稠密索引:每條數據記錄都有一條索引與之對應;
稀疏索引:並非每條數據記錄都有一條索引與之對應,而是一條索引對應某個或某些數據塊;
主鍵索引、輔助索引:
BTree:Balance Tree,B- Tree,BTree,B+Tree
左前綴索引:
注意:在使用BTree索引進行檢索時,給出的PATTERN的最左側字符不要出現通配符,不然,沒法使用索引進行檢索;只能全文遍歷;
Hash索引:
R Tree:Spacial,空間索引;
FULLTEXT:全文索引;
覆蓋索引:索引中的內容就是要檢索的內容,經過檢索索引內容便可當即找到數據,並直接返回檢索結果;
建立索引:
1.在建立表時,經過指定主鍵或惟一鍵,能夠自動建立索引;
2.若是在建立表時,沒有指定主鍵或惟一鍵,則能夠在表成功建立以後添加索引;
CREATE [ONLINE|OFFLINE] [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...) [index_option] ...
示例:
MariaDB [hellodb]> create index name_index on students(Name);
查看索引:
SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name [{FROM | IN} db_name] [WHERE expr]
刪除索引:
DROP [ONLINE|OFFLINE] INDEX index_name ON tbl_name
DML中的INSERT/REPLACE、
DML中的DELETE
DML中的UPDATE
DML中的SELECE