資料庫學習紀要(二十) MySQL簡介 4

2021-12-30 10:54:08 字數 3789 閱讀 7419

4)條件判斷函式

4.1. if(expr,v1,v2)函式中,如果表示式expr成立,返回結果v1;否則返回結果v2

select id,grade,if(grade>=60,'pass','fail') from t6;

4.2. ifnull(v1,v2)函式中,如果v1的值不為空,就顯示v1的值;否則就顯示v2的值。

select id,ifnull(grade,'no grade') from t6;

4.3. case函式:

例1case when expr1 then v1 [when expr2 then v2...][else vn] end

例2case expr when e1 then v1 [when e2 then v2...] [else vn] end

5)系統資訊函式

5.1. version()函式返回資料庫的版本號;connection_id()函式返回伺服器的連線數,也就是到現在為止mysql服務的連線次數;datebase()和schema()返回當前資料庫名

5.2. user()、system_user()、session_user()、current_user和current_user這幾個函式可以返回當前使用者的名稱

5.3. charest(str)函式返回字串str的字符集,一般情況這個字符集就是系統的預設字符集;collation(str)函式返回字串str的字元排列方式

5.4. last_insert_id()函式返回最後生成的auto_increment值

6)加密函式

6.1. password(str)函式可以對字串str進行加密,主要用於給使用者的密碼加密

mysql>select password('abcd');

6.2. md5(str)函式可以對字串str進行加密,主要用於對普通的資料進行加密

mysql>select md5('abcd');

6.3. encode(str,pswd_str)函式可以使用字串pswd_str來加密字串str。加密的結果是乙個二進位制數,必須使用blob型別的字段來儲存它

6.4. edcode(crypt_str,pswd_str)函式可以使用字串pswd_str來為crypt_str解密。crypt_str是通過encode(str,pswd_str)加密後的二進位制資料

7)其它函式

7.1. 格式化函式format(x,n),可以將數字x進行格式化,保留到小數點後n位

7.2. ascii(s)返回字串s的第乙個字元的ascii碼;bin(x)返回x的二進位制編碼;hex(x)返回x的十六進製制編碼;oct(x)返回x的八進位制編碼;conv(x,f1,f2)將x從f1進製數變成f2進製數

7.3. inet_aton(ip)函式可以將ip位址轉換為數字表示;inet_ntoa(n)函式可以將數字n轉換成ip的形式。其中inet_aton(ip)函式中ip值需要加上引號

7.4. get_loct(name,time)函式定義乙個名稱name、持續時間為time秒的鎖,如果鎖定成功,返回1;如果嘗試超時,返回0;如果遇到錯誤,返回null。release_lock(name)函式解除名稱為name的鎖,如果解鎖成功,返回1;如果嘗試超時,返回0;如果解鎖失敗,返回null。is_free_lock(name)函式判斷是否使用名稱為name的鎖,如果使用,返回0;否則,返回1

7.5. benchmark(count,expr)函式將表示式expr重複實行count次,然後返回執行時間。該函式可以用來判斷mysql處理表示式的速度

7.6. convert(s using cs)函式將字串s的字符集變成cs

例將字串「abc」的字符集變成gbk

convert('abc' using gbk);

7.7. cast(x as type)和convert(x,type)這兩個函式將x變成type型別

8)mysql使用者管理

8.1. user表:可以使用desc語句來檢視user表的基本結構,user表有39各欄位。這些字段大致分為四類,分別是使用者列、許可權列、安全列、資源控制列

8.2. db表和host表:db表中儲存了某個使用者對乙個資料庫的許可權,欄位是使用者列和許可權列

8.3. tables_priv表可以對單個表進行許可權設定,columns_priv表可以對單個資料列進行許可權設定

8.4. procs_priv表可以儲存過程和儲存函式進行許可權設定

9)賬戶管理

9.1. 使用者可以通過mysql命令來登陸mysql伺服器

9.2. 在mysql資料庫中,可以使用create user語句來建立新的使用者,也可以直接在mysql.user表中新增使用者,還可以使用grant語句來新建使用者

9.3. 用drop user語句或delete語句來刪除普通使用者

9.4. 使用mysqladmin命令來修改root使用者的密碼,或修改mysql資料庫下的user表,或使用set語句來修改root使用者的密碼

9.5. root使用者登陸mysql伺服器後,可以通過set語句、修改uesr表和grant語句來修改普通使用者的密碼

9.6. 普通使用者修改自己的密碼

set password=password('new_password');

9.7. root使用者密碼丟失後按步驟執行:使用--skip-grant-tables選項啟動mysql服務//登陸root使用者,並且設定新的密碼//載入許可權表

10)許可權管理

10.1.mysql中使用grant關鍵字來為使用者設定許可權,注:必須擁有grant許可權的使用者才可以執行grant語句

10.2.mysql中使用revoke關鍵字來收回許可權

10.3.mysql中可以使用select語句來查詢user表中各使用者的許可權,也可以直接使用show grants語句來檢視許可權

11)資料備份與還原

11.1.mysqldump命令可以將資料庫中的資料備份成乙個文字檔案

11.2.管理員通常使用mysqldump命令將資料庫中的資料備份成乙個文字檔案,通常這個檔案的字尾名是sql。備份檔案中通常包含create語句和insert語句。通過create語句來建立資料庫和表,通過insert語句來插入備份的資料。

mysql -u root -p [dbname] < backup.sql

12)表的匯出和匯入

12.1.使用select...into outfile語句將表的內容匯出成乙個文字檔案

select [列名] from table[where語句]

into outfile'目標檔案'[option];

12.2. 使用load data infile命令將文字檔案匯入到mysql資料庫中

load data [local] infile file into table table [option];

13)mysql日誌

13.1.二進位制日誌,也叫作變更日誌(update log),主要用於記錄資料庫的變化情況

檢視二進位制日誌,使用mysqlbinlog命令

mysqlbinlog filename.number

13.2.二進位制日誌記錄了使用者對資料庫中資料的改變。如insert語句、update語句、create語句等都會記錄到二進位制日誌中。一旦資料庫遭到破壞,可以使用二進位制日誌來還原資料庫

mysqlbinlog filename.number | mysql -u root -p

13.3.錯誤日誌主要用來記錄mysql服務的開啟、關閉和錯誤資訊

13.4.通用查詢日誌用來記錄使用者的所有操作,包括啟動和關閉mysql服務、更新語句、查詢語句等

13.5.慢查詢日誌用來記錄執行時間超過指定時間的查詢語句。通過慢查詢日誌,可以查詢處哪些查詢語句的執行效率很低,以便進行優化

資料庫學習紀要(十七) MySQL簡介 1

1 mysql資料型別 整數型別 浮點數型別 定點數型別 日期和時間型別 字串型別和二進位制資料型別。1 整數型別 integer 4位元組數 和smallint 2位元組數 此外還擴充套件支援tinyint 1位元組數 mediumint 3位元組數 bigint 8位元組數 2 浮點數型別 單精...

MySQL資料庫瓶頸簡析

查詢與索引優化分析 在優化mysql時,通常需要對資料庫進行分析,常見的分析手段有慢查詢日誌,explain 分析查詢,profiling分析以及show命令查詢系統狀態及系統變數,通過定位分析效能的瓶頸,才能更好的優化資料庫系統的效能。效能瓶頸定位show命令 我們可以通過show命令檢視mysq...

MySQL高階 Mysql資料庫儲存引擎簡介

innodb儲存引擎 innodb是mysql的預設事務型引擎,它被設計用來處理大量的短期 short lived 事務。除非有非常特別的原因需要使用其他的儲存引擎,否則應該優先考慮innodb引擎。行級鎖,適合高併發情況 myisam儲存引擎 myisam提供了大量的特性,包括全文索引 壓縮 空間...