《SQL必知必会》简要摘录(一)

1.为什么要学SQL语句

想要成为网站全栈开发者,必须要掌握数据库。

虽然Flask有一些第三方扩展,可以不需要掌握SQL语句就能用上数据库的功能。比如想用关系型数据库的功能,可以用安装flask-alchemy;想用非关系型数据库的功能,可以使用MongoKit或是其它。

但是我就是想学SQL语句,这让我心里有底。

2.为什么选这本书

网上很多人都说它好,而且头头是道,于是我就买了。

3.要记录些什么

写这个主要是给自己用的,有些内容自己一眼就明白的,或者是常用的,绝对已经学会的,这些内容就不必写在这里了,免得将来自己查看还要看到大段已经掌握的内容。

还有一些“说明”中的内容,平时根本用不到的,我认为暂时不用掌握。或者是一些不同类型的数据库有不同规则的内容,这些都不用记下来,到时候可以去看对应数据库的官方文档。

这部分博文只是我作为新手以后查询时要用的,等我将来成了高手,自然就不用再看了。因此,某些内容不写在这里也没什么。

4.以下为主要内容

第1课 了解SQL

模式:关于数据库和表的布局及特性的信息。(数据如何存储在表中,存储什么样的数据,数据如何分解,各部分信息如何命名等)

数据分解:将数据分解为多个列,如城市、州、邮政编码应该总是彼此独立的列。分解这些列有利于过滤数据。

表由列组成,而表中数据是按行存储的。一行为一条记录。

主键用于表示一个特定的行,没有主键,更新或删除表中特定行就很难。

第2课 检索数据

DISTINCT关键字作用于所有列。

SELECT prod_name FROM Products LIMIT 5 OFFSET 3;--返回从第3行起的5条数据,等同于LIMIT 3,5

第3课 排序检索数据

SELECT 应当是最后一条语句,否则报错。

降序排序要用DESC:

SELECT prod_id, prod_price, prod_name

FROM Products

ORDER BY prod_price DESC;

想在多个列上降序,須对每一列指定DESC。

第4课 过滤数据

检查具有NULL值的列:

SELECT cust_name

FROM Customers

WHERE cust_email IS NULL;

第5课 高级数据过滤

AND

SELECT prod_id, prod_price, prod_name

FROM Products

WHERE vend_id = 'DLL01' AND prod_price

OR

许多DBMS在OR子句满足第一个条件时就不再计算第二个条件了。(第一个条件满足时,不管第二个条件是否满足,相应的行都将被检索出来)

OR是匹配任一个条件,而非同时匹配两个。(这就是上面的原因)

可在WHERE子句中同时用AND和OR,用()调整优先级。

能用OR的,用IN也可以解决,而且更好。

WHERE NOT vend_id = 'DLL01'

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180806A015XB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券