MySQL数据库的常用命令语句记录——数据操纵语句及函数

十年热恋 提交于 2019-11-29 22:34:57

对于事物:InnoDB,NDB Cluster和BDB存储引擎支持事物,如果使用MyISAM等引擎则会忽略事物语句。


    [ALL | DISTINCT | DISTINCTROW ]

      [HIGH_PRIORITY]

      [STRAIGHT_JOIN]

      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]

      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]

  --SQL_CALC_FOUND_ROWS记录查询结果集的行数,忽略LIMMIT语句,然后使用FOUND_ROWS获取行数

    select_expr [, select_expr ...]

    [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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!