SQL学习指南 - 第一章

来源:互联网 发布:c语言病毒代码大全 编辑:程序博客网 时间:2024/05/22 06:16

SQL语言可以分为

SQL模式语句:用于创建数据库对象(表、索引、约束等)的语句。

SQL数据语句:用于创建、操作和检索保存在数据库中的数据的语句。

第一章
1.1 数据库简介
"数据库"是指一组相关信息的集合。
1.1.1 非关系数据库
层次数据库系统。树中的每个节点都具有0个或1个父节点,以及0个、1个或多个子节点。这种设置被称为单根层次结构(single-parent hierarchy)。
网状数据库系统。(PS:还没清楚)
1.1.2 关系模型
数据冗余:在一个数据集合中重复的数据称为数据冗余。
关系数据库中的每张表都包含一项作为每行唯一标识的信息的(主键),它与其他信息一起构成了对条目的完整描述。
自然主键与逻辑主键的区别(TODO)
1.1.3 一些术语
实体:数据库用户所关注的对象,如客户、部门、地理位置等
列:存储在表中的独立数据片段
行:所有列的一个集合,完整地描述了一个实体或实体上的某个行为,也称之为记录
表:行的集合,即可以保存在内存中(未持久化),也可以保存在存储设备中(已持久化)
结果集:未持久化表的另一个名字,一般为SQL查询的结果
主键:用于唯一标识表中每个行的一个或多个列
外键:一个或多个用于标识其他表中某一行的列

1.2 什么是SQL
SQL与关系模型的关系密切,因为SQL查询的结果页可以视为一张表(在程序上下文中称之为结果集)。
1.2.1 SQL语句的分类
SQL方案语句:用于定义存储于数据库中的数据结构。
SQL数据语句:用于操作SQL方案语句所定义的数据结构。
SQL事务语句:用于开始、结束和回滚事务。

通过SQL方案语句所创建的所有数据元素都被存储在一个特殊的表集合,即数据字典中。这些“关于数据库的数据”一般被称为“元数据”。

1.2.2 SQL:非过程化语句
过程化语言对所期望的结果和产生这些结果的执行机制或过程都进行了定义。非过程化语言同样定义了期望结果,但将产生结果的过程留给外部代理来定义。

使用SQL意味着必须放弃对过程的控制,因为SQL语句只定义必要的输入和输出,而执行语句的方式则交由数据库引擎的一个组件,即优化器处理。优化器的工作包括查看SQL语句并考虑该表的配置信息以及有无索引等,以确定最具效率的执行路径(当然,并不总是最有效率)。

如果使用交互式工具,那么可以接收到几种操作所影响的行数的反馈:
select语句的返回行数
insert语句创建的行数
update语句修改的行数
delete语句所删除的行数
检查这个信息以确信语句执行并没有超出预料。

1.3 什么是MySQL
几个最成熟和流行的商业产品:
甲骨文公司的Oracle Database
Microsoft公司的SQL Server
IBM公司的DB2 Universal Database
Sybase公司的Sybase Adaptive Server
开源社区
PostgreSQL
MySQL