目录
主键(Primary Key)与外键(Foreign Key)
SQL概述
SQL是什么
SQL的全称与历史背景
SQL,全称为Structured Query Language,中文译为“结构化查询语言”。诞生于1974年,由IBM的研究员Raymond Boyce和Donald Chamberlin设计,最初命名为SEQUEL(Structured English Query Language)。SQL最初是为IBM的研究项目System R而开发,旨在让用户以非过程化的方式访问和操作数据库。随着时间的推移,SQL逐渐发展成为关系数据库操作的事实标准,并在1986年首次被美国国家标准协会(ANSI)标准化为SQL-86。
SQL经历了多个版本的演进,每个版本都增加了新的功能和改进。SQL-89引入了更多数据操作能力,如排序、分组和连接操作。SQL-92则进一步扩展了SQL的功能,包括复杂的多表连接、子查询、视图和存储过程等,成为最广泛支持的版本之一。1999年发布的SQL:1999,也称为SQL3,加入了面向对象特性、递归查询和更强大的数据类型支持。
SQL版本演进表格
版本 | 发布年份 | 关键改进与新增功能 |
---|---|---|
SQL-86 | 1986 | - 首个官方标准版本 - 基础的DML(查询、插入、更新、删除) - 基础的DDL(创建、修改、删除表) |
SQL-89 | 1989 | - 引入完整性约束(NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY) - 支持ORDER BY(排序)与GROUP BY(分组) - 增强的连接操作(INNER JOIN, OUTER JOIN) |
SQL-92 (SQL2) | 1992 | - 成为国际标准 - 复杂的多表连接语法 - 子查询(嵌套查询) - 视图的创建与使用 - 存储过程与用户自定义函数 - 事务处理(COMMIT, ROLLBACK, SAVEPOINT) |
SQL:1999 (SQL3) | 1999 | - 面向对象扩展(用户自定义类型UDT, 方法, 继承) - 递归查询(WITH RECURSIVE) - 分区(PARTITION BY)与窗口函数 - 更丰富的数据类型(数组、大对象LOB) - XML数据类型与操作支持 |
版本特点简述
- SQL-86奠定了SQL作为关系数据库查询语言的基础,确立了查询、数据定义和数据操作的初步框架。
- SQL-89在此基础上增强了数据完整性管理,引入了完整性约束,以及更加灵活的数据排序和分组操作,提高了数据查询和处理的灵活性。
- SQL-92(SQL2)是一个里程碑式的版本,它不仅被广泛接受为国际标准,而且大大丰富了SQL的功能,包括复杂的多表查询、子查询、视图和存储过程,使SQL成为功能强大的数据库编程语言。
- SQL:1999(SQL3)则将SQL推向了新的高度,通过引入面向对象特性、递归查询和更加强大的数据类型,极大地扩展了SQL的应用范围,使其能够更好地适应复杂数据模型和新兴的数据处理需求,如处理半结构化数据(如XML)。
SQL在数据库管理中的作用
SQL作为关系数据库管理系统的标准语言,扮演着至关重要的角色。它允许用户执行以下关键任务:
- 数据查询:通过SELECT语句检索数据库中的数据,支持复杂的数据过滤、排序和聚合操作。
- 数据定义:利用CREATE、ALTER和DROP等命令来创建、修改和删除数据库的结构,如表、索引和视图。
- 数据操纵:通过INSERT、UPDATE和DELETE语句来插入新数据、更新现有数据和删除不再需要的数据。
- 数据控制:管理数据库的访问权限和安全,如GRANT和REVOKE语句来分配和撤销用户的权限。
数据库管理系统(DBMS)简介
数据库管理系统(DBMS)是一种软件系统,负责数据库的创建、维护和使用。为用户提供了一套接口,以便与数据库进行交互。主要的DBMS类型包括关系型数据库管理系统(RDBMS),如MySQL、PostgreSQL、Oracle和Microsoft SQL Server,以及非关系型数据库管理系统(NoSQL),如MongoDB、Cassandra等。
RDBMS基于关系模型,其中数据以表格形式存储,每张表由行和列组成,且表之间可以通过外键关联形成复杂的数据关系。SQL是大多数RDBMS的核心组成部分,不仅是一种查询语言,也是数据库定义和数据操作的工具。
DBMS除了提供SQL接口外,负责数据的物理存储、安全性控制、并发访问管理、数据恢复等功能,确保数据的完整性和一致性。随着技术的进步,现代DBMS还提供了分布式处理、自动伸缩、实时分析等高级特性,以满足日益增长的数据处理需求。
SQL的基本概念
数据库(Database)
数据库是一个长期存储在计算机内,以一定方式组织的、可共享的、具有尽可能小的冗余度、与应用程序彼此独立的大量数据的集合。不仅仅是一个存放数据的容器,还是数据管理和访问的系统,能够确保数据的安全性、完整性和一致性。数据库按照数据结构来组织、存储和管理数据,使得数据的查找、更新和管理变得高效。
表(Table)与字段(Field)
- 表:在关系数据库中,表是数据存储的基本单位,类似于电子表格,由行和列组成。每个表代表一个实体或实体集合(如客户、订单),并包含关于该实体的一组相关信息。
- 字段:表中的每一列称为一个字段,它代表了表中存储数据的特定属性或特征。例如,在一个“员工”表中,可能有“员工编号”、“姓名”、“部门”和“入职日期”等字段。每个字段都有其特定的数据类型,如整数、字符串、日期等。
记录(Record)与数据类型(Data Types)
- 记录:表中的每一行称为一条记录,它代表了实体的一个实例或一条具体信息。例如,在“员工”表中,一条记录就对应了一个具体的员工信息。
- 数据类型:数据类型定义了字段能存储的数据的种类和格式,确保了数据的一致性和准确性。常见的数据类型包括:
- 整数类型:如INT、SMALLINT,用于存储整数值。
- 浮点数类型:如FLOAT、REAL,用于存储带有小数部分的数值。
- 字符串类型:如VARCHAR、TEXT,用于存储文本数据。
- 日期/时间类型:如DATE、DATETIME,用于存储日期和时间信息。
- 二进制类型:如BINARY、VARBINARY,用于存储图像、文档等二进制数据。
- 布尔类型:如BIT,用于存储真/假值。
主键(Primary Key)与外键(Foreign Key)
- 主键:主键是表中用于唯一标识每一条记录的字段,其值必须唯一且非空。一个表只能有一个主键,但主键可以由一个或多个字段组成(复合主键)。主键的存在保证了数据的唯一性,并有助于提高查询效率。
- 外键:外键用于建立两个表之间的联系,引用另一个表的主键。通过外键,可以实现数据之间的关联和参照完整性,即确保引用的值必须存在于被引用表的主键中。外键约束有助于维护数据库中数据的一致性,实现数据之间的逻辑关系,如一对多、多对多关系等。