nginx快取切片與負載
阿新 • • 發佈:2020-12-17
Mysql
DQL:查詢預計
1.排序查詢
- 語法: order by 子句1 排序方式,子句2 排序方式
- 升序:order by 子句 ASC (預設)
- 降序:order by 子句 DESC
2.聚合函式
1. count:計算個數
* SELECT COUNT(列名) FROM 表名
2. max:計算最大值
3. min:計算最小值
4. sum:求和
5. avg:計算平均值
3.分組查詢
- 語法:group by 分組欄位;
4.分頁
- 語法:limit 開始索引,每頁查詢記錄數
- SELECT * FROM 表名 LIMIT 0,3;
- 開始索引計算:(當前頁面-1)*每頁記錄數
約束
-
概念:
- 對錶中的資料進行限定,保證資料的正確性、有效性和完整性
-
分類:
- 主鍵約束:primary key
- 自增:auto_increment
- 非空約束:not null
- 唯一約束:unique
- 外來鍵約束:foreign key
- 主鍵約束:primary key
-
加入約束:
-
建立表時新增約束
-
CREATE TABLE 表名{
id INT,
name varchar(20) NOT NULL -- 非空約束
}
-
-
修改欄位時修改約束
- ALTER TABLE 表名 MODIFY 欄位名 欄位型別 約束
-
多表之間的關係
1. 一對一 2. 一對多 3. 多對多
正規化
- 概念:設計將資料庫時,需要遵循一些規範
- 分類:
- 第一正規化:每一列都是不可分割的原子項
- 第二正規化:非碼屬性必須完全依賴於候選碼
- 第三正規化: 解決傳遞依賴
資料庫備份和還原
1. 備份:mysqldump -u使用者名稱 -p密碼 > 儲存路徑
2. 還原:
1. 登入資料庫
2. 建立資料庫
3. 使用資料庫
4. 執行檔案:source 檔案路徑
多表查詢
1. 內連線查詢: 1. 隱式內連線:from兩張表,where使用關聯列判斷 2. 顯示內連線:from一張表 inner join 加入的表 on 條件 2. 外連線查詢: 1. 左外: from一張表 left join 加入的表 on 條件 2. 右外:from一張表 right join 加入的表 on 條件 1. 子查詢:括號裡執行語句,可以代表條件、表等
事務
1. 事務的基本介紹:
1. 概念:如果一個包含多個步驟的業務步驟,被事管理時,這些步驟同時成功或同時失敗
2. 操作:
1. 開啟事務:start transaction;
2. 回滾事務:rollback;
3. 提交事務:commit;
3. mysql修改提交方式:
1. 檢視事務提交方式:SELECT @@autocommit; --1自動 0手動
2. 修改:SET @@autocommit = 0;
2. 事務的四大特徵
1. 原子性:是不可分割的最小操作單位,同時成功或失敗
2. 永續性:事務結束後資料庫會發生永續性變化
3. 隔離性:多個事務之間,相互獨立
4. 一致性:事務操作前後資料總量不變
3. 事務的隔離級別
1. 概念:
1. 多個事務之間是隔離的,相互獨立的,但是多個事務操作同一批資料則會引發一些問題,設定不同的隔離級別可以解決這些問題
2. 存在問題:
1. 髒讀:一個事務讀取到另一個事務中沒有提交的資料
2. 不可重複讀:同一個事務中,兩次讀取的資料不一致
3. 幻讀:一個事務操作(DML)資料表中所有記錄,另一個事務新增一條資料,則第一個事務查詢不到自己的修改
3. 隔離級別:
1. read uncommitted:讀未提交
1. 髒讀、不可重複讀、幻讀
2. read committed:讀已提交
1. 不可重複讀、幻讀
3. repeatable read: 可重複度
1. 幻讀
4. serializable: 序列化
1. 可解決所有問題
4. 資料設定隔離級別:
1. 查詢:select @@tx_isolation;
2. 設定:set global transaction isolation level 級別字串
DCL
1. 管理使用者
1. 新增使用者
1. CREATE USER '使用者名稱'@'主機名' IDENTIFIED BY ’密碼‘;
2. 刪除使用者
1. DROP USER '使用者名稱'@'主機名';
3. 修改使用者密碼
1. update user set password = PASSWORD('新密碼') WHERE user = '使用者名稱';
2. SET PASSWORD FOR '使用者名稱'@'主機名' = PASSWORD('新密碼');
3. 忘記密碼後:
1. cmd 執行:net stop mysql
2. 啟動mysql無驗證:mysqld --skip-grant-tables
3. 開啟新的cmd視窗不輸入密碼登入
4. 修改密碼
5. 關閉nysqld服務
6. net start mysql
4. 查詢使用者:
1. 切換到mysql資料庫:use mysql;
2. 查詢user表:SELECT * FROM user
2. 授權
1. 查詢許可權:
1. show grants for '使用者名稱'@'主機名';
2. 授予許可權:
1. grant 許可權列表 on 資料庫名稱.表名 to '使用者名稱'@'主機名';
2. 許可權列表可是使用ALL
3. 撤銷許可權
1. revoke 許可權列表 on 資料庫名.表名 from '使用者名稱'@'主機名';