荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: zzt (少年仲永), 信区: Java
标 题: JDBC编程技术(3) (fwd)
发信站: BBS 荔园晨风站 (Sun Apr 11 10:10:45 1999), 转信
技术服务
第四部分 JDBC编程技术
丁锂 孙元 王克宏
(接上期)
使用LIKE谓词可以完成模式字符串匹配,如下例:
例2.5 找出地址为以
'Beijing'开头的字符串的供应商的所有信息。
SELECT SNO , SNAME, SADDR,SNUM
FROM SUPPLIER
WHERE SADDR LIKE 'Beijing%'
匹配模式中,'%'表示匹配多个或0个任意字符,'_'表示只匹配一个任意字符。 在SQL中
,还提供了COUNT,SUM,AVG,MAX和MIN等函数,增强了检索功能,它们的功能分别如下:
COUNT
对一列中的值计算个数
COUNT(*) 计算记录个数
SUM 求某一列值的总和(此列值必须是数值)
AVG 求某一列值的平均值(此列值必须是数值)
MAX 求某一列值中的最大值
MIN 求某一列值中的最小值
用户可以根据需要使用这些库函数。
2.连接查询
若查询涉及两个以上的表,则称之为连接查询。连接查询是关系数据库最主要的查询功能。
我们在例2.1的基础上增加供应关系表SP(SNO, PNO, NUM,
PRI),其中各列为供应商号,零件号,供应数量和价格,以及零件表PART(PNO,
PNAME, PWEG, PCOL),各列为零件号,零件名 ,零件重量和颜色。
例2.6
SELECT SNAME
FROM SUPPLIER,SP
WHERE SUPPLIER.SNO = SP.SNO;
例2.7 找出SUPPLIER中供应了零件名为'GOODS'或重量小于15的供应者名。
SELECT SNAME
FROM SUPPLIER,SP
WHERE SUPPLIER.SNO = SP.SNO
AND SP.PNO = P. AND SP.PNO = P.PNO
AND (PNAME = 'GOODS' OR PWEG < 15);
3.嵌套查询
嵌套查询也称子查询,指的是一个SE-LECT-FROM-WHERE查询块可以嵌入另一个查询块中,即?
檠跫枰肓硪徊檠祷氐闹到斜冉?,SQL允许多层嵌套。
子查询一般分三种:由EXISTS谓词引出的子查询,由IN
谓词引出的以及由 ANY或 ALL引出的子查询。
例2.8
使用量词EXISTS进行子查询:找出没有供应零件的供应商号。
SELECT SNO
FROM SUPPLIER
WHERE NOT EXISTS
(SELECT *
FROM SP
WHERE SNO=SUPPLIER.SNO);
例2.9
使用谓词IN的子查询:找出供应了零件名为'GOODS'的供应者名。
SELECT SNAME
FROM SUPPLIER
WHERE SNO IN
SELECT SNO
FROM SP
WHERE PNO IN
SELECT PNO
FROM P
WHERE PNAME = 'GOOD'.
这个例子中就使用了多层嵌套查询。
4.使用带集合运算的操作符的查询
1) 并:UNION 2) 交:INTER-SECT 3)差: MINUS
下面是一个使用MINUS的例子,它与例2.8的功能是相同的。
例2.11 找出当前没有提供零件的供应者号。
SELECT SNO
FROM SP
MINUS
(SELECT DISTINCT SNO
FROM SP)
二、 SQL更新语句
SQL的更新语句包括修改(UPDATE),插入 (INSERT)
和删除(DELETE)三类语句。
1.修改操作(UPDATE)
修改语句的一般格式为:
UPDATE 表名
SET
字段 = 表达式 [,字段 = 表达式]...
[WHERE 谓词]
修改指定表中满足谓词的行,把这些行按SET子句中的表达式修改相应字段上的值。
例2.10 把零件P1的颜色改为BLUE。
UPDATE P
SET PCOL = 'BLUE'
WHERE PNO='P1';
值得注意的是,UPDATE语句一次只能对一个表更新,这样就可能会产生破坏参照完整性的
问题。如果在执行了一个更新语句后,数据库处于不一致的状态,则要对不一致的地方再进?
?
修改。
2.插入操作(INSERT)
插入语句用于在表中增加行,一般格式为:
INSERT
INTO 表名 [ (字段名[,字段名]...) ]
VALUES(常量 [, 常量]...);
或者写成:
INSERT
INTO 表名[(字段名[, 字段名]...)]
SELECT(子查询);
第一种格式把一个新记录插入指定的表中,第二种格式把子查询的结果插入表中。
例2.11
插入单记录:将一个新的供应者:S09,姓名ZHANG,产地BEIJING,供应量5,000插入关系SUPPLI
ER中。
INSERT
INTO SUPPLIER
VALUES ('S09', 'ZHANG', 'BEI-JING',5,000);
例2.12 插入多记录:
CREATE TABLE ADDRNUM (ADDR CHAR(15),AVAGE
SMALLINT);
INSERT
INTO ADDRNUM
SELECT SADDR, AVG (SNUM)
FROM SUPPLIER;
即将表SUPPLIER中所有产地相同的平均供应量插入表
ADDRNUM中。
3.删除操作(DELETE)
删除操作的一般格式为:
DELETE
FROM 表名
[WHERE 谓词 ];
此操作从指定表中删除满足谓词的那些记录,没有WHERE字句时表示删去此表中的全部记
录,但表的定义仍在数据字典中。
例2.13 单记录删除:把供应者S09从SUPPLIER中删去。
DELETE
FROM SUPPLIER
WHERE SNO = 'S09';
例2.14 多记录删除:删除所有的供应者记录。
DELETE
FROM SUPPLIER;
这样,表SUPPLIER成为空表。
例2.15
带有子查询的删除:删除零件产地为'BEIJING'的所有供应者记录。
DELETE
FROM SP
WHERE 'BEIJING'=
(SELECT SADDR
FROM SUPPLIER)
上面我们介绍了SQL 的四个DML语句: SELECT, UPDATE,
DELETE和IN-SERT。在关系数据
库中,所有的数据仅以一种方式表示即关系中的分量(关系中某一行上某一列的值),这种数?
?
结构的单一性,使得检索,修改,删除和插入的每个操作只需要一个操作符。 (未完待续)
--
日出东方,唯我不败;
天上地下,唯我独尊。
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.72]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店