全书
LadyL (心有猛虎,细嗅蔷薇)
读过 SQL必知必会(第5版)
《SQL必知必会(第5版)》
本·福达
61个笔记
◆ 第3课 排序检索数据
>> 数据一般将以它在表中出现的顺序显示
◆ 第10课 分组数据
>> 数据将在最后指定的分组上进行汇总。换句话说,在建立分组时,指定的所有列都一起计算(所以不能从个别的列取回数据)。
>> GROUP BY 2, 1可表示按选择的第二个列分组,然后再按第一个列分组。
>> WHERE过滤行,而HAVING过滤分组。
>> WHERE子句在这里不起作用,因为过滤是基于分组聚集值,而不是特定行的值。
>> HAVING时应该结合GROUP BY子句,而WHERE子句用于标准的行级过滤。
◆ 第11课 使用子查询
>> 查询总是从内向外处理
>> 如上所示,把子查询分解为多行并进行适当的缩进,能极大地简化子查询的使用。
◆ 第12课 联结表
>> 供应商占一行,具有唯一的标识。此标识称为主键(primary key),
>> 联结是一种机制,用来在一条SELECT语句中关联表,因此称为联结。
>> 引用的列可能出现歧义时,必须使用完全限定列名
>> 句点分隔表名和列名
>> 没有联结条件的表关系返回的结果为笛卡儿积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数
>> 联结条件用特定的ON子句而不是WHERE子句给出。传递给ON的实际条件与传递给WHERE的相同。
>> 不要联结不必要的表。联结的表越多,性能下降越厉害
◆ 第13课 创建高级联结
>> 表别名只在查询执行中使用。与列别名不一样,表别名不返回到客户端
>> 检索两个表中的所有行并关联那些可以关联的行
◆ 第14课 组合查询
>> SQL也允许执行多个查询(多条SELECT语句),并将结果作为一个查询结果集返回。这些组合查询通常称为并(union)或复合查询(compound query)。
>> UNION从查询结果集中自动去除了重复的行
>> 使用UNION时,重复的行会被自动取消。
>> 如果想返回所有的匹配行,可使用UNION ALL而不是UNION
◆ 第15课 插入数据
>> 给表插入具有指定列值的行
>> SELECT中列出的每一列对应于Customers表名后所跟的每一列
◆ 第16课 更新和删除数据
>> SET命令用来将新值赋给被更新的列
>> UPDATE语句以WHERE子句结束,它告诉DBMS更新哪一行。没有WHERE子句,DBMS将会用这个电子邮件地址更新Customers表中的所有行,这不是我们希望的。
>> DELETE不需要列名或通配符。DELETE删除整行而不是删除列。要删除指定的列,请使用UPDATE语句。
>> TRUNCATE TABLE
>> ❑ 保证每个表都有主键
>> 在UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确。
◆ 第17课 创建和操纵表
>> SQL要求首先手工删除该表(请参阅后面的内容),然后再重建它,而不是简单地用创建表语句覆盖它。
>> 主键是其值唯一标识表中每一行的列
>> 不允许NULL值的列可作为主键
>> 允许NULL值的列不能作为唯一标识。
>> NULL值是没有值,不是空字符串
>> 空字符串是一个有效的值,它不是无值
>> NULL值用关键字NULL而不是空字符串指定
>> 通过指定引用系统日期的函数或变量,将系统日期用作默认日期
>> 更新表定义,可以使用ALTER TABLE语
>> 在ALTER TABLE之后给出要更改的表名
>> 使用ALTER TABLE要极为小心,应该在进行改动前做完整的备份(表结构和数据的备份)。数据库表的更改不能撤销,如果增加了不需要的列,也许无法删除它们
>> DROP TABLE
>> 执行这条语句将永久删除该表。
>> Oracle和PostgreSQL用户使用RENAME
>> ALTER TABLE
◆ 第18课 使用视图
>> 视图是虚拟的表
>> 视图只包含使用时动态检索数据的查询
>> 视图不包含数据
>> 在部署使用了大量视图的应用前,应该进行测试
>> 视图为虚拟的表。它们包含的不是数据而是根据需要检索数据的查询。视图提供了一种封装SELECT语句的层次,可用来简化数据处理,重新格式化或保护基础数据。
◆ 第19课 使用存储过程
>> 可以创建存储过程。简单来说,存储过程就是为以后使用而保存的一条或多条SQL语句。可将其视为批文件,虽然它们的作用不仅限于批处理
>> EXECUTE
◆ 第21课 使用游标
>> 需要在检索出来的行中前进或后退一行或多行,这就是游标的用途所在
>> 游标(cursor)是一个存储在DBMS服务器上的数据库查询
>> FETCH指出要检索哪些行,从何处检索它们以及将它们放于何处(如变量名)
◆ 第22课 高级SQL特性
>> 关联表和引用完整性
>> 主键是一种特殊的约束,用来保证一列(或一组列)中的值是唯一的,而且永不改动。
>> 表中的一列(或多个列)的值唯一标识表中的每一行
>> 外键是表中的一列,其值必须列在另一表的主键中。外键是保证引用完整性的极其重要部分
>> 在定义外键后,DBMS不允许删除在另一个表中具有关联行的行
>> 而利用外键可以防止意外删除数据。
>> 级联删除
说明 · · · · · ·
表示其中内容是对原文的摘抄