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'
领取专属 10元无门槛券
私享最新 技术干货