从今天起,笔者将持续更新数据库相关的博客,先从基本的structure query language(SQL)开始,先忽略所有的数据库,从通用的SQL语言开始,毕竟有了普通话,走在中国的哪里都能活下去的是吧。
先来回答SQL 是干什么的这个问题,SQL是用于访问和处理数据库的标准的计算机语言。
什么是 SQL?
- SQL 指结构化查询语言
- SQL 使我们有能力访问数据库
- SQL 是一种 ANSI 的标准计算机语言
- SQL 面向数据库执行查询
- SQL 可从数据库取回数据
- SQL 可在数据库中插入新的纪录
- SQL 可从数据库删除记录
- SQL 很容易学习
编者注:ANSI,美国国家标准化组织
SQL 是一种标准 - 但是...
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。
不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
注释:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展!
SQL 数据库表
一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。
下面的例子是一个名为 "Persons" 的表(建议所有的SQL语句都用";"进行结尾,有始有终):
建表语句为(笔者以MySql数据库为例,其他的数据库也类似):
CREATE TABLE `persons` (
`FirstName` varchar(50) DEFAULT NULL,
`LastName` varchar(50) DEFAULT NULL,
`Address` varchar(50) DEFAULT NULL,
`City` varchar(50) DEFAULT NULL,
PRIMARY KEY (`FirstName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
往表中插入几条记录进行练习使用:
INSERT INTO `persons` (FirstName,LastName,Address,City) VALUES ('Hansen', 'Ola', 'Timoteivn 10', 'Sandnes');
INSERT INTO `persons` (FirstName,LastName,Address,City) VALUES ('Svendson', 'Tove', 'Borgvn 23', 'Sandnes');
INSERT INTO `persons` (FirstName,LastName,Address,City) VALUES ('Pettersen', 'Kari', 'Storgt 20', 'Stavanger');
查看表中的记录:
SELECT FirstName,LastName,Address,City FROM persons;
LastName | FirstName | Address | City |
---|---|---|---|
Hansen | Ola | Timoteivn 10 | Sandnes |
Svendson | Tove | Borgvn 23 | Sandnes |
Pettersen | Kari | Storgt 20 | Stavanger |
上面的表包含三条记录(每一条对应一个人)和四个列(姓、名、地址和城市)。
SQL 查询程序
通过 SQL,我们可以查询某个数据库,并获得返回的一个结果集。
查询程序类似这样:
SELECT LastName FROM Persons;
结果集类似这样:
LastName |
---|
Hansen |
Svendson |
Pettersen |
SQL 数据操作语言 (DML)
SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
这些查询和更新语句都来自 SQL 的 DML 部分:
- SELECT - 从数据库表中获取数据
- UPDATE - 更新数据库表中的数据
- DELETE - 从数据库表中删除数据
- INSERT INTO - 向数据库表中插入数据
SQL 数据定义语言 (DDL)
SQL 的数据定义语言部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引