到目前为止,我们学到了将如何把资料由表格中取出。但是这些资料是如何进入这些表格的呢?这就是这一页 ( INSERT INTO) 和下一页 (UPDATE) 要讨论的。
基本上,我们有两种作法可以将资料输入表格中内。一种是一次输入一笔,另一种是一次输入好几笔。我们先来看一次输入一笔的方式。
依照惯例,我们先介绍语法。一次输入一笔资料的语法如下:
INSERT INTO ” 表格名” (” 栏位1″, ” 栏位2″, …) VALUES (” 值1″, ” 值2″, …)
假设我们有一个架构如下的表格:
在MySQL目录中的文章:
SQL入门教程(31) Truncate Table
有时候我们会需要清除一个表格中的所有资料。要达到这个目的,一种方式是我们在 SQL DROP 那一页 看到的 DROP TABLE 指令。不过这样整个表格就消失,而无法再被用了。
另一种方式就是运用 TRUNCATE TABLE 的指令。在这个指令之下,表格中的资料会完全消失,可是表格本身会继续存在。
TRUNCATE TABLE的语法为下:
SQL入门教程(30) Drop Table
有时候我们会决定我们需要从数据库中清除一个表格。事实上,如果我们不能这样做的话,那将会是一个很大的问题,因为数据库管理师
(Database Administrator — DBA) 势必无法对数据库做有效率的管理。还好,SQL 有提供一个 DROP
TABLE的语法来让我们清除表格。
DROP TABLE 的语法是:
SQL入门教程(29) 外来键
外来键是一个(或数个)指向另外一个表格主键的栏位。外来键的目的是确定资料的参考完整性(referential integrity)。换言之,只有被准许的资料值才会被存入资料库内。
举例来说,假设我们有两个表格:一个 CUSTOMER 表格,里面记录了所有顾客的资料;另一个 ORDERS
表格,里面记录了所有顾客订购的资料。在这里的一个限制,就是所有的订购资料中的顾客,都一定是要跟在 CUSTOMER
表格中存在。在这里,我们就会在 ORDERS 表格中设定一个外来键,而这个外来键是指向 CUSTOMER
表格中的主键。这样一来,我们就可以确定所有在 ORDERS 表格中的顾客都存在 CUSTOMER 表格中。换句话说,ORDERS
表格之中,不能有任何顾客是不存在于 CUSTOMER 表格中的资料。
这两个表格的结构将会是如下:
SQL入门教程(28) 主键
主键 (Primary Key)
中的每一笔资料都是表格中的唯一值。换言之,它是用来独一无二地确认一个表格中的每一行资料。主键可以是原本资料内的一个栏位,或是一个人造栏位 (
与原本资料没有关系的栏位)。主键可以包含一或多个栏位。当主键包含多个栏位时,称为组合键 (Composite Key) 。
主键可以在建置新表格时设定 ( 运用 CREATE TABLE 语句) ,或是以改变现有的表格架构方式设定 ( 运用 ALTER TABLE)。
以下举几个在建置新表格时设定主键的方式:
SQL入门教程(27) Alter Table
在表格被建立在资料库中后,我们常常会发现,这个表格的结构需要有所改变。常见的改变如下:
• 加一个栏位
• 删去一个栏位
• 改变栏位名称
• 改变栏位的资料种类
以上列出的改变并不是所有可能的改变。ALTER TABLE 也可以被用来作其他的改变,例如改变主键定义。
SQL入门教程(26) Create Index
索引(Index)
可以帮助我们从表格中快速地找到需要的资料。举例来说,假设我们要在一本园艺书中找如何种植青椒的讯息。若这本书没有索引的话,那我们是必须要从头开始
读,直到我们找到有关种直青椒的地方为止。若这本书有索引的话,我们就可以先去索引找出种植青椒的资讯是在哪一页,然后直接到那一页去阅读。很明显地,运
用索引是一种有效且省时的方式。
从资料库表格中寻找资料也是同样的原理。如果一个表格没有索引的话,资料库系统就需要将整个表格的资料读出(这个过程叫做’table
scan’)。若有适当的索引存在,资料库系统就可以先由这个索引去找出需要的资料是在表格的什么地方,然后直接去那些地方抓资料。这样子速度就快多了。
因此,在表格上建立索引是一件有利于系统效率的事。一个索引可以涵盖一或多个栏位。建立索引的语法如下:
SQL入门教程(25) Create View
视观表 (Views) 可以被当作是虚拟表格。它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料。
建立一个视观表的语法如下:
CREATE VIEW “VIEW_NAME” AS “SQL 语句”
“SQL 语句” 可以是任何一个我们在这个教材中有提到的 SQL。
来看一个例子。
SQL入门教程(24) Create Table
表格是数据库中储存资料的基本架构。在绝大部份的情况下,数据库厂商不可能知道您需要如何储存您的资料,所以通常您会需要自己在数据库中建立表格。虽然许
多数据库工具可以让您在不需用到SQL 的情况下建立表格,不过由于表格是一个最基本的架构,我们决定包括 CREATE TABLE
的语法在这个网站中。
SQL入门教程(23) TRIM
SQL 中的 TRIM 函数是用来移除掉一个字串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的资料库中有不同的名称:
MySQL: TRIM(), RTRIM(), LTRIM()
Oracle: RTRIM(), LTRIM()
SQL Server: RTRIM(), LTRIM()
各种trim 函数的语法如下: