• 读《MySql必知必会》笔记


    MySql必知必会

    2017-12-21

    意义:记录个人不注意的,或不明确的,或不知道的细节方法技巧,此书250页

    登陆:

    mysql -u root-p -h myserver -P 9999

    SHOW STATUS,用于显示广泛的服务器状态信息

    DESCRIBE tableName;SHOW COLUMNS FROM tableName;的一种快捷方式

    SHOW CREATE DATABASE和SHOW CREATE TABLE,分别用来显示创建特定数据库或表的MySQL语句

    SHOW GRANTS,用来显示授予用户(所有用户或特定用户)的安全权限

    SHOW ERRORS和SHOW WARNINGS 用来显示服务器错误或警告消息

    help show 获取更多SHOW相关命令

    不能部分使用DISTINCT,DISTINCT关键字应用于所有列而不仅是前置它的列

     

    IN操作符一般比OR操作符清单执行更快。

    IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句

    MySQL 使 NOT IN BETWEEN EXISTS子句取反

    正则:

    虽然似乎%通配符可以匹配任何东西,但有一个例外,即NULL。即使是WHERE prod_name LIKE '%'也不能匹配用值NULL作为产品名的行

     

    MySQL中的正则表达式匹配不区分大小写,为区分大小写,可使用BINARY关键字,如WHERE prod_name REGEXP BINARY 'JetPack .000'

     

    全文本搜索:

    指定FULLTEXT后,使用两个函数Match()和Against()执行全文本搜索

    想找出所有提到anvils的注释。只有一个注释包含词anvils,但你还想找出可能与你的搜索有关的所有其他行,即使它们不包含词anvils。

    在使用查询扩展时, MySQL对数据和索引进行两遍扫描来完成搜索:
    q 首先,进行一个基本的全文本搜索,找出与搜索条件匹配的所有行;
    q 其次, MySQL检查这些匹配行并选择所有有用的词(我们将会简要地解释MySQL如何断定什么有用,什么无用)。
    q 再其次, MySQL再次进行全文本搜索,这次不仅使用原来的条件,而且还使用所有有用的词。
    利用查询扩展,能找出可能相关的结果,即使它们并不精确包含所查找的词。

     

    布尔方式 booleanmode)。即使没有FULLTEXT索引也可以使用但这是一种非常缓慢的操作(其性能将随着数据量的增加而降低)

    q 要匹配的词;
    q 要排斥的词(如果某行包含这个词,则不返回该行,即使它包含
    其他指定的词也是如此);
    q 排列提示(指定某些词比其他词更重要,更重要的词等级更高);
    q 表达式分组;
    q 另外一些内容

     

    匹配词heavy,但-rope*明确地指示MySQL排除包含rope*

     

    全文本搜索的某些重要的说明

    忽略词中的单引号。例如, don't索引为don’t

    仅MyISAM数据库引擎中支持全文本搜索,(mysql5.6 Innodb好像也支持了)

    select insert

     

    不一定要求列名匹配。事实上, MySQL甚至不关心SELECT返回的列名。它使用的是列的位置

    IGNORE关键字 如果用UPDATE语句更新多行,并且在更新这些行中的一行或多行时出一个现错误,则整个UPDATE操作被取消(错误发生前更新的所有行被恢复到它们原来的值)。为即使是发生错误,也继续进行更新,可使用IGNORE关键字,如下所示:
    UPDATE IGNORE tableName

    TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据

     

    每个表只允许一个AUTO_INCREMENT列,而且它必须被索引,使它成为主键。

     

    (测试发现只有在不指定auto_increment列时才能正确获得last_insert_id()值,否则返回0,字段名称不一定是'id')

    q InnoDB是一个可靠的事务处理引擎(参见第26章),它不支持全文本搜索;

    q MEMORY在功能等同于MyISAM 但由于数据存储在内存(不是磁盘)中,速度很快(特别适合于临时表);
    q MyISAM是一个性能极高的引擎,它支持全文本搜索(参见第18章),但不支持事务处理。

    外键不能跨引擎 混用引擎类型有一个大缺陷。外键(用于强制实施引用完整性,如第1章所述)不能跨引擎,即使用一个引擎的表不能引用具有使用不同引擎的表的外键

    视图:

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

    存储过程:

    游标(cursor 是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。

    在这个例子中,我们增加了另一个名为t的变量(存储每个订单的合计)。 此存储过程还在运行中创建了一个新表(如果它不存在的话),名为ordertotals。这个表将保存存储过程生成的结果。ETCH像以前一样取每个order_num,然后用CALL执行另一个存储过程(我们在前一章中创建)来计算每个订单的带税的合计(结果存储到t)。最后,用INSERT保存每个订单的订单号和合计。

    触发器:

    只有表才支持触发器,视图不支持(临时表也不支持)。

     

    SELECT的其他COLLATE子句 除了这里看到的在ORDER BY子句中使用以外, COLLATE还可以用于GROUP BY HAVING、聚集函数、别名等。

    如果绝对需要,串可以在字符集之间进行转换。为此,使用Cast()或Convert()

    show grants for username;

    create user haogp identified by ‘haogp’

    grant select on *.* to haogp;

    revoke select on *.* from haogp;

    set password for haogp = Password(‘haogp’);

    grant select on *.* to haogp@’%’ identified by ‘haogp’;

    如果从一个表中删除大量数据,应该使用OPTIMIZE TABLE来收回所用的空间,从而优化表的性能。

    重要的mysqld命令行选项:
    q --help显示帮助——一个选项列表;
    q --safe-mode装载减去某些最佳配置的服务器;
    q --verbose显示全文本消息(为获得更详细的帮助消息与--help联合使用);
    q --version显示版本信息然后退出。

    日志:

    主要的日志文件有以下几种。
    q 错误日志。它包含启动和关闭问题以及任意关键错误的细节。此日志通常名为hostname.err,位于data目录中。此日志名可用--log-error命令行选项更改。
    q 查询日志。它记录所有MySQL活动,在诊断问题时非常有用。此日志文件可能会很快地变得非常大,因此不应该长期使用它。此日志通常名为hostname.log,位于data目录中。此名字可以用--log命令行选项更改。
    q 二进制日志。它记录更新过数据(或者可能更新过数据)的所有语句。此日志通常名为hostname-bin,位于data目录内。此名字可以用--log-bin命令行选项更改。注意, 这个日志文件是MySQL5中添加的,以前的MySQL版本中使用的是更新日志。
    q 缓慢查询日志。顾名思义,此日志记录执行缓慢的任何查询。这个日志在确定数据库何处需要优化很有用。此日志通常名为hostname-slow.log data --log-slow-queries命令行选项更改。
    在使用日志时,可用FLUSH LOGS语句来刷新和重新开始所有日志文件

     

     

     

      

    主要单词:

    主键primary key

    SQL (发音为字母S-Q-L或sequel)是结构化查询语言 Structured Query
    Language)的缩写

    ASC ASCENDING)升序排序

  • 相关阅读:
    HDU 2888 Check Corners (模板题)【二维RMQ】
    POJ 3264 Balanced Lineup(模板题)【RMQ】
    poj 3368 Frequent values(经典)【RMQ】
    SPOJ RPLN (模板题)(ST算法)【RMQ】
    UVA 796 Critical Links(模板题)(无向图求桥)
    UVA 315 Network (模板题)(无向图求割点)
    POJ 2029 Get Many Persimmon Trees (模板题)【二维树状数组】
    poj 3067 Japan 【树状数组】
    POJ 2481 Cows 【树状数组】
    POJ 1195 Mobile phones【二维树状数组】
  • 原文地址:https://www.cnblogs.com/8000cabbage/p/8055976.html
Copyright © 2020-2023  润新知