[关闭]
@wpaladins 2017-10-07T14:23:37.000000Z 字数 4832 阅读 2415

《SQL必知必会》读书笔记

笔记



SQL语句书写规范

一. 了解SQL

1.1 数据库基础

  1. 数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)。
    • 注意:数据库软件应称为数据库管理系统(DBMS)。数据库是通过DBMS创建和操纵的容器,而具体它究竟是什么,形式如何,各种数据库都不一样。
  2. 表(table):某种特定类型数据的结构化清单。
    • 表是一种结构化的文件,可用来存储欧中特定类型的数据。
    • 存储在表中的数据是同一类型的数据或清单。
    • 数据库中的每个表都有一个名字来标识自己。这个名字是唯一的,即数据库中没有其他表具有相同的名字。(使表明称为唯一的,实际上是数据库名和表名等的组合。有的数据库还使用数据库拥有者的名字作为唯一名的一部分。)
  3. 模式(schema):关于数据库和表的布局及特性的信息。
    • 表具有一些特性,这些特性定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。描述表的这组信息就是所谓的模式(schema),模式可以用来描述数据库中特定的表,也可以用来描述整个数据库(和其中表的关系)。
  4. 列(column):表中的一个字段。所有表都是由一个或多个列组成的。
    • 提示:正确地将数据分解为多个列极为重要。
  5. 数据类型(datatype):所允许的数据的类型。每个表列都有相应的数据类型,它限制(或允许)该列中存储的数据。
  6. 行(row):表中的一个记录。
    • 说明:记录这两个术语多半是可以交替使用的,但从技术上说,行才是正确的术语。
  7. 主键(primary key):一列(或一组列),其值能够唯一标识表中每一行。
    • 表中每一行都应该有一列(或几列)可以唯一标识自己。唯一标识表中每行的这个列(或这几列)称为主键。主键用来表示一个特定的行。
    • 提示:应该总是定义主键。
    • 表中的任何列都可以作为主键,只要它满足以下条件:
      • 任意两行都不具有相同的主键值;
      • 每一行都必须具有一个主键值(主键列不允许NULL值);
      • 主键列中的值不允许修改或更新;
      • 主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。
    • 使用多个列共同作为主键时,上述条件必须应用到所有列,所有列值的组合必须是唯一的(但单个列的值可以不唯一)。

1.2 什么是SQL

二. 检索数据

2.1 SELECT语句

2.2 检索单个列

  1. SELECT prod_name
  2. FROM Products;

2.3 检索多个列

  1. SELECT prod_id, prod_name, prod_price
  2. FROM Products;

2.4 检索所有列

  1. SELECT *
  2. FROM Products;

2.5 检索不同的值

  1. SELECT DISTINCT vend_id
  2. FROM Products;

2.6 限制结果

  1. SELECT TOP 5 prod_name
  2. FROM Products;
  1. SELECT prod_name
  2. FROM Products
  3. FETCH FIRST 5 ROWS ONLY;
  1. SELECT prod_name
  2. FROM Products
  3. WHERE ROWNUM <= 5;
  1. SELECT prod_name
  2. FROM Products
  3. LIMIT 5;

上述代码使用SELECT语句来检索单独的一列数据。LIMIT 5指示MySQL等DBMS返回不超过5行的数据。
为了得到后面5行数据,需要指定从哪儿开始以及检索的行数,像这样:

  1. SELECT pro_name
  2. FROM Products
  3. LIMIT 5 OFFSET 5;
  • LIMIT 5 OFFSET 5指示MySQL等DBMS返回从第5行起的5行数据。
  • 第一个数字是检索的行数,第二个数字是指从哪儿开始。
  • 所以,LIMIT是定返回的行数。LIMIT带的OFFSET指定从哪儿开始。
  • 注意:第0行,第一个被检索的行就是第0行,而不是第1行。
  • MySQL、MariaDB、SQLite的捷径:
  1. LIMIT 4 OFFSET 3;
  2. //简化为:
  3. LIMIT 3,4
  • 并非所有的SQL实现都一样。

2.7 使用注释

  1. SELECT prod_name -- 这是一条注释
  2. FROM Products;
  1. # 这是一条注释
  2. SELECT prod_name
  3. FROM Products;
  1. /* SELECT prod_name, vend_id
  2. FROM Products; */
  3. SELECT prod_name
  4. FROM Products;

三. 排序检索数据

3.1 排序数据

  1. SELECT prod_name
  2. FROM Products
  3. ORDER BY prod_name;

3.2 按多个列排序

  1. SELECT prod_id, prod_price, prod_name
  2. FROM Products
  3. ORDER BY prod_price, prod_name;

3.3 按列位置排序

  1. SELECT prod_id, prod_price, prod_name
  2. FROM Products
  3. ORDER BY 2, 3;

3.4 指定排序方向

  1. SELECT prod_id, prod_price, prod_name
  2. FROM Products
  3. ORDER BY prod_price DESC, prod_name;

四. 过滤数据

4.1 使用WHERE子句

  1. SELECT prod_name, prod_price
  2. FROM Products
  3. WHERE prod_price = 3.49;

4.2 WHERE子句操作符

  1. SELECT prod_name, prod_price
  2. FROM Products
  3. WHERE prod_price BETWEEN 5 AND 10;

在使用BETWEEN时,必须指定两个值---所需范围的低端值和高端值。这两个值必须用AND关键字分隔。BETWEEN匹配范围中所有的值,包括指定的开始值和结束值。

  1. SELECT cust_name
  2. FROM customers
  3. WHERE cust_email IS NULL;

五. 高级过滤数据

5.1 组合WHERE子句

  1. SELECT prod_id, prod_price, prod_name
  2. FROM Products
  3. WHERE vend_id = 'DLL01' AND prod_price <= 4;

//////////////////////////////////暂停\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

六. 用通配符进行过滤

七. 创建计算字段

八. 使用函数处理数据

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注