MySQL數據庫的經常使用命令語句記錄——數據操縱語句及函數

對於事物:InnoDB,NDB Cluster和BDB存儲引擎支持事物,若是使用MyISAM等引擎則會忽略事物語句。web


    [ALL | DISTINCT | DISTINCTROW ]數據庫

      [HIGH_PRIORITY]express

      [STRAIGHT_JOIN]緩存

      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]服務器

      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]oracle

  --SQL_CALC_FOUND_ROWS記錄查詢結果集的行數,忽略LIMMIT語句,而後使用FOUND_ROWS獲取行數分佈式

    select_expr [, select_expr ...]ide

    [FROM table_references函數

      [PARTITION partition_list]性能

    [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}]

    [PROCEDURE procedure_name(argument_list)]--發送SQL語句到另一個過程做爲標準輸入,能夠是函數、存儲過程

    [INTO OUTFILE 'file_name'  --導出到指定文件

        [CHARACTER SET charset_name]  --指定字符集

        [FIELDS TERMINATED BY 'character'] --分割字段的字符。默認狀況下是製表符

        [FILEDS ENCLOSED BY 'character']--在每一個字段先後用的字符

        [ESCAPED BY 'character']--在輸出中用以跳出指定字符,默認字符是/

        [LINES [STARTING BY 'character'] --每行開始用到的字符,默認狀況下不使用任何字符

         [TERMINATED BY 'character']]-- 每行末尾用到的字符。默認狀況下是換行符

      | INTO DUMPFILE 'file_name'

      | INTO var_name [, var_name]]

    [FOR UPDATE | LOCK IN SHARE MODE]]


exmple:

    SELECT SQL_CALC_FOUND_ROWS goods_id,goods_name from tdb_goods;

    SELECT FOUND_ROWS();


SHOW ERRORS [LIMIT [offset,] count];--顯示錯誤信息,結果是僅針對於前面以執行的語句起做用

SHOW WARNINGS [LIMIT [offset,] count]; --當前會話的之前SQL語句顯示的警告信息、出錯信息和註釋


XA語法:分佈式事務

XA {START|BEGIN} xid [JOIN|RESUME] --開始一個XA分佈式事務

XA END xid [SUSPEND [FOR MIGRATE]] --結束一個XA分佈式事物

XA PREPARE xid --將事物標記爲PREPARE

XA COMMIT xid [ONE PHASE] --帶ONE PHASE用於標記已制定爲預備和提交的是XA事物,不帶則會提交併終止整個事物

XA ROLLBACK xid --撤銷給定的XA事物並終止它

XA RECOVER --列舉類處於PREPARE狀態的事物


ANALYSE()函數:返回SELECT語句對結果表的分析,僅做爲PRECODURE字句的一個組成部分

    ANALYSE([maximum_elements[,maxmum_memory]])

exmple SELECT * FROM tdb_goods PROCEDURE ANALYSE()\G


BENCHMARK()函數 :用戶評估MYSQL服務器的性能

BENCHMARK(number,expression)--number爲表達式重複的次數,expression表達式


DATABASE()--返回當前會話中用到的數據庫名

FOUND_ROWS()--與帶有SQL_CALC_FOUND_ROWS選項的SELECT語句一塊兒使用,以肯定使用LIMIT字句的SQL語句在沒有限制的狀況下所返回的行數。

LAST_INSERT_ID():返回當前客戶端MYSQL鏈接所插入的最後行的標識號,如一條SQL語句插入多行,則返回插入第一行所產生的標識號

ROW_COUNT():返回前面執行SQL語句所修改的行數,如不是INSERT,UPDATE,DELETE,該函數將返回1

START TRANSACTION 開始一項新的事物;

COMMIT:用於提交事務,但在代碼控制以前,須先關閉自動提交事務設置:SET AUTOCOMMIT=0(1爲開啓);

ROLLBACK:用於回滾事務,但在代碼控制以前,須先關閉自動提交事務設置:SET AUTOCOMMIT=0(1爲開啓);

RELEASE SAVEPOINT語法

    RELEASE SAVEPOINT identifier --指示服務器從當前事物中釋放掉前面的用SAVEPOINT語句命名的保存點

ROLLBACK TO SAVEPOINT identifier

SAVEPOINT identifier

SET TRANSACTION 語法:設置當前事物的隔離等級

SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL

    [READ UNCOMMITED | READ COMMITED|REPEATABLE READ|SERIALIZABLE] 

    --READ UNCOMMITED 髒讀

   -- READ COMMITED  先後讀取一致;在一個事物中提交的數據,在另外一個事物中能看到,所以同一個事物同一查詢可能返回不一樣的查詢結果。與oracle隔離級相似

   -- REPEATABLE READ 它令一個事物的全部讀取操做一致。默認事物等級


在DELETE、INSERT語句時,關鍵字符釋義

    DELETE [LOW_PRIOPITY] [QUICK] [IGNORE] FROM table [,table] FROM table[,...] [WHERE condition]。

  

    INSERT [LOW_PRIOPITY|DELAYED|HIGH_PRIOPITY] [IGNORE] [INTO] table 

        (SET cloumn ({expression|DEFAULT},...))/(VALUES cloumn ({expression|DEFAULT},...))


LOW_PRIOPITY:指示服務器等待,直到在刪除行以前在命名的表上沒有任何查詢爲止,這個關鍵字僅容許在表級鎖定的存儲引擎(如MyISAM,MEMORY,MARGE)

QUICK:對於MyISAM表,使用關鍵字QUIK能夠加快刪除操做的速度,而不會在索引樹中合併索引的葉子。

IGNORE:指示MYSQL遇到錯誤也會繼續執行,隨後可使用SHOW WARNINGS語句來檢索出錯的信息。


EXPLAIN語法

    EXPLAIN table --等同於DESC、SHOW COLUMNS語法

    EXPLAIN [EXTENDED|PARITIONS] SELECT ...  --用於查詢SQL的執行計劃

EXPLAIN語句結果的select_type

類型 基本含義
SIMPLE 指示簡單的SELECT語句,沒有子查詢或者UNION
PRIPARY 當使用子查詢時,這是主要的SELECT語句
UNION 當子查詢語句時,這是主要的SELECT語句
DEPENDENT UNION 當使用union時,這並非第一個SELECT語句,取決於主查詢
UNION RESULT UNION的結果
SUBQUERY 子查詢中的第一個SELECT語句
DEPENDENT SUBQUERY 子查詢中的第一個SELECT語句,取決於主查詢
DERIVED 來源於子查詢的表
UNCACHEABLE SUBQUERY 來源於子查詢的表
UNCACHEABLE UNION
指示子查詢的union中,結果不能緩存,所以必須對主查詢中的每一行從新評價


HELP語法

    HELP [{'commad | reserve _word'}]   exg:HELP SELECT;


索引提示:指定表運行執行相對應的索引

    SELECT ...|UPDATE....|DELETE...

    table ... JOIN table

    USE {INDEX|KEY} [{FOR {JPOM|ORDER BY |GROUP BY}}] ([index[,...]])

    FORCE  {INDEX|KEY} [{FOR {JPOM|ORDER BY |GROUP BY}}] ([index[,...]])  --指示MYSQL試圖對指定的索引限制索搜

    IGNORE  {INDEX|KEY} [{FOR {JPOM|ORDER BY |GROUP BY}}] ([index[,...]])--指示MYSQL試圖對指定的索引限制索搜


    example:

        select client_name,count(*) as ticke

        FROM work_req

        USE INDEX FOR JOIN (workreq_date_key)

        USING (client_id)

        WHERE client_type=1 ADD DATEDIFF(NOW(),request_date)<91 group by client_id;


LOAD DATE INFILE語法:把文本的數據加入到表中

    LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'--LOW_PRIORITY在每人查詢的時候導入,CONCURRENT任意時候

    [REPLACE | IGNORE] --REPLACE 遇到重複數據進行替換;IGNORE遇到錯誤並繼續加載其餘行

    INTO TABLE tbl_name 

    [PARTITION (partition_name,...)]

    [CHARACTER SET charset_name]

    [{FIELDS | COLUMNS}

        [TERMINATED BY 'string']  --字段間的分隔符

        [[OPTIONALLY] ENCLOSED BY 'char'] --忽略字段值的某些符號

        [ESCAPED BY 'char']

    ]   

    [LINES

        [STARTING BY 'string']  --從哪一個字符串開始

        [TERMINATED BY 'string']--行間的分隔符

    ]

    [IGNORE number {LINES | ROWS}]  --從N行開始讀取

    [(col_name_or_user_var,...)] --導入到表中的列明

    [SET col_name = expr,...]  --SET更新表達式



REPLACE 語法:若是表中存在相同的行,則直接進行替換

REPLACE [LOW_PRIORITY | DELAYED]

    [INTO] tbl_name

    [PARTITION (partition_name,...)]

    [(col_name,...)]

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


SELECT 語句

    SELECT

相關文章
相關標籤/搜索