設計範式:
1、 字段是原子性,不可再分割
2、 應該有主鍵
3、 2個表不應該有相同的非主鍵字段
MariaDB的安裝
1、 源碼編譯
2、 通用2禁止格式
3、 rpm包
視圖
物理視圖 系統管理員
邏輯視圖 DBA
視圖模型 終端用戶
SQL接口
1、 DDL
a) CREATE DATABASE,TABLE
b) ALTER DATABASE
c) DROP DATABASE,TABLE
2、 DML
DDL:
MariaDB基礎
表管理:
創建表時候可以創建索引
CREATE TABLE (create_defination)
col_name col_defination| PRIMARY KEY (colname)
鍵
可以創建在單個字段上交 單鍵 column_name
創建在多個字段上的鍵角 組合鍵
create table teachers(tid INT UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT PRIMARY KEY,tName VARCHAR(50) NOT NULL,AGE TINYINT UNSIGNED,Gender ENUM('F','M') Default 'M',dazhao VARCHAR(100),UNIQUE KEY(tName,dazhao))
查看錶上的索引
SHOW {INDEX | INDEXES | KEYS}
{FROM | IN} tbl_name
[{FROM | IN} db_name]
[WHERE expr]
alter table
alter table student modify girlID TINYINT UNSIGNED NOT NULL after GENDER;
想改字段名,用change,只改字段定義,用modify
drop刪除字段
mysql的重要特性,插件式存儲引擎
show engines;
如果不指定就使用默認的存儲引擎
存儲引擎又叫做表類型,創建表的時候可以指定表類型。建議同一個庫內用一個存儲引擎
show table status
SHOW TABLE STATUS [{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
like用於模糊匹配,支持通配符
_:匹配任意單個字符
%:匹配任意長度任意字符
查看一個表是用什麼存儲引擎:
show table status like ‘student’ \G
最後不加大寫G不會出來
表選項:
ENGINE = engine_name
步驟:
1、 show databases查看有什麼數據庫
2、 use database數據庫名
3、 show tables 查看有哪些表
4、 desc table 看看錶裏啥結構
索引管理
索引,創建刪除查看,不能修改
創建索引,help create index
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON tbl_name
SPATIAL空間索引
刪除索引,help drop index
DROP INDEX index_name ON tbl_name
查看索引
SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name
DML
INSERT, DELETE, SELECT, UPDATE
操作表中數據的。
INSERT [INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
DELETE FROM tbl_name
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
SELECT
DISTINCT
[SQL_CACHE | SQL_NO_CACHE] //SQL_CACHE放在查詢緩存中
select_expr [, select_expr ...]
[FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
where後的條件表達式:
>,<,>=,<=,==,!=
between … and…可以等於 >= … <=
模糊查詢,LIKE %代替任意個單位
RLIKE ‘pattern’正則表達式匹配。
組合條件 AND OR NOT
distinct,用來去重
[ORDER BY {col_name | expr | position}排序
[ASC | DESC], ...]
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
用戶及權限管理90:00
用戶賬號 username@host
host可使用IP,網羅地址,通配符(_%);
CREATE USER ‘username’@‘hostname’
創建用戶,設置密碼
CREATE USER ‘soars’@’192.168.%.% identified by ‘123’’
刪除用戶
DROP USER ‘soars’@’192.168.%.%’
用戶授權:
GRANT priv1, on dbname.table to ‘user’@’host’[Identified by password
如果用戶不存在,就創建此賬號並授權。
ALL [PRIVILEDGE]
查看用戶已獲得的授權
收回授權:REVOKE
REVOKE 權限 on dbname.tablename from user@host