mysql必知必会-读书笔记(chap4-8)

来源:互联网 发布:加油站做账软件 编辑:程序博客网 时间:2024/06/05 04:01
chap 5 排序检索数据
取一个或多个列的名字,据此对输出排序:SELECT 列名1,列名2 FROM 表名 ORDER BY 列名1,列名2
如果是多个列,那么先根据列名1进行排序,然后对于列名1中相同的行,再根据列名2进行二次排序


数据排序不限于升序排列,可以在排序依据的列名后指定DESC实现降序排列。对于多个列上进行降序排列,必须对每个列指定DESC关键字。在后面可以添加LIMIT 数值规则,返回指定行


chap 6 过滤数据
使用WHERE子句,检索指定搜索条件的数据。eg:SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;


SQL过滤与应用层过滤区别:
    数据在应用层过滤,为此目的,SQL的SELECT语句为客户机应用检索出超过实际所需的数据,然后客户机代码对返回数据进行循环,以提取出需要的行,这种就是应用层过滤。这种实现并不令人满意,因此,对数据库进行了优化,以便快速有效地对数据进行过滤。让客户机应用处理数据库的工作会极大的影响应用的性能,并且使所创建的应用完全不具备可伸缩性。此外,向客户机发送过多的数据还会导致网络带宽的浪费。
    
ORDER BY 和 WHERE 同时使用时,应该让ORDER BY位于WHERE之后。
mysql在执行匹配时默认不区分大小写,单引号用来限定字符串,如果是与数值列进行比较的值可以不用引号。
WHERE子句的操作符:
    =        等于           
    <>       不等于
    !=      不等于
    <        小于
    <=       小于等于
    >        大于
    >=       大于等于
    BETWEEN  在指定的两个值之间 
                
SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;


NULL空值与不匹配:
    在使用WHERE匹配对应列的某个非NULL值时,匹配或者不匹配都不会显示出NULL值的行。
    
chap 7 数据过滤
组合WHERE子句: 可以使用AND,OR来组合WHERE子句的子句实现。在子句中组合使用AND和OR时,需要注意操作符的优先级顺序,AND优先级要高于OR,有时候可以借助括号来实现优先级保护。


IN操作符:IN后面会跟随一个集合或者说范围,满足这个范围的合法值,都会被查询出来。使用OR也可以实现相同的目的,但是使用IN,语法更加清楚直观,执行速度快,最重要的是:IN可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。


NOT操作符:NOT就是否定!否定后面的条件或者WHERE子句,IN子句,BETWEEN子句和EXISTS子句限定的条件。


chap 8 用通配符进行过滤
通配符:用来匹配值的一部分的特殊字符,要想使用通配符,就得使用LIKE操作符
搜索模式:由字面值、通配符或者两者组合构成的搜索条件,搜索条件常用引号''来包围住


%:匹配任何字符出现任意次数,当然也可以匹配0个字符
_:只匹配单个字符而不是多个字符


使用通配符搜索的处理一般要比前面讨论的其他搜索花费时间更长,所以不要过度使用通配符;非要不可的时候,才把通配符放在搜索模式的开头;通配符的位置要清楚。



























0 0
原创粉丝点击