zoukankan      html  css  js  c++  java
  • MySQL必知必会

    1.SQL(像多数语言一样)在处理OR操作符前,优先处理AND操
    作符。

    建议:在WHERE子句中使用圆括号

    任何时候使用具有AND和OR操作
    符的WHERE子句,都应该使用圆括号明确地分组操作符。不要
    过分依赖默认计算次序,即使它确实是你想要的东西也是如
    此。使用圆括号没有什么坏处,它能消除歧义。

    2.

    正则表达式字符后面的?表示0个或一个匹配,+表示1个或多个匹配,*表示0个或多个匹配。

    3.

    [[:<:]] 词的开始)

    [[:>:]](词的结尾)

    e.g.

    [[:<:]]anv会匹配有anv开头的单词的字符串,vil[[:>:]]会匹配vil结尾的单词的字符串。

    4.

    Contat()函数(拼接字符串)

    TRim()函数(去掉字符串两边的空格)

    RTrim()函数(去掉右边的空格)

    LTrim()函数(去掉左边的空格)

    Left()函数

    返回左边子串

    e.g.

    SELECT LEFT('foobarbar', 5); 返回 'fooba'

    Locate()函数

    LOCATE(substr,str):返回substr在字符串str 的第一个出现的位置

    LOCATE(substr,str,pos):返回子符串 substr 在字符串str,从pos处开始的第一次出现的位置。

    如果substr 不在str 中,则返回值为0

    Soundex()函数(

    保留字符串的首字母,但删除元音字母(a、e、h、i、o、u)和w、y,所有不在A-Z范围之内的国际字母符号被视为元音字母。 一个标准的soundex字符串的长度为4个字符,然而soundex()函数会返回一个人以长度的字符串

    将数字赋予剩下的字母如下:
    1. b, f, p, v
    2. c, g, j, k, q, s, x, z
    3. d, t
    4. l
    5. m, n
    6. r

    e.g. select soundex('Quadratically');     的结果是 'Q36324'
            select soundex('user');                   的结果是 'U260'
            select soundex('中华人名共和国');     的结果是 '中000'

    5.

      DISTINCT可以与COUNT配合使用

      DISTINCT不能用于COUNT(*),因此不允许使用COUNT( DISTINCT),
    否则会产生错误

    e.g.

    在统计不重复的记录的时候能用到,比如SELECT COUNT( DISTINCT id ) FROM tablename;就是计算talbebname表中id不同的记录有多少条。

    SELECT COUNT( DISTINCT * ) FROM tablename;会产生错误。

    6.

    HAVING和WHERE的差别

    WHERE:行级过滤

    HAVING:组级过滤

    这里有另一种理解方法,WHERE在数据
    分组前进行过滤, HAVING在数据分组后进行过滤。这是一个重
    要的区别, WHERE排除的行不包括在分组中。这可能会改变计
    算值,从而影响HAVING子句中基于这些值过滤掉的分组。

    作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组。
    WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算), 而 HAVING 在分组和聚集之后选取分组的行。因此,WHERE 子句不能包含聚集函数; 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。 相反,HAVING 子句总是包含聚集函数。(严格说来,你可以写不使用聚集的 HAVING 子句, 但这样做只是白费劲。同样的条件可以更有效地用于 WHERE 阶段。)
    在前面的例子里,我们可以在 WHERE 里应用城市名称限制,因为它不需要聚集。 这样比在 HAVING 里增加限制更加高效,因为我们避免了为那些未通过 WHERE 检查的行进行分组和聚集计算。

    7.

    子查询

    虽然子查询一般与IN操作符结合使用,但也可以用于测试等于( =)、
    不等于( <>)等。

    8.

    内部联接:INNER JOIN

    外部联接:OUTER JOIN

  • 相关阅读:
    css-深入理解margin和padding
    js的自定义事件
    jcFlexible.js的小Demo
    volatile关键字回顾
    threadLocalMap理解
    常用SQL笔记
    MyISAM和innoDB对比,覆盖索引简单回顾
    经典算法回顾:两个队列生成一个栈,两个栈生成一个队列
    Memcached与Redis对比,Redis基础笔记回顾
    ES(ElasticSearch)学习总结
  • 原文地址:https://www.cnblogs.com/Wcy100/p/5551397.html
Copyright © 2011-2022 走看看