事務(Transaction):組織多個操做爲一個總體,要麼所有執行,要麼所有不執行 「回滾」 ,rollbackmysql
SQL接口:sql語句分析器和優化器sql
表:爲了知足範式設計要求,將一個數據集分拆爲多個數據庫
約束:constraint,向數據表插入的數據要遵照的限制規則centos
主鍵:一個或多個字段的組合,填入主鍵中的數據,必須不一樣於已存在的數據;不能爲空服務器
外鍵:一個表中某字段中能插入的數據,取決於另一張表的主鍵中的數據數據結構
唯一鍵:一個或多個字段的組合,填入唯一鍵中的數據,必須不一樣於已存在的數據;能夠爲空tcp
檢查性約束:取決於表達式的要求工具
索引:將表中的某一個或某些字段抽取出來,單獨將其組織到一個獨特的數據結構中性能
經常使用的索引類型: 樹型 hash(只有使用MEMORY引擎的表才能使用) 測試
實現級別在存儲引擎,應該建立在常常用做查詢條件的字段上
索引有助於讀請求,但不利於寫請求
MariaDB的特性:插件式存儲引擎:存儲管理器有多種實現版本,彼此間的功能和特性可能略有區別;用戶可根據須要靈活選擇
存儲引擎也稱爲「表類型」
MariaDB與MySQL的比較:
(1) 支持更多的存儲引擎
(2) MyISAM-->Aria (改進版)不支持事務
(3) InnoDB --> XtraDB(改進版) 支持事務
(4) 諸多擴展和新特性
(5) 提供了較多的測試組件
(6) 徹底的開源軟件
centos7上直接安裝:yum -y install mariadb-server 啓動服務:systemctl start mariadb
數據目錄:/var/lib/mysql/ 命令行輸入mysql就能夠直接登錄了 配置文件:/etc/my.cnf.d/server.cnf
使用mysql --help查看讀取配置文件的位置及讀取順序,後面讀的會把前面的覆蓋掉
DDL(Data Definition Language): CREATE, ALTER, DROP
DML(Data Manipulation Language): INSERT, DELETE, UPDATE, SELECT
DCL(Data Control Language): GRANT, REVOKE
三類套接字地址:IPv4,IPv6 3306/tcp
Unix Sock:/var/lib/mysql/mysql.sock(rpm安裝) /tmp/mysql.sock(源碼安裝) 經過127.0.0.1地址通訊
客戶端:
mysql:CLI交互式客戶端程序
mysqldump:備份工具
mysqladmin:管理工具,例如:[root@localhost ~]# mysqladmin extended-status
mysqlbinlog:二進制日誌文件查看工具
命令行交互式客戶端程序:mysql
-uUSERNAME:用戶名,默認爲root
-hHOST:遠程主機(即mysql服務器)地址,默認爲localhost
-p[PASSWORD]:用戶的密碼; 默認爲空
注意:mysql的用戶帳號由兩部分組成:'USERNAME'@'HOST',其中HOST用於限制此用戶可經過哪些遠程主機鏈接當前的mysql服
務,HOST的表示方式,支持使用通配符,%:匹配任意長度的任意字符,_:匹配任意單個字符
mysql -D mysql 直接登陸到mysql數據庫 mysql -e ‘show databases’ 在命令行取得show databases命令的執行結果
客戶端命令:本地執行 獲取幫助:MariaDB [(none)]> help 例如:獲取狀態信息:\s
服務端的獲取命令幫助:help COMMAND
查看mariadb支持哪些字符集:show character set;
建立一個數據庫:create database nihao character set ustf8;
刪除一個數據庫:drop database nihao; 注意數據庫刪除了就找不回了
查看: show database like '';
建立表的格式:create table [if not exits] tbl_name (create_defination) [table_options]
create_defination:
字段:col_name data_type
鍵:PRIMARY KEY (col1, col2, ...) UNIQUE KEY (col1, col2,...) FOREIGN KEY (column)
table_options:engine=egine name
例如:create table students(id int unsigned not null primary key, name char(10) not null, age tinyint unsigned, gender
enum('m','f' ));
字符類型char比varchar對mariadb的性能更好,使用desc tablename查看錶結構
定義多個主鍵:create table students(id int unsigned not null, name char(10) not null, age tinyint unsigned, gender
enum('m','f' ),primary key(id,name));
注意unsigned只能緊跟在數值類型後面,不然會報錯
顯示MariaDB支持的全部存儲引擎:show engines; 查看錶使用存儲引擎:show table status\G 查看具體哪張表:show
table status like 'tablename'; 注意:同一個庫中表要使用同一種存儲引擎類型
修改:
增長一個字段:alter table students add class varchar(10) not null after name;
after表示放在哪一個字段後面
刪除一個字段:alter table students drop class;
不修更名字,只對某一列的屬性進行修改:alter table students modify class varchar(99) after age;
刪除主鍵:alter table students drop primary key;
添加一個惟一鍵:alter table students add unique key (name); 若是惟一鍵爲not null自動轉換此primary key
查看錶的索引:show indexes from tablename\G (注意鍵能夠是索引,但索引不必定是鍵)
刪除一個索引:alter table students drop index name; (name爲索引的名字)
添加一個索引:alter table students add index class (class); 【(class)表明的是字段的名字,class表示索引名】