1.数据库1.1.一组相关信息1.2.电话簿肯定是最为普及且常用的数据库2.非关系型数据库系统2.1.层次数据库系统2.1.1.以一个或多个树形结构来表示数据2.1.2.提供了定位特定客户信息树的工具,并能够遍历该树找到所需的账户和/或交易2.1.3.树中的每个节点都具有0个或1个父节点,以及0个、1个或多个子节点2.1.3.1.单根层次结构2.1.4.在大型机世界中找到2.1.5.已在目录服务领域中重获新生2.1.5.1.Microsoft的Active Directory2.1.5.2.开源的Apache Directory Server2.2.网状数据库系统2.2.1.表现为多个记录以及定义不同记录之间关系的多个链接2.2.2.具有多根层次的特点2.2.3.在大型机世界中找到3.关系模型3.1.E.F.Codd博士3.1.1.1970年3.1.2.IBM研究院3.1.3.A Relational Model of Data for Large Shared Data Banks论文3.1.3.1.大型共享数据银行的数据关系模型3.1.4.使用数据表集合来表示数据3.1.5.相关实体之间并不是用指针来导航的3.1.6.借助冗余数据来链接不同表中的记录3.2.主键(primary key)3.2.1.能够唯一标识某一行的信息3.2.2.每种数据库服务器都提供了相应的机制来生成用作主键的唯一数字3.2.2.1.不用操心跟踪已分配的数字3.2.3.主键列在被赋值后是绝不允许被修改的3.2.4.复合主键3.2.4.1.由两个或多于两个列组成的主键3.2.5.自然键(natural key)3.2.6.代理键(surrogate key)3.3.外键(foreign key)3.4.规范化(normalization)3.4.1.改进数据库设计以确保独立信息仅出现在一处(外键除外)的过程4.SQL4.1.IBM委托一个小组根据Codd的想法建立一个原型4.1.1.这个小组创建了DSL/Alpha的简化版本SQUARE4.1.2.经过对SQUARE的改进,产生了SEQUEL语言,最终该语言被命名为SQL4.2.ANSI4.2.1.美国国家标准协会(American National Standards Institute)4.2.2.20世纪80年代中期1986年发布第一个SQL标准4.2.3.在1989年、1992年、1999年、2003年、2006年、2008年、2011年、2016年发布了新版本4.3.SQL并不是某种缩写4.3.1.“Structured Query Language”结构化查询语言4.3.2.可以使用独立的字母(S.Q.L)或使用“sequel”4.4.语句分类4.4.1.SQL模式语句(SQL schema statement)4.4.1.1.用于定义存储在数据库中的数据结构4.4.1.2.通过SQL模式语句所创建的所有数据库元素都被存储在一个名为“数据字典”(data dictionary)的特殊表集合内4.4.1.3.关于数据库的数据被称为“元数据”4.4.2.SQL数据语句(SQL data statement)4.4.2.1.用于操作之前使用SQL模式语句定义的数据结构4.4.3.SQL事务语句(SQL transaction statement)4.4.3.1.用于启动、结束、回滚事务4.5.一种非过程化语言4.5.1.只定义了必要的输入和输出4.5.2.如何执行语句,则由名为优化器(optimizer)的数据库引擎组件来处理4.5.3.优化器的工作是检查SQL语句,考虑数据表的配置以及可用的索引,并决定最有效的执行路径4.5.4.单凭SQL无法编写完整的应用程序4.5.5.需要将SQL与编程语言集成起来4.5.5.1.Oracle的PL/SQL语言4.5.5.2.MySQL的存储过程语言4.5.5.3.Microsoft的Transact-SQL语言4.5.5.4.SQL数据语句是该语言语法的一部分,允许无缝地将数据库查询与过程化语句集成到一起4.6.大多数SQL实现将位于“/”和“/”之间的文本视为注释5.跨平台SQL5.1.最有前途的工具之一是 Apache Drill5.1.1.是一款开源查询引擎,允许用户编写查询,以访问存储在大多数数据库或文件系统中的数据6.关系型数据库产品6.1.商业化的关系型数据库6.1.1.Oracle公司的Oracle Database6.1.2.Microsoft公司的SQL Server6.1.3.IBM公司的DB2 Universal Database6.2.最常用的两个开源数据库服务器6.2.1.PostgreSQL6.2.2.MySQL