《SQL必知必会》第1课到第5课笔记

一、数据库基础

  1. 区别数据库(database)与数据库管理系统(DBMS):数据库是通过DBMS创建和操纵的
  2. 表:存储特定类型(同一种类型,如顾客或订单)数据的结构化清单
    – 表名:数据库中每个表名都是唯一的。
    – 模式:关于数据库和表的布局及特性的信息。
    – 列:表的一个字段。
    – 数据类型:限定存储在列中的数据种类
    – 行:表中的一条记录
    主键:唯一标识【不能重用、修改更新】
  3. SQL: Structured Query Language; 结构化查询语言

二、检索数据:SELECT

  1. 关键字:作为SQL组成部分的保留字,不可作为表或列的名字
  2. SELECT语句SELECT [列名] FROM [表名]
    – 结束语句:以分号分隔
    – SQL语句不区分大小写【SELECT、select、Select】
    – 处理SQL语句时空格会被忽略,分行不分行无所谓
  3. 检索多个列: 在列名之间加上逗号 SELECT [列名], [列名], [列名] FROM [表名]
  4. 检索所有列:通配符-星号(*)
    – 除非必要,不使用,会降低性能
    – 检索未知列时有用
  5. 检索出不重复的值:关键字DISTINCT
    – 只能作用于某一列,否则失效
  6. 限制输出结果的数量
    – SQL Server 和Access:SELECT TOP 5 [COL] FROM [TABLE]
    – DB2: SELECT [COL] FROM [TABLE] FETCH FIRST 5 ROWS ONLY
    – MySQL etc: SELECT [COL] FROM [TABLE] LIMIT 5 OFFSET 5,选择第6行到第十行
  7. 使用注释:行内注释用两个连字符(–);多行注释用(/* */)

三、排序检索数据:ORDER BY

  1. 子句:SQL语句的组成部分,由关键字和数据组成。
  2. ORDER BY子句:选择一个或多个列的名字进行排序
    – 其位置应该在SELECT语句的最后
    – 可以用非检索的列进行排序
    – 注意Access不允许按照别名进行排序,也可以用实际计算字段或相对位置代替/P91
  3. 按照多个列排序:用逗号分开列名
  4. 按列位置排序:用检索出的列的相对列位置代替列名
    – 好处是不用重新输入列名
    – 可能造成列名错用或忘记更新
    – 不能用非检索的列来排序
  5. 指定排序方向:默认升序排序,降序需使用关键字DESCSELECT [COL] FROM [TABLE] ORDER BY [COL] DESC
    – 仅对所限定的某一列起作用,如果希望对多列设定倒序的话,需要逐一添加关键字
    – 区别大小写的排序顺序:取决于数据库的设置方式,可更改

四、过滤数据:WHERE

  1. 搜索条件或过滤条件:WHERE子句
    – 其位置应该在ORDER BY子句之前
  2. WHERE子句操作符:并非所有DBMS都支持以下操作符
    SELECT [COL] FROM [TABLE] WHERE [COL] <> [VALUE];
    摘自课本第31页
  3. 范围值检查:关键词BETWEENSELECT [COL] FROM [TABLE] WHERE [COL] BETWEEN [VAL1] AND [VAL2]
    – 必须指定最大值最小值
    – 其匹配范围包括所有值
  4. 空值检查:IS NULL子句
    – NULL不等同于不匹配,所以在进行匹配过滤或者非匹配过滤时,这部分结果不会返回

五、高级数据过滤

  1. 组合WHERE子句:使用逻辑操作符
  2. AND操作符:增加多个过滤条件
    – 注意每个条件之间都要使用AND关键字
  3. OR操作符:匹配任一过滤条件
  4. 求值顺序:用(圆括号)分组AND和OR操作符
  5. IN操作符:指定条件范围 SELECT [COL] FROM [TABLE] WHERE [COL] IN ([VAL1], [VAL2]);
    – 功能等价与OR操作符,但更有优势,包括执行速度快、更直观等
  6. NOT操作符:否定其后的过滤条件 SELECT [COL] FROM [TABLE] WHERE NOT [CONDITION]
    – 功能有时等价于不等号,但结合IN操作符使用时有优势
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值