zoukankan      html  css  js  c++  java
  • 《sql必知必会》笔记

    第一课:了解SQL

    1. 数据库:保存有组织的数据的容器(通常是一个文件或一组文件)。
    2. 注意误用混淆:数据库软件被称为DBMS,数据库是通过DBMS创建和操纵的容器
    3. 模式:关于数据库和表的布局及特性的信息。
    4. 主键:一列或一组列,其值能够唯一标识表中的每一行。

    第二课:检索数据

    1. 多条SQL语句必须以“ ;”分隔。
    2. SQL语句不区分大小写,SELECT和select是相通的,不过表名,列名和值可能有所不同(依赖于具体点DBMS及其如何配置)。
    3. 处理SQL语句时,其中所有 空格都被忽略(将SQL语句分成多行有利于阅读和调试)。
    4. 检索多个列,列名之间必须以“ ,”分隔,但是最后一个列不用加。
    5. 检索所有列使用(*)通配符,用于检索名字未知的列或者需要知道表中的每一列,性能低。
    6. 检索不同的值使用DISTINCT关键字 ,放在列名前面,其不仅作用于紧跟其后的那一列。 
      例:SELECT DISTINCT vend_id,prod_price FROM Products; 除非两行相同,否则所有的列都会被检索出来。
    7. 使用注释   --之后的文本都是注释
      #一行的开始使用(不常用)
      /*  */多行的注释

    第三课:排序检索数据

    1. 子句:SQL语句由子句构成,有些子句是必须的,有些则是可选的。一个子句通常是由一个关键字加上所提供的数据组成。
    2. ORDER BY 可以取一个或多个列的名字,据此对输出进行排序。如果他不是最后的子句,将会出现错误信息,并且可以使用非检索的列排序。
    3. 按多个列进行排序:
      ..ORDER BY xx,yy;  先按xx,在xx都相同时再按yy,若xx中都是唯一的则不会按yy排列
      ..ORDER BY 2,3;    指定的是选择列的相对位置而不是列名
    4. 指定排序方向:DESC(降序)关键字只应用到直接位于其前面的列名,在多个列上进行降序排序,必须对每一列指定DESC关键字,ASC(升序)默认的无用。
    5. A与a默认相同,无法简单使用ORDER BY改变

    第四课:过滤数据

    1. 使用WHERE子句:数据根据WHERE子句中指定的搜索条件进行过滤,接在FROM子句之后给出。
    2. 数据最好不要再应用层过率,客户端应用处理数据,会使服务器发动多余数据,造成带宽的浪费。
    3. WHERE子句操作符  
      操作符 说明 操作符 说明
      = 等于 > 大于
      <> 不等于 >= 大于等于
      != 不等于 !> 不大于
      BETWEEN 在指定的两个值之间 IS NULL 为NULL值
      !< 不小于 <

      小于


       
    4. 关于引号:字符串用单引号限制,用来与数值列比较不需要用引号
    5. between例:SELECT prod_name,prod_price
      FORM Products
      WHERE BETWEEN 5 AND 10
    6. NULL:无值。它与字段包含0,空字符串,或仅包含空格不同;
    7. 确定值是否为NULL,不能简单的检查是否=NULL,应该用特殊的IS NULL

    第五课:高级数据过滤

    1. 操作符:用来连接过改变WHERE子句中的子句的官架子,也叫逻辑操作符。
    2. AND:检索满足条件的所有指定的行
    3. OR:  与AND相反,许多DBMS在第一个条件得到满足的情况下就不在计算第二个条件了(第一个满足时,不管是否满足,相应的行都将被检索出来)
    4. AND再求值优先级大于OR,可以使用()改变结合顺序避免出错。
    5. IN WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。
      例:WHERE vend_id  IN  ('DLL01','BRS01') 等同于WHERE vend_id='DLL01' OR vend_id=‘BRS01’
      最大的优点是可以包含其他SELECT语句,能够更动态地建立WHERE子句。
    6. NOT:WHERE子句中用来否定其后条件关键字。
      例:WHERE NOT vend_id='DLL01' 等同于 WHERE vend_id<>'DLL01'
      优势是与IN操作符联合使用时,NOT可以非常简单的找出与条件列表不匹配的行。

    第六课:用通配符进行过滤

    1. LIKE操作符: 为在搜索子句中使用通配符,必须使用LIKE操作符
      通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用从佩服搜索
    2. 百分号(%)通配符:表示任何字符出现任意次数
      ..WHERE prod_name LIKE 'FISH%';  --表示DBMS接受FISH之后的任意字符不管有多少个
      ..WHERE prod_name LIKE '%bean bag%'; -- 表示匹配任何位置上包含文本bean bag的值,无论前后出现什么字符
      ..WHERE prod_name LIKE 'F%y';  --表示找出以F起头、以y结尾的所有值
      说明:注意后面跟的空格,上句检索不出文本y后跟空格的项
      ..WHERE prod_name LIKE '%';   --%不会匹配名称是NULL的行
    3. 下划线(_)通配符
      与%用途一样,但只能匹配单个字符
      说明:DB2不支持、Access使用的是?而不是_
    4. 方括号([])通配符
      方括号通配符制定一个字符集,他必须匹配指定位置的一个字符
      例:找出多有名字以J或M起头的人
      WHERE cust_contact LIKE '[JK]%' ;
      说明:一般用[^JK]否定、但ACCESS使用[!JM]否定.
    5. 使用通配符的技巧:
      不要过度使用通配符,其他操作符优先
      需要使用通配符时,也尽量不要把他们用在搜索的开始
      注意通配符的位置,放错地方不会反悔想要的数据






















































  • 相关阅读:
    正则表达式(验证账号密码邮箱身份证)
    JS Fetch
    事件流动
    JS DOM和BOM
    CSS的定位
    For each...in / For...in / For...of 的解释和例子
    CSS的gridlayout
    CSS position属性
    CSS的颜色
    twelfth week
  • 原文地址:https://www.cnblogs.com/dyakira/p/4320711.html
Copyright © 2011-2022 走看看