1. 程式人生 > 實用技巧 >nginx快取切片與負載

nginx快取切片與負載

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)*每頁記錄數

約束

  • 概念:

    • 對錶中的資料進行限定,保證資料的正確性、有效性和完整性
  • 分類:

    1. 主鍵約束:primary key
      1. 自增:auto_increment
    2. 非空約束:not null
    3. 唯一約束:unique
    4. 外來鍵約束:foreign key
  • 加入約束:

    1. 建立表時新增約束

      • CREATE TABLE 表名{

        ​ id INT,

        ​ name varchar(20) NOT NULL -- 非空約束

        }

    2. 修改欄位時修改約束

      • ALTER TABLE 表名 MODIFY 欄位名 欄位型別 約束

多表之間的關係

1. 一對一
2. 一對多
3. 多對多

正規化

  • 概念:設計將資料庫時,需要遵循一些規範
  • 分類:
    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 '使用者名稱'@'主機名';