在本篇的开头我要感谢一些朋友来信给我指出了前几篇文章中的错误不知大家是否记得在第八篇中我举了一个简单的利用
Application
制作的页面访问计数器?有位朋友来信问我为何当他改变计数器起始变量
NumVisits
的值后对最后的记数结果没有任何作用?起初我也大惑不解让我们来回忆一下这段源程序如下
< %
Dim NumVisits
NumVisits=
ApplicationLock
Application("NumVisits") = Application("NumVisits") +
ApplicationUnlock
%>
欢迎光临本网页你是本页的第 < %= Application("NumVisits")
%> 位访客 !
在这段程序中如果你试图通过改变变量 NumVisits
的值来改变记数器结果是绝对办不到的因为用变量的值去改变
Application
的值是不可以的这两者是不相关的所以这里对变量的定义和赋值都是多余的那么我们究竟应该如何来给
Application("NumVisits")
定义一个初始值呢?请看以下修正后程序
< %
If Application("NumVisits")< then
Application("NumVisits")=
End If
ApplicationLock
Application("NumVisits")=Application("NumVisits")+
ApplicationUnlock
%>
欢迎光临本网页你是本页的第 < %= Application("NumVisits")
%> 位访客 !
这里的
就是你要设定的计数器初始值如此一来问题就迎刃而解了我非常感谢这位姓康的朋友给我指出了这个错误虽然这只是一个很小的漏洞但我们在共同学程序写程序的过程中非常需要这种严谨细致的作风希望今后朋友们们一旦发现文中的错误即刻来信告知我也能及时纠正谢谢
SQL
语言可以分为两大部分数据定义语言和数据操纵语言继上一篇我们学习了数据操纵语言中的
Select 语句后今天作者要继续给大家简要介绍其余的 SQL 语句
SQL
是一种完备的数据处理语言不仅用于数据库查询而且用于数据库中的数据修改和更新与支持
SQL 查询的 Select 语句的复杂性相比较更改数据库内容的 SQL
语句就格外简单然而对于一个 DBMS
来说数据更新所造成的风险大大超出了数据查询数据库管理系统必须在更改期内保护所存储的数据的一致性确保有效的数据进入数据库数据库必须保持一致性
DBMS
还必须协调多用户的并行更新以确保用户和他们的更改不至于影响其他用户的作业
用于修改数据库内容的 SQL 语句主要有以下三个
Insert向一个表中加入新的数据行
Delete从一个表中删除数据行
Update更改数据库中已经存在的数据
首先我们来看看 Insert 的用法
标准语法
INSERT INTO table_name
(col col)
VALUES(value value)
下例要将书生作为一个新的销售员加入表 Salesreps 中
Insert Into
Salesreps (namenumsaleshire_dateincome)
values (shushengFeb)
在此语句中列的名称列在括号中以逗号隔开接下去是 Value
短语和括号中同样以逗号隔开的每列数据应该注意的是数据和列名称的顺序是相同的而且若是字符串型则以单引号隔开从概念上来讲
Insert 语句建立的一个与表列结构相一致的数据行用取自 Values
子句的数据来填充它然后将该新行加入表中表中的行是不排序的因此不存在将该行插入到表的头或尾或两行之间的这个概念
Insert 语句结束后新行就是表的一部分了
Insert 语句还可以将多行数据添加到目标表中去在这种形式的
Insert
语句中新行的数据值不是在语句正文中明确地指定的而是语句中指定的一个数据库查询添加的值来自数据库自身的行这乍看起来似乎有些奇怪但是在某些特定的状态下这是非常有用的比如你想把
年 月 日之前产生的订单编号日期和数目从 order
表中拷贝到另一个名为 oldorder 的表中去多行 Insert
语句为拷贝数据提供了一种紧凑而高效的方法如下
Insert into oldorder (NumDateAmount)
Select NumDateAmount
From order
Where Date<
这条语句看起来有些复杂其实很简单语句标识了接收新行的表
oldorder 和接收数据的列完全类似于单行 Insert
语句语句的剩余部分是一个查询它检索 order 表中的数据 SQL
先执行对 order 表的查询然后将查询结果逐行插入到 oldorder
表中去
下面我们来看看 Update 的用法 Update
语句用于更新单表中选定行的一列或多列的值要更新的目标表在语句中定义
Set 子句则指定要更新哪些列并计算他们的值 Update 语句总是包含
Where 语句而且 Update 语句比较危险所以您必须明确地认识到 Where
语句的重要性 Where 语句被用来指定需要更新的行
标准语法
UPDATE table_name
SET columnname = value
[ columname = value]
WHERE search_condition
以下是一个简单的 Update 语句的例子 :
Update customers
Set credit=id=
Where name=asp
在此例中我们将表 customers 中客户名为 asp
的客户的信贷值更新为 万并将他的 ID 变更为 再看下例
Update customers
Set credit=state=
Where ID in ()
我们可以发现其实 SQL 处理 Update
语句的过程就是逐行遍历所指定的表更新其搜索条件结果为“真”的行跳过其搜索条件结果为“假”或“空”的行
最后来看看 Delete 语句
标准语法
DELETE FROM tablename
WHERE condition
由于它过于简单所以所造成的后果也是严重的虽然其中的
Where 子句是任选的但它几乎总是存在的若将 Where 子句从 Delete
语句中省略掉则目标表的所有行都将被删除看下例
Delete from order Where ID=
在文章的末尾作者在给大家简要介绍一下数据定义语言它是用来创建和修改数据库结构的一种语句包括
Create 和 Drop 语句
Create 语句
标准语法
CREATE TABLE table_name
( field datatype [ NOT NULL ]
field datatype [ NOT NULL ]
field datatype [ NOT NULL ])
如
CREATE TABLE BILLS
( NAME CHAR()
AMOUNT NUMBER
ACCOUNT_ID NUMBER)
尽管 Create Table
比前面介绍的语句难理解一些但仍然很直观它将 bills
赋予一个新表并指定表中三列的名称和数据类型表被建立后我们就可以添入数据了如
Insert into bills(nameamoutaccount_id) values(gates)
如果你觉得不再需要保存产品信息则可用 Drop table
语句将该表及其所包含的所有数据从数据库中删除掉
标准语法
DROP TABLE table_name
至此我们已经了解了所有常用的 SQL
语句可别小看这些貌似英文的简单语句它们的功能十分强大当我们编写
asp
程序时必须使用他们对数据库进行操作