ASP教程:第十三篇 資料庫查詢語言(2)

來源:互聯網
上載者:User
  在本篇的開頭,我要感謝一些朋友來信給我指出了前幾篇文章中的錯誤。不知大家是否記得在第八篇中我舉了一個簡單的利用 Application 製作的頁面訪問計數器?有位朋友來信問我,為何當他改變計數器起始變數 NumVisits 的值後對最後的記數結果沒有任何作用?起初我也大惑不解,讓我們來回憶一下這段來源程式,如下:
< %
Dim NumVisits
NumVisits=0
Application.Lock
Application("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>
歡迎光臨本網頁,你是本頁的第 < %= Application("NumVisits") %> 位訪客 !    在這段程式中,如果你試圖通過改變變數 NumVisits 的值來改變記數器結果,是絕對辦不到的。因為用變數的值去改變 Application 的值是不可以的,這兩者是不相關的。所以這裡對變數的定義和賦值都是多餘的。那麼我們究竟應該如何來給 Application("NumVisits") 定義一個初始值呢?請看以下修正後程式:
< %
If Application("NumVisits")< 999 then
Application("NumVisits")=999
End If
Application.Lock
Application("NumVisits")=Application("NumVisits")+1
Application.Unlock
%>
歡迎光臨本網頁,你是本頁的第 < %= Application("NumVisits") %> 位訪客 !

   這裡的 999 就是你要設定的計數器初始值,如此一來問題就迎刃而解了。我非常感謝這位姓康的朋友給我指出了這個錯誤,雖然這隻是一個很小的漏洞,但我們在共同學程式寫程式的過程中非常需要這種嚴謹細緻的作風,希望今後朋友們們一旦發現文中的錯誤即刻來信告知,我也能及時糾正,謝謝。

   SQL 語言可以分為兩大部分:資料定義語言 (Data Definition Language)和資料操縱語言,繼上一篇我們學習了資料操縱語言中的 Select 語句後,今天作者要繼續給大家簡要介紹其餘的 SQL 陳述式。

   SQL 是一種完備的資料處理語言,不僅用於資料庫查詢,而且用於資料庫中的資料修改和更新,與支援 SQL 查詢的 Select 語句的複雜性相比較,更改資料庫內容的 SQL 陳述式就格外簡單。然而對於一個 DBMS 來說,資料更新所造成的風險大大超出了資料查詢。資料庫管理系統必須在更改期內保護所儲存的資料的一致性,確保有效資料進入資料庫,資料庫必須保持一致性, DBMS 還必須協調多使用者的並行更新,以確保使用者和他們的更改不至於影響其他使用者的作業。
   用於修改資料庫內容的 SQL 陳述式主要有以下三個:

   1、 Insert,向一個表中加入新的資料行

   2、 Delete,從一個表中刪除資料行

   3、 Update,更改資料庫中已經存在的資料

   首先我們來看看 Insert 的用法:

   標準文法:
   INSERT INTO table_name
   (col1, col2...)
   VALUES(value1, value2...)

   下例要將書生作為一個新的銷售人員加入表 Salesreps 中
   Insert Into
   Salesreps (name,num,sales,hire_date,income)
   values ('shusheng',9,10000,'23-Feb-99',2000)

   在此語句中,列的名稱列在括弧中以逗號隔開,接下去是 Value 短語和括弧中同樣以逗號隔開的每列資料,應該注意的是資料和列名稱的順序是相同的,而且若是字串型則以單引號隔開。從概念上來講, Insert 語句建立的一個與表列結構相一致的資料行,用取自 Values 子句的資料來填充它,然後將該新行加入表中,表中的行是不排序的,因此不存在將該行插入到表的頭或尾或兩行之間的這個概念。 Insert 語句結束後,新行就是表的一部分了。

   Insert 語句還可以將多行資料添加到目標表中去,在這種形式的 Insert 語句中,新行的資料值不是在語句本文中明確地指定的,而是語句中指定的一個資料庫查詢。添加的值來自資料庫自身的行,這乍看起來似乎有些奇怪,但是在某些特定的狀態下,這是非常有用的。比如,你想把 1998 年 12 月 30 日之前產生的訂單編號、日期和數目從 order 表中拷貝到另一個名為 oldorder 的表中去,多行 Insert 語句為拷貝資料提供了一種緊湊而高效的方法,如下:
   Insert into oldorder (Num,Date,Amount)
   Select Num,Date,Amount
   From order
   Where Date<'30-12-98'

   這條語句看起來有些複雜,其實很簡單,語句標識了接收新行的表 oldorder 和接收資料的列,完全類似於單行 Insert 語句。語句的剩餘部分是一個查詢,它檢索 order 表中的資料。 SQL 先執行對 order 表的查詢,然後將查詢結果逐行插入到 oldorder 表中去。

   下面我們來看看 Update 的用法, Update 語句用於更新單表中選定行的一列或多列的值。要更新的目標表在語句中定義, Set 子句則指定要更新哪些列並計算他們的值。 Update 語句總是包含 Where 語句,而且 Update 語句比較危險,所以您必須明確地認識到 Where 語句的重要性, Where 語句被用來指定需要更新的行。
   標準文法:
   UPDATE table_name
   SET columnname1 = value1
   [, columname2 = value2]...
   WHERE search_condition


   以下是一個簡單的 Update 語句的例子 :
   Update customers
   Set credit=100000.00,id=99
   Where name='asp'


   在此例中我們將表 customers 中客戶名為 asp 的客戶的信貸值更新為 10 萬並將他的 ID 變更為 99。再看下例:
   Update customers
   Set credit=200000.00,state=021
   Where ID in (80,90,100,120)


   我們可以發現,其實 SQL 處理 Update 語句的過程就是逐行遍曆所指定的表,更新其搜尋條件結果為“真”的行,跳過其搜尋條件結果為“假”或“空”的行。

   最後,來看看 Delete 語句。

   標準文法:
   DELETE FROM tablename
   WHERE condition


   由於它過於簡單,所以所造成的後果也是嚴重的,雖然其中的 Where 子句是任選的,但它幾乎總是存在的,若將 Where 子句從 Delete 語句中省略掉,則目標表的所有行都將被刪除。看下例:
   Delete from order Where ID=99

   在文章的末尾,作者在給大家簡要介紹一下資料定義語言 (Data Definition Language)。它是用來建立和修改資料庫結構的一種語句,包括 Create 和 Drop 語句。

   1、 Create 語句

   標準文法:
   CREATE TABLE table_name
   ( field1 datatype [ NOT NULL ],
   field2 datatype [ NOT NULL ],
   field3 datatype [ NOT NULL ]...)

   如:
   CREATE TABLE BILLS
   ( NAME CHAR(30),
   AMOUNT NUMBER,
   ACCOUNT_ID NUMBER)

   儘管 Create Table 比前面介紹的語句難理解一些,但仍然很直觀。它將 bills 賦予一個新表,並指定表中三列的名稱和資料類型。表被建立後我們就可以添入資料了。如:

   Insert into bills(name,amout,account_id) values('gates',100,1)

   如果,你覺得不再需要儲存產品資訊,則可用 Drop table 語句將該表及其所包含的所有資料從資料庫中刪除掉。

   標準文法:

   DROP TABLE table_name

   至此,我們已經瞭解了所有常用的 SQL 陳述式,可別小看這些貌似英文的簡單語句,它們的功能十分強大,當我們編寫 asp 程式時必須使用他們對資料庫進行操作。從下一篇開始,作者將給大家介紹 ASP 的內建 ActiveX 組件,敬請關注。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。