深入浅出SQL(1)-学习方法及目录结构

该系列文章系个人读书笔记及总结性内容,任何组织和个人不得转载进行商业活动!

 

Head First SQL;对我来说算是一个比较陌生的命题,开始吧!

《MySQL中文文档》

熟悉了书中的学习方法和内容的目录结构;

 

《深入浅出SQL》——《Head First SQL》

学习方法:

目标:理解它,然后确定不会忘记它;

1.慢慢来,理解越多,需要强记的就越少;

2.勤做练习,写下你的心得笔记;

3.当你错过某些重点时,放慢脚步,否则你将失去更多;

 

我们从SQL基础语法开始,然后是SQL数据库设计概念,接下来是高级查询;

这不是一本参考书,而是一本学习SQL的书;

学习相关的语句、函数、关键字;

 

市面上有Standart SQL、MySQL、Oracle、MS SQL Server、PostgreSQL、DB2等众多RDBMS,我们只利用MySQL表达Standard SQL语法;

 

重复是刻意且有必要的;

参考网址:http://www.headfirstlabs.com/books/hfsql/

 

简要目录:

1    数据和表:保存所有东西的地方;

2    SELECT语句:取得精美包装里的数据;

3    DELETE和UPDATE:改变是件好事;

4    聪明的表设计:为什么要规范化;

5    ALERT:改变历史;

6    SELECT进阶:以新视角看你的数据;

7    多张表的数据库设计:拓展你的表;

8    联接与多张表的操作:不能单独存在吗;

9    子查询:查询中的查询;

10    外联接、自联接与联合:新策略;

11    约束、视图与事务:人多手杂,数据库受不了;

12    安全性:保护你的资产;

 

第一章:数据和表

    定义数据;

    从分类的角度看数据;

    什么是数据库;

    数据库包含关联数据;

    设定表:CREATE TABLE语句;

    创建更复杂的表;

    认识下其他数据类型;

    不可以重建已存在的表或数据库;

    把数据添加进表里,你需要INSERT语句;

    各种INSERT语句;

    没有值的列;

    以SELECT语句窥探表;

    NULL的真情告白;

    NOT NULL出现在DESC的结果中;

    用DEFAULT填补空白;

SQL工具包;

 

第二章:SELECT语句

    *究竟是什么;

    如何查询数据类型;

    更多标点问题;

    不成对的单引号;

    单引号是特殊字符;

    INSERT包含单引号的数据;

    SELECT特定列来限制结果数量;

    SELECT特定列来加快结果呈现;

    运用比较运算符;

    OR,只要符合一项条件;

    AND与OR的差异;

    用IS NULL找到NULL;

    节省时间就用关键字:LIKE;

    调用通配符;

    利用AND和比较运算符选取一个范围;

    BETWEEN更好;

    你的评价是IN;

    不然就是NOT IN;

    更多的NOT;

SQL工具包;

 

第三章:DELETE和UPDATE

有了UPDATE,我们可以改变数据,而DELETE则可删除不需要的数据;

    用DELETE删除记录;

    DELETE的规则;

    INSERT-DELETE双步运作;

    慎用DELETE;

    DELETE不精确的麻烦;

    以UPDATE改变数据;

    UPDATE的规则;

    UPDATE是我们的新INSERT-DELETE;

SQL工具包;

 

第四章:为什么要规范化

    表都是关于关系的;

    原子性数据;

    原子性数据和你的表;

    原子性数据的规则;

    规范化的原因;

    规范化表的优点;

    达成1NF的半路上;

    主键规则;

    朝规范化前进;    

    修理Greg的表;

    我们设计的CREATE TABLE;

    加上主键的CREATE TABLE;

    1、2、3……自动递增;

    为现有的表添加主键;

    ALERT TABLE并添加PRIMARY KEY;

SQL工具包;

 

第五章:ALERT

使用ALERT命令,能将之前设计的表套用新学到的设计方法;更好的是,套用不会影响现有数据;

本章还会学到规范化的真正意义,并且能让你的所有表都符合规范化,无论他是过去的还是未来的产物;

    修改表;

    表的改名换姓;

    重新装备列;

    结构上的修改;

    ALERT和CHANGE;

    以一条SQL语句改变两个列;

    仔细研究不具有原子性的location列;

    一些便利的字符串函数;

    以现有列的内容填充新列;

    UPDATE和SET搭档的成功之道;

SQL工具包;

 

第六章:SELECT进阶

有时候需要比SELECT加上WHERE子句更精确的选取工具;本章将学习如何给数据排序和归纳,还会学习如何对查询结果套用数据运算;

    产生新列;

    使用CASE表达式来UPDATE;

    有点秩序吧:OREDER BY;

    按单列排序;

    按两列排序;

    按多列排序;

    以DESC反转排序;

    SUM能为我们加总;

    利用GROUP BY完成分组加总;

    AVG搭配GROUP BY;

    MIN和MAX;

    COUNT,计算天数;

    LIMIT查询结果的数量;

    LIMIT,只限第二名出现;

SQL工具包;

 

第七章:多张表的数据库设计

    跳出一张表的思考框框;

    clown_tracking数据库模式;

    如何从一张表变成两张表;

    连接你的表;

    外键约束;

    创建带有外键的表;

    表间的关系;

    数据模式:一对一;

    数据模式:使用一对一的时机;

    数据模式:一对多;

    数据模式:认清多对多;

    数据模式:我们需要junction table;

    数据模式:多对多;

    终于符合1NF;

    组合键使用了多个列;

    速记符号;

    部分函数依赖;

    传递函数依赖;

    第二范式;

    第三范式;

SQL工具包;

 

第八章:联接和多张表的操作

需要一些操作多张表的新技术和工具;混乱状态与多张表一起出现,所以需要别名来让表更清楚简单;

联接则有助于联系表,取得分布在各张表里的内容;

    预填充表;

    UPDATE所有兴趣列;

    AS到底是怎么一回事;

    列的别名;

    表的别名,谁会需要;

    关于内联接的二三事;

    交叉联接;

    释放你的内联接;

    内联接上场了:相等联接(equijoin);

    内联接上场了:不等联接(non-equijoin);

    最后一种内联接:自然联接(natural join)

    联合查询;

    表与列的别名篇;

SQL工具包;

 

第九章:子查询

有了联接的确好,但是有时需要问数据库多个问题,或 把甲查询的结果作为乙查询的输入,此时就需要子查询出场了;

子查询有助于避免数据重复,让查询更加动态灵活,甚至引入高端概念;

    子查询;

    在单一查询不够用的时候:请用子查询;

    子查询示范;

    子查询规则;

    子查询的构造流程;

    子查询搭配自然联接;

    非关联子查询;

    有多个值的非关联子查询:IN、NOT IN;

    关联子查询;

    一个搭配NOT EXISTS的关联子查询;

    EXISTS与NOT EXISTS;

SQL工具包;

 

第十章:外联接、自联接与联合

新策略:关于链接,我们只认识了一半,我们已经看过返回每个可能行的交叉联接,返回两张表中相符记录的内连接;现在要接触外联接,它可以在表中没有匹配记录的情况下返回记录;

自联接,它可以联接表本身,还有联合,它可以合并查询结果;

学习完这些技巧之后,就可以用自己需要的方式取得所有数据;

    一切都跟左右相关;

    请看左外联接;

    外联接与多个相符结果;

    右外联接;

    自引用外键;

    我们需要自联接;

    可以利用UNION;

    UNION的使用限制;

    UNION规则的运作;

    UNION ALL;

    从联合创建表;

    INTERSECT和EXCEPT;

    子查询和联接的比较;

    把子查询转换为联接;

    把自联接变成子查询;

SQL工具包;

 

第十一章:约束、视图和事务

如需防止其他人输入错误数据,或只让其他人看到部分数据,防止大家同时输入数据等;

要对数据进行保护,以免其他人对数据进行错误的操作;

    尽力避免NULL;

    检查约束:加入CHECK;

    创建视图;

    何为视图;

    利用视图进行插入、更新与删除;

    假装视图是真正的表;

    带有CHECK OPTION的视图;

    SQL帮助你管理事务;

    如何让事务在MySQL下运作;

SQL工具包;

 

第十二章:安全性

如何把数据库和其中的对象变得更安全,以及如何全面控制谁对数据进行什么操作;

    保护用户账号:root;

    添加新用户;

    简单的GRANT语句;

    GRANT的各种变化;

    撤销权限:REVOKE;

    撤销权限许可(GRANT OPTION);    

    具精确度的撤销操作;    

    共享账号问题;

    使用角色;

    卸除角色;

    加上WITH ADMIN OPTION的角色;

SQL工具包;

 

请把SQL应用到你的项目中,只要有心,你也会是Greg!    

 

 

附录I:遗珠论点;

附录II:安装MySQL及SQL工具包梳理;

 

作者:充满挑战的SQL、让人感兴趣的SQL;

你可能感兴趣的:(SQL-深入浅出)