zoukankan      html  css  js  c++  java
  • 《SQL in 10 minutes》简单笔记

    2 检索数据

    SELECT row_name 
    FROM table_name
    
    • SELECT DISTINCT row_name 作用于所有的列
    • 限制返回结果行数的关键字由数据库决定, 例如TOP, ROWNUM, LIMIT, 这一操作是0-index

    3 排序检索数据

    SELECT row_name 
    FROM table_name
    ORDER BY row_name
    
    • ORDER BY必须为SELECT语句的最后一条子句
    • ORDER BY可以按列位置排序,1-index
    • DESC关键字只作用于直接位于其前面的列名

    4 过滤数据

    SELECT row_name 
    FROM table_name
    WHERE condition
    

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/24856b3b-efc6-4dbe-9931-a9fccf94de1c/Untitled.png

    • 过滤选择不包含指定值的所有行时, 返回结果不含有NULL值的行

    5 高级数据过滤

    SELECT row_name 
    FROM table_name
    WHERE condition a 
    AND condition b
    OR condition c...
    
    • AND的优先级比OR高, 因此组合使用的时候要用圆括号明确分组.
    SELECT row_name 
    FROM table_name
    WHERE row_name IN ('name1', 'name2')
    
    • IN取一组括号中的所有合法值, 逻辑和OR相似, 但执行速度一般更快.

    6 通配符

    SELECT row_name 
    FROM table_name
    WHERE table_name LIKE 'wildcard'
    
    • 用LIKE操作符指示DBMS, 后跟的搜索模式使用通配符匹配
    • %表示任何字符出现任何次数, 包括0
    • _表示单个字符
    • [ ]用来指定一个字符集, 匹配指定位置的一个字符, 例如[ABC]匹配A或B或C
    • 通配符搜索较慢, 只在必要的时候使用, 且尽量放在搜索模式的末尾

    7 计算字段

    • +或||或CONCAT()可以把多个列或字符串拼接起来
    • 许多数据库保存填充为列宽的数据值, TRIM(), RTRIM()和LTRIM()可以去掉返回数据中的空格
    SELECT row_name AS alias_name
    FROM table_name
    
    • 用AS关键字赋予别名, 使得查询结果可以被引用
    SELECT row_name1,
    row_name2*row_name3 AS alias_name
    FROM table_name
    

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9f81f17e-c25d-4062-9307-90de1b46103f/Untitled.png

    • 还可以对检索出的数据进行算术计算

    8 函数

    每个DBMS的函数用法都不相同, 可以查询具体手册

    9 汇总数据

    • 聚集函数是指用于检索汇总数据的函数, 它对某些行运行并返回一个值, 例如AVG(), COUNT(), MAX(), MIN(), SUM()
    • 如果COUNT指定列名会忽略为NULL的行, 如果用*则不会忽略, 会统计所有行.
    SELECT AVG(DISTINCT row_name1)
    FROM table_name
    
    • 所有的聚集函数都可以用DISTINCT参数指定只考虑不同值

    第10课 分组数据

    • 分组可以将数据分为多个逻辑组, 对每个组进行聚焦计算
    SELECT row_name1, 
    COUNT(*) AS row_name2
    FROM table_name
    GROUP BY row_name1
    
    • 使用GROUP BY子句可以建立分组, 就可以对每个分组计算一次而不是对整个表进行计算
    SELECT row_name1, 
    COUNT(*) AS row_name2
    FROM table_name
    GROUP BY row_name1
    HAVING row_name2 condition...
    
    • HAVING语句和WHERE语句的语法相同, 但是HAVING过滤分组, WHERE过滤行.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8cfa526a-7a22-4026-a5ba-5ac90bac3935/Untitled.png

    11 子查询

    • 子查询就是将一个查询的结果作为另一个查询的条件语句, 嵌套地使用SELECT.
    • 作为子查询的SELECT语句只能查询单个列.

    12 联结表

    • 联结是关系型数据表的一种重要机制, 用于在SELECT语句中关联表.

      SELECT row_name1, row_name2, row_name3
      FROM table1, table2
      WHERE table1.key_row = table2.key_row
      
    • 这种基于两个表之间的相等测试叫内联结, 它和以下语句等价:

    SELECT row_name1, row_name2, row_name3
    FROM table1
    INNER JOIN table2
    ON table1.key_row = table2.key_row
    
    • 如果不用WHERE作为过滤条件来匹配联结行, 两个表的每一行将于每一行配对, 返回结果为笛卡尔积.

    13 高级联结

    • 可以用AS给表起别名
    SELECT c1.row_name1, c1.row_name2, c1.row_name3
    FROM table1 AS c1, table1 AS c2
    WHERE c1.row_name1 = c2.row_name1
    AND c2.row_name2 = 'key'
    
    • 自联结是指作为外部语句, 替代从相同表中检索数据的子查询语句
    SELECT table1.row_name1, table2.row_name2
    FROM table1 LEFT OUTER JOIN table2
    ON table1.row_name1 = table2.row_name1
    
    • 外联结是指包含那些在相关表中没有关联行的行, 即左表的所有值都会被返回, 及时在右表中没有值.

    14 组合查询

    • UNION将多个SELECT的查询结果组合列出 并且会自动去重, 而UNION ALL不会.

    15 插入数据

    • INSERT INTO用于将行插入到数据库表
    • SELECT INTO可以将一个表的所有内容复制到另一个表

    16 更新和删除数据

    UPDATE table_name
    SET row_name1 = 'value1',
    		row_name2 = 'value2'
    WHERE condition;
    
    • UPDATE语句由三部分组成, 注意UPDATE的使用要小心, 如果不用WHERE指定条件那么会更新表中所有的表
    DELETE FROM table_name
    WHERE condition;
    
    • DELETE语句同样很容易使用, 一定要注意限定条件.
    • DELET删除整行而不是列, 要删除指定的列应该使用UPDATE.
  • 相关阅读:
    Altium Designer 出现错误提示(警告)adding items to hidden net GND/VCC
    proteus 查找 仿真元件 中英文对照 [持续更新]
    proteus 运行出错,用户名不可使用中文!
    proteus汉化
    proteus怎么仿真?
    keil 怎样新建工程,编写代码?
    raspberry pi2 智能小车源码及测试视频
    项目优化
    PHP composer
    腾讯云通信接入
  • 原文地址:https://www.cnblogs.com/limitlessun/p/15079754.html
Copyright © 2011-2022 走看看