SQL 语句的数据操纵功能

SQL 语言使用 SEIECT 语句完成查询功能,用 IN-SERT、DELETE、UPDATE 语句完成增加(插入)、删除、修改的功能。

  1. SELECT 语句的语法是: SELECT 目标列 FROM 表

[WHERE 条件表达式]

[GROUP BY 列名 1 [HAVING 内部函数表达式] [ORDER BY 列名 [ASC|DESC];

上面的 SQL 语句中,SELECT 子句表达从基本表中选取那些列组成结果表;WHERE 子句表达从基本表中选取那些行的条件;GROUP 子句是将选取结果按照列名 1 分组,分组的附加条件用 HAVING 加函数表达式给出;ORDER 子句是将结果集排序,升序 ASC 或降序 DESC。“□”内的内容为可选项。

SELECT 语句的成分丰富多样,使用非常灵活和便利,下面是一个使用SELECT 语句进行查询的例子。从上面建立的表中查询性别为男的学生的学号和姓名:

SELECT S#, SN FROM S WHERE SEX=‘男’

SELECT 子句中可以用“*”代表选取表中的所有列,例如: SELECT * FROM S WHERE SEX=‘男’

当查询涉及两个表时,称为连接查询。一般是自然连接或等值连接。连接谓词的比较符是“=”时,就是等值连接的情况。如果在相同目标列中去掉相同的字段名,则为自然连接。连接查询是 SELECT 语句的一个很重要的查询功能。在下面的表 R 和表 S 中,我们要查询所有学生的语文成绩。

SELECT R·S#,R·SN,S·YW FROM R,S

WHERE R·S#=S·S#

R S S#(学号) SN (姓名)

结果

S#(学号)

SN (姓名)

YW (语文)

01

张三

90

02

李四

88

03

王五

30

SELECT 语句还有更多的用法,我们不再举例。下面我们看看插入、删除更新数据的情况。

  1. SQL 使用下面的语句插入数据:

INSERT INTO 表名[(字段名,[字段名]⋯⋯)]

VALUES(常量[,常量]⋯) 例如:

INSERT INTO S

VALUES(‘05’,‘赵六’,‘男’)

这个 SQL 语句在前面定义的表可插入一条数据。一般的数据库管理系统在执行插入时,会检查完整性,当完整性检查通过时,执行插入,否则拒绝执行。

  1. 使用 DELETE 语句执行删除: DELETE FROM 表名[WHERE 子句]

例如:

DELETE FROM S WHERE S#=‘03’

在表 S 中将学号为三的记录删掉。删除时,系统也要检查完整性。如果删除记录会破坏完整性,删除将不会被执行。

  1. 使用 UPDATE 修改记录: UPDATE 表名

SET 字段=表达式[,字段=表达式]⋯

[WHERE 子句] 例如:

UPDATE S

SET SN=‘张一’ WHERE S#=‘01’

将学号为“01”的记录的姓名改为“张一”。

SQL 语句的使用是非常灵活的,语法也很丰富。在此无法一一列举,只能够看看 SQL 语句的简单的使用方法。需要说明的是,在不同公司的产品中SQL 语句的语法是不完全相同的。前面我们列举的这些例子都是对表进行操作,但是,实际上,SQL 语句还可以运用于视图、快照等

  1. 视图的概念在数据库中也是很重要的。它是从一个或多个表中选取某些行和列组成的表,它和表都是数据库的外模式的组成,是面向用户的。它的存在可以使安全性控制和使用非常灵活。比如,对某些用户的权限可以规定在视图上,而视图可以是表的某些列组成的,这样,就向用户隐藏了某些需保密的数据。这只是需要使用视图的一个例子,其他还有很多。概括起来有:
  1. 增加了数据的逻辑独立性,避免了因为数据库结构的改变而引起的程序的改变。

  2. 减小了用户的负担,用户可以在视图上操作,不用关心数据库其他数据的结构。

  3. 增加了管理的方便程度。比如像我们刚刚举过的例子,在安全管理上的方便。还有,不同的用户使用同一数据时,可以各自建立方便自己使用的视图,互不干扰,这样作显然是灵活的。