SQL 语句的数据操纵功能
SQL 语言使用 SEIECT 语句完成查询功能,用 IN-SERT、DELETE、UPDATE 语句完成增加(插入)、删除、修改的功能。
- 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 语句还有更多的用法,我们不再举例。下面我们看看插入、删除更新数据的情况。
- SQL 使用下面的语句插入数据:
INSERT INTO 表名[(字段名,[字段名]⋯⋯)]
VALUES(常量[,常量]⋯) 例如:
INSERT INTO S
VALUES(‘05’,‘赵六’,‘男’)
这个 SQL 语句在前面定义的表可插入一条数据。一般的数据库管理系统在执行插入时,会检查完整性,当完整性检查通过时,执行插入,否则拒绝执行。
- 使用 DELETE 语句执行删除: DELETE FROM 表名[WHERE 子句]
例如:
DELETE FROM S WHERE S#=‘03’
在表 S 中将学号为三的记录删掉。删除时,系统也要检查完整性。如果删除记录会破坏完整性,删除将不会被执行。
- 使用 UPDATE 修改记录: UPDATE 表名
SET 字段=表达式[,字段=表达式]⋯
[WHERE 子句] 例如:
UPDATE S
SET SN=‘张一’ WHERE S#=‘01’
将学号为“01”的记录的姓名改为“张一”。
SQL 语句的使用是非常灵活的,语法也很丰富。在此无法一一列举,只能够看看 SQL 语句的简单的使用方法。需要说明的是,在不同公司的产品中SQL 语句的语法是不完全相同的。前面我们列举的这些例子都是对表进行操作,但是,实际上,SQL 语句还可以运用于视图、快照等
- 视图的概念在数据库中也是很重要的。它是从一个或多个表中选取某些行和列组成的表,它和表都是数据库的外模式的组成,是面向用户的。它的存在可以使安全性控制和使用非常灵活。比如,对某些用户的权限可以规定在视图上,而视图可以是表的某些列组成的,这样,就向用户隐藏了某些需保密的数据。这只是需要使用视图的一个例子,其他还有很多。概括起来有:
-
增加了数据的逻辑独立性,避免了因为数据库结构的改变而引起的程序的改变。
-
减小了用户的负担,用户可以在视图上操作,不用关心数据库其他数据的结构。
-
增加了管理的方便程度。比如像我们刚刚举过的例子,在安全管理上的方便。还有,不同的用户使用同一数据时,可以各自建立方便自己使用的视图,互不干扰,这样作显然是灵活的。