zoukankan      html  css  js  c++  java
  • MySQL必知必会笔记<2>

    【英】ben Forta著

    5

      1.0  *使用扩展查询*

            |---->select note from table   where Match(note) Against('anl');

                           |--->where  Match(note) Against('anl'  WITH QUERY EXPANSION);

                           |--->按等级返回与第一行(优先级最高)有关的行,表中行越多,使用扩展查询结果越好。

      2.0  *关于insert*

          |--->insert操作耗时,可能降低等待处理的select语句性能。解决方案:

                                         |-->在insert和into之间插入LOW_PRIORITY(降低优先级)

                                         |-->同样适用于 UPDATAE ,DELETE语句。

        *提高insert性能*------>MySQL用单条insert语句处理多个插入比使用多条insert语句快。==== values (),(),()...

        *关于 INSERT SELECT的使用,顾名思义就是把SELECT语句的内容作为INSERT的插入部分*

          |--->eg:      insert into 表名1(列) select 列 from 表名2

      3.0  *关于布尔文本搜索*    即使没有FULLTEXT索引也可以使用。

              eg:   select note

                  from 表

                  where Match(note) Against('heavy -ropt*' IN BOOLEAN MODE);

                  |--->为了匹配包含heavy,但不包含以rope开始词的行。

           *全文本布尔操作符*

             

           ---- 几个经典例子:

                         

      4.0   *关于IGNORE*

              UPDATE 更新多行时,一行出错就会发生错误。

                  |--->解决方案:UPDATE IGNORE .......

          *为了删除某个 列的值,可以设置他为NULL*

                  |---->delete 删除整行而不是某个列,若删除列用update语句。

                               |---->删除行,所有的行,但不会删除表本身。

                  *若要删除所有行,TRUNCATE TABLE (删除一个表,重新创建一个表)

      5.0  

             *MySQL没有撤销(undo)按钮*

                        |---》NULL值是没有值,不是空串,空串是有一个有效的值,不是无值。

                |---》AUTO_INCREMENT (每个表只允许一个这样的列,而且他必须被索引)

            select last_insert-id()

                |----->返回最后一个AUTO_INCREMENT值。

    6

        1.0   *关于MSQL引擎*

                       |

            |--->InnoDB 创建表最后一句常用。|ENGINE = InnoDB;

               |---->可靠的事务处理引擎,不支持全文本搜索

           |

           |--->MEMORY 功能等同于MYISAM,由于数据存储在内存,比较快,适用于临时表。

           |

           |--->MyISAM(大多数默认的引擎)支持全文本搜索,不支持事务处理。

        ****    外键不能跨引擎 ***

              *ALTER TABLE 常用来定义外键*

                 |---->  eg:   alter table 表名

                 Add CONSTRAINT 列

                FOREIGN KEY () REFERENCE 表 (列)

      2.0

         *视图不能索引也不能有关联的触发器或默认值*

          SHOW CREATE VIEW  viewname;------>查看创建视图的语句

                *关于更新*---------->先DROP再用CREATE ,也可以用CREATE OR REPLACE VIEW

          |------->insert update delete 

            若有以下则不能更新:| 分组(group by having)

                      | 联结

                        | 子查询

                      |并

                      |聚集函数

                      |Distinct

                      |导出列

      3.0 

         *关于创建存储过程*

              | CREATE PROCEDURE 存储名()

                                  BEGIN

                                       select语句

               END;

              引用存储过程的语句: CALL 存储名();

                        |--->将会显示select语句的查询结果。

            删除语句: DROP PROCEDURE 存储名;(如果删除的不存在将会出现    错误)

                                            |--->解决方案: DROP PROCEDURE IF EXISTS;

      4.0

           MYSQL命令行客户机分隔符

              DELTMITER //

               A

                                END //

                                DELTMITER ;(除符号以外)

          5.0

          *存储过程本质是一个函数*

           注释语句:--

            SHOW CREATE PROCEDURE       存储名;

                         |---> STATUS LIKE '存储名';--------->like限制输出

      6.0

        *关于游标*  是一个存储在MYSQL服务器上的数据库查询,他不是一条select语句,而是被该语句检索出来的结果集。 不像多数DBMS,MYSQL游标只用于存储过程(函数)

        *触发器* ------->只有表才支持,视图不支持。

          CREATE TRIGGER ....

          FOR EACH ROW SELECT语句

             |----->对每个插入行都执行。

      7.0 

        事务处理用来维护数据库完整性。

          START TRANSACTIDN

          当COMMIT或ROLLBACK语句执行时,事务会自动关闭。

               如果不想让事务自动提交,则可以 SET AUTOCOMMIT = 0;(不自动提交)------------>针对的是连接,不是服务器。

    7

        1.0       *关于安全*

                CREATE USER ben IDENTIFIED BY 'p@123';(创建一个用户口令)

                            |---->指定口令为纯文本

                RENAME USER ben TO f;

                drop user ben;

                                               |--------->删除帐号以及相关帐号权限

                SET PASSWORD FOR ben = password('n3w p@1234');------------>更改口令。如果没有则更改的是自己。

        2.0 *关于权限的问题*

            GRANT 和REVOKE

                |----->GRANT ALL和REVOKE ALL,对应于整个服务器

                |----->ON DATABASE.*; 对应于整个数据库

                |----->ON DATABASE.TABLE;对应于特定的表

                |----->其他权限见下表

                     

                     

        3.0 *关于数据库的维护*

            *使用命令行实用程序MYSQLDUMP转储所有数据库内容到另外一个文件。

            *使用命令行实用程序MYSQLHOTCOPY从一个数据库复制所有数据。

            *ANALYZE TABLE用来检查表健是否正确。

            *CHECK TABLE用来针对许多问题对表进行检查。

        4.0 

            查看日志:

                  错误日志 hostname.err 位于data目录中。可用--log-error命令选项更改

                  查询日志:hostname.log  --log

                   二进制日志:hostname-bin --log-bin

                  缓慢查询日志: hostname-slow.log              --log-slow-queries

                     **在使用日志时,可用FLUSH LOGS语句来刷新和重新开始所有的日志文件**

        5.0

               *MYSQL变量都必须以@开始*

            存储过程的一个例子:

                |---->create procedure 名字 (out p1 Decimal(8,2))------->"Decimal 十进位"

                |        BEGIN SELECT MIN(列) INTO P1 end;

           *串在字符集之间进行转换,使用cast()或 convert()函数*

  • 相关阅读:
    构造方法
    $this
    public/private/protected三种访问控制符的区别
    vsftpd的虚拟主机配置,错误记录
    高斯模糊css
    css绘制三角形
    禁止缩放的一行代码
    自适应的Javascript代码resize.js
    判断是pc端还是手机端js
    倒计时
  • 原文地址:https://www.cnblogs.com/spring87/p/3757024.html
Copyright © 2011-2022 走看看