【VB与数据库】SQL入门经典

本来计划着到开学来了再结束这阶段的学习呢,可是还是提前完成了,所以想做一下总结,免得以后在总结找不到头绪,再拖延时间,那就趁热打铁吧。
我对这本书的整体理解:
【VB与数据库】SQL入门经典_第1张图片
 
SQL:结构化查询语言
三大角色:
  • 创建数据库
  • 查询数据库
  • 控制数据库安全
与其他编程语言比较:
SQL允许一步步编写指令,告诉计算机应做些什么去获得一个特定目标。SQL查询是SQL最常用的功能,SQL发出指令,数据库会提供其所需的数据。
SQL函数:
COUNT()   统计数
SUM()        累加结果集中每个记录的指定列或表达式的值,仅能处理数值数据类型
AVG()         平均值,仅能处理数值数据类型
MAX()和MIN()  处理日期、时间、字符和数值数据类型
数据程序设计:
三个范式:
第一范式:确保每列的原子性, 字段不可分。
        如果每列都是不可在分的最小数据单元,则满足第一范式。
例:顾客表(姓名、编号、地址……)其中地址列还可以细分为国家、省、市等。
第二范式: 有主键,非主键字段依赖主键。
       在第一范式的基础上更进一层,目标是确保表中的每列都和主键相关。
       如果一个关系满足第一范式,并且除了主键以外的其他列,都依赖于该主键,则满足第二范式。
例如:订单表(订单编号。订购日期、价格……),“订单编号”为主键,“产品编号”和主键列没有直接的关系,即“产品编号”列不依赖于主键列,应删除该列。
第三范式: 非主键字段不能相互依赖。
       在第二范式的基础上更进一层,目标是确保表中的每列都和主键相关,而不是间接相关。
       如果一个关系满足第二范式,并且除了主键以外的其他列都不依赖于主键列,则满足第三范式。
例:订单表(订单编号,订购日期,顾客编号,顾客姓名……),初看该表没有问题,满足第二范式,每列都和主键列“订单编号”相关,在细看你会发现“顾客姓名”和“顾客编号”相关,“ 顾客编号 ”和“订单编号”又相关,最后经过传递依赖,“顾客姓名”也和“订单编号”相关。为满足第三范式,应去掉“顾客姓名”列,放入客户表中。
事务
一个SQL语句分组

通过ACID测试
A原子性
C一致性
I隔离性
D持久性
DBMS通过事务日志记录主数据库中的所有不同驱动来解决这些需求。


ANSI事务模型
COMMIT语句:告诉DBMS所有语句被执行,数据库处于一致状态

ROLLBACK 语句:撤销
必须在一个非事务语句(select等)之后才有效。

SQL的扩展
Transact-SQL
BEGIN TRANSACTION语句        初始化一个事务
COMMIT TRANSACTION语句     功能上与COMMIT一致
SAVE TRANSACTION语句         允许创建保存点
ROLLBACK TRANSACTION         使DBMS回滚或撤销对数据做的某些或所有改变
事务日志  回滚的关键
MS Access较小不用事务日志
如果事务之间出现故障,则无法回滚

你可能感兴趣的:(【VB与数据库】SQL入门经典)