|
16.1.2 SQL语言简介
SYSTEM R是IBM公司的San Jose实验室研制的一个非常著名的关系数据库管理系统,SQL就是它所提供的数据库语言。SQL语言具有数据定义,数据操纵以及控制等功能。经过人们不断努力完善,1986年SQL语言被确定为关系数据库语言的国际标准。
SQL语言有两种使用方式:通过联机交互方式由终端用户作为语言使用,或作为子语言嵌入主语言中使用。JDBC允许用户在Java程序中嵌入SQL语言。
下面我们对SQL语言的各项功能进行简单介绍。
一、数据定义功能
主要包括定义基表、定义索引和定义视图三个部分。
1、基表的定义
⑴创建基表
用此语言可以定义基表,包括定义表名、域名、域类型及其它内容,形式如下:
CREATE TABLE (表名) (<域定义>[,<域定义>]...)[IN SEGMENT <段名>]
其中域定义形式如下:
<域名>(<数据类型>[,NONULL])
上面的定义中段名部分都可以不出现(缺省时表示指的是私有段)。NONULL出现时表示不允许空值出现。
例 我们可以创建一个表testTable,包括域id和name,创建方法如下:
CREATE TABLE testTable(id (Integer),name(Char 10))
⑵扩充基表
用它可在已有的基表中增添新的域。形式:
EXPEND TABLE <基表名> ADD FIELD (<定义域>
例 在testTable中增加一个域age,方法如下
EXPEND TABLE testTable ADD FIELD (age (INTEGER))
⑶取消基表
用此语句可以取消指定的表。基本形式如下:
DROP TABLE <表名>
例 DROP TABLE testTable
将表testTable删除。
2、建立索引、取消索引
为了提供多种存取路径和一定条件下的快速存取,我们可以对基表建立若干索引。建立索引和取消索引的语句形式如下。
⑴建立索引
CREATE [UNIQUE] INDEX <索引名> ON <表名> ([<域名>[<顺序>]][,<域名>[<顺序>]]...)
其中若出现UNIQUE表示不允许两个元组在给定索引中有相同的值。<顺序>若为ASC表升序,为DESC为降序,缺省时为ASC。
例 CREAGE INDEX X ON testTable (id)
就表示在表testTable上建立一个按id升序排列的索引X。
⑵取消索引
DROP INDEX <索引名>
3、视图的定义
⑴创建视图
CREATE VIEW 视图名[(字段名[,字段名]...)] AS 子查询
⑵取消视图
DROP VIEW 视图名
二、数据操纵功能
主要包括Select语句、Insert语句、Delect语句和Update语句。
⑴Select语句
SQL中SELECT语句可以对数据库实现基本的查询功能。基本形式如下:
SELECT <[DISTINCT]<选择项>>|* FROM <表名>[,<表名>] [WHERE <条件>] [<GROUP BY 子句>[<Having子句>]] [<Order BY 子句>]
GROUP BY子句映象中所得的元组集合按指定域分组,Having子句对GROUP BY设置一些逻辑条件。Order BY子句给出检索结构的顺序。
SQL还有一些简单的统计功能
①COUNT集合元素个数的统计;
②SUM集合元素的和;
③MAX(MIN):集合中的最大(最小)元素;
④AVG:集合元素的平均值。
此外SQL语言允许对多个数据库进行连接查询。下面我们举一个关于SELECT的简单例子。
例 对testTable进行检索,查询id=3的成员的name
SELECT name
FROM testTable
WHERE id=3
有关SELECT语句其它功能的使用,请读者自行查阅相关书籍。
⑵INSERT语句
用户使用INSERT语句可以实现对数据库增加记录的功能。
INSERT INTO <表名>[(字段名[,字段名]...)] VALUES (常量[,常量]...)
例 在testTalbe中插入id=6,name="Xu"的一条记录
INSERT INTO testTable(id,name) VALUES(6,'XU')
⑶DELETE语句
用户使用DELETE语句可以实现对数据库的基本删除功能。
例 在testTable中删除id=3的记录
DELETE FROM testTable WHERE id=3
⑷UPDATE语句
使用UPDATE语句可以实现对数据库的基本修改功能。基本形式如下:
UPDATE <表名> SET 字段=表达式[,字段=表达式]...WHERE <条件>
例 将表testTable中id=3的记录中name项尾部增加字符s
UPDATE testTable
SET name=name+'s'
WHERE id=3 |
|