﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-周浩</title><link>http://www.blogjava.net/toaking/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 12:43:14 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 12:43:14 GMT</pubDate><ttl>60</ttl><item><title>配置tomcat</title><link>http://www.blogjava.net/toaking/archive/2008/10/23/236093.html</link><dc:creator>Derek</dc:creator><author>Derek</author><pubDate>Thu, 23 Oct 2008 01:46:00 GMT</pubDate><guid>http://www.blogjava.net/toaking/archive/2008/10/23/236093.html</guid><wfw:comment>http://www.blogjava.net/toaking/comments/236093.html</wfw:comment><comments>http://www.blogjava.net/toaking/archive/2008/10/23/236093.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toaking/comments/commentRss/236093.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toaking/services/trackbacks/236093.html</trackback:ping><description><![CDATA[<p><span style="font-size: 12pt; color: #008080; font-family: 宋体">&nbsp; </p>
<p style="font-family: ">（<span style="color: #339966; font-family: ">一）如何启动tomcat<br />
<br style="font-family: " />
1、在startup文件中添加如下语句<br style="font-family: " />
set JAVA_HOME=c:\j2sdk1.4.0_01(视具体jdk安装入境决定)<br style="font-family: " />
set TOMCAT_HOME=d:\tomcat4.0(视具体tomcat安装路径决定)<br />
<br style="font-family: " />
2、双击tomcat下的bin文件夹中的startup文件，启动tomcat，启动完毕后，<br style="font-family: " />
打开浏览器，输入http://localhost:8080/然后回车即可，若出现tomcat主页，则tomcat<br style="font-family: " />
配置成功，否继续配置第一条<br />
<br style="font-family: " />
（二）如何配置一个web应用<br style="font-family: " />
打开在conf文件夹中server.xml文件,找到如下的xml标记<br style="font-family: " />
&lt;Host name="localhost" debug="0" appBase="webapps" unpackWARs="true"&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Valve className="org.apache.catalina.valves.AccessLogValve"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directory="logs"&nbsp; prefix="localhost_access_log." suffix=".txt"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pattern="common"/&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Logger className="org.apache.catalina.logger.FileLogger"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directory="logs"&nbsp; prefix="localhost_log." suffix=".txt"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Context path="/manager" docBase="manager" <br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0" privileged="true"/&gt;</span></p>
<p style="font-family: "><span style="color: #339966; font-family: ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- Tomcat Examples Context --&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Context path="/examples" docBase="examples" debug="0"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reloadable="true" crossContext="true"&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Logger className="org.apache.catalina.logger.FileLogger"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prefix="localhost_examples_log." suffix=".txt"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; timestamp="true"/&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Ejb&nbsp;&nbsp; name="ejb/EmplRecord" type="Entity"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; home="com.wombat.empl.EmployeeRecordHome"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remote="com.wombat.empl.EmployeeRecord"/&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Environment name="maxExemptions" type="java.lang.Integer"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="15"/&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Parameter name="context.param.name" value="context.param.value"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; override="false"/&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Resource name="jdbc/EmployeeAppDb" auth="SERVLET"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="javax.sql.DataSource"/&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ResourceParams name="jdbc/EmployeeAppDb"&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;&lt;name&gt;user&lt;/name&gt;&lt;value&gt;sa&lt;/value&gt;&lt;/parameter&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;&lt;name&gt;password&lt;/name&gt;&lt;value&gt;&lt;/value&gt;&lt;/parameter&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;&lt;name&gt;driverClassName&lt;/name&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;org.hsql.jdbcDriver&lt;/value&gt;&lt;/parameter&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;&lt;name&gt;driverName&lt;/name&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;jdbc:HypersonicSQL:database&lt;/value&gt;&lt;/parameter&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ResourceParams&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Resource name="mail/Session" auth="Container"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type="javax.mail.Session"/&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ResourceParams name="mail/Session"&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;parameter&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;mail.smtp.host&lt;/name&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;value&gt;localhost&lt;/value&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/parameter&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ResourceParams&gt;<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Context&gt;<br style="font-family: " />
&lt;/Host&gt;<br style="font-family: " />
在&lt;Host&gt;元素中,有Context子元素,该子元素代表一个web应用的配置,<br style="font-family: " />
从上可知,该host配置了两个web应用分别是:<br style="font-family: " />
&lt;Context path="/manager" docBase="manager" <br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0" privileged="true"/&gt;<br style="font-family: " />
和<br style="font-family: " />
&lt;Context path="/examples" docBase="examples" debug="0"<br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reloadable="true" crossContext="true"&gt;<br style="font-family: " />
...<br style="font-family: " />
&lt;/Context&gt;<br />
<br style="font-family: " />
要配置自己的web应用,也需要添加一个Context,比如向配置自己的myservlet这个web<br style="font-family: " />
应用,首先,把myservlet站点目录复制到tomcat的webapps目录下,然后在server.xml文件<br style="font-family: " />
中的&lt;Host&gt;元素下添加一个Context子元素配置<br style="font-family: " />
如下:<br style="font-family: " />
&lt;Context path="/myservlet" docBase="myservlet" <br style="font-family: " />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0" privileged="true"/&gt;<br style="font-family: " />
</span></p>
</span>
<img src ="http://www.blogjava.net/toaking/aggbug/236093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toaking/" target="_blank">Derek</a> 2008-10-23 09:46 <a href="http://www.blogjava.net/toaking/archive/2008/10/23/236093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DB2常用命令大全</title><link>http://www.blogjava.net/toaking/archive/2008/10/09/233377.html</link><dc:creator>Derek</dc:creator><author>Derek</author><pubDate>Thu, 09 Oct 2008 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/toaking/archive/2008/10/09/233377.html</guid><wfw:comment>http://www.blogjava.net/toaking/comments/233377.html</wfw:comment><comments>http://www.blogjava.net/toaking/archive/2008/10/09/233377.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toaking/comments/commentRss/233377.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toaking/services/trackbacks/233377.html</trackback:ping><description><![CDATA[<strong>一、常用命令</strong><br />
1. 建立数据库<a style="font-size: 14px; color: #0000ff; text-decoration: none" href="http://www.ibm.com/developerworks/cn/db2/zones/db2ii/index.html" target="_blank">DB2</a>_GCB <br />
CREATE DATABASE <a style="font-size: 14px; color: #0000ff; text-decoration: none" href="http://www.ibm.com/developerworks/cn/db2/zones/db2ii/index.html" target="_blank">DB2</a>_GCB ON G: ALIAS <a style="font-size: 14px; color: #0000ff; text-decoration: none" href="http://www.ibm.com/developerworks/cn/db2/zones/db2ii/index.html" target="_blank">DB2</a>_GCB <br />
USING CODESET GBK TERRITORY CN COLLATE USING SYSTEM DFT_EXTENT_SZ 32 <br />
2. 连接数据库 <br />
connect to sample1 user db2admin using 8301206 <br />
3. 建立别名 <br />
create alias db2admin.tables for sysstat.tables; <br />
CREATE ALIAS <a style="font-size: 14px; color: #0000ff; text-decoration: none" href="http://www.ibm.com/developerworks/cn/db2/zones/db2ii/index.html" target="_blank">DB2</a>ADMIN.VIEWS FOR SYSCAT.VIEWS <br />
create alias db2admin.columns for syscat.columns; <br />
create alias guest.columns for syscat.columns; <br />
4. 建立表 <br />
create table zjt_tables as <br />
(select * from tables) definition only; <br />
create table zjt_views as <br />
(select * from views) definition only; <br />
5. 插入记录 <br />
insert into zjt_tables select * from tables; <br />
insert into zjt_views select * from views; <br />
6. 建立视图 <br />
create view V_zjt_tables as select tabschema,tabname from zjt_tables; <br />
7. 建立触发器 <br />
CREATE TRIGGER zjt_tables_del <br />
AFTER DELETE ON zjt_tables <br />
REFERENCING OLD AS O <br />
FOR EACH ROW MODE <a style="font-size: 14px; color: #0000ff; text-decoration: none" href="http://www.ibm.com/developerworks/cn/db2/zones/db2ii/index.html" target="_blank">DB2</a>SQL <br />
Insert into zjt_tables1 values(substr(o.tabschema,1,8),substr(o.tabname,1,10)) <br />
8. 建立唯一性索引 <br />
CREATE UNIQUE INDEX I_ztables_tabname <br />
ON zjt_tables(tabname); <br />
9. 查看表 <br />
select tabname from tables <br />
where tabname='ZJT_TABLES'; <br />
10. 查看列 <br />
select SUBSTR(COLNAME,1,20) as 列名,TYPENAME as 类型,LENGTH as 长度 <br />
from columns <br />
where tabname='ZJT_TABLES'; <br />
11. 查看表结构 <br />
db2 describe table user1.department <br />
db2 describe select * from user.tables <br />
12. 查看表的索引 <br />
db2 describe indexes for table user1.department <br />
13. 查看视图 <br />
select viewname from views <br />
where viewname='V_ZJT_TABLES'; <br />
14. 查看索引 <br />
select indname from indexes <br />
where indname='I_ZTABLES_TABNAME'; <br />
15. 查看存贮过程 <br />
SELECT SUBSTR(PROCSCHEMA,1,15),SUBSTR(PROCNAME,1,15) <br />
FROM SYSCAT.PROCEDURES; <br />
16. 类型转换(cast) <br />
ip datatype:varchar <br />
select cast(ip as integer)+50 from log_comm_failed <br />
17. 重新连接 <br />
connect reset <br />
18. 中断数据库连接 <br />
disconnect db2_gcb <br />
19. view application <br />
LIST APPLICATION; <br />
20. kill application <br />
FORCE APPLICATION(0); <br />
db2 force applications all (强迫所有应用程序从数据库断开) <br />
21. lock table<br />
lock table test in exclusive mode <br />
22. 共享 <br />
lock table test in share mode <br />
23. 显示当前用户所有表 <br />
list tables <br />
24. 列出所有的系统表 <br />
list tables for system <br />
　25. 显示当前活动数据库 <br />
list active databases <br />
26. 查看命令选项 <br />
list command options <br />
27. 系统数据库目录 <br />
LIST DATABASE DIRECTORY <br />
28. 表空间 <br />
list tablespaces <br />
29. 表空间容器 <br />
LIST TABLESPACE CONTAINERS FOR <br />
Example: LIST TABLESPACE CONTAINERS FOR 1 <br />
30. 显示用户数据库的存取权限 <br />
GET AUTHORIZATIONS <br />
31. 启动实例 <br />
<a style="font-size: 14px; color: #0000ff; text-decoration: none" href="http://www.ibm.com/developerworks/cn/db2/zones/db2ii/index.html" target="_blank">DB2</a>START <br />
32. 停止实例 <br />
db2stop <br />
33. 表或视图特权 <br />
grant select,delete,insert,update on tables to user <br />
grant all on tables to user WITH GRANT OPTION <br />
34. 程序包特权 <br />
GRANT EXECUTE <br />
ON PACKAGE PACKAGE-name <br />
TO PUBLIC <br />
35. 模式特权 <br />
GRANT CREATEIN ON SCHEMA SCHEMA-name TO USER <br />
36. 数据库特权 <br />
grant connect,createtab,dbadm on database to user <br />
37. 索引特权 <br />
grant control on index index-name to user <br />
38. 信息帮助 (? XXXnnnnn ) <br />
例:? SQL30081 <br />
39. SQL 帮助(说明 SQL 语句的语法) <br />
help statement <br />
例如，help SELECT <br />
40. SQLSTATE 帮助(说明 SQL 的状态和类别代码) <br />
? sqlstate 或 ? class-code <br />
41. 更改与"管理服务器"相关的口令 <br />
db2admin setid username password <br />
42. 创建 SAMPLE 数据库 <br />
db2sampl <br />
db2sampl F:(指定安装盘) <br />
43. 使用操作系统命令 <br />
! dir <br />
44. 转换数据类型 (cast) <br />
SELECT EMPNO, CAST(RESUME AS VARCHAR(370)) <br />
FROM EMP_RESUME <br />
WHERE RESUME_FORMAT = 'ascii' <br />
45. UDF<br />
要运行 <a style="font-size: 14px; color: #0000ff; text-decoration: none" href="http://www.ibm.com/developerworks/cn/db2/zones/db2ii/index.html" target="_blank">DB2</a> Java 存储过程或 UDF，还需要更新服务器上的 <br />
<a style="font-size: 14px; color: #0000ff; text-decoration: none" href="http://www.ibm.com/developerworks/cn/db2/zones/db2ii/index.html" target="_blank">DB2</a> 数据库管理程序配置，以包括在该机器上安装 JDK 的路径 <br />
db2 update dbm cfg using JDK11_PATH d:\sqllib\java\jdk <br />
TERMINATE <br />
update dbm cfg using SPM_NAME sample <br />
46. 检查 <a style="font-size: 14px; color: #0000ff; text-decoration: none" href="http://www.ibm.com/developerworks/cn/db2/zones/db2ii/index.html" target="_blank">DB2</a> 数据库管理程序配置 <br />
db2 get dbm cfg <br />
47. 检索具有特权的所有授权名 <br />
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'DATABASE' FROM SYSCAT.DBAUTH <br />
UNION <br />
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'TABLE ' FROM SYSCAT.TABAUTH <br />
UNION <br />
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'PACKAGE ' FROM SYSCAT.PACKAGEAUTH <br />
UNION <br />
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'INDEX ' FROM SYSCAT.INDEXAUTH <br />
UNION <br />
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'COLUMN ' FROM SYSCAT.COLAUTH <br />
UNION <br />
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'SCHEMA ' FROM SYSCAT.SCHEMAAUTH <br />
UNION <br />
SELECT DISTINCT GRANTEE, GRANTEETYPE, 'SERVER ' FROM SYSCAT.PASSTHRUAUTH <br />
ORDER BY GRANTEE, GRANTEETYPE, 3 <br />
create table yhdab <br />
(id varchar(10), <br />
password varchar(10), <br />
ywlx varchar(10), <br />
kh varchar(10)); <br />
create table ywlbb <br />
(ywlbbh varchar(8), <br />
ywmc varchar(60)) <br />
48. 修改表结构 <br />
alter table yhdab ALTER kh SET DATA TYPE varchar(13); <br />
alter table yhdab ALTER ID SET DATA TYPE varchar(13); <br />
alter table lst_bsi alter bsi_money set data type int; <br />
insert into yhdab values <br />
('20000300001','123456','user01','20000300001'), <br />
('20000300002','123456','user02','20000300002'); <br />
49. 业务类型说明 <br />
insert into ywlbb values <br />
('user01','业务申请'), <br />
('user02','业务撤消'), <br />
('user03','费用查询'), <br />
('user04','费用自缴'), <br />
('user05','费用预存'), <br />
('user06','密码修改'), <br />
('user07','发票打印'), <br />
('gl01','改用户基本信息'), <br />
('gl02','更改支付信息'), <br />
('gl03','日统计功能'), <br />
('gl04','冲帐功能'), <br />
('gl05','对帐功能'), <br />
('gl06','计费功能'), <br />
('gl07','综合统计')<br />
<strong>二. 目录视图说明</strong><br />
说明 目录视图 <br />
检查约束 SYSCAT.CHECKS <br />
列 SYSCAT.COLUMNS <br />
检查约束引用的列 SYSCAT.COLCHECKS<br />
关键字中使用的列 SYSCAT.KEYCOLUSE<br />
数据类型 SYSCAT.DATATYPES<br />
函数参数或函数结果 SYSCAT.FUNCPARMS<br />
参考约束 SYSCAT.REFERENCES<br />
模式 SYSCAT.SCHEMATA<br />
表约束 SYSCAT.TABCONST<br />
表 SYSCAT.TABLES<br />
触发器 SYSCAT.TRIGGERS<br />
用户定义函数 SYSCAT.FUNCTIONS<br />
视图 SYSCAT.VIEWS<br />
<strong>三. 字符串类型</strong><br />
二进制大对象 (BLOB) 字符串。 <br />
字符大对象 (CLOB) 字符串，它的字符序列可以是单字节字符或多字节字符，<br />
或这两者的组合。 <br />
双字节字符大对象 (DBCLOB) 字符串，它的字符序列是双字节字符。 <br />
<strong>四. 数据库范式</strong><br />
第一种规范形式：表中的每一行和每一列均有一个值，永远不会是一组值。 <br />
第二种规范形式：不在关键字中的每一列提供取决于整个关键字的事实。 <br />
第三种规范形式：每个非关键字列提供与其他非关键字列无关并只取决于该关键字的事实。 <br />
第四种规范形式：没有行包含有关一个实体的两个或更多个独立的多值事实。 <br />
<strong>五. 数据类型</strong><br />
数据类型 类型 特性 示例或范围 <br />
CHAR(15) 定长字符串 最大长度为 254 'Sunny day ' <br />
VARCHAR(15) 变长字符 最大长度为 4000 'Sunny day' <br />
SMALLINT 数字 长度为 2 字节精度为 5 位范围为-32768 至 32767 <br />
INTEGER 数字 长度为 4 字节精度为 10 位范围为-2147483648 至 2147483647 <br />
REAL 数字 单精度浮点32 位近似值 范围为-3.402E+38至-1.175E-37或 <br />
1.175E-37 至-3.402E+38或零 <br />
DOUBLE 数字 双精度浮点64 位近似值 范围为-1.79769E+308 <br />
至-2.225E-307或 2.225E-307 至 1.79769E+308或零 <br />
DECIMAL(5,2) 数字 精度为 5小数位为 2 范围为 -10**31+1 至 10**31-1 <br />
DATE 日期时间 三部分值 1991-10-27 <br />
TIME 日期时间 三部分值 13.30.05 <br />
TIMESTAMP 日期时间 七部分值 1991-10-27-13.30.05.000000 <br />
<strong>六. 列函数</strong> <br />
列函数对列中的一组值进行运算以得到单个结果值。下列就是一些列函数的示例。 <br />
AVG <br />
返回某一组中的值除以该组中值的个数的和 <br />
COUNT <br />
返回一组行或值中行或值的个数 <br />
MAX <br />
返回一组值中的最大值 <br />
MIN <br />
返回一组值中的最小值 <br />
<strong>七. 标量函数</strong> <br />
标量函数对值进行某个运算以返回另一个值。<br />
下列就是一些由<a style="font-size: 14px; color: #0000ff; text-decoration: none" href="http://www.ibm.com/developerworks/cn/db2/zones/db2ii/index.html" target="_blank">DB2</a> 通用数据库提供的标量函数的示例。 <br />
ABS <br />
返回数的绝对值 <br />
HEX <br />
返回值的十六进制表示 <br />
LENGTH <br />
返回自变量中的字节数（对于图形字符串则返回双字节字符数。） <br />
YEAR <br />
抽取日期时间值的年份部分 <br />
<img src ="http://www.blogjava.net/toaking/aggbug/233377.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toaking/" target="_blank">Derek</a> 2008-10-09 16:03 <a href="http://www.blogjava.net/toaking/archive/2008/10/09/233377.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>经验分享交流：常用SQL语句技法 </title><link>http://www.blogjava.net/toaking/archive/2007/08/01/133722.html</link><dc:creator>Derek</dc:creator><author>Derek</author><pubDate>Wed, 01 Aug 2007 01:26:00 GMT</pubDate><guid>http://www.blogjava.net/toaking/archive/2007/08/01/133722.html</guid><wfw:comment>http://www.blogjava.net/toaking/comments/133722.html</wfw:comment><comments>http://www.blogjava.net/toaking/archive/2007/08/01/133722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toaking/comments/commentRss/133722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toaking/services/trackbacks/133722.html</trackback:ping><description><![CDATA[<p>&nbsp;<span>下列语句部分是</span><span>Mssql</span><span>语句，不可以在</span><span>access</span><span>中使用。</span><span> </span></p>
<p align=left><span>　　</span><span>SQL</span><span>分类：</span><span> </span></p>
<p align=left><span>　　</span><span>DDL—</span><span>数据定义语言</span><span>(CREATE</span><span>，</span><span>ALTER</span><span>，</span><span>DROP</span><span>，</span><span>DECLARE) <br></span><span>　　</span><span>DML—</span><span>数据操纵语言</span><span>(SELECT</span><span>，</span><span>DELETE</span><span>，</span><span>UPDATE</span><span>，</span><span>INSERT) <br></span><span>　　</span><span>DCL—</span><span>数据控制语言</span><span>(GRANT</span><span>，</span><span>REVOKE</span><span>，</span><span>COMMIT</span><span>，</span><span>ROLLBACK)</span></p>
<p align=left><span>　　首先</span><span>,</span><span>简要介绍基础语句：</span></p>
<p align=left><span>　　</span><span>1</span><span>、说明：创建数据库</span></p>
<p align=left><span>CREATE DATABASE database-name </span></p>
<p align=left><span>　　</span><span>2</span><span>、说明：删除数据库</span></p>
<p align=left><span>drop database dbname</span></p>
<p align=left><span>　　</span><span>3</span><span>、说明：备份</span><span>sql server</span></p>
<p align=left><span>　　</span><span>--- </span><span>创建</span><span> </span><span>备份数据的</span><span> device</span></p>
<p align=left><span>USE master<br>EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'</span></p>
<p align=left><span>　　</span><span>--- </span><span>开始</span><span> </span><span>备份</span></p>
<p align=left><span>BACKUP DATABASE pubs TO testBack </span></p>
<p align=left><span>　　</span><span>4</span><span>、说明：创建新表</span></p>
<p align=left><span>create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)</span></p>
<p align=left><span>　　根据已有的表创建新表：</span><span> </span></p>
<p align=left><span>A</span><span>：</span><span>create table tab_new like tab_old (</span><span>使用旧表创建新表</span><span>)<br>B</span><span>：</span><span>create table tab_new as select col1,col2&#8230; from tab_old definition only</span></p>
<p align=left><span>　　</span><span>5</span><span>、说明：</span></p>
<p align=left><span>　　删除新表：</span><span>drop table tabname </span></p>
<p align=left><span>　　</span><span>6</span><span>、说明：</span></p>
<p align=left><span>　　增加一个列：</span><span>Alter table tabname add column col type</span></p>
<p align=left><span>　　注：列增加后将不能删除。</span><span>DB2</span><span>中列加上后数据类型也不能改变，唯一能改变的是增加</span><span>varchar</span><span>类型的长度。</span></p>
<p align=left><span>　　</span><span>7</span><span>、说明：</span></p>
<p align=left><span>　　添加主键：</span><span>Alter table tabname add primary key(col) </span></p>
<p align=left><span>　　说明：</span></p>
<p align=left><span>　　删除主键：</span><span>Alter table tabname drop primary key(col)</span></p>
<p align=left><span>　　</span><span>8</span><span>、说明：</span></p>
<p align=left><span>　　创建索引：</span><span>create [unique] index idxname on tabname(col&#8230;.) </span></p>
<p align=left><span>　　删除索引：</span><span>drop index idxname</span></p>
<p align=left><span>　　注：索引是不可更改的，想更改必须删除重新建。</span></p>
<p align=left><span>　　</span><span>9</span><span>、说明：</span></p>
<p align=left><span>　　创建视图：</span><span>create view viewname as select statement</span></p>
<p align=left><span>　　删除视图：</span><span>drop view viewname<br>10</span><span>、说明：几个简单的基本的</span><span>sql</span><span>语句</span></p>
<p align=left><span>　　选择：</span><span>select * from table1 where </span><span>范围</span></p>
<p align=left><span>　　插入：</span><span>insert into table1(field1,field2) values(value1,value2)</span></p>
<p align=left><span>　　删除：</span><span>delete from table1 where </span><span>范围</span></p>
<p align=left><span>　　更新：</span><span>update table1 set field1=value1 where </span><span>范围</span></p>
<p align=left><span>　　查找：</span><span>select * from table1 where field1 like &#8217;%value1%&#8217; ---like</span><span>的语法很精妙，查资料</span><span>!</span></p>
<p align=left><span>　　排序：</span><span>select * from table1 order by field1,field2 [desc]</span></p>
<p align=left><span>　　总数：</span><span>select count * as totalcount from table1</span></p>
<p align=left><span>　　求和：</span><span>select sum(field1) as sumvalue from table1</span></p>
<p align=left><span>　　平均：</span><span>select avg(field1) as avgvalue from table1</span></p>
<p align=left><span>　　最大：</span><span>select max(field1) as maxvalue from table1</span></p>
<p align=left><span>　　最小：</span><span>select min(field1) as minvalue from table1</span></p>
<p align=left><span>　　</span><span>11</span><span>、说明：几个高级查询运算词</span></p>
<p align=left><span>　　</span><span>A</span><span>：</span><span> UNION </span><span>运算符</span><span> </span></p>
<p align=left><span>　　</span><span>UNION </span><span>运算符通过组合其他两个结果表（例如</span><span> TABLE1 </span><span>和</span><span> TABLE2</span><span>）并消去表中任何重复行而派生出一个结果表。当</span><span> ALL </span><span>随</span><span> UNION </span><span>一起使用时（即</span><span> UNION ALL</span><span>），不消除重复行。两种情况下，派生表的每一行不是来自</span><span> TABLE1 </span><span>就是来自</span><span> TABLE2</span><span>。</span></p>
<p align=left><span>　　</span><span>B</span><span>：</span><span> EXCEPT </span><span>运算符</span><span> </span></p>
<p align=left><span>　　</span><span>EXCEPT </span><span>运算符通过包括所有在</span><span> TABLE1 </span><span>中但不在</span><span> TABLE2 </span><span>中的行并消除所有重复行而派生出一个结果表。当</span><span> ALL </span><span>随</span><span> EXCEPT </span><span>一起使用时</span><span> (EXCEPT ALL)</span><span>，不消除重复行。</span><span> </span></p>
<p align=left><span>　　</span><span>C</span><span>：</span><span> INTERSECT </span><span>运算符</span><span>(intersect)</span></p>
<p align=left><span>　　</span><span>INTERSECT </span><span>运算符通过只包括</span><span> TABLE1 </span><span>和</span><span> TABLE2 </span><span>中都有的行并消除所有重复行而派生出一个结果表。当</span><span> ALL </span><span>随</span><span> INTERSECT </span><span>一起使用时</span><span> (INTERSECT ALL)</span><span>，不消除重复行。</span></p>
<p align=left><span>　　注：使用运算词的几个查询结果行必须是一致的。</span></p>
<p align=left><span>　　</span><span>12</span><span>、说明：使用外连接</span><span> </span></p>
<p align=left><span>　　</span><span>A</span><span>、</span><span>left outer join</span><span>：</span><span> </span></p>
<p align=left><span>　　左外连接（左连接）：结果集几包括连接表的匹配行，也包括左连接表的所有行。</span><span> </span></p>
<p align=left><span>SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c</span></p>
<p align=left><span>　　</span><span>B</span><span>：</span><span>right outer join: </span></p>
<p align=left><span>　　右外连接</span><span>(</span><span>右连接</span><span>)</span><span>：结果集既包括连接表的匹配连接行，也包括右连接表的所有行。</span></p>
<p align=left><span>　　</span><span>C</span><span>：</span><span>full outer join</span><span>：</span><span> </span></p>
<p align=left><span>　　全外连接：不仅包括符号连接表的匹配行，还包括两个连接表中的所有记录。</span></p>
<p align=left><span>　　其次，大家来看一些不错的</span><span>sql</span><span>语句</span></p>
<p align=left><span>　　</span><span>1</span><span>、说明：复制表</span><span>(</span><span>只复制结构</span><span>,</span><span>源表名：</span><span>a </span><span>新表名：</span><span>b) (Access</span><span>可用</span><span>)</span></p>
<p align=left><span>　　法一：</span><span>select * into b from a where 1&lt;&gt;1</span></p>
<p align=left><span>　　法二：</span><span>select top 0 * into b from a</span></p>
<p align=left><span>　　</span><span>2</span><span>、说明：拷贝表</span><span>(</span><span>拷贝数据</span><span>,</span><span>源表名：</span><span>a </span><span>目标表名：</span><span>b) (Access</span><span>可用</span><span>)</span></p>
<p align=left><span>insert into b(a, b, c) select d,e,f from b;</span></p>
<p align=left><span>　　</span><span>3</span><span>、说明：跨数据库之间表的拷贝</span><span>(</span><span>具体数据使用绝对路径</span><span>) (Access</span><span>可用</span><span>)</span></p>
<p align=left><span>insert into b(a, b, c) select d,e,f from b in &#8216;</span><span>具体数据库</span><span>&#8217; where </span><span>条件</span></p>
<p align=left><span>　　例子：</span><span>..from b in '"&amp;Server.MapPath(".")&amp;"\data.mdb" &amp;"' where..</span></p>
<p align=left><span>　　</span><span>4</span><span>、说明：子查询</span><span>(</span><span>表名</span><span>1</span><span>：</span><span>a </span><span>表名</span><span>2</span><span>：</span><span>b)</span></p>
<p align=left><span>select a,b,c from a where a IN (select d from b ) </span><span>或者</span><span>: select a,b,c from a where a IN (1,2,3)</span></p>
<p align=left><span>　　</span><span>5</span><span>、说明：显示文章、提交人和最后回复时间</span></p>
<p align=left><span>select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b<br>6</span><span>、说明：外连接查询</span><span>(</span><span>表名</span><span>1</span><span>：</span><span>a </span><span>表名</span><span>2</span><span>：</span><span>b)</span></p>
<p align=left><span>select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c</span></p>
<p align=left><span>　　</span><span>7</span><span>、说明：在线视图查询</span><span>(</span><span>表名</span><span>1</span><span>：</span><span>a )</span></p>
<p align=left><span>select * from (SELECT a,b,c FROM a) T where t.a &gt; 1;</span></p>
<p align=left><span>　　</span><span>8</span><span>、说明：</span><span>between</span><span>的用法</span><span>,between</span><span>限制查询数据范围时包括了边界值</span><span>,not between</span><span>不包括</span></p>
<p align=left><span>select * from table1 where time between time1 and time2</span></p>
<p align=left><span>select a,b,c, from table1 where a not between </span><span>数值</span><span>1 and </span><span>数值</span><span>2</span></p>
<p align=left><span>　　</span><span>9</span><span>、说明：</span><span>in </span><span>的使用方法</span></p>
<p align=left><span>select * from table1 where a [not] in (&#8216;</span><span>值</span><st1:chmetcnv w:st="on" TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="1" UnitName="&#8217;"><span>1&#8217;</span></st1:chmetcnv><span>,&#8217;</span><span>值</span><st1:chmetcnv w:st="on" TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="2" UnitName="&#8217;"><span>2&#8217;</span></st1:chmetcnv><span>,&#8217;</span><span>值</span><st1:chmetcnv w:st="on" TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="4" UnitName="&#8217;"><span>4&#8217;</span></st1:chmetcnv><span>,&#8217;</span><span>值</span><st1:chmetcnv w:st="on" TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="6" UnitName="&#8217;"><span>6&#8217;</span></st1:chmetcnv><span>)</span></p>
<p align=left><span>　　</span><span>10</span><span>、说明：两张关联表，删除主表中已经在副表中没有的信息</span><span> </span></p>
<p align=left><span>delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )</span></p>
<p align=left><span>　　</span><span>11</span><span>、说明：四表联查问题：</span></p>
<p align=left><span>select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....</span></p>
<p align=left><span>　　</span><span>12</span><span>、说明：日程安排提前五分钟提醒</span></p>
<p align=left><span>SQL: select * from </span><span>日程安排</span><span> where datediff('minute',f</span><span>开始时间</span><span>,getdate())&gt;5</span></p>
<p align=left><span>　　</span><span>13</span><span>、说明：一条</span><span>sql </span><span>语句搞定数据库分页</span></p>
<p align=left><span>select top 10 b.* from (select top 20 </span><span>主键字段</span><span>,</span><span>排序字段</span><span> from </span><span>表名</span><span> order by </span><span>排序字段</span><span> desc) a,</span><span>表名</span><span> b where b.</span><span>主键字段</span><span> = a.</span><span>主键字段</span><span> order by a.</span><span>排序字段</span></p>
<p align=left><span>　　</span><span>14</span><span>、说明：前</span><span>10</span><span>条记录</span></p>
<p align=left><span>select top 10 * form table1 where </span><span>范围</span></p>
<p align=left><span>　　</span><span>15</span><span>、说明：选择在每一组</span><span>b</span><span>值相同的数据中对应的</span><span>a</span><span>最大的记录的所有信息</span><span>(</span><span>类似这样的用法可以用于论坛每月排行榜</span><span>,</span><span>每月热销产品分析</span><span>,</span><span>按科目成绩排名</span><span>,</span><span>等等</span><span>.)</span></p>
<p align=left><span>select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)</span></p>
<p align=left><span>　　</span><span>16</span><span>、说明：包括所有在</span><span> TableA </span><span>中但不在</span><span> TableB</span><span>和</span><span>TableC </span><span>中的行并消除所有重复行而派生出一个结果表</span></p>
<p align=left><span>(select a from tableA ) except (select a from tableB) except (select a from tableC)</span></p>
<p align=left><span>　　</span><span>17</span><span>、说明：随机取出</span><span>10</span><span>条数据</span></p>
<p align=left><span>select top 10 * from tablename order by newid()</span></p>
<p align=left><span>　　</span><span>18</span><span>、说明：随机选择记录</span></p>
<p align=left><span>select newid()</span></p>
<p align=left><span>　　</span><span>19</span><span>、说明：删除重复记录</span></p>
<p align=left><span>Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)</span></p>
<p align=left><span>　　</span><span>20</span><span>、说明：列出数据库里所有的表名</span></p>
<p align=left><span>select name from sysobjects where type='U' <br>21</span><span>、说明：列出表里的所有的</span></p>
<p align=left><span>select name from syscolumns where id=object_id('TableName')</span></p>
<p align=left><span>　　</span><span>22</span><span>、说明：列示</span><span>type</span><span>、</span><span>vender</span><span>、</span><span>pcs</span><span>字段，以</span><span>type</span><span>字段排列，</span><span>case</span><span>可以方便地实现多重选择，类似</span><span>select </span><span>中的</span><span>case</span><span>。</span></p>
<p align=left><span>select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type</span></p>
<p align=left><span>　　显示结果：</span></p>
<p align=left><span>type&nbsp;&nbsp;&nbsp; vender pcs<br></span><span>电脑</span><span> A 1<br></span><span>电脑</span><span> A 1<br></span><span>光盘</span><span> B 2<br></span><span>光盘</span><span> A 2<br></span><span>手机</span><span> B 3<br></span><span>手机</span><span> C 3</span></p>
<p align=left><span>　　</span><span>23</span><span>、说明：初始化表</span><span>table1</span></p>
<p align=left><span>TRUNCATE TABLE table1</span></p>
<p align=left><span>　　</span><span>24</span><span>、说明：选择从</span><span>10</span><span>到</span><span>15</span><span>的记录</span></p>
<p align=left><span>select top 5 * from (select top 15 * from table order by id asc) table_</span><span>别名</span><span> order by id desc</span></p>
<p align=left><span>　　随机选择数据库记录的方法（使用</span><span>Randomize</span><span>函数，通过</span><span>SQL</span><span>语句实现）</span></p>
<p align=left><span>　　对存储在数据库中的数据来说，随机数特性能给出上面的效果，但它们可能太慢了些。你不能要求</span><span>ASP&#8220;</span><span>找个随机数</span><span>&#8221;</span><span>然后打印出来。实际上常见的解决方案是建立如下所示的循环：</span></p>
<p align=left><span>Randomize <br>RNumber = Int(Rnd*499) +1 <br></span><span>　</span><span><br>While Not objRec.EOF <br>If objRec("ID") = RNumber THEN <br>... </span><span>这里是执行脚本</span><span> ... <br>end if <br>objRec.MoveNext <br>Wend </span></p>
<p align=left><span>　　这很容易理解。首先，你取出</span><span>1</span><span>到</span><span>500</span><span>范围之内的一个随机数（假设</span><span>500</span><span>就是数据库内记录的总数）。然后，你遍历每一记录来测试</span><span>ID </span><span>的值、检查其是否匹配</span><span>RNumber</span><span>。满足条件的话就执行由</span><span>THEN </span><span>关键字开始的那一块代码。假如你的</span><span>RNumber </span><span>等于</span><span>495</span><span>，那么要循环一遍数据库花的时间可就长了。虽然</span><span>500</span><span>这个数字看起来大了些，但相比更为稳固的企业解决方案这还是个小型数据库了，后者通常在一个数据库内就包含了成千上万条记录。这时候不就死定了？</span><span> </span></p>
<p align=left><span>　　采用</span><span>SQL</span><span>，你就可以很快地找出准确的记录并且打开一个只包含该记录的</span><span>recordset</span><span>，如下所示：</span></p>
<p align=left><span>Randomize <br>RNumber = Int(Rnd*499) + 1 <br></span><span>　</span><span><br>SQL = "SELECT * FROM Customers WHERE ID = " &amp; RNumber <br></span><span>　</span><span><br>set objRec = ObjConn.Execute(SQL) <br>Response.WriteRNumber &amp; " = " &amp; objRec("ID") &amp; " " &amp; objRec("c_email")</span></p>
<p align=left><span>　　不必写出</span><span>RNumber </span><span>和</span><span>ID</span><span>，你只需要检查匹配情况即可。只要你对以上代码的工作满意，你自可按需操作</span><span>&#8220;</span><span>随机</span><span>&#8221;</span><span>记录。</span><span>Recordset</span><span>没有包含其他内容，因此你很快就能找到你需要的记录这样就大大降低了处理时间。</span><span><br></span><span>再谈随机数</span></p>
<p align=left><span>　　现在你下定决心要榨干</span><span>Random </span><span>函数的最后一滴油，那么你可能会一次取出多条随机记录或者想采用一定随机范围内的记录。把上面的标准</span><span>Random </span><span>示例扩展一下就可以用</span><span>SQL</span><span>应对上面两种情况了。</span></p>
<p align=left><span>　　为了取出几条随机选择的记录并存放在同一</span><span>recordset</span><span>内，你可以存储三个随机数，然后查询数据库获得匹配这些数字的记录：</span><span> </span></p>
<p align=left><span>　　</span><span>SQL = "SELECT * FROM Customers WHERE ID = " &amp; RNumber &amp; " OR ID = " &amp; RNumber2 &amp; " OR ID = " &amp; RNumber3 </span></p>
<p align=left><span>　　假如你想选出</span><span>10</span><span>条记录（也许是每次页面装载时的</span><span>10</span><span>条链接的列表），你可以用</span><span>BETWEEN </span><span>或者数学等式选出第一条记录和适当数量的递增记录。这一操作可以通过好几种方式来完成，但是</span><span> SELECT </span><span>语句只显示一种可能（这里的</span><span>ID </span><span>是自动生成的号码）：</span><span> <br>SQL = "SELECT * FROM Customers WHERE ID BETWEEN " &amp; RNumber &amp; " AND " &amp; RNumber &amp; "+ 9" </span></p>
<p align=left><span>　　注意：以上代码的执行目的不是检查数据库内是否有</span><span>9</span><span>条并发记录。</span></p>
<p align=left><span>　　随机读取若干条记录，测试过</span></p>
<p align=left><span>Access</span><span>语法：</span><span>SELECT top 10 * From </span><span>表名</span><span> ORDER BY Rnd(id)<br>Sql server:select top n * from </span><span>表名</span><span> order by newid()<br>mysql select * From </span><span>表名</span><span> Order By rand() Limit n</span></p>
<p align=left><span>　　</span><span>Access</span><span>左连接语法</span><span>(</span><span>最近开发要用左连接</span><span>,Access</span><span>帮助什么都没有</span><span>,</span><span>网上没有</span><span>Access</span><span>的</span><span>SQL</span><span>说明</span><span>,</span><span>只有自己测试</span><span>, </span><span>现在记下以备后查</span><span>)</span></p>
<p align=left><span>　　语法</span><span> select table1.fd1,table1,fd2,table2.fd2 From table1 left join table2 on table1.fd1,table2.fd1 where ...</span></p>
<p align=left><span>　　使用</span><span>SQL</span><span>语句</span><span> </span><span>用</span><span>...</span><span>代替过长的字符串显示</span></p>
<p align=left><span>　　语法：</span></p>
<p align=left><span>　　</span><span>SQL</span><span>数据库：</span><span>select case when len(field)&gt;10 then left(field,10)+'...' else field end as news_name,news_id from tablename<br></span><span>　　</span><span>Access</span><span>数据库：</span><span>SELECT iif(len(field)&gt;2,left(field,2)+'...',field) FROM tablename; </span></p>
<p align=left><span>　　</span><span>Conn.Execute</span><span>说明</span></p>
<p align=left><span>　　</span><span>Execute</span><span>方法</span></p>
<p align=left><span>　　该方法用于执行</span><span>SQL</span><span>语句。根据</span><span>SQL</span><span>语句执行后是否返回记录集，该方法的使用格式分为以下两种：</span></p>
<p align=left><span>　　</span><span>1</span><span>．执行</span><span>SQL</span><span>查询语句时，将返回查询得到的记录集。用法为：</span></p>
<p align=left><span>　　</span><span>Set </span><span>对象变量名</span><span>=</span><span>连接对象</span><span>.Execute("SQL </span><span>查询语言</span><span>")</span></p>
<p align=left><span>　　</span><span>Execute</span><span>方法调用后，会自动创建记录集对象，并将查询结果存储在该记录对象中，通过</span><span>Set</span><span>方法，将记录集赋给指定的对象保存，以后对象变量就代表了该记录集对象。</span></p>
<p align=left><span>　　</span><span>2</span><span>．执行</span><span>SQL</span><span>的操作性语言时，没有记录集的返回。此时用法为：</span></p>
<p align=left><span>　　连接对象</span><span>.Execute "SQL </span><span>操作性语句</span><span>" [, RecordAffected][, Option]</span></p>
<p align=left><span>　　</span><span>&#183;RecordAffected </span><span>为可选项，此出可放置一个变量，</span><span>SQL</span><span>语句执行后，所生效的记录数会自动保存到该变量中。通过访问该变量，就可知道</span><span>SQL</span><span>语句队多少条记录进行了操作。</span></p>
<p align=left><span>　　</span><span>&#183;Option </span><span>可选项，该参数的取值通常为</span><span>adCMDText</span><span>，它用于告诉</span><span>ADO</span><span>，应该将</span><span>Execute</span><span>方法之后的第一个字符解释为命令文本。通过指定该参数，可使执行更高效。</span></p>
<p align=left><span>　　</span><span>&#183;BeginTrans</span><span>、</span><span>RollbackTrans</span><span>、</span><span>CommitTrans</span><span>方法</span></p>
<p align=left><span>　　这三个方法是连接对象提供的用于事务处理的方法。</span><span>BeginTrans</span><span>用于开始一个事物；</span><span>RollbackTrans</span><span>用于回滚事务；</span><span>CommitTrans</span><span>用于提交所有的事务处理结果，即确认事务的处理。</span></p>
<p align=left><span>　　事务处理可以将一组操作视为一个整体，只有全部语句都成功执行后，事务处理才算成功；若其中有一个语句执行失败，则整个处理就算失败，并恢复到处里前的状态。</span></p>
<p align=left><span>　　</span><span>BeginTrans</span><span>和</span><span>CommitTrans</span><span>用于标记事务的开始和结束，在这两个之间的语句，就是作为事务处理的语句。判断事务处理是否成功，可通过连接对象的</span><span>Error</span><span>集合来实现，若</span><span>Error</span><span>集合的成员个数不为</span><span>0</span><span>，则说明有错误发生，事务处理失败。</span><span>Error</span><span>集合中的每一个</span><span>Error</span><span>对象，代表一个错误信息。</span></p>
<p>&nbsp;</p>
<p><strong></strong><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #4b4b4b; LINE-HEIGHT: 160%; FONT-FAMILY: Georgia; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"><strong><o:p></o:p></strong></span>&nbsp;</p>
<img src ="http://www.blogjava.net/toaking/aggbug/133722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toaking/" target="_blank">Derek</a> 2007-08-01 09:26 <a href="http://www.blogjava.net/toaking/archive/2007/08/01/133722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS第3期 </title><link>http://www.blogjava.net/toaking/archive/2007/05/12/117054.html</link><dc:creator>Derek</dc:creator><author>Derek</author><pubDate>Sat, 12 May 2007 15:00:00 GMT</pubDate><guid>http://www.blogjava.net/toaking/archive/2007/05/12/117054.html</guid><wfw:comment>http://www.blogjava.net/toaking/comments/117054.html</wfw:comment><comments>http://www.blogjava.net/toaking/archive/2007/05/12/117054.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toaking/comments/commentRss/117054.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toaking/services/trackbacks/117054.html</trackback:ping><description><![CDATA[<p>CSS第3期 <br>&nbsp;<br>&nbsp;<br>四、如何在网页中插入CSS</p>
<p>前两章我们了解了CSS的语法，但要想在浏览器中显示出效果，就要让浏览器识别并调用。当浏览器读取样式表时，要依照文本格式来读，这里介绍四种在页面中插入样式表的方法：链入外部样式表、内部样式表、导入外表样式表和内嵌样式。</p>
<p>1. 链入外部样式表</p>
<p>链入外部样式表是把样式表保存为一个样式表文件，然后在页面中用&lt;link&gt;标记链接到这个样式表文件，这个&lt;link&gt;标记必须放到页面的&lt;head&gt;区内，如下：<br>&lt;head&gt;<br>&#8230;&#8230;<br>&lt;link rel="stylesheet" type="text/css" href="mystyle.css"&gt;<br>&#8230;&#8230;<br>&lt;/head&gt;<br>上面这个例子表示浏览器从mystyle.css文件中以文档格式读出定义的样式表。rel=&#8221;stylesheet&#8221;是指在页面中使用这个外部的样式表。type=&#8221;text/css&#8221;是指文件的类型是样式表文本。href=&#8221;mystyle.css&#8221;是文件所在的位置。</p>
<p>一个外部样式表文件可以应用于多个页面。当你改变这个样式表文件时，所有页面的样式都随之而改变。在制作大量相同样式页面的网站时，非常有用，不仅减少了重复的工作量，而且有利于以后的修改、编辑，浏览时也减少了重复下载代码。</p>
<p>样式表文件可以用任何文本编辑器（例如：记事本）打开并编辑，一般样式表文件扩展名为.css。内容是定义的样式表，不包含HTML标记，mystyle.css这个文件的内容如下：<br>hr {color: sienna}<br>p {margin-left: 20px}<br>body {background-image: url("images/back40.gif")}<br>（定义水平线的颜色为土黄；段落左边的空白边距为20象素；页面的背景图片为images目录下的back40.gif文件）</p>
<p>2. 内部样式表</p>
<p>内部样式表是把样式表放到页面的&lt;head&gt;区里，这些定义的样式就应用到页面中了，样式表是用&lt;style&gt;标记插入的，从下例中可以看出&lt;style&gt;标记的用法：<br>&lt;head&gt;<br>&#8230;&#8230;<br>&lt;style type="text/css"&gt;<br>hr {color: sienna}<br>p {margin-left: 20px}<br>body {background-image: url("images/back40.gif")}<br>&lt;/style&gt;<br>&#8230;&#8230;<br>&lt;/head&gt;</p>
<p>注意：有些低版本的浏览器不能识别style标记，这意味着低版本的浏览器会忽略style标记里的内容，并把style标记里的内容以文本直接显示到页面上。为了避免这样的情况发生，我们用加HTML注释的方式（&lt;!-- 注释 --&gt;）隐藏内容而不让它显示：<br>&lt;head&gt;<br>&#8230;&#8230;<br>&lt;style type="text/css"&gt;<br>&lt;!--<br>hr {color: sienna}<br>p {margin-left: 20px}<br>body {background-image: url("images/back40.gif")}<br>--&gt;<br>&lt;/style&gt;<br>&#8230;&#8230;<br>&lt;/head&gt;</p>
<p>3. 导入外部样式表</p>
<p>导入外部样式表是指在内部样式表的&lt;style&gt;里导入一个外部样式表，导入时用@import，看下面这个实例：<br>&lt;head&gt;<br>&#8230;&#8230;<br>&lt;style type=&#8221;text/css&#8221;&gt;<br>&lt;!--<br>@import &#8220;mystyle.css&#8221;<br>其他样式表的声明<br>--&gt;<br>&lt;/style&gt;<br>&#8230;&#8230;<br>&lt;/head&gt;<br>例中@import &#8220;mystyle.css&#8221;表示导入mystyle.css样式表，注意使用时外部样式表的路径。方法和链入样式表的方法很相似，但导入外部样式表输入方式更有优势。实质上它相当于存在内部样式表中的。<br>注意：导入外部样式表必须在样式表的开始部分，在其他内部样式表上面。</p>
<p>4. 内嵌样式</p>
<p>内嵌样式是混合在HTML标记里使用的，用这种方法，可以很简单的对某个元素单独定义样式。内嵌样式的使用是直接将在HTML标记里加入style参数。而style参数的内容就是CSS的属性和值，如下例：<br>&lt;p style="color: sienna; margin-left: 20px"&gt;<br>这是一个段落<br>&lt;/p&gt;<br>（这个段落颜色为土黄，左边距为20象素）<br>在style参数后面的引号里的内容相当于在样式表大括号里的内容。<br>注意：style参数可以应用于任意BODY内的元素（包括BODY本事），除了BASEFONT、PARAM和SCRIPT。</p>
<p>5. 多重样式表的叠加</p>
<p>上一章里我们已经提到样式表的层叠顺序，这里我们讨论插入样式表的这几种方法的叠加，如果在同一个选择器上使用几个不同的样式表时，这个属性值将会叠加几个样式表，遇到冲突的地方会以最后定义的为准。例如，我们首先链入一个外部样式表，其中定义了h3选择符的color 、text-alig和font-size属性：<br>h3 <br>{<br>color: red;<br>text-align: left;<br>font-size: 8pt<br>}<br>（标题3的文字颜色为红色；向左对齐；文字尺寸为8号字）<br>然后在内部样式表里也定义了h3选择符的text-align和font-size属性：<br>h3 <br>{<br>text-align: right; <br>font-size: 20pt<br>}<br>（标题3文字向右对齐；尺寸为20号字）<br>那么这个页面叠加后的样式就是：<br>color: red; <br>text-align: right; <br>font-size: 20pt<br>（文字颜色为红色；向右对齐；尺寸为20号字）<br>字体颜色从外部样式表里保留下来，而对齐方式和字体尺寸都有定义时，按照后定义的优先而依照内部样式表。<br>注意：依照后定义的优先，所以优先级最高的是内嵌样式，内部样式表高于导入外部样式表，链入的外部样式表和内部样式表之间是最后定义的优先级高。&nbsp; </p>
<img src ="http://www.blogjava.net/toaking/aggbug/117054.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toaking/" target="_blank">Derek</a> 2007-05-12 23:00 <a href="http://www.blogjava.net/toaking/archive/2007/05/12/117054.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS第2期</title><link>http://www.blogjava.net/toaking/archive/2007/05/12/117053.html</link><dc:creator>Derek</dc:creator><author>Derek</author><pubDate>Sat, 12 May 2007 14:59:00 GMT</pubDate><guid>http://www.blogjava.net/toaking/archive/2007/05/12/117053.html</guid><wfw:comment>http://www.blogjava.net/toaking/comments/117053.html</wfw:comment><comments>http://www.blogjava.net/toaking/archive/2007/05/12/117053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toaking/comments/commentRss/117053.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toaking/services/trackbacks/117053.html</trackback:ping><description><![CDATA[<p>&nbsp;<br>　CSS第2期 <br>&nbsp;<br>&nbsp;<br>三、伪类——动态链接</p>
<p>伪类可以看做是一种特殊的类选择符，是能被支持CSS的浏览器自动所识别的特殊选择符。它的最大的用处就是可以对链接在不同状态下定义不同的样式效果。</p>
<p>1. 语法</p>
<p>伪类的语法是在原有的语法里加上一个伪类（pseudo-class）：<br>selector:pseudo-class {property: value}<br>（选择符:伪类 {属性: 值}）<br>伪类和类不同，是CSS已经定义好的，不能象类选择符一样随意用别的名字，根据上面的语法可以解释为对象（选择符）在某个特殊状态下（伪类）的样式。</p>
<p>类选择符及其他选择符也同样可以和伪类混用：<br>selector.class:pseudo-class {property: value}<br>（选择符.类:伪类 {属性: 值}）</p>
<p>2. 锚的伪类</p>
<p>我们最常用的是4种a（锚）元素的伪类，它表示动态链接在4种不同的状态：link、visited、active、hover（未访问的链接、已访问的链接、激活链接和鼠标停留在链接上）。我们把它们分别定义不同的效果：<br>a:link {color: #FF0000; text-decoration: none} /* 未访问的链接 */<br>a:visited {color: #00FF00; text-decoration: none} /* 已访问的链接 */<br>a:hover {color: #FF00FF; text-decoration: underline} /* 鼠标在链接上 */<br>a:active {color: #0000FF; text-decoration: underline} /* 激活链接 */<br>（上面这个例子中，这个链接未访问时的颜色是红色并无下划线，访问后是绿色并无下划线，激活链接时为蓝色并有下划线，鼠标在链接上时为紫色并有下划线） <br>注意：有时这个链接访问前鼠标指向链接时有效果，而链接访问后鼠标再次指向链接时却无效果了。这是因为你把a:hover放在了a:visited的前面，这样的话由于后面的优先级高，当访问链接后就忽略了a:hover的效果。所以根据叠层顺序，我们在定义这些链接样式时，一定要按照a:link， a:visited， a:hover， a:actived的顺序书写。</p>
<p>3. 伪类和类选择符</p>
<p>将伪类和类组合起来用，就可以在同一个页面中做几组不同的链接效果了，例如，我们定义一组链接为红色，访问后为蓝色；另一组为绿色，访问后为黄色：<br>a.red:link {color: #FF0000}<br>a.red:visited {color: #0000FF}<br>a.blue:link {color: #00FF00}<br>a.blue:visited {color: #FF00FF}<br>现在应用在不同的链接上：<br>&lt;a class="red" href="..."&gt;这是第一组链接&lt;/a&gt;<br>&lt;a class="blue" href="..."&gt;这是第二组链接&lt;/a&gt;</p>
<p>4. 其他伪类</p>
<p>此外CSS2还定义了首字和首行（first-letter和first-line）的伪类，可以对元素的首字或首行设定不同的样式。<br>下面看这个例子，我们在段落标记里定义文本首字尺寸为默认大小的3倍：<br>&lt;style type=&#8221;text/css&#8221;&gt;<br>p:first-letter {font-size: 300%}<br>&lt;/style&gt;<br>&#8230;&#8230;<br>&lt;p&gt;<br>这是一个段落，这个段落的首字被放大了。<br>&lt;/p&gt;</p>
<p>我们再定义一个首行样式的例子：<br>&lt;style type=&#8221;text/css&#8221;&gt;<br>div:first-line {color: red}<br>&lt;/style&gt;<br>&#8230;&#8230;<br>&lt;div&gt;<br>&lt;p&gt;<br>这是段落的第一行<br>这是段落的第二行<br>这是段落的第三行<br>&lt;/p&gt;<br>&lt;/div&gt;<br>（上例中段落的第一行为红色，第二、三行为默认颜色）</p>
<p>注意：首字和首行的伪类需要IE5.5以上的版本支持。&nbsp; <br></p>
<img src ="http://www.blogjava.net/toaking/aggbug/117053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toaking/" target="_blank">Derek</a> 2007-05-12 22:59 <a href="http://www.blogjava.net/toaking/archive/2007/05/12/117053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS第1期 </title><link>http://www.blogjava.net/toaking/archive/2007/05/12/116916.html</link><dc:creator>Derek</dc:creator><author>Derek</author><pubDate>Fri, 11 May 2007 17:23:00 GMT</pubDate><guid>http://www.blogjava.net/toaking/archive/2007/05/12/116916.html</guid><wfw:comment>http://www.blogjava.net/toaking/comments/116916.html</wfw:comment><comments>http://www.blogjava.net/toaking/archive/2007/05/12/116916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toaking/comments/commentRss/116916.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toaking/services/trackbacks/116916.html</trackback:ping><description><![CDATA[<p align=center>&nbsp;&nbsp;&nbsp; <strong>　CSS第1期 <br></strong>Dreamweaver是现今最好的网站编辑工具之一，用它来给制作网页的CSS样式表会更简单、更方便。本教程教你如何利用Dreamweaver在页面中加入CSS，你不用死记硬背的记代码标记，也不用去看很厚的CSS手册，你就可以轻松自如的在网页中运用CSS。不过首先你要对CSS有一定的了解。因此，本教程的前面4章为CSS理论知识，主要是对CSS的全面介绍，希望读者看后对CSS的语法、结构、应用有一个全面的了解；后面4章为DW实战，主要是教你如何利用Dreamweaver灵活运用CSS在网页中。阅读此文前，你需要对HTML有一定的了解，并会使用Dreamweaver。</p>
<p>一、认识CSS</p>
<p>CSS就是Cascading Style Sheets，中文翻译为&#8220;层叠样式表&#8221;，简称样式表，它是一种制作网页的新技术。</p>
<p>网页设计最初是用HTML标记来定义页面文档及格式，例如标题&lt;h1&gt;、段落&lt;p&gt;、表格&lt;table&gt;、链接&lt;a&gt;等，但这些标记不能满足更多的文档样式需求，为了解决这个问题，在1997年W3C(The World Wide Web Consortium)颁布HTML4标准的同时也公布了有关样式表的第一个标准CSS1, 自CSS1的版本之后，又在1998年5月发布了CSS2版本，样式表得到了更多的充实。W3C把DHTML(Dynamic HTML)分为三个部分来实现：脚本语言(包括JavaScript、Vbscript等)、支持动态效果的浏览器(包括Internet Explorer、Netscape Navigator等)和CSS样式表。</p>
<p>注意：CSS需要IE4(Internet Explorer 4.0)和NC4(Netscape 4.0)以上的浏览器支持，有些效果需要更高版本的浏览器支持。</p>
<p>二、语法</p>
<p>1. 基本语法</p>
<p>CSS的定义是由三个部分构成：选择符（selector），属性（properties）和属性的取值（value）。<br>基本格式如下：<br>selector {property: value} <br>（选择符 {属性：值}）<br>选择符是可以是多种形式，一般是你要定义样式的HTML标记，例如BODY、P、TABLE&#8230;&#8230;，你可以通过此方法定义它的属性和值，属性和值要用冒号隔开：<br>body {color: black}<br>选择符body是指页面主体部分，color是控制文字颜色的属性，black是颜色的值，此例的效果是使页面中的文字为黑色。</p>
<p>如果属性的值是多个单词组成，必须在值上加引号，比如字体的名称经常是几个单词的组合：<br>p {font-family: "sans serif"}<br>（定义段落字体为sans serif）</p>
<p>如果需要对一个选择符指定多个属性时，我们使用分号将所有的属性和值分开：<br>p {text-align: center; color: red}<br>（段落居中排列；并且段落中的文字为红色）</p>
<p>为了使你定义的样式表方便阅读，你可以采用分行的书写格式：<br>p<br>{<br>text-align: center;<br>color: black;<br>font-family: arial<br>}<br>（段落排列居中，段落中文字为黑色，字体是arial）</p>
<p>2. 选择符组</p>
<p>你可以把相同属性和值的选择符组合起来书写，用逗号将选择符分开，这样可以减少样式重复定义：<br>h1, h2, h3, h4, h5, h6 { color: green }<br>（这个组里包括所有的标题元素，每个标题元素的文字都为绿色）<br>p, table{ font-size: 9pt }<br>（段落和表格里的文字尺寸为9号字）<br>效果完全等效于：<br>p { font-size: 9pt }<br>table { font-size: 9pt }</p>
<p>3. 类选择符</p>
<p>用类选择符你能够把相同的元素分类定义不同的样式，定义类选择符时，在自定类的名称前面加一个点号。假如你想要两个不同的段落，一个段落向右对齐，一个段落居中，你可以先定义两个类：<br>p.right {text-align: right}<br>p.center {text-align: center}<br>然后用不在不同的段落里，只要在HTML标记里加入你定义的class参数：<br>&lt;p class="right"&gt;<br>这个段落向右对齐的<br>&lt;/p&gt; <br>&lt;p class="center"&gt;<br>这个段落是居中排列的<br>&lt;/p&gt;<br>注意：类的名称可以是任意英文单词或以英文开头与数字的组合，一般以其功能和效果简要命名。</p>
<p>类选择符还有一种用法，在选择符中省略HTML标记名，这样可以把几个不同的元素定义成相同的样式：<br>.center {text-align: center}<br>（定义.center的类选择符为文字居中排列）<br>这样的类可以被应用到任何元素上。下面我们使h1元素（标题1）和p元素（段落）都归为&#8220;center&#8221;类，这使两个元素的样式都跟随&#8220;.center&#8221;这个类选择符：<br>&lt;h1 class="center"&gt;<br>这个标题是居中排列的<br>&lt;/h1&gt;<br>&lt;p class="center"&gt;<br>这个段落也是居中排列的<br>&lt;/p&gt;<br>注意：这种省略HTML标记的类选择符是我们经后最常用的CSS方法，使用这种方法，我们可以很方便的在任意元素上套用预先定义好的类样式。</p>
<p>4. ID选择符</p>
<p>在HTML页面中ID参数指定了某个单一元素，ID选择符是用来对这个单一元素定义单独的样式。<br>ID选择符的应用和类选择符类似，只要把CLASS换成ID即可。将上例中类用ID替代：<br>&lt;p id="intro"&gt;<br>这个段落向右对齐<br>&lt;/p&gt;<br>定义ID选择符要在ID名称前加上一个&#8220;#&#8221;号。和类选择符相同，定义ID选择符的属性也有两种方法。下面这个例子，ID属性将匹配所有id="intro"的元素：<br>#intro<br>{<br>font-size:110%;<br>font-weight:bold;<br>color:#0000ff;<br>background-color:transparent<br>}<br>（字体尺寸为默认尺寸的110%；粗体；蓝色；背景颜色透明）<br>下面这个例子，ID属性只匹配id="intro"的段落元素：<br>p#intro<br>{<br>font-size:110%;<br>font-weight:bold;<br>color:#0000ff;<br>background-color:transparent<br>}<br>注意：ID选择符局限性很大，只能单独定义某个元素的样式，一般只在特殊情况下使用。</p>
<p>5. 包含选择符</p>
<p>可以单独对某种元素包含关系定义的样式表，元素1里包含元素2，这种方式只对在元素1里的元素2定义，对单独的元素1或元素2无定义，例如：<br>table a<br>{<br>font-size: 12px<br>}<br>在表格内的链接改变了样式，文字大小为12象素，而表格外的链接的文字仍为默认大小。</p>
<p>6. 样式表的层叠性</p>
<p>层叠性就是继承性，样式表的继承规则是外部的元素样式会保留下来继承给这个元素所包含的其他元素。事实上，所有在元素中嵌套的元素都会继承外层元素指定的属性值，有时会把很多层嵌套的样式叠加在一起，除非另外更改。例如在DIV标记中嵌套P标记：<br>div { color: red; font-size:9pt}<br>&#8230;&#8230;<br>&lt;div&gt;<br>&lt;p&gt;<br>这个段落的文字为红色9号字<br>&lt;/p&gt;<br>&lt;/div&gt;<br>（P元素里的内容会继承DIV定义的属性）<br>注意：有些情况下内部选择符不继承周围选择符的值，但理论上这些都是特殊的。例如，上边界属性值是不会继承的，直觉上，一个段落不会同文档BODY一样的上边界值。</p>
<p>另外，当样式表继承遇到冲突时，总是以最后定义的样式为准。如果上例中定义了P的颜色：<br>div { color: red; font-size:9pt}<br>p {color: blue}<br>&#8230;&#8230;<br>&lt;div&gt;<br>&lt;p&gt;<br>这个段落的文字为蓝色9号字<br>&lt;/p&gt;<br>&lt;/div&gt;<br>我们可以看到段落里的文字大小为9号字是继承div属性的，而color属性则依照最后定义的。</p>
<p>不同的选择符定义相同的元素时，要考虑到不同的选择符之间的优先级。ID选择符，类选择符和HTML标记选择符，因为ID选择符是最后加上元素上的，所以优先级最高，其次是类选择符。如果想超越这三者之间的关系，可以用!important提升样式表的优先权，例如：<br>p { color: #FF0000!important }<br>.blue { color: #0000FF}<br>#id1 { color: #FFFF00}<br>我们同时对页面中的一个段落加上这三种样式，它最后会依照被!important申明的HTML标记选择符样式为红色文字。如果去掉!important，则依照优先权最高的ID选择符为黄色文字。</p>
<p>7. 注释</p>
<p>你可以在CSS中插入注释来说明你代码的意思，注释有利于你或别人以后编辑和更改代码时理解代码的含义。在浏览器中，注释是不显示的。CSS注释以"/*" 开头，以"*/" 结尾，如下：<br>/* 定义段落样式表 */<br>p<br>{<br>text-align: center; /* 文本居中排列 */<br>color: black; /* 文字为黑色 */<br>font-family: arial /* 字体为arial */<br>}&nbsp; </p>
<img src ="http://www.blogjava.net/toaking/aggbug/116916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toaking/" target="_blank">Derek</a> 2007-05-12 01:23 <a href="http://www.blogjava.net/toaking/archive/2007/05/12/116916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OUTLOOK的用法</title><link>http://www.blogjava.net/toaking/archive/2007/03/27/106780.html</link><dc:creator>Derek</dc:creator><author>Derek</author><pubDate>Tue, 27 Mar 2007 14:16:00 GMT</pubDate><guid>http://www.blogjava.net/toaking/archive/2007/03/27/106780.html</guid><wfw:comment>http://www.blogjava.net/toaking/comments/106780.html</wfw:comment><comments>http://www.blogjava.net/toaking/archive/2007/03/27/106780.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/toaking/comments/commentRss/106780.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toaking/services/trackbacks/106780.html</trackback:ping><description><![CDATA[
		<font face="宋体">
				<span lang="EN-US">Microsoft Outlook</span>不用注册的，不过日前<span lang="EN-US">hotmial</span>不支持<span lang="EN-US">Outlook</span>等邮件客户端收发邮件<span lang="EN-US">.</span>其它如网易、雅虎、搜狐等大多数邮箱都可以用<span lang="EN-US">Outlook </span>收发邮件。</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />   </span>以网易<span lang="EN-US">163</span>邮箱为例，<span lang="EN-US">Outlook</span>应这样设置：</font>
		</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />1.</span>打开<span lang="EN-US"> Outlook</span>（即<span lang="EN-US"> Outlook Express</span>），点击<span lang="EN-US">“</span>工具<span lang="EN-US">”</span>，然后选<span lang="EN-US">“</span>帐户<span lang="EN-US">”</span>。</font>
		</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />2.</span>单击<span lang="EN-US">“</span>添加<span lang="EN-US">”</span>，在弹出菜单中选择<span lang="EN-US">“</span>邮件<span lang="EN-US">”</span>，进入<span lang="EN-US"> Internet </span>连接向导。</font>
		</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />3.</span>在<span lang="EN-US">“</span>显示名：<span lang="EN-US">”</span>字段中输入您的姓名，然后单击<span lang="EN-US">“</span>下一步<span lang="EN-US">”</span>。</font>
		</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />4.</span>在<span lang="EN-US">“</span>电子邮件地址：<span lang="EN-US">”</span>字段中输入您的完整<span lang="EN-US"> 163 </span>免费邮地址<span lang="EN-US">(you@163.com)</span>，然后单击<span lang="EN-US">“</span>下一步<span lang="EN-US">”</span>。</font>
		</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />5.</span>在<span lang="EN-US">“</span>接收邮件（<span lang="EN-US">pop</span>、<span lang="EN-US">IMAP</span>或<span lang="EN-US">HTTP</span>）服务器：<span lang="EN-US">”</span>字段中输入<span lang="EN-US"> pop.163.com</span>。在<span lang="EN-US">“</span>发送邮件服务器<span lang="EN-US"> (SMTP)</span>：<span lang="EN-US">”</span>字段中输入：<span lang="EN-US">smtp.163.com</span>，单击<span lang="EN-US">“</span>下一步<span lang="EN-US">”</span>。</font>
		</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />6.</span>在<span lang="EN-US">“</span>帐户名：<span lang="EN-US">”</span>字段中输入您的<span lang="EN-US"> 163 </span>免费邮用户名（仅输入<span lang="EN-US">@ </span>前面的部分）。在<span lang="EN-US">“</span>密码：<span lang="EN-US">”</span>字段中输入您的邮箱密码，然后单击<span lang="EN-US">“</span>下一步<span lang="EN-US">”</span>。</font>
		</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />7.</span>点击<span lang="EN-US">“</span>完成<span lang="EN-US">”</span>。</font>
		</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />8.</span>在<span lang="EN-US"> Internet </span>帐户中，选择<span lang="EN-US">“</span>邮件<span lang="EN-US">”</span>选项卡，选中刚才设置的帐号，单击<span lang="EN-US">“</span>属性<span lang="EN-US">”</span>。</font>
		</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />9.</span>在属性设置窗口中，选择<span lang="EN-US">“</span>服务器<span lang="EN-US">”</span>选项卡，勾选<span lang="EN-US">“</span>我的服务器需要身份验证<span lang="EN-US">”</span>，并点击旁边的<span lang="EN-US">“</span>设置<span lang="EN-US">”</span>按钮。</font>
		</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />10.</span>登录信息选择<span lang="EN-US">“</span>使用与接收邮件服务器相同的设置<span lang="EN-US">”</span>，确保您在每一字段中输入了正确信息。</font>
		</font>
		<font size="3">
				<font face="宋体">
						<span lang="EN-US">
								<br />11.</span>点击<span lang="EN-US">“</span>确定<span lang="EN-US">”</span>。</font>
		</font>
<img src ="http://www.blogjava.net/toaking/aggbug/106780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toaking/" target="_blank">Derek</a> 2007-03-27 22:16 <a href="http://www.blogjava.net/toaking/archive/2007/03/27/106780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jsp + JavaBean循序渐进教程</title><link>http://www.blogjava.net/toaking/archive/2006/12/27/90365.html</link><dc:creator>Derek</dc:creator><author>Derek</author><pubDate>Wed, 27 Dec 2006 10:50:00 GMT</pubDate><guid>http://www.blogjava.net/toaking/archive/2006/12/27/90365.html</guid><wfw:comment>http://www.blogjava.net/toaking/comments/90365.html</wfw:comment><comments>http://www.blogjava.net/toaking/archive/2006/12/27/90365.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toaking/comments/commentRss/90365.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toaking/services/trackbacks/90365.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Jsp + JavaBean														循序渐进教程														(1)																		目前，Jsp作为一个很好的动态网站开发语言得到了越来越广泛的应用，在各类Jsp应用程序中，Jsp+ Java Bean的组合成为了一种事实上最常见的Jsp程序的标准，就让我们来看看具体的Jsp是如何与Java Bean...&nbsp;&nbsp;<a href='http://www.blogjava.net/toaking/archive/2006/12/27/90365.html'>阅读全文</a><img src ="http://www.blogjava.net/toaking/aggbug/90365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toaking/" target="_blank">Derek</a> 2006-12-27 18:50 <a href="http://www.blogjava.net/toaking/archive/2006/12/27/90365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP中tomcat的SQL Server2000数据库连接池的配置</title><link>http://www.blogjava.net/toaking/archive/2006/11/20/82181.html</link><dc:creator>Derek</dc:creator><author>Derek</author><pubDate>Mon, 20 Nov 2006 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/toaking/archive/2006/11/20/82181.html</guid><wfw:comment>http://www.blogjava.net/toaking/comments/82181.html</wfw:comment><comments>http://www.blogjava.net/toaking/archive/2006/11/20/82181.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toaking/comments/commentRss/82181.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toaking/services/trackbacks/82181.html</trackback:ping><description><![CDATA[
		<p>JSP中tomcat的SQL Server2000数据库连接池的配置<br />环境：<br />1. 数据库：Microsoft SQL Server 2000<br />2. 数据库驱动程序：net.sourceforge.jtds.jdbc.Driver<br />JNDI（Java Naming and Directory Interface）概述：<br />Tomcat4（5）提供了一个与Java Enterprise Edition应用服务相兼容的JNDI--InitialContext实现实例。它的初始数据设置在$CATALINA_HOME/conf/server.xml文件里，并可能在网页应用环境描述（/WEB-INF/web.xml）里被下列元素引用：<br />1) &lt;env-entry&gt;--环境入口，设置应用程序如何操作。<br />2) &lt;resource-ref&gt;--资源参数，一般是数据库驱动程序、JavaMail Session、自定义类工厂等。<br />3) &lt;resource-env-ref&gt;--在Servlet 2.4里用来简化设置不需认证信息的资源资源如环境参数、resource-ref变量。<br />InitialContext在网页应用程序初始化时被设置，用来支持网页应用程序组件。所有的入口和资源都放在JNDI命名空间里的java:comp/env段里。点击下列网址以获取更多信息：<br />1) Java命名和目录接口（Java Naming and Directory Interface）<br />2) J2EE平台说明（J2EE Platform Specification）<br />设置JNDI资源<br />设置JNDI资源要在$CATALINA_HOME/conf/server.xml文件里使用下列标志符：<br />1) &lt;Environment&gt;--设置域个可变的JNDI InitialContext入口的名字和值（同上面说的&lt;env-entry&gt;等价）。<br />2) &lt;Resource&gt;--设置应用程序可用的资源的名字和类型（同上面说的&lt;resource-ref&gt;等价）。<br />3) &lt;ResourceParams&gt;--设置Java资源类工厂的名称或将用的JavaBean属性。<br />4) &lt;ResourceLink&gt;--给全局JNDI环境（JNDI Context）添加一个链接。<br />上述这些标志符必须放在&lt;Context&gt;和&lt;/Context&gt;之间（针对专门的网页应用程序）或&lt;DefaultContext&gt;和&lt;/DefaultContext&gt;之间。<br />此外，设在网页应用环境描述（Web Application Descriptor）（/WEB-INF/web.xml）里的名字和值也在初始环境（Initial Context）里被设置，当被&lt;Environemt&gt;元素值允许时将被重设初始值。<br />全局变量能在&lt;Server&gt;子元素的&lt;GlobalNamingResources&gt;里设置。<br />数据库连接池概述：<br />数据库连接是一种关键的有限的昂贵的资源，这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性，影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。<br />数据库连接池负责分配、管理和释放数据库连接，它允许应用程序重复使用一个现有的数据库连接，而再不是重新建立一个；释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。<br />数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中，这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用，连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数，当应用程序向连接池请求的连接数超过最大连接数量时，这些请求将被加入到等待队列中。数据库连接池的最小连接数和最大连接数的设置要考虑到下列几个因素：<br />1) 最小连接数是连接池一直保持的数据库连接，所以如果应用程序对数据库连接的使用量不大，将会有大量的数据库连接资源被浪费；<br />2) 最大连接数是连接池能申请的最大连接数，如果数据库连接请求超过此数，后面的数据库连接请求将被加入到等待队列中，这会影响之后的数据库操作。<br />3) 如果最小连接数与最大连接数相差太大，那么最先的连接请求将会获利，之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。不过，这些大于最小连接数的数据库连接在使用完不会马上被释放，它将被放到连接池中等待重复使用或是空闲超时后被释放。<br />配置Tomcat数据库连接池的前提：<br />1. 必须装有Java运行环境；<br />2. 必须有SQL Server2000数据库服务器（可以不在本地）；<br />3. 必须有jtds.jar，并将它放在$CATALINA_HOME/common/lib目录下（只能是这里）。使用它是因为Microsoft公司的Java SQL Server驱动程序不支持二次查询，可到网上搜到。目前使用的是jtds-0.6.jar。<br />在$CATALINA_HOME/conf/server.xml里设置数据库连接池：<br />下面是配置的代码，必须放在&lt;Host&gt;和&lt;/Host&gt;之间。<br />&lt;Context path="/quality" docBase="quality" debug="0" reloadable="true" crossContext="true"&gt;<br />&lt;Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_quality_log." suffix=".txt" timestamp="true"/&gt;<br />&lt;Resource name="jdbc/connectDB" auth="Container" type="javax.sql.DataSource"/&gt;<br />&lt;ResourceParams name="jdbc/connectDB"&gt;<br /> &lt;parameter&gt;<br />  &lt;name&gt;maxActive&lt;/name&gt;<br />  &lt;!-- Maximum number of DB connections in pool.Set to 0 for no limit. --&gt;<br />  &lt;value&gt;100&lt;/value&gt;<br /> &lt;/parameter&gt;<br /> &lt;parameter&gt;<br />  &lt;name&gt;maxIdle&lt;/name&gt;<br />  &lt;!-- Maximum number of idle DB connections to retain in pool.Set to 0 for no limit. --&gt;<br />  &lt;value&gt;30&lt;/value&gt;<br /> &lt;/parameter&gt;<br /> &lt;parameter&gt;<br />  &lt;name&gt;maxWait&lt;/name&gt;<br />  &lt;!-- Maximum time to wait for a DB connection to become available in ms.An exception is thrown if this timeout is exceeded.Set to -1 to wait indefinitely. --&gt;<br />  &lt;value&gt;10000&lt;/value&gt;<br /> &lt;/parameter&gt;<br /> &lt;parameter&gt;<br />  &lt;name&gt;removeAbandoned&lt;/name&gt;<br />  &lt;!-- Abandoned DB connections are removed and recycled --&gt;<br />  &lt;value&gt;true&lt;/value&gt;<br /> &lt;/parameter&gt;<br /> &lt;parameter&gt;<br />  &lt;name&gt;removeAbandonedTimeout&lt;/name&gt;<br />  &lt;!-- Use the removeAbandonedTimeout parameter to set the number of seconds a DB connection has been idle before it is considered abandoned.  --&gt;<br />  &lt;value&gt;60&lt;/value&gt;<br /> &lt;/parameter&gt;<br /> &lt;parameter&gt;<br />  &lt;name&gt;logAbandoned&lt;/name&gt;<br />  &lt;!-- Log a stack trace of the code which abandoned --&gt;<br />  &lt;value&gt;false&lt;/value&gt;<br /> &lt;/parameter&gt;<br /> &lt;parameter&gt;<br />  &lt;name&gt;factory&lt;/name&gt;<br />  &lt;!-DBCP Basic Datasource Factory --&gt;<br />  &lt;value&gt;org.apache.commons.dbcp.BasicDataSourceFactory&lt;/value&gt;<br /> &lt;/parameter&gt;<br /> &lt;parameter&gt;<br />  &lt;name&gt;username&lt;/name&gt;<br />  &lt;!-- Database User Name --&gt;<br />  &lt;value&gt;Iorishinier&lt;/value&gt;<br /> &lt;/parameter&gt;<br /> &lt;parameter&gt;<br />  &lt;name&gt;password&lt;/name&gt;<br />  &lt;!-- User Password --&gt;<br />  &lt;value&gt;mypasswd&lt;/value&gt;<br /> &lt;/parameter&gt;<br /> &lt;parameter&gt;<br />  &lt;name&gt;driverClassName&lt;/name&gt;<br />  &lt;!-- Database Driver Class Name --&gt;<br />  &lt;value&gt;net.sourceforge.jtds.jdbc.Driver&lt;/value&gt;<br /> &lt;/parameter&gt;<br /> &lt;parameter&gt;<br />  &lt;name&gt;url&lt;/name&gt;<br />  &lt;!-- Database Address --&gt;<br />  &lt;value&gt;jdbc:jtds:sqlserver://127.127.127.127:1433/Northwind&lt;/value&gt;<br /> &lt;/parameter&gt;<br />&lt;/ResourceParams&gt;<br />&lt;/Context&gt;<br />下面是一些参数的说明：<br />&lt;Context path="/quality" docBase="quality" debug="0" reloadable="true" crossContext="true"&gt;<br />其中：<br />1) path  指定路径，这里设定的是$CATALINA_HOME/webapps下的quality目录；<br />2) docBase 文件根目录。<br />3) reloader  当网页被更新时是否重新编译。<br />4) maxActive 连接池的最大数据库连接数。设为0表示无限制。<br />5) maxIdle  数据库连接的最大空闲时间。超过此空闲时间，数据库连接将被标记为不可用，然后被释放。设为0表示无限制。<br />6) maxWait 最大建立连接等待时间。如果超过此时间将接到异常。设为－1表示无限制。<br />7) removeAbandoned 回收被遗弃的（一般是忘了释放的）数据库连接到连接池中。<br />8) removeAbandonedTimeout 数据库连接过多长时间不用将被视为被遗弃而收回连接池中。<br />9) logAbandoned 将被遗弃的数据库连接的回收记入日志。<br />10) driverClassName JDBC驱动程序。<br />11) url   数据库连接字符串<br />在$CATALINA_HOME/webapps/quality/WEB-INF/web.xml里设置被引用的资源：<br />下面是配置代码，必须放在&lt;web-app&gt;和&lt;/web-app&gt;里。<br />&lt;!-- Database Config start --&gt;<br />&lt;resource-ref&gt;<br />&lt;description&gt;connectDB test&lt;/description&gt;<br />&lt;res-ref-name&gt;jdbc/connectDB&lt;/res-ref-name&gt;<br />&lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />&lt;res-auth&gt;Container&lt;/res-auth&gt;<br />&lt;/resource-ref&gt;<br />&lt;!-- Database Config end --&gt;<br />下面是一下参数的必要说明：<br />1) description  对被引用的资源的描述。<br />2) res-ref-name  资源名称。见上面的&lt;ResourceParams name="jdbc/connectDB"&gt;<br />3) res-type  资源类型。见上面的&lt;Resource name="jdbc/connectDB" auth="Container" type="javax.sql.DataSource"/&gt;<br />在JSP中使用资源：<br />这是在$CATALINA_HOME/webapps/quality下的某级子目录里的jsp网页文件部分代码：<br />&lt;%@ page contentType="text/html;charset=GBK"%&gt;<br />&lt;%@ page errorPage="error.jsp"%&gt;<br />&lt;%@ page import="javax.naming.*"%&gt;<br />&lt;%@ page import="javax.sql.*"%&gt;<br />&lt;%@ page import="java.sql.*"%&gt;<br />&lt;html&gt;<br /> &lt;head&gt;<br /> &lt;/head&gt;<br /> &lt;body&gt;<br />  &lt;%</p>
		<p>   ………………<br />   ………………</p>
		<p>   // 数据库操作<br />   Context ctx=null;<br />   Connection cnn=null;<br />   Statement stmt=null;<br />   ResultSet rs=null;<br />   try<br />   {<br />    ctx=new InitialContext();<br />    if(ctx==null)<br />     throw new Exception("没有匹配的环境");<br />    DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");<br />    if(ds==null)<br />     throw new Exception("没有匹配数据库");<br />    <br />    cnn=ds.getConnection();<br />    stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);<br />    rs=stmt.executeQuery("select * from table1");</p>
		<p>    ………………<br />    ………………</p>
		<p>   }<br />   finally<br />   {<br />    if(rs!=null)<br />     rs.close();<br />    if(stmt!=null)<br />     stmt.close();<br />    if(cnn!=null)<br />     cnn.close();<br />    if(ctx!=null)<br />     ctx.close();<br />   }<br />    %&gt;<br /> &lt;/body&gt;<br />&lt;/html&gt;<br />代码说明：<br />DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/connectDB");<br />上面这句应用了刚才设的资源。<br />资源使用完要释放，尤其是Context资源，见try-catch-finally部分的finally代码段，这是一种好的习惯。资源释放时如果释放了上级资源，下级资源将先被释放。如：释放了ctx，那么资源释放顺序将是rs，stmt，cnn，ctx。换句话说，如果释放了ctx，那么rs，stmt和cnn都将不可用了。<br />这里的释放资源只是将数据库连接返回连接池中，并不是把资源真正释放掉，见数据库连接池概述。</p>
<img src ="http://www.blogjava.net/toaking/aggbug/82181.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toaking/" target="_blank">Derek</a> 2006-11-20 10:34 <a href="http://www.blogjava.net/toaking/archive/2006/11/20/82181.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库原理之关系数据库SQL语言课后习题及答案</title><link>http://www.blogjava.net/toaking/archive/2006/11/17/81833.html</link><dc:creator>Derek</dc:creator><author>Derek</author><pubDate>Fri, 17 Nov 2006 12:18:00 GMT</pubDate><guid>http://www.blogjava.net/toaking/archive/2006/11/17/81833.html</guid><wfw:comment>http://www.blogjava.net/toaking/comments/81833.html</wfw:comment><comments>http://www.blogjava.net/toaking/archive/2006/11/17/81833.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/toaking/comments/commentRss/81833.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toaking/services/trackbacks/81833.html</trackback:ping><description><![CDATA[
		<p class="main">
				<font color="#224488" size="3">3.1　名词解释</font>
				<br />
				<br />(1)<font color="#224488"><b>SQL模式</b></font>：SQL模式是表和授权的静态定义。一个SQL模式定义为基本表的集合。 一个由模式名和模式拥有者的用户名或账号来确定,并包含模式中每一个元素(基本表、视图、索引等)的定义。 <br />(2)<font color="#224488"><b>SQL数据库</b></font>：SQL(Structured Query Language)，即‘结构式查询语言’，采用英语单词表示和结构式的语法规则。 一个SQL数据库是表的汇集，它用一个或多个SQL模式定义。 <br />(3)<font color="#224488"><b>基本表</b></font>：在SQL中，把传统的关系模型中的关系模式称为基本表(Base Table)。 基本表是实际存储在数据库中的表，对应一个关系。 <br />(4)<font color="#224488"><b>存储文件</b></font>：在SQL中，把传统的关系模型中的存储模式称为存储文件(Stored File)。 每个存储文件与外部存储器上一个物理文件对应。 <br />(5)<b><font color="#224488">视图</font></b>：在SQL中，把传统的关系模型中的子模式称为视图(View)，视图是从若干基本表和（或）其他视图构造出来的表。 <br />(6)<font color="#224488"><b>行</b></font>：在SQL中，把传统的关系模型中的元组称为行(row)。 <br />(7)列：在SQL中，把传统的关系模型中的属性称为列(coloumn)。 <br />(8)<font color="#224488"><b>实表</b></font>：基本表被称为“实表”，它是实际存放在数据库中的表。 <br />(9)<font color="#224488"><b>虚表</b></font>：视图被称为“虚表”，创建一个视图时，只把视图的定义存储在数据词典中，而不存储视图所对应的数据。 <br />(10)<font color="#224488"><b>相关子查询</b></font>：在嵌套查询中出现的符合以下特征的子查询：子查询中查询条件依赖于外层查询中的某个值， 所以子查询的处理不只一次，要反复求值，以供外层查询使用。 <br />(11)<font color="#224488"><b>联接查询</b></font>：查询时先对表进行笛卡尔积操作，然后再做等值联接、选择、投影等操作。 联接查询的效率比嵌套查询低。 <br />(12)<font color="#224488"><b>交互式SQL</b></font>：在终端交互方式下使用的SQL语言称为交互式SQL。 <br />(13)<font color="#224488"><b>嵌入式SQL</b></font>：嵌入在高级语言的程序中使用的SQL语言称为嵌入式SQL。 <br />(14)<font color="#224488"><b>共享变量</b></font>：SQL和宿主语言的接口。共享变量有宿主语言程序定义，再用SQL的DECLARE语句说明， SQL语句就可引用这些变量传递数据库信息。 <br />(15)<font color="#224488"><b>游标</b></font>：游标是与某一查询结果相联系的符号名，用于把集合操作转换成单记录处理方式。 <br />(16)<font color="#224488"><b>卷游标</b></font>：为了克服游标在推进时不能返回的不便，SQL2提供了卷游标技术。 卷游标在推进时不但能沿查询结果中元组顺序从头到尾一行行推进，也能一行行返回。 <br /><br /><font color="#224488">3.2 对于教学数据库的三个基本表 <br />　　 　　学生 S(S#,SNAME,AGE,SEX) <br />　　 　　学习 SC(S#,C#,GRADE) <br />　　 　　课程 C(C#,CNAME,TEACHER) <br />　　 　试用SQL的查询语句表达下列查询： </font><br /><br /><font color="#224488">（1）检索LIU老师所授课程的课程号和课程名。</font><br />　　 　SELECT C#，CNAME <br />　　 　FROM C <br />　　 　WHERE TEACHER=‘LIU’ <br /><br /><font color="#224488">（2）检索年龄大于23岁的男学生的学号和姓名。</font><br />　　 　SELECT S#，SNAME <br />　　 　FROM S <br />　　 　WHERE (AGE&gt;23) AND (SEX=‘M’) <br /><br /><font color="#224488">（3）检索至少选修LIU老师所授课程中一门课程的女学生姓名。</font><br />　　 　SELECT SNAME <br />　　 　FROM S <br />　　 　WHERE SEX=‘F’ AND S# IN <br />　　 　　(SELECT S# <br />　　 　　FROM SC <br />　　 　　WHERE C# IN <br />　　 　　　(SELECT C# <br />　　 　　　FROM C <br />　　 　　　WHERE TEACHER=‘LIU’) 
</p>
		<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
				<br />
				<font color="red">NOTICE</font>：有多种写法，比如联接查询写法： <br />　　 　SELECT SNAME <br />　　 　FROM S,SC,C <br />　　 　WHERE SEX=‘F’ AND SC.S#=S.S# <br />　　 　AND SC.C#=C.C# <br />　　 　AND TEACHER='LIU' <br />但上一种写法更好一些。 </p>
		<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
				<br />
				<font color="#224488">（4）检索WANG同学不学的课程的课程号。</font>
				<br />　　 　SELECT C# <br />　　 　FROM C <br />　　 　WHERE C# NOT IN <br />　　 　　(SELECT C# <br />　　 　　FROM SC <br />　　 　　WHERE S# IN <br />　　 　　　(SELECT S# <br />　　 　　　FROM S <br />　　 　　　WHERE SNAME='WANG')) <br /><br /><font color="#224488">（5）检索至少选修两门课程的学生学号。</font><br />　　 　SELECT DISTINCT X.SNO <br />　　 　FROM　SC X,SC Y <br />　　 　WHERE X.SNO=Y.SNO AND X.CNO&lt;&gt;Y.CNO <br /><font color="red">Notice</font>:对表SC进行自连接，X，Y是SC的两个别名。 <br /><br /><font color="#224488">（6）检索全部学生都选修的课程的课程号与课程名。</font><br />　　 　SELECT C#,CNAME <br />　　 　FROM C <br />　　 　WHERE NOT EXISTS <br />　　 　　(SELECT * <br />　　 　　FROM S <br />　　 　　WHERE S# NOT IN <br />　　 　　　(SELECT * <br />　　 　　　FROM SC <br />　　 　　　WHERE  SC.C#=C.C#)) </p>
		<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
				<font color="#800000">要从语义上分解：（1）选择课程的课程号与课程名，不存在不选这门课的同学。 <br />   其中，“不选这门课的同学”可以表示为：</font>
		</p>
		<table cellspacing="0" cellpadding="5" width="73%" border="0">
				<tbody>
						<tr>
								<td width="44%">
										<font size="2">
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000">SELECT *</font>
												</p>
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000"> FROM  S</font>
												</p>
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000"> WHERE  S# NOT IN</font>
												</p>
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000">  （SELECT  *</font>
												</p>
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000">      FROM SC  </font>
												</p>
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000">      W</font>HERE  SC.C#=C.C#) </p>
										</font>
										<p class="main">　</p>
								</td>
								<td valign="top" width="13%">
										<font color="#008000">
												<b>或者</b>
										</font>
								</td>
								<td width="43%">
										<font size="2">
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000">SELECT *</font>
												</p>
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000"> FROM  S</font>
												</p>
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000"> WHERE   NOT EXISTS</font>
												</p>
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000">  （SELECT  *</font>
												</p>
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000">      FROM SC  </font>
												</p>
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
														<font color="#000000">      W</font>HERE S.S#=C.S# AND  </p>
												<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">SC.C#=C.C# ) </p>
										</font>
										<p class="main">　</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
				<font color="#000000">      </font>
		</p>
		<p style="MARGIN: 0px 10px; LINE-HEIGHT: 18pt">
				<br />
				<font color="#224488">（7）检索选修课程包含LIU老师所授课的学生学号。</font>　　 　 <br />　　 　　SELECT DISTINCT S# <br />　　 　　FROM SC <br />　　 　　WHERE C# IN <br />　　 　　　(SELECT C# <br />　　 　　　FROM C <br />　　 　　　WHERE TEACHER='LIU')) 　　 <br /><br /><font color="#224488" size="3">3.3　设有两个基本表R（A，B，C）和S（D，E，F），试用SQL查询语句表达下列关系代数表达式： <br />　　（1）π<sub>A</sub>(R)　　(2)σ<sub>B='17'</sub>(R) 　　(3)R×S　　(4))π<sub>A,F</sub>(σ<sub>C=D</sub>(R×S)) </font><br />(1)SELECT A FROM R <br />(2)SELECT * FROM R WHERE B='17' <br />(3)SELECT A,B,C,D,E,F FROM R,S <br />(4)SELECT A,F FROM R,S WHERE R.C=S.D <br /><br /><font color="#224488" size="3">3.4　3.4　设有两个基本表R（A，B，C）和S（A，B，C）试用SQL查询语句表达下列关系代数表达式： <br />　　（1）R∪S　　（2）R∩S　　（3）R－S　　（4）π<sub>A,B</sub>(R)<img src="http://student.zjzk.cn/course_ware/database/image/little/join.gif" />π<sub>B,C</sub>(S) </font><br /><br />　　 　(1)SELECT A,B,C <br />　　 　　　FROM R <br />　　 　　　UNION <br />　　 　　　SELECT A,B,C <br />　　 　　　FROM S <br /><br />　　 　(2)SELECT A,B,C <br />　　 　　　FROM R <br />　　 　　　INTERSECT <br />　　 　　　SELECT A,B,C <br />　　 　　　FROM S <br /><br />　　 　(3)SELECT A,B,C <br />　　 　　　FROM R <br />　　 　　　WHERE NOT EXISTS <br />　　 　　　　(SELECT A,B,C <br />　　 　　　　FROM S <br />　　 　　　　WHERE R.A=S.A AND R.B=S.B AND R.C=S.C) <br /><br />　　 　(4)SELECT R.A,R.B,S.C <br />　　 　　　FROM R,S <br />　　 　　　WHERE R.B=S.B <br /><br /><font color="#224488" size="3">3.5　试叙述SQL语言的关系代数特点和元组演算特点。 </font><br />（P61-62） <br /><br /><font color="#224488" size="3">3.6　试用SQL查询语句表达下列对教学数据库中三个基本表S、SC、C的查询：</font><br /><br /><font color="#224488">（1）统计有学生选修的课程门数。 </font><br />　　 　SELECT COUNT(DISTINCT C#) FROM SC <br /><br /><font color="#224488">（2）求选修C4课程的学生的平均年龄。 </font><br />　　 　SELECT AVG(AGE) <br />　　 　FROM S <br />　　 　WHERE S# IN <br />　　 　　(SELECT S# <br />　　 　　FROM SC <br />　　 　　WHERE C#='C4') <br />或者， <br />　　 　SELECT AVG(AGE) <br />　　 　FROM S，SC <br />　　 　WHERE S.S#=SC.S# AND C#='004' <br /><br /><font color="#224488">（3）求LIU老师所授课程的每门课程的学生平均成绩。 </font><br />　　　SELECT CNAME,AVG(GRADE) <br />　　　FROM SC ,C <br />　　　WHERE SC.C#=C.C# AND TEACHER='LIU' <br />　　 GROUP BY C# 　　 <br /><br /><font color="#224488">（4）统计每门课程的学生选修人数（超过10人的课程才统计）。要求输出课程号和选修人数， 查询结果按人数降序排列，若人数相同，按课程号升序排列。 </font><br />　　 　SELECT DISTINCT C#,COUNT(S#) <br />　　 　FROM SC <br />　　 　GROUP BY C# <br />　　 　HAVING COUNT(S#)&gt;10 <br />　　 　ORDER BY 2 DESC, C# ASC <br /><br /><font color="#224488">（5）检索学号比WANG同学大，而年龄比他小的学生姓名。 </font><br />　　 　SELECT X.SNAME <br />　　 　FROM S AS X, S AS Y <br />　　 　WHERE Y.SNAME='WANG' AND X.S#&gt;Y.S# AND X.AGE&lt;Y.AGE <br /><br /><br /><font color="#224488">（6）检索姓名以WANG打头的所有学生的姓名和年龄。 </font><br />　　 　SELECT SNAME,AGE <br />　　 　FROM S <br />　　 　WHERE SNAME LIKE 'WANG%' <br /><br /><font color="#224488">（7）在SC中检索成绩为空值的学生学号和课程号。 </font><br />　　 　SELECT S#,C# <br />　　 　FROM SC <br />　　 　WHERE GRADE IS NULL <br /><br /><font color="#224488">（8）求年龄大于女同学平均年龄的男学生姓名和年龄。 </font><br />　　 　SELECT SNAME,AGE <br />　　 　FROM S AS X <br />　　 　WHERE　X.SEX='男' AND X.AGE&gt;(SELECT AVG(AGE) FROM S AS Y WHERE Y.SEX='女') <br /><br /><font color="#224488">（9）求年龄大于所有女同学年龄的男学生姓名和年龄。 </font><br />　　 　SELECT SNAME,AGE <br />　　 　FROM S AS X <br />　　 　WHERE X.SEX='男' AND X.AGE&gt;ALL (SELECT AGE FROM S AS Y WHERE Y.SEX='女') <br /><br /><font color="#224488" size="3">3.7　试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作：</font><br /><font color="#224488">（1）往基本表S中插入一个学生元组（‘S9’，‘WU’，18）。</font><br />　　 　INSERT INTO S(S#,SNAME,AGE) VALUES('59','WU',18) <br /><font color="#224488">（2）在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别， 并把检索到的值送往另一个已存在的基本表STUDENT（S＃，SANME，SEX）。</font><br />　　 　INSERT INTO STUDENT(S#,SNAME,SEX) <br />　　 　　SELECT S#,SNAME,SEX <br />　　 　　FROM S WHERE 　NOT EXISTS <br />　　　　　　(SELECT * FROM SC WHERE <br />　　　　　　 GRADE&lt;80 AND S.S#=SC.S#) <br /><br /><font color="#224488">（3）在基本表SC中删除尚无成绩的选课元组。</font><br />　　 　DELETE FROM SC <br />　　 　　WHERE GRADE IS NULL <br /><br /><font color="#224488">（4）把WANG同学的学习选课和成绩全部删去。</font><br />　　 　DELETE FROM SC <br />　　 　　WHERE S# IN <br />　　 　　　(SELECT S# <br />　　 　　　FROM S <br />　　 　　　WHERE SNAME='WANG') <br /><br /><font color="#224488">（5）把选修MATHS课不及格的成绩全改为空值。</font><br />　　 　UPDATE SC <br />　　 　SET GRADE=NULL <br />　　 　WHERE GRADE&lt;60 AND C# IN <br />　　 　　　(SELECT C# <br />　　 　　　FROM C <br />　　 　　　WHERE CNAME='MATHS') <br /><br /><font color="#224488">（6）把低于总平均成绩的女同学成绩提高5%。</font><br />　　 　UPDATE SC <br />　　 　SET GRADE=GRADE*1.05 <br />　　 　WHERE GRADE&lt;(SELECT AVG(GRADE) FROM SC) AND S# IN (SELECT S# FROM S WHERE SEX='F') <br /><br /><font color="#224488">（7）在基本表SC中修改C4课程的成绩，若成绩小于等于75分时提高5%， 若成绩大于75分时提高4%（用两个UPDATE语句实现）。</font><br />　　 　UPDATE SC <br />　　 　　SET GRADE=GRADE*1.05 <br />　　 　　WHERE C#='C4' AND GRADE&lt;=75 <br />　　 　UPDATE SC <br />　　 　　SET GRADE=GRADE*1.04 <br />　　 　　WHERE C#='C4' AND GRADE&gt;75 <br /><br /><font color="#224488">3.8　在第1章例1.4中提到“仓库管理”关系模型有五个关系模式： <br />　　 　　零件　PART（P＃，PNAME，COLOR，WEIGHT） <br />　　 　　项目　PROJECT（J＃，JNAME，DATE） <br />　　 　　供应商　SUPPLIER（S＃，SNAME，SADDR） <br />　　 　　供应　P＿P（J＃，P＃，TOTOAL） <br />　　 　　采购　P＿S（P＃，S＃，QUANTITY） </font><br /><br /><font color="#224488">（1）试用SQL　DDL语句定义上述五个基本表，并说明主键和外键。</font><br />　　 　CREATE TABLE PART <br />　　 　(P# CHAR(4) NOT NULL,PNAME CHAR(12) NOT NULL, <br />　　 　COLOR CHAR(10),WEIGHT REAL, <br />　　 　PRIMARY KEY(P#)) <br />　　 　 <br />　　 　CREATE TABLE PROJECT <br />　　 　(J# CHAR(4) NOT NULL,JNAME CHAR(12) NOT NULL, <br />　　 　DATE DATE, <br />　　 　PRIMARY KEY(J#)) <br />　　 　 <br />　　 　CREATE TABLE SUPLIER <br />　　 　(S# CHAR(4) NOT NULL,SNAME CHAR(12),SADDR VARCHAR(20), <br />　　 　PRIMARY KEY(S#)) <br />　　 　 <br />　　 　CREATE TABLE P_P <br />　　 　(J# CHAR(4),P# CHAR(4),TOTAL INTEGER, <br />　　 　PRIMARY KEY(J#,P#), <br />　　 　FOREIGN KEY(J#) REFERENCE PROJECT(J#), <br />　　 　FOREIGN KEY(P#) REFERENCE PART(P#)) <br />　　 　 <br />　　 　CREATE TABLE P_S <br />　　 　(P# CHAR(4),S# CHAR(4),QUANTITY INTEGER, <br />　　 　PRIMARY KEY(P#,S#), <br />　　 　FOREIGN KEY(P#) REFERENCE PART(P#), <br />　　 　FOREIGN KEY(S#) REFERENCE SUPLIER(S#)) <br />　　 　 <br /><br /><font color="#224488">（2）试将PROGECT、P＿P、PART三个基本表的自然联接定义为一个视图VIEW1，PART、P＿S、SUPPLIER 三个基本表的自然联接定义为一个视图VIEW2。</font><br />　　 　CREATE VIEW VIEW1(J#,JNAME,DATE,P#,PNAME,COLOR,WEIGHT,TOTAL) <br />　　 　　　　　　　AS SELECT PROJECT.J#,JNAME,DATE,PART.P#,PNAME,COLOR,WEIGHT,TOTAL <br />　　 　　　　　　　FROM PROJECT,PART,P_P <br />　　 　　　　　　　WHERE PART.P#=P_P.P# AND P_P.J#=PROJECT.J#　 <br />　　 　　 <br />　　 　CREATE VIEW VIEW2(P#,PNAME,COLOR,WEIGHT,S#,SNAME,SADDR,QUANTITY) <br />　　 　　　　　　　AS SELECT PART.P#,PNAME,COLOR,WEIGHT,SUPPLIER.S#,SNAME,SADDR,QUANTITY <br />　　 　　　　　　　FROM PART,P_S,SUPPLIER <br />　　 　　　　　　　WHERE PART.P#=P_S.P# AND P_S.S#=SUPPLIER.S# <br /><br /><font color="#224488">（3）试在上述两个视图的基础上进行数据查询：</font><br /><br />　　　　1）检索上海的供应商所供应的零件的编号和名字。 <br />　　 　SELECT P#,PNAME FROM VIEW2 WHERE SADDR='SHANGHAI' <br /><br />　　　　2）检索项目J4所用零件的供应商编号和名字。 <br />　　 　SELECT S#,SNAME FROM VIEW2 WHERE P# IN(SELECT P# FROM VIEW1 WHERE J#='J4') <br /><br /><font color="#224488">3.9　对于教学数据库中基本表SC，已建立下列视图： <br />　　 　　CREATE　VIEW　S＿GRADE（S＃，C＿NUM，AVG＿GRADE） <br />　　 　　　AS　SELECT　S＃，COUNT(C＃)，AVG（GRADE） <br />　　 　　　　FROM　SC <br />　　 　　　　GROUP　BY　S＃ <br />　　 试判断下列查询和更新是否允许执行。若允许，写出转换到基本表SC上的相应操作。 </font><br /><font color="#224488">　　（1） SELECT　* <br />　　 　　　FROM　S＿GRADE</font><br />　　 　　　允许 <br />　　　SELECT S#,COUNT(C#),AVG(GRADE) FROM SC GROUP BY S# <br /><br /><font color="#224488">　　（2） SELECT　S＃，C＿NUM <br />　 　　　　　FROM　S＿GRADE <br />　　 　　　　　WHERE　AVG＿GRADE＞80</font><br />　　 　允许 <br />　　　SELECT S#,COUNT(C#) FROM SC WHERE AVG(GRADE)&gt;80 <br /><br /><font color="#224488">　　（3） SELECT　S＃，AVG＿GRADE <br />　　 　　　　　FROM　S＿GRADE <br />　　 　　　　　WHERE　C＿NUM＞(SELECT　C＿NUM <br />　　 　　　　　　　　　　　　　FROM　S＿GRADE <br />　　 　　　　　　　　　　　　　WHERE　S＃＝‘S4’)</font><br />　　 　允许 <br />　　　SELECT S#,AVG(GRADE) <br />　　　FROM SC AS X <br />　　　WHERE COUNT(X.C#)&gt;(SELECT COUNT(Y.C#) FROM SC AS Y WHERE Y.S#='S4') <br />　　　GROUP BY S# <br /><br /><font color="#224488">　　（4） UPDATE　S＿GRADE <br />　　 　　　　　SET　C＿NUM＝C＿NUM＋1 <br />　　 　　　　　WHERE　S＃＝‘S4’</font><br />　　 　不允许 <br /><br /><font color="#224488">　　（5） DELETE　FROM　S＿GRADE <br />　　 　　　　　WHERE　C＿NUM＞4</font><br />　　 　不允许 <br /><br /><font color="#224488" size="3">3.10　预处理方式对于嵌入式SQL的实现有什么重要意义？ </font><br />    预处理方式是先用预处理程序对源程序进行扫描，识别出SQL语句，并处理成宿主语言的函数调用形式； 然后再用宿主语言的编译程序把源程序编译成目标程序。这样，不用扩充宿主语言的编译程序， 就能处理SQL语句。 <br /><br /><font color="#224488" size="3">3.11 在宿主语言的程序中使用SQL语句有哪些规定？</font><br />在宿主语言的程序中使用SLQ语句有以下规定： <br />（1）在程序中要区分SQL语句与宿主语言语句 <br />（2）允许嵌入的SQL语句引用宿主语言的程序变量（称为共享变量），但有两条规定： <br />　　　1）引用时，这些变量前必须加“：”作为前缀标识，以示与数据库中变量有区别。 <br />　　　2）这些变量由宿主语言的程序定义，并用SQL的DECLARE语句说明。 <br />（3）SQL的集合处理方式与宿主语言单记录处理方式之间要协调。 需要采用游标机制，把集合操作转换成单记录处理方式。 <br /><br /><font color="#224488" size="3">3.12　SQL的集合处理方式与宿主语言单记录处理方式之间如何协调？</font><br />    由于SQL语句处理的是记录集合，而宿主语言语句一次只能处理一个记录， 因此需要用游标(cousor)机制，把集合操作转换成单记录处理方式。 <br /><br /><font color="#224488" size="3">2.13 嵌入式SQL语句何时不必涉及到游标？何时必须涉及到游标？ </font><br />    (1)INSERT、DELETE、UPDATE语句，查询结果肯定是单元组时的SELECT语句， 都可直接嵌入在主程序中使用，不必涉及到游标。 <br />    (2)当SELECT语句查询结果是多个元组时，此时宿主语言程序无法使用， 一定要用游标机制把多个元组一次一个地传送给宿主语言处理。 </p>
<img src ="http://www.blogjava.net/toaking/aggbug/81833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toaking/" target="_blank">Derek</a> 2006-11-17 20:18 <a href="http://www.blogjava.net/toaking/archive/2006/11/17/81833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>