SQL简介
- SQL(结构化查询语言)是用于访问和操作数据库中的数据的标准数据库编程语言。
- SQL是关系数据库系统的标准语言。所有关系数据库管理系统(RDMS),如MySQL、MS Access、Oracle、Sybase、Informix、Postgres和SQL Server都使用SQL作为它们的标准数据库语言。
- 为了处理数据库和数据库相关的编程,程序员需要有一些介质,或者可以说接口来详细说明一组命令或代码来处理数据库或访问数据库的数据。在本章中,将简要介绍在学习SQL的过程中您将学习的术语。
你会从SQL中学到什么?
- SQL为结构化查询语言提供了独特的学习和数据库处理技术,并将帮助您更好地控制SQL查询并有效处理这些代码。由于SQL帮助您包括数据库创建,数据库或表删除,获取行数据和修改这些数据等,并行SQL使得事情自动和平滑,最终用户可以轻松访问和处理该应用程序的数据。
SQL 是什么?
- SQL 发音为“sequel”。
- SQL 指结构化查询语言,全称是 Structured Query Language(是最初由IBM开发)。
- SQL 是关系数据库系统的标准语言。
- SQL 是一种 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言。
SQL 能做什么?
- SQL可以创建新的数据库及其对象(表,索引,视图,存储过程,函数和触发器)。
- SQL可以修改现有数据库的结构。
- SQL可以从数据库中删除(删除)对象。
- SQL可以TRUNCATE(删除)表中的所有记录。
- SQL可以对数据字典进行COMMENT。
- SQL可以RENAME一个对象。
- SQL可以从数据库中选择(检索)数据。
- SQL可以将数据插入到表中。
- SQL可以更新表中的现有数据。
- SQL可以从数据库表中删除记录。
- SQL可以在数据库中设置用户的GRANT和REVOKE权限。
SQL 的历史
- 1970年,SQL由IBM的Donald D. Chamberlin和Raymond F. Boyce开发。
- 1974年,开发版本最初被称为SEQUEL(结构化英语查询语言)。
- 1979年,关系软件发布了第一个叫做System / R的商业产品。
- 由于商标冲突问题,SEQUEL首字母缩略词后来更改为SQL。
- 后来IBM基于System / R的原型开始在SQL上开发商业产品。
- 第一个关系数据库由RelationalSoftware发布,后来被称为Oracle。
SQL 是一种标准 - 但是…
- 虽然 SQL 是一门 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言,但是仍然存在着多种不同版本的 SQL 语言。
- 然而,为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的命令(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
除SQL标准之外,大多数SQL数据库程序还具有自己的专有扩展名!
在您的网站中使用 SQL
要创建一个显示数据库中数据的网站,您需要:
- 一个RDBMS数据库程序(即MS Access,SQL Server,MySQL)。
- 使用服务器端脚本语言,如PHP或ASP。
- 使用SQL来获取所需的数据。
- 使用HTML / CSS来设置页面的样式
RDBMS
- RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。
- RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。
- RDBMS 中的数据存储在被称为表的数据库对象中。
- 表是相关的数据项的集合,它由列和行组成。
代码示例:
SELECT * FROM Customers;
- 每个表都被分解成称为字段的更小的实体。Customers表中的字段由CustomerID,CustomerName,ContactName,Address,City,PostalCode和Country组成。字段是表中的一列,用于维护表中每条记录的特定信息。
- 记录(也称为行)是表中存在的每个单独条目。例如,在上面的Customers表中有91条记录。记录是表中的横向实体。
- 列是表中的垂直实体,其包含与表中的特定字段相关联的所有信息。
SQL进程
当您对任何RDBMS执行SQL命令时,系统将确定执行请求的最佳方式,并由SQL引擎确定如何解释该任务。
在此过程中包含了各种组件。
查询调度器优化引擎经典查询引擎SQL查询引擎
典型的查询引擎处理所有非SQL查询,但SQL查询引擎不会处理逻辑文件。
SQL标准命令
与关系数据库交互的标准SQL命令是创建、选择、插入、更新、删除和删除,简单分为以下几组:
DDL(数据定义语言)
数据定义语言用于改变数据库结构,包括创建、更改和删除数据库对象。用于操纵表结构的数据定义语言命令有:
CREATE TABLE
– 创建(在数据库中创建新表、表视图或其他对象)ALTER TABLE
– 更改 (修改现有的数据库对象,如表)DROP TABLE
– 删除 (删除数据库中的整个表、表或其他对象的视图)
DML(数据操纵语言)
数据操纵语言用于检索、插入和修改数据,数据操纵语言是最常见的SQL命令。
数据操纵语言命令包括:
INSERT
– 插入 (创建记录)DELETE
– 删除 (删除记录)UPDATE
– 修改(修改记录)SELECT
– 检索 (从一个或多个表检索某些记录)
DCL(数据控制语言)
数据控制语言为用户提供权限控制命令。
用于权限控制的命令有:
GRANT
– 授予权限REVOKE
– 撤销已授予的权限
SQL格式化
使用SQL格式化工具可以比较直观的看到您想要的操作
SQL格式化工具
SQL RDBMS 概念
- RDBMS是关系数据库管理系统(Relational Database Management System)的缩写。
- RDBMS是SQL的基础,也是所有现代数据库系统(如MS SQL Server、IBMDB2、Oracle、MySQL和MicrosoftAccess)的基础。
- 关系数据库管理系统(Relational Database Management System,RDBMS)是一种基于E.F.Codd提出的关系模型的数据库管理系统。
什么是表?
RDBMS中的数据存储在称为表的数据库对象中。这个表基本上是一个相关数据条目的集合,它由许多列和行组成。请记住,表是关系数据库中最常见和最简单的数据存储形式。
下面的程序是Customers表的一个示例
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
什么是字段?
每个表都被分解成更小的实体,称为字段。Customers表中的字段由ID、姓名、年龄、地址和薪资组成。
字段是表中的列,用于维护有关表中每条记录的特定信息。
什么是记录或者行数据?
记录也称为数据行,即表中存在的每个单独的条目。例如,上面的Customers表中有7条记录。下面是Customers表中的单行数据或记录。
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
记录是表中的水平实体。
什么是列?
列是表中的垂直实体,其中包含与表中特定字段关联的所有信息。
例如,Customers表中的一列是Address,它表示位置描述,如下所示:
+-----------+
| ADDRESS |
+-----------+
| Ahmedabad |
| Delhi |
| Kota |
| Mumbai |
| Bhopal |
| MP |
| Indore |
+----+------+
什么是空值?
表中的空值是显示为空的字段中的值,这意味着具有空值的字段是没有值的字段。
非常重要的一点是空值不同于零值或包含空格的字段。具有空值的字段是在创建记录时留空的字段。
SQL约束
约束是在表上的数据列上强制执行的规则。它们用于限制可以进入表中的数据类型。
这确保了数据库中数据的准确性和可靠性。
约束可以是列级别,也可以是表级别。列级约束仅应用于一列,而表级约束则应用于整个表。
以下是sql−中可用的一些最常用的约束
- NOT NULL 约束:保证列中数据不能有 NULL 值
- DEFAULT 约束:提供该列数据未指定时所采用的默认值
- UNIQUE 约束:保证列中的所有数据各不相同
- 主键约束:唯一标识数据表中的行/记录
- 外键约束:唯一标识其他表中的一条行/记录
- CHECK 约束:此约束保证列中的所有值满足某一条件
- 索引:用于在数据库中快速创建或检索数据
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
数据完整性
每个关系数据库管理系统都存在以下类型的数据完整性:
- 实体完整性−表中没有重复行。
- 域完整性−通过限制值的类型、格式或范围来强制执行给定列的有效条目。
- 引用完整性−不能删除其他记录使用的行。
- 用户定义的完整性−强制执行一些不属于实体、域或引用完整性的特定业务规则。
数据库规范化
数据库规范化是在数据库中有效地组织数据的过程。这个规范化过程有两个原因:
- 消除冗余数据,例如,将相同的数据存储在多个表中。
- 确保数据依赖关系是有意义的。
这两个原因都是值得追求的目标,因为它们减少了数据库消耗的空间量,并确保了数据的逻辑存储。
规范化由一系列指导原则组成,有助于指导您创建良好的数据库结构。
规范化指导原则称为范式,范式的目的是组织数据库结构,使其符合第一范式、第二范式和第三范式的规则。
你可以更长远的去选择第四范式,第五范式,等等,但一般来说,第三范式已经足够了。
第一范式(1NF)
第二范式(2NF)
第三范式(3NF)