事務(Transaction):組織多個操作為一個整體,要麼全部執行,要麼全部不執行 “回滾” ,rollback
SQL接口:sql語句分析器和優化器
表:為了滿足范式設計要求,將一個數據集分拆為多個
約束:constraint,向數據表插入的數據要遵守的限制規則
主鍵:一個或多個字段的組合,填入主鍵中的數據,必須不同於已存在的數據;不能為空
外鍵:一個表中某字段中能插入的數據,取決於另外一張表的主鍵中的數據
惟一鍵:一個或多個字段的組合,填入惟一鍵中的數據,必須不同於已存在的數據;可以為空
檢查性約束:取決於表達式的要求
索引:將表中的某一個或某些字段抽取出來,單獨將其組織一個獨特的數據結構中
常用的索引類型: 樹型 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:管理工具
mysqlbinlog:二進制日志查看工具
命令行交互式客戶端程序:mysql
-uUSERNAME:用戶名,默認為root
-hHOST:遠程主機(即mysql服務器)地址,默認為localhost
-p[PASSWORD]:USERNAME所表示的用戶的密碼; 默認為空
注意: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只能緊跟在數值類型後面,否則會報錯
查看數據庫支持的所有存儲引擎類型: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表示索引名】