介绍
在可视化地编写 SQL 查询语句方面,已经有很多可用的工具了,为什么还要学习一个全新的语言呢?当你用某些 SQL 工具时,重要的是理解 SQL 语言、理解可视化工具正在做什么、以及为什么那样做。有时候,需要手动写一些 SQL 语句,不仅因为这是最快的方法,而且这更强大、经常是完成预定目标的唯一方法。
数据库的介绍
我们刚才提到了,SQL 是数据库语言。那么,数据库是什么?数据库是一种存储机制,被设计为用来访问存储的信息及其操作。数据库里的信息被存储在称作表(table)的对象里。表的名字是其唯一身份,由列和行构成。列包含列名、列的数据类型以及该列的其它属性。行包含该列的记录或数据。数据库里的大部分表之间会有关系(relationship)或连接(link),一对一、或一对多的关系。这也是为什么这种数据库被称作关系模型数据库。
关于描述数据库结构,最容易的方法就是把它和 Excel 电子表格做比较,它们有着诸多相似。一个数据库就是一份独立的文件。电子表格里的 sheet 就是表(table),每个 sheet 有一个名字。列和行,都和数据库一样。SQL 语言用来创建新表、更改现有表,用来获取数据、更新数据或删除数据。
比如说,我们有一份知名电影的台词大集合,存放在任意单独的文本文件里。即使我们精心组织,用 Excel 电子表格存放,我们所面临的问题仍然是存在。用这种方式存储台词,我们无法快速地从一部电影里得到所有台词,或无法得到一个角色的所有台词。如果我们把文本文件或电子表格放入数据库,并创建带有关系的表,所有问题就迎刃而解了。关系型的真正涵义是什么?关系模型是描述数据、以及这些数据实体之间的关系的方法。在我们的例子中,关系就是每个台词和表之间的联系,电影名称存放在表里、或所有角色也存放在表里。
下面是一个简化处理的例子,只有一个表做示例,表名叫「Movie_quotes」。它有四列,一个列表示台词文本、一个列表示说台词的演员角色,一个表示电影,还有年份。我们收录了八句电影台词,我们的示例表看起来像是这个样子:
Movie_quotes | |||
Q_TEXT | Q_CHARACTER | Q_MOVIE | Q_YEAR |
I’ll be back | The Terminator | The Terminator | 1984 |
I find your lack of faith disturbing. | Darth Vader | Star Wars | 1977 |
It’s a trap! | Admiral Ackbar | Star Wars | 1983 |
Never tell me the odds. | Han Solo | Star Wars | 1980 |
Do. Or do not. There is no try. | Yoda | Star Wars | 1980 |
Stupid is as stupid does. | Forrest Gump | Forrest Gump | 1994 |
My mama always said: Life was like a box of chocolates.You never know what you’re gonna ge本文来源gaodai#ma#com搞@@代~&码*网/t. | Forrest Gump | Forrest Gump | 1994 |
Run, Forrest! Run! | Jenny Curran | Forrest Gump | 1994 |
当讨论数据库时,值得一提的是,有一种全新的数据库,在需要存储数据的人们中间,产生了一种运动,它就是 NoSQL。它们是基于文档的系统,虽然它们正在变得非常流行,直到今天仍然有大量的关系型数据库在使用中。即使 NoSQL 数据库有某种查询语言,它们很大一部分(因为它们几乎都是在 SQL 之后才发明的)仍然和 SQL 有着某种相似性。
四种基本的 SQL 操作(CRUD)
有很多 SQL 命令,但是,有四种通常的 SQL 操作,可以对表及其数据做一些事情: