• 沒有找到結果。

第 10 章 MySQL 指令與函數

N/A
N/A
Protected

Academic year: 2021

Share "第 10 章 MySQL 指令與函數"

Copied!
116
0
0

加載中.... (立即查看全文)

全文

(1)

第 10 章

MySQL 指令與函數

(2)

本章宗旨

介紹主控端應用程式功能與使用說明

簡介 MySQL 之 SQL 指令型式與語法

簡介 MySQL 之專數函數型式與用法

(3)

大 綱

10-1 主控端應用程式 10-2 SQL 指令

10-3 MySQL 專屬函數

(4)

10-1 主控端應用程式

( 續 )

主控端應用程式( Client Utility Program ),

是 MySQL 提供給使用者在無其他應用介面程

式輔助下,直接在 DOS 命令列操作 MySQL

伺服器或資料庫之指令

(5)

10-1 主控端應用程式

( 續 )

10-1-1 myisampack

語法: c:\mysql\bin> myisampack [Options]

索引表名…

用途:將資料表壓縮成唯讀型式,檔案較小,

讀取時間較為節省

10-1-2 mysql

語法: c:\mysql\bin>mysql –u 帳號 – p 密碼 資料庫名 [Options]

用途:以交談型式執行 SQL 指令,如第三章教

(6)

10-1 主控端應用程式

( 續 )

10-1-3 mysqladmin

語法: c:\mysql\bin>mysqladmin [Options] 指 令 [ 指令選項參數 ] 指令 [ 指令選項參數 ]…

用途:伺服器管理程式

10-1-4 mysqlbinlog

語法: c:\mysql\bin>mysqlbinlog [Options] 日 誌檔 …

(7)

10-1 主控端應用程式

( 續 )

10-1-5 mysqlcheck

語法: c:\mysql\bin>mysqlcheck [Options] 資 料庫名 [ 資料表名 ]

用途:資料表檢查與修復程式

10-1-6 mysqldump

語法: c:\mysql\bin> mysqldump [Options] 資 料庫名 [ 資料表名 ]

用途:資料庫及 / 或資料表下載管理程式

(8)

10-1 主控端應用程式

( 續 )

10-1-7 mysqlimport

語法: c:\mysql\bin>mysqlimport [Options] 資 料庫名 文字檔 1 [ 文字檔 2] …

用途:將 TextFile 文字檔內容輸入在與文字檔 同名之資料表

10-1-8 mysqlshow

語法: c:\mysql\bin>mysqlshow [Options] [ 資 料庫名 [ 資料表名 [ 欄名 ]]]

(9)

10-1 主控端應用程式

( 續 )

10-1-9 perror

語法: c:\mysql\bin>perror [Options] 錯誤代號

用途:顯示指定代號之錯誤信息

(10)

10-2 SQL 指令

10-2-1 資料操作 10-2-2 資料定義 10-2-3 公用指令

10-2-4 交易與鎖表指令

10-2-5 資料庫管理指令

(11)

10-2-1 資料操作

DELETE :刪除記錄

語法: DELETE [LOW_PRIORITY] [QUICK] [IG NORE] FROM tbl_name[WHERE where_defin ition][ORDER BY ...][LIMIT row_count];

DO :執行類似 Select 指令,但不回傳結果,

速度較快

語法: DO expr [, expr] ...

(12)

10-2-1 資料操作

( 續 )

INSERT :新增紀錄

語法: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]

[INTO] tbl_name [(col_name,...)]

VALUES ({expr | DEFAULT},...),(...),...

[ ON DUPLICATE KEY UPDATE col_name = expr, ... ]

(13)

10-2-1 資料操作

( 續 )

LOAD DATA INFILE :將文字檔載入資料表

語法: LOAD DATA [LOW_PRIORITY | CONCURREN T] [LOCAL]

INFILE 'file_name' [REPLACE | IGNORE]

INTO TABLE tbl_name

[FIELDS [TERMINATED BY '\t'] [[OPTIONALLY] ENCL OSED BY ''] [ESCAPED BY '\\' ] ]

[LINES [STARTING BY ''] [TERMINATED BY '\n'] ] [IG NORE number LINES] [(col_name,...)]

(14)

10-2-1 資料操作

( 續 )

REPLACE :與 Insert 指令相同,但若有 Pri

mary 或 Unique 索引表時,舊紀錄將會被新紀 錄取代

語法: REPLACE [LOW_PRIORITY | DELAYE D] [INTO] tbl_name [(col_name,...)]

VALUES ({expr | DEFAULT},...),(...),...

(15)

10-2-1 資料操作

( 續 )

SELECT :查詢資料表紀錄或將它取出後存成文字檔

語法: SELECT

[ALL | DISTINCT | DISTINCTROW ]

[HIGH_PRIORITY] [STRAIGHT_JOIN]

[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUF FER_RESULT]

[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_

ROWS]select_expr, ... [INTO OUTFILE 'file_name' exp ort_options | INTO DUMPFILE 'file_name']

[FROM table_references

(16)

SELECT

[WHERE where_definition]

[GROUP BY {col_name | expr | position} [ASC | DES C], ... [WITH ROLLUP]]

[HAVING where_definition]

[ORDER BY {col_name | expr | position} [ASC | DES C] , ...]

[LIMIT {[offset,] row_count | row_count OFFSET offse t}]

(17)

10-2-1 資料操作

( 續 )

JOIN :結合兩個以上之關聯型資料表

語法: Select 指令內 From 之 table_reference 可搭配 下列型式:

table_reference, table_reference

table_reference [INNER | CROSS] JOIN table_referen ce [join_condition]

table_reference STRAIGHT_JOIN table_reference

table_reference LEFT [OUTER] JOIN table_reference

(18)

JOIN

( 續 )

table_reference NATURAL [LEFT [OUTER]] JOI N table_reference { OJ table_reference LEFT OUTER JOIN table_reference ON conditional_

expr }

table_reference RIGHT [OUTER] JOIN table_re ference [join_condition]

table_reference NATURAL [RIGHT [OUTER]] J

(19)

JOIN

( 續 )

上述之 table_reference 被定義為:

tbl_name [[AS] alias] [[USE INDEX (key_list)] | [IGNORE INDEX (key_list)] | [FORCE INDEX (k ey_list)]]

上述之 join_condition 被定義為:

ON conditional_expr | USING (column_list)

(20)

10-2-1 資料操作

( 續 )

UNION :將數個資料表結合為一個資料表,

然後輸出資料

語法: SELECT ...UNION [ALL | DISTINCT]SEL ECT ... [UNION [ALL | DISTINCT] SELECT ...]

(21)

10-2-1 資料操作

( 續 )

子查詢

(Subquery )

語法:在 Select 指令之 Where 子句內,加入另 一個 Select 指令

用途:將在後面之 Select 指令的輸出結果,作為 前段 Select 指令之資料比對條件

(22)

10-2-1 資料操作

( 續 )

TRUNCATE :刪除整個資料表紀錄

語法: TRUNCATE TABLE tbl_name

(23)

10-2-1 資料操作

( 續 )

UPDATE :更新單一資料表紀錄

語法一:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_na me

SET col_name1=expr1 [, col_name2=expr2 ...]

[WHERE where_definition][ORDER BY ...][LIM IT row_count]

(24)

10-2-1 資料操作

( 續 )

UPDATE :以關聯型式更新資料表紀錄

語法二:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_nam e [, tbl_name ...] SET col_name1= expr1 [, col _name2 =expr2 ...] [WHERE where_definitio n]

(25)

10-2-2 資料定義

1. ALTER DATABASE

語法:

ALTER {DATABASE | SCHEMA} [db_name]alte r_specification [, alter_specification] ...

其中 alter_specification 有下述選項:

[DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name

用途:修改資料庫定義及屬性

(26)

10-2-2 資料定義

( 續 )

2. ALTER TABLE

語法: ALTER [IGNORE] TABLE tbl_name alter _specification [, alter_specification] ...

其中 alter_specification 有下述選項:

ADD [COLUMN] column_definition [FIRST | AF TER col_name ]

| ADD [COLUMN] (column_definition,...)

(27)

ALTER TABLE ( 續 )

| ADD [CONSTRAINT [symbol]]

PRIMARY KEY [index_type] (index_col_nam e,...)

| ADD [CONSTRAINT [symbol]] UNIQUE [index_na me] [index_type] (index_col_name,...)

| ADD [FULLTEXT|SPATIAL] [index_name] (index_col_

name,...)

| ADD [CONSTRAINT [symbol]]

FOREIGN KEY [index_name] (index_col_name,...)

(28)

ALTER TABLE( 續 )

| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

| CHANGE [COLUMN] old_col_name

column_definition [FIRST|AFTER col_name]

| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]

(29)

ALTER TABLE ( 續 )

| DROP [COLUMN] col_name

| DROP PRIMARY KEY

| DROP INDEX index_name

| DROP FOREIGN KEY fk_symbol

| DISABLE KEYS

| ENABLE KEYS

| RENAME [TO] new_tbl_name

| ORDER BY col_name

(30)

ALTER TABLE ( 續 )

| CONVERT TO CHARACTER SET charset_na me [COLLATE collation_name]

| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]

| DISCARD TABLESPACE | IMPORT TABLESPACE | table_options

(31)

10-2-2 資料定義

( 續 )

3. CREATE DATABASE :建立資料庫 ( 或綱要

集 )

語法: CREATE {DATABASE | SCHEMA} [IF N OT EXISTS] db_name [create_specification [, create_specification] ...]

其中 create_specification 有下述選項: [D EFAULT] CHARACTER SET charset_name

| [DEFAULT] COLLATE collation_name

(32)

10-2-2 資料定義

( 續 )

4. CREATE INDEX :建立索引表

語法: CREATE [UNIQUE|FULLTEXT|SPATIA L] INDEX index_name [USING index_type] O N tbl_name (index_col_name,...)

其中 index_col_name 可定義為: col_name [(l ength)] [ASC | DESC]

(33)

10-2-2 資料定義

( 續 )

5. CREATE TABLE :建立資料表

語法: CREATE [TEMPORARY] TABLE [IF NOT EXI STS] tbl_name [(create_definition,...)] [table_optio ns] [select_statement]

其中 create_definition 由下列元素組成:

5.1 column_definition 5 .2 column_definition

5.3 type

5.6 reference_option 5.7 table_options:

table_option table_option] ...

(34)

CREATE TABLE

( 續 )

5.1 column_definition 可定義為:

| [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_na me,...)

| KEY [index_name] [index_type] (index_col_name,...) | INDEX [index_name] [index_type] (index_col_name,...)

| [CONSTRAINT [symbol]] UNIQUE [INDEX] [index_name] [index_typ e] (index_col_name,...)

| [FULLTEXT|SPATIAL] [INDEX] [index_name] (index_col_name,...) | [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_

name,...) [reference_definition]

(35)

CREATE TABLE

( 續 )

5.2 column_definition 可定義為:

col_name type [NOT NULL | NULL] [DEFAULT default_v alue]

[AUTO_INCREMENT] [[PRIMARY] KEY] [COMMENT 'st ring']

[reference_definition]

(36)

CREATE TABLE

( 續 )

5.3 type 可定義為:

TINYINT[(length)] [UNSIGNED] [ZEROFILL]

| SMALLINT[(length)] [UNSIGNED] [ZEROFILL]

| MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]

| INT[(length)] [UNSIGNED] [ZEROFILL]

| INTEGER[(length)] [UNSIGNED] [ZEROFILL]

| BIGINT[(length)] [UNSIGNED] [ZEROFILL]

| REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]

(37)

5.3 type

( 續 )

| DATE | TIME | TIMESTAMP | DATETIME | CHAR(length) [BINARY | ASCII | UNICODE]

| VARCHAR(length) [BINARY]

| TINYBLOB | BLOB | MEDIUMBLOB | LONGBLOB | TINYTEXT | TEXT | MEDIUMTEXT | LONGTEXT | ENUM(value1,value2,value3,...)

| SET(value1,value2,value3,...) | spatial_type

(38)

CREATE TABLE

( 續 )

5.4 index_col_name 可定義為:

col_name [(length)] [ASC | DESC]

5.5 reference_definition 可定義為:

REFERENCES tbl_name [(index_col_name,...)]

[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]

[ON DELETE reference_option]

(39)

CREATE TABLE

( 續 )

5.6 reference_option 可定義為:

RESTRICT | CASCADE | SET NULL | NO ACTI ON | SET DEFAULT

5.7 table_options:

table_option [table_option] ...

5.9 select_statement 可定義為:

[IGNORE | REPLACE] [AS] SELECT ...

(40)

CREATE TABLE

( 續 )

5.8 table_option 可定義為:

{ENGINE|TYPE} = {BDB|HEAP| ISAM|InnoDB| MERGE| MRG _MYISAM| MYISAM}

| AUTO_INCREMENT = value

| AVG_ROW_LENGTH = value

| CHECKSUM = {0 | 1}

| COMMENT = 'string'

| MAX_ROWS = value

| MIN_ROWS = value

(41)

5.8 table_option

( 續 )

| ROW_FORMAT = {DEFAULT| DYNAMIC| FIXED| COM PRESSED| REDUNDANT| COMPACT}

| RAID_TYPE = { 1 | STRIPED | RAID0 } RAID_CHUNKS = value

RAID_CHUNKSIZE = value

| UNION = (tbl_name[,tbl_name]...)

| INSERT_METHOD = { NO | FIRST | LAST }

| DATA DIRECTORY = 'absolute path to directory'

| INDEX DIRECTORY = 'absolute path to directory'

| [DEFAULT] CHARACTER SET charset_name [COLLAT

(42)

10-2-2 資料定義

( 續 )

6. DROP DATABASE :刪除資料庫 ( 或綱要集 )

語法: DROP {DATABASE | SCHEMA}

[IF EXISTS] db_name)

7. DROP INDEX :刪除索引表

語法: DROP INDEX index_name ON tbl_name

(43)

10-2-2 資料定義

( 續 )

8. DROP TABLE :刪除資料表

語法: DROP [TEMPORARY] TABLE [IF EXISTS]

tbl_name [, tbl_name] ...

[RESTRICT | CASCADE]

9. RENAME TABLE :資料表改名

語法: RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ...

(44)

10-2-3 公用指令

1. DESCRIBE :顯示資料表欄位資訊

語法: {DESCRIBE | DESC} tbl_name [col_nam e | wild]

2. USE :啟用(切換)資料庫

語法: USE db_name

(45)

10-2-4 交易與鎖表指令

1. START TRANSACTION/COMMIT/ROLLBACK

語法:指令範例

SET AUTOCOMMIT=0; (將自動確認開關關閉)

START TRANSACTION; (與上列指令等效)

SELECT @A:=SUM(salary) FROM table1 WHERE type=1;

UPDATE table2 SET summary=@A WHERE type=1;

(更新資料)

COMMIT; (更新確認)

ROLLBACK; 取消更新)

用途:用於交易型資料表紀錄更新,例如 InnoDB 或 BDB 資

(46)

10-2-4 交易與鎖表指令

( 續 )

2. LOCK TABLES/UNLOCK TABLES

語法: LOCK TABLES tbl_name [AS alias] {RE AD [LOCAL] | [LOW_PRIORITY] WRITE} [, t bl_name [AS alias] {READ [LOCAL] | [LOW_P RIORITY] WRITE}] ...;UNLOCK TABLES;

用途:異動資料時鎖定資料表,資料處理完後再 予以解鎖

(47)

10-2-4 交易與鎖表指令

( 續 )

3. SET TRANSACTION

語法: SET [GLOBAL | SESSION] TRANSACTI ON ISOLATION LEVEL{ READ UNCOMMITT ED | READ COMMITTED | REPEATABLE RE AD | SERIALIZABLE }

用途:設定交易隔離模式,下一個交易指令正式 生效

(48)

10-2-5 資料庫管理指令

1. 帳號管理指令 2. 資料表管理

3. SET( 設定變數值 )

4. SHOW( 顯試示環境參數 ) 5. 其他管理類

6. 伺服器管理指令

(49)

1. 帳號管理指令

DROP USER :刪除帳號

語法: DROP USER user [, user] ...

REVOKE :撤除權限

語法: REVOKE priv_type [(column_list)] [, priv_type [(column _list)]] ...

ON {tbl_name | * | *.* | db_name.*}

FROM user [, user] ...

或: REVOKE ALL PRIVILEGES, GRANT OPTION FROM us er [, user] ...

SET PASSWORD :設定或變更密碼

語法: SET PASSWORD = PASSWORD (' 密碼’ )

(50)

1. 帳號管理指令

( 續 )

GRANT :授與權限

語法: GRANT priv_type [(column_list)] [, priv_type [(colum n_list)]] ...

ON {tbl_name | * | *.* | db_name.*}

TO user [IDENTIFIED BY [PASSWORD] 'password']

[, user [IDENTIFIED BY [PASSWORD] 'password']] ...

[REQUIRE NONE | [{SSL| X509}] [CIPHER 'cipher' [AN D]] [ISSUER 'issuer' [AND]] [SUBJECT 'subject']]

[WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR

(51)

2. 資料表管理

ANALYZE TABLE :分析資料表

語法: ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] T ABLE tbl_name [, tbl_name] ...

BACKUP TABLE :備份資料表

語法: BACKUP TABLE tbl_name [, tbl_name] ... TO '/pa th/to/backup /directory'

CHECK TABLE :檢查資料表

語法: CHECK TABLE tbl_name [, tbl_name] ... [option]

...option = {QUICK | FAST | MEDIUM | EXTENDED | C

(52)

2. 資料表管理

( 續 )

CHECKSUM TABLE :提示 MyISAM 資料表之 checks um 值

語法: CHECKSUM TABLE tbl_name [, tbl_name] ... [ Q UICK | EXTENDED ]

OPTIMIZE TABLE :整理資料表

語法: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] T ABLE tbl_name [, tbl_name] ...

(53)

2. 資料表管理

( 續 )

REPAIR TABLE :修復資料表

語法: REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TA BLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED]

[USE_FRM]

RESTORE TABLE :將 Backup 資料表重新載入

語法: RESTORE TABLE tbl_name [, tbl_name] ... FRO M '/path/to/backup/directory'

(54)

3. SET

語法: SET variable_assignment [, variable_ass ignment] ...

其中 variable_assignment 可定義為:

user_var_name = expr

| [GLOBAL | SESSION] system_var_name = expr

| @@[global. | session.]system_var_name = expr

(55)

4. SHOW

用於顯示系統參數設定值或狀態值

4.1 SHOW CHARACTER SET

語法: SHOW CHARACTER SET [LIKE ‘pattern’]

用途:顯示所有可用字元集

4.2 SHOW COLLATION

語法: SHOW COLLATION [LIKE ‘pattern’]

用途:顯示所有可用字元集及其附屬字元集

4.3 SHOW COLUMNS

語法: SHOW [FULL] COLUMNS FROM tbl_name [FRO M db_name] [LIKE 'pattern']

用途:顯示資料表欄位資訊

(56)

4. SHOW

( 續 )

4.4 SHOW CREATE DATABASE

語法: SHOW CREATE {DATABASE | SCHEMA} db_name 用途:顯示建立資料庫指令

4.5 SHOW CREATE TABLE

語法: SHOW CREATE TABLE tbl_name 用途:顯示建立資料表指令

4.6 SHOW DATABASES

語法: SHOW {DATABASES | SCHEMAS} [LIKE 'pattern']

(57)

4. SHOW

( 續 )

4.7 SHOW ENGINES

語法: SHOW [STORAGE] ENGINES 用途:顯示儲存引擎資訊

4.8 SHOW ERRORS

語法一: SHOW ERRORS [LIMIT [offset,] row_count]

用途:顯示錯誤信息

語法二: SHOW COUNT(*) ERRORS 用途:計算錯誤個數

4.9 SHOW GRANTS

語法: SHOW GRANTS FOR user 用途:顯示指定帳戶之權限

(58)

4. SHOW

( 續 )

4.10 SHOW INDEX

語法: SHOW INDEX FROM tbl_name [FROM db_name]

用途:顯示指定資料表之索引表資訊

4.11 SHOW INNODB STATUS

語法: SHOW INNODB STATUS

用途:顯示 INNODB 資料表之完整資訊

4.12 SHOW LOGS

語法: SHOW [BDB] LOGS

(59)

4. SHOW

( 續 )

4.13 SHOW PRIVILEGES

語法: SHOW PRIVILEGES

用途:顯示目前伺服器支援的權限型態資訊

4.14 SHOW PROCESSLIST

語法: SHOW [FULL] PROCESSLIST 用途:顯示目前連線中的執行緒

4.15 SHOW STATUS

語法: SHOW STATUS [LIKE 'pattern']

(60)

4. SHOW

( 續 )

4.16 SHOW TABLE STATUS

語法: SHOW TABLE STATUS [FROM db_name] [LIKE 'patt ern']

用途:顯示資料表的狀態資訊,類似 Show Table 指令但更完

4.17 SHOW TABLES

語法: SHOW [FULL|OPEN] TABLES [FROM db_name] [LIK E 'pattern']

用途:顯示資料表(不包含暫存表)的狀態資訊

(61)

4. SHOW

( 續 )

4.19 SHOW WARNINGS

語法一: SHOW WARNINGS [LIMIT [offset,] row_count 用途:顯示錯誤、警告及備註等信息

語法二: SHOW COUNT(*) WARNINGS 用途:顯示錯誤、警告及備註等信息之個數

(62)

5. 其他管理類

CACHE INDEX

語法: CACHE INDEX tbl_index_list [, tbl_index_list] ... IN ke y_cache_name

其中 tbl_index_list 可定義為: tbl_name [[INDEX|KEY] (ind ex_name[, index_name] ...)]

用途:將索引表上存至指定之快取內,只適用於 MyISAM 資 料表

KILL

(63)

5. 其他管理類

FLUSH

語法: FLUSH [LOCAL | NO_WRITE_TO_BINLOG] flush_op tion [, flush_option] ...

其中 flush_option 可以設定為: HOSTS , DES_KEY_FILE

LOGS , PRIVILEGES , QUERY CACHE , STATUS

{TABLE | TABLES} [tbl_name [, tbl_name] ...] , TABLE S WITH READ LOCK , USER_RESOURCES

用途:將快取資訊沖回至對應檔案

(64)

5. 其他管理類

LOAD INDEX INTO CACHE

語法: CACHE INDEX tbl_index_list [, tbl_index_list] ... IN ke y_cache_name

其中 tbl_index_list 可以設定為: tbl_name [[INDEX|KEY]

(index_name[, index_name] ...)]

用途:將索引表預存至指定之快取內,只適用於 MyISAM 資 料表

RESET

語法: RESET reset_option [, reset_option] ...

(65)

6. 伺服器管理指令

6.1 主伺服器控制指令 6.2 備用伺服器控制指令

(66)

6.1 主伺服器控制指令

6.1.1 PURGE MASTER LOGS

語法一: PURGE {MASTER | BINARY} LOGS TO ‘log_n ame’

語法二: PURGE {MASTER | BINARY} LOGS BEFORE ‘ date’

用途:清除日誌檔(效期可指定為檔案序號或建檔日期)

6.1.2 RESET MASTER

語法: RESET MASTER

(67)

6.1 主伺服器控制指令

( 續 )

6.1.3 SET SQL_LOG_BIN

語法: SET SQL_LOG_BIN = {0|1}

用途:重設連線中( local )的日誌檔記錄功能( 0 : dis able , 1 : enable )

6.1.4 SHOW BINLOG EVENTS

語法: SHOW BINLOG EVENTS [IN 'log_name'][FROM pos] [LIMIT [offset,] row_count]

用途:顯示指名日誌檔內之事件資訊

6.1.5 SHOW MASTER LOGS

語法: SHOW MASTER LOGS / SHOW BINARY LOGS

(68)

6.1 主伺服器控制指令

( 續 )

6.1.6 SHOW MASTER STATUS

語法: SHOW MASTER STATUS

用途:顯示主伺服器內之日誌檔狀態資訊

6.1.7 SHOW SLAVE HOSTS

語法: SHOW SLAVE HOSTS

用途:列示登錄在主伺服器之備用伺服器

(69)

6.2 備用伺服器控制指令

6.2.1 CHANGE MASTER TO

語法: CHANGE MASTER TO master_def [, master_def] … 其中 master_def 可定義為:

MASTER_HOST = 'host_name'

| MASTER_USER = 'user_name' | MASTER_PASSWOR D = 'password'

| MASTER_PORT = port_num

| MASTER_CONNECT_RETRY = count

| MASTER_LOG_FILE = 'master_log_name' | MASTER_LOG_POS = master_log_pos

(70)

6.2.1 CHANGE MASTER TO( 續 )

| RELAY_LOG_FILE = 'relay_log_name'

| RELAY_LOG_POS = relay_log_pos

| MASTER_SSL = {0|1}

| MASTER_SSL_CA = 'ca_file_name'

| MASTER_SSL_CAPATH = 'ca_directory_name'

| MASTER_SSL_CERT = 'cert_file_name'

| MASTER_SSL_KEY = 'key_file_name'

| MASTER_SSL_CIPHER = 'cipher_list‘

(71)

6.2 備用伺服器控制指令

( 續 )

6.2.2 LOAD DATA FROM MASTER

語法: LOAD DATA FROM MASTER

用途:從主伺服器備份資料至備用伺服器,並更新 MAST

ER_LOG_FILE 和 MASTER_LOG_POS 兩個檔案,使 得備用伺服器可從正確位置開始更新資料

6.2.3 LOAD TABLE TBL_NAME FROM MASTER

語法: LOAD TABLE tbl_name FROM MASTER 用途:從主伺服器資料轉至備用伺服器

(72)

6.2 備用伺服器控制指令

( 續 )

6.2.4 RESET SLAVE

語法: RESET SLAVE 用途:清除 master.info , relay-log.inf o files ,以及所有的 relay logs 檔,後重新建立新的 relay l og 檔。

6.2.5 SET GLOBAL SQL_SLAVE_SKIP_COUNTER

語法: SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n 用

途:跳過主伺服器接下來的 n 個事件,以便復原由於某些指

令造成備份作業之中斷,只適用於備用伺服器停止時

6.2.6 SHOW SLAVE STATUS

(73)

6.2 備用伺服器控制指令

( 續 )

6.2.7 START SLAVE

語法一: START SLAVE [thread_type [, thread_type] ... ] 語法二: START SLAVE [SQL_THREAD] UNTIL MASTE

R_LOG_FILE = 'log_name', MASTER_LOG_POS = log _pos

語法三: START SLAVE [SQL_THREAD] UNTIL RELAY _LOG_FILE = 'log_name', RELAY_LOG_POS = log_p os 其中 thread_type 可設為 IO_THREAD 或 SQL_TH READ

用途:啟動備用伺服器,其中 I/O thread 從主伺服器讀 取查詢指令並儲存在 relay log 檔,而 SQL thread 從 r

(74)

6.2 備用伺服器控制指令

( 續 )

6.2.8 STOP SLAVE

語法: STOP SLAVE [thread_type [, thread_type] ... ]

其中 thread_type 可設為 IO_THREAD 可設為 SQL_THR EAD

用途:停止備用伺服器

(75)

7 預儲指令

7.1 設定指令

語法: PREPARE stmt_name FROM preparable_stmt;

用途:設定指令並儲存在記憶體

7.2 執行預儲

指令語法: EXECUTE stmt_name [USING @var_name [,

@var_name] ...];

用途:執行預儲指令

7.3 刪除預儲

指令語法: {DEALLOCATE | DROP} PREPARE stmt_na me;

(76)

10-3 MySQL 專屬函數

10-3-1 比較函數與運算子 10-3-2 流程控制函數

10-3-3 字串函數

10-3-4 字串比較函數 10-3-5 數值函數

10-3-6 日期與時間函數 10-3-7 全文檢索

10-3-8 轉型函數 10-3-9 加解密函數

10-3-10 信息處理與通訊函數 10-3-11 GROUP BY 綜合函數

(77)

10-3-1 比較函數與運算子

數值及字串比較結果將回傳 1 (TRUE) , 0 (FALSE)

,或 NULL 。 若運算式同時包含數值及字串時,必要 的話,字串將自動轉型為數值,或數值將自動轉型為 字串

字串比較時,將不區分大小寫。

數值資料可用 CAST() 函數轉型為字串,字串可用 CO NVERT() 函數轉型為其他字元集。

(78)

10-3-1 比較函數與運算子

( 續 )

運算式若包含函數時,例如 LEAST() 、 GREATEST() 等

,則回傳值不一定是 1 (TRUE), 0 (FALSE), 或 NULL , 視傳入之引數而定,其比較規則如下述:

若兩個引數有一或兩個為 NULL 時 , 則比較結果為 NULL , 除非是使用 <=> ( NULL-safe 型)等號運算子

若比較運算事中之兩個引數為字串,則以字串作比較

若比較運算事中之兩個引數為整數,則以整數作比較

(79)

10-3-1 比較函數與運算子

( 續 )

十六進位數值資料將以二進位字串而非以數值作比較

若其中一個引數為 TIMESTAMP 或 DATETIME 型,另 一個為常數,則常數將被轉為 TIMESTAMP ,但此規則 不適用於 IN() 型式。為了安全起見,儘可能以相同型式 之資料作比較

其餘型式之引數將使用浮點數(實數)作比較

(80)

10-3-1 比較函數與運算子

( 續 )

常用比較運算子:

= (Equal) :等於

<=> ( NULL-safe) :等於,但結果與 = 不完全一致

<>, != (Not equal) :不等於

<= (Less than or equal) :小於等於

< (Less than) :小於

>= (Greater than or equal) :大於等於

(81)

10-3-1 比較函數與運算子 ( 續 )

常用比較運算子:

IS Not boolean_value :不屬於 True, False, 或 Null ( 未知 )

IS Null :屬於虛值

IS Not Null :不屬於虛值

expr BETWEEN min AND max :介於 min 和 max 之間

expr Not BETWEEN min AND max :不介於 min 和 max 之間

(82)

10-3-1 比較函數與運算子 ( 續 )

常用比較運算子:

expr IN (value,...) :若 expr 在 (value,...) 之內傳回 1

,否則為 0

expr Not IN (value,...) :若 expr 不在 (value,...) 之內則 傳回 1 ,否則為 0

ISNULL(expr) :若運算式為虛值則傳回,否則為 0

INTERVAL(N,N1,N2,N3,...) : N 大於後續整數值之順

(83)

10-3-2 流程控制函數

1. Case … When … Then … Else …End

語法: CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result]

END

說明:若 compare-value 等於 value ,則傳回對應段 Then result 否則傳回 Else 之 result

2. Case When … Then … Else …End

語法: CASE WHEN [condition] THEN result [WHEN [co ndition] THEN result ...] [ELSE result] END

說明:若 condition 為真,則傳回對應段 Then 之 result 否則傳回 Else 之 result

(84)

10-3-2 流程控制函數

( 續 )

3. IF

語法: IF(expr1, expr2, expr3)

說明:若 expr1 運算式為真,則傳回 expr2 否則傳回 ex pr3

4. IFNULL

語法: IFNULL(expr1,expr2)

說明:若 expr1 運算式非虛值,則傳回 expr1 否則傳回 expr2

(85)

10-3-3 字串函數

ASCII (str) :將 str 轉成 ASCII 碼

BIN (N) :將數值 N 轉成二進制碼

BIT_LENGTH (str) :計算 str 位元數

CHAR (N,...) :將數列 N 轉成字元組

CHAR_LENGTH (str) :計算 str 字元數,若為多位元字元 時,一個字元計數一次

CHARACTER_LENGTH (str) :與 CHAR_LENGTH 函數 用法相同

(86)

10-3-3 字串函數

( 續 )

COMPRESS (string_to_compress) :將 string_to_com press 字串壓縮, MySQL 需要有類似 zlib 壓縮函數

CONCAT (str1,str2,...) :將第二個及以後字串串接在第 一個字串後面

CONCAT_WS (separator,str1,str2,...) :將第二個及以 後字串串接在第一個字串後面,但是字串間須以 separato r 間隔

CONV (N,from_base,to_base) :將數值 N 從 from_bas e 進制轉成 to_base 進制表示,若 to_base 為負值則以

(87)

10-3-3 字串函數

( 續 )

ELT (N,str1,str2,str3,...) :以數值 N 來挑選後續對應 之字串

FIELD (str,str1,str2,str3,...) :以索引鍵 str 搜尋後續 之字串集合位置

FIND_IN_SET (str,strlist) :以索引鍵 str 搜尋後續字 串之對應位置

HEX(N_or_S) :與 CONV(N, 10, 16) 用法相同

INSERT(str,pos,len,newstr) :以 newstr 取代 str , 取代位置從 pos 開始,長度為 len

INSTR (str,substr) :尋找 substr 在 str 之出現位置

(88)

10-3-3 字串函數

( 續 )

LCASE(str) :將 str 轉小寫,與 LOWER() 用法相同

LEFT (str,len) :取出字串左端字元,長度為 len

LENGTH (str) :計算字串 str 之位元數,雙位元字元計數 2

LOAD_FILE (file_name) :將文字檔匯入成字串,可直接 轉至文字型欄位

LOCATE(substr,str) , LOCATE(substr,str,pos) :尋 substr 在 str 之出現位置,若有指定 pos ,則從 pos 開

(89)

10-3-3 字串函數

( 續 )

LPAD (str,len,padstr) :將 padstr 貼在 str 左方, 總長 度為 len ,若 str 長度大於 len ,則大於 len 之右方字元將 被剪除

LTRIM (str) :去除左方空白字元

MID (str,pos,len) :與 SUBSTR(str, pos, len) 用法相同

OCT (N) :將 N 轉成八進制表示

ORD (str) :若 str 為多位元組字元,則傳回 (1st byte cod e+2nd byte code*256+3rd byte code*256^2) 之編碼,若 為單位元組字元,則直接傳回 ASCII 碼

(90)

10-3-3 字串函數

( 續 )

POSITION(substr IN str) :與 LOCATE(substr,str) 用法相同

QUOTE(str) :將 str 前後加上單引號後再輸出

REPEAT (str,n) :將 str 重複輸出 n 次

REPLACE (str,from_str,to_str) :將 str 內之字元 fro m_str 以字元 to_str 取代

REVERSE(str) :將 str 之字元反向輸出

RIGHT (str,len) :取右端字元,長度為 len

(91)

10-3-3 字串函數

( 續 )

RPAD (str,len,padstr) :將 padstr 貼在 str 右方, 總 長度為 len ,若 str 長度大於 len ,則大於 len 之右方 字元將被剪除

RTRIM (str) :去除右方空白字元

SPACE (N) :產生 N 個空白字元

SUBSTRING(str,pos) , SUBSTRING(str,pos,len)

:取子字串,從 pos 開始取,若有指定 len ,則取 len 長度字元

SUBSTRING_INDEX (str,delim,n) :以分界字元 deli m 分割字串,取出 str 字串之 n 個元素

(92)

10-3-3 字串函數

( 續 )

TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM]

str) :

將字串前後空白去除

或將前後 (BOTH) 字元 remstr 去除

或將前導 (LEADING) 字元去除

或將尾端 (TRAILING) 字元去除

UCASE(str) :將 str 轉大寫

UNCOMPRESS (str) :將以 COMPRESS 壓縮之字串 s

(93)

10-3-4 字串比較函數

CAST(N AS CHAR) :將數值 N 轉為字元

CONCAT(N) :將數值 N 轉為字元

expr LIKE pat [ESCAPE 'escape-char'] :搜尋 exp r 是否有 pat 樣板字串,樣板字串可搭配” %” 或”

_” 使用。若元字串內有” %” 或” _” 字元,則需使 用” \%” 或” \_” 當樣板

STRCMP(expr1,expr2) :比較 expr1 與 expr2 是否 相同

(94)

10-3-5 數值函數

三角函數: SIN(X) , ASIN(X) , COS(X) , ACOS(X)

TAN(X) , ATAN(X) COT(X) , DEGREES(X) , RA DIANS(X)

指數與對數: EXP(X) , LN(X) :自然對數, LOG(B, X)

:以 B 為底自然對數, LOG2(X) , LOG10(X)

ABS(X) :求絕對值

CEIL(X) :比 X 大之整數

CRC32(expr) :求 CRC 檢查碼

(95)

10-3-5 數值函數

( 續 )

FORMAT(X, D) :將數值 X 格式化,採千位加逗號形 式,小數留 D 位

MOD(N,M) , N % M , N MOD M :求餘數

PI() :求圓周率

POW(X,Y) , POWER(X,Y) :求 X 的 Y 次方值

RAND() :求亂數值, RAND(N) :以 N 當種子之亂數

ROUND(X) :將 X 四捨五入 , ROUND(X,D) :將 X 四捨五入至小數 D 位

(96)

10-3-5 數值函數

( 續 )

SIGN(X) :符號函數,小於 0 時傳回 -1 , 0 時傳回 0

,大於 0 時傳回 1

SQRT(X) :求方根

TRUNCATE(X,D) :捨去 D 位小數,若 D 為負值,

D 位以下之值取為 0

(97)

10-3-6 日期與時間函數

ADDDATE(expr, days) :求算 expr 加上 days 之日期

ADDTIME(expr,expr2) :求算 expr ( 日期時間 ) 加上 e xpr2 ( 時間 ) 之日期時間

CONVER T_TZ(dt, from_tz, to_tz) :將 dt 從時區 fro m_tz 轉換至時區 to_tz

CURDATE() :目前日期,此函數與 CURRENT_DATE CURRENT_DATE() 同義

CURTIME() :目前時間,此函數與 CURRENT_TIME CURRENT_TIME () 同義

(98)

10-3-6 日期與時間函數

( 續 )

CURRENT_TIMESTAMP/ CURRENT_TIMESTAMP() : 目前時戳,與 NOW() 同義

DATE(expr) :取出 expr 之日期

DATEDIFF(expr,expr2) :求算起始日期時間 (expr) 與截 止日期時間 expr2 之間隔日期,只計算日期部份

DATE_ADD(date,INTERVAL expr type) :計算 date 加 上間隔天數(或時、分、秒數)後之日期

DATE_SUB(date,INTERVAL expr type) :計算 date 減 去間隔天數(或時、分、秒數)後之日期

(99)

10-3-6 日期與時間函數

( 續 )

DATE_FORMAT(date, format) :將 date 轉換成對 format 之日期格式

DAY(date) :將 date 轉成數字型天數,與 DAYOFM ONTH() 同義

DAYNAME(date) :將 date 轉成文字型星期

DAYOFWEEK(date) :將 date 轉成數字型星期, 1 為星期日

DAYOFYEAR(date) : date 年度之天序

(100)

10-3-6 日期與時間函數

( 續 )

EXTRACT(type FROM date) :以 type 格式抽出數字型 日期資料,

type 可為: YEAR 、 YEAR_MONTH 、 DAY_MINUTE 、 MICROSECOND

GET_FORMAT(DATE| TIME| DATETIME, ‘EUR’| ‘USA’|

‘JIS’| ‘ISO’| ‘INTERNAL’) :取出指定格式化之日期

HOUR(time) :取出 time 引數之時數, 24 小時制

LAST_DAY(date) :取出 date 引數所屬月份最後一天之 日期

(101)

10-3-6 日期與時間函數

( 續 )

MAKEDATE(year,dayofyear) :將 dayofyear 天數 轉為 year 年度之日期

MAKETIME(hour,minute,second) :將三個引數轉 為時間型資料

MICROSECOND(expr) :取出 expr 之微秒數

MINUTE(time) :取出 time 之分鐘數

MONTH(date) :取出 date 之月數

MONTHNAME(date) :取出 date 之文字型月份

QUARTER(date) :取出 date 之季數

(102)

10-3-6 日期與時間函數

( 續 )

SECOND(time) :取出 time 之秒數

STR_TO_DATE(str,format) :將傳入之 str 轉成日期 時間, format 用法與 DATE_FORMAT() 相同

SUBDATE(expr,days) :將 expr 減去 days (天數)

之日期

SUBTIME(expr,expr2) :將 expr 減去 expr2 (時 間)之日期時間

SYSDATE() :與 NOW() 同義

(103)

10-3-6 日期與時間函數

( 續 )

TIMEDIFF(expr,expr2) :將 expr 減去 expr2 (時 間)之日期時間

TIMESTAMP(expr) :將 expr 轉為時戳

TIME_TO_SEC(time) :將 time 轉為秒數

WEEK(date[,mode]) :取出 date 之週數 WEEKDAY (date) :傳回 date 之 週星期序 (0=Monday,..)

WEEKOFYEAR(date) :傳回 date 之週次

YEAR(date) :傳回 date 之年份,四位數

(104)

10-3-7 全文檢索

MyISAM 資料表可以執行全文檢索,前提是已 建立全文型索引表( FULLTEXT )

CHAR 、 VARCHAR 、 TEXT 等欄位皆可建 立全文型索引

全文檢索含數為 MATCH()

(105)

10-3-7 全文檢索

( 續 )

1. 單純型全文檢索

語法: MATCH (col1,col2,...) AGAINST (expr) 說明:依據 expr 之條件,依序比對 col1, col2,…

是否有符合 expr 之字串。 col1, col2,… 必須與 全文索引表鍵值欄位相同,比對時相關性高的 紀錄優先列出

(106)

10-3-7 全文檢索

( 續 )

2. 複合型全文檢索

語法: MATCH (col1,col2,...) AGAINST (expr IN BOOLEAN M ODE)

說明:依據 expr 之條件,依序比對 col1, col2,… 是否有符合 ex pr 之字串。 expr 可搭配下述控制符號來建立樣板:

+ :必須包含此字串 - :排除此字串

> < :調整查詢結果之相關性, > 提升, < 降低

(107)

10-3-7 全文檢索

( 續 )

3. 隱含型全文檢索

語法: MATCH (col1,col2,...) AGAINST (expr W ITH QUERY EXPANSION)

說明:依據 expr 之條件,依序比對 col1, col2,…

是否有符合 expr 之字串,然後再以優先順位最 高之鍵值欄當鍵值,進行第二次查詢,符合一 和二次搜尋條件之紀錄,全部列出。

(108)

10-3-8 轉型函數

1. BINARY :強制改變欄位或字串之比對方式,改為逐位元 組而非逐字比對方式,因此會區分大小寫

2. Lower() , Upper() :大小寫轉換函數

3. CAST(expr AS type) , CONVERT(expr,type)

說明:將 expr 轉型為指定之 type 型態, type 可指定為下列資 料型態:

BINARY / CHAR / DATE / DATETIME /

SIGNED/ [INTEGER]/ TIME/ UNSIGNED [INTEGER]

(109)

10-3-9 加解密函數

1. AES_ENCRYPT(str, key_str) :使用 AES ( Advanced Encryption Standard )加密演算法將 str 字串加密, key_

str 預設長度為 128 位元,可放大為 256 位元,但加解密 時非常耗

2. AES_DECRYPT(crypt_str, key_str) :為 AES_ENCRY PT 之解密函數。

註:為了避免連線時,需要將 key_str 在網路上傳送,事前可 key_str 預存在伺服端,然後以 @ 變數型式將 key_str 取 出,例如:

Select @key=”My_Key”;

(110)

10-3-9 加解密函數

( 續 )

3. ENCODE(str,pass_str) :將 str 加密,加密後字元長度 與元字串相同,需搭配 BLOB 欄位儲存加密結果

4. DECODE(crypt_str,pass_str) :為 ENCODE 之解密函

5. DES_ENCRYPT(str[,(key_num | key_str)]) :使用 DES 加密演算法,前提為 MySQL 有支援 SSL 通訊協定。可直 接指定 key_str 當加密之 Key ,或從 DES 之 Key File 依指定的 key_num 參數選用對應之 key_str 。可在伺服器 參數 – des-key-file 指定 Key File

(111)

10-3-9 加解密函數

( 續 )

6. DES_DECRYPT(crypt_str[,key_str]) :為 DES_EN CRYPT 之解密函數

7. MD5(str) :使用 MD5 演算法計算 str 之檢查碼,回傳 值為 32 位元組字串

8. PASSWORD(str) :伺服器認證用密碼函數

9. SHA(str) :使用 160 位元之 key 計算 str 之檢查碼,

回傳值為 40 位元組字串

(112)

10-3-10 信息處理與通訊函數

1. BENCHMARK(count,expr) :測試運算式 expr 共 count 次所需時間

2. CHARSET(str) :傳回所使用之字元集

3. COLLATION(str) :傳回所使用之字元集之子集

4. CONNECTION_ID() :傳回執行緒代號

5. CURRENT_USER() :傳回使用者帳號及登入主機

6. DATABASE() :傳回工作中的資料庫名稱

(113)

10-3-10 信息處理與通訊函數

( 續 )

7. FOUND_ROWS() :傳回前次 Select 指令之影響紀錄筆 數,為了正確計算筆數,需使用下列型式指令:

Select SQL_CALC_FOUND_ROWS * From TBL;

Select FOUND_ROWS();

8. LAST_INSERT_ID() :取回自動遞增欄位( AUTO_INCR EAMENT )最末筆序號

9. LAST_INSERT_ID(id+1) :取出 id 欄最末筆序號,加上 1 後傳回

(114)

10-3-10 信息處理與通訊函數

( 續 )

10. ROW_COUNT() :傳回前次資料更新( Update, Ins ert, Delete )之紀錄筆數

11. SESSION_USER() :與 USER() 同義 12. SYSTEM_USER() :與 USER() 同義

13.USER() :傳回連線主機與使用者帳號名稱 14.VERSION() :傳回伺服器版次號碼

(115)

10-3-11 GROUP BY 綜合函數

1. AVG(expr) :求 expr 之平均值

2. COUNT(expr) :求 expr 之筆數, expr 可使用 * 表示 3. COUNT(DISTINCT expr,[expr...]) :針對 expr,[exp

r...] 等資料,各只計算一次之紀錄筆數

4. GROUP_CONCAT(expr) :依 Group By 子句,將 ex pr 欄值串接至指定長度,長度可在 group_concat_ma x_len 系統變數設定

(116)

10-3-11 GROUP BY 綜合函數

( 續 )

5. MIN(expr) :求 expr 之最小值 6. MAX(expr) :求 expr 之最大值

7. STD(expr) , STDDEV(expr) :求 expr 之標準差 8. SUM(expr) :求 expr 之總和

9. VARIANCE(expr) :求 expr 之變異數

參考文獻

相關文件

固定資本形成總額 指固定資產 包括新、舊及場所自產自用之固定資產

固定資本形成總額:指固定資產(包括新、舊及場所自產自用之固定資產)之購置減固定資產銷售後之數值。固定

• 先定義一個 struct/class Node ,作為 linked list 的節點,裡面存資 訊和一個指向下一個 Node 的指標. • 使用時只用一個變數 head 記錄 linked

•  先定義一個struct/class Node,作為linked list的節點,裡面存資 訊和一個指向下一個Node的指標. • 

2019 年 12 月 24 日通過之交通移動法案(Loi d’Orientation des Mobilités,LOM)規定 50

(二) 另依產證管理辦法第 5 條第 2 項規定,附加價值率之計

各締約國應依上述第 15.01 條之規定,採行與本章有關之措施,並特

VAB 使用者無法使用 RIDE 提供的 Filter Design 公用程式設計濾波器,但是 使用 VAB 的 Filter 元件時,在元件特性選單可以直接指定此濾波器的規格,使用