【正文】
mn_name not in xxSelect column_name new_name from tableSelect col_name*2 from tableSelect * from table order by col_name2 desc(注:asc是升序)Select * from table group by col_nameSelect col_name from table1,table2 from =Select distinct col_name from table 操作符和通配符Use custSelect * From students Where name Like %影%Like 操作符把記錄匹配到你說明的某個模式。到現(xiàn)在為止,你只學習了如何根據(jù)特定的條件從表中取出一條或多條記錄。要對表中的任何類型的數(shù)據(jù)進行統(tǒng)計,都需要使用集合函數(shù)。注意:要在你的ASP網(wǎng)頁中使用集合函數(shù)的返回值,你需要給該值起一個名字。你可以用這個函數(shù)來統(tǒng)計一個表中有多少條記錄。如果這個名字在表authors中出現(xiàn)了兩次,則次函數(shù)的返回值是2。關(guān)鍵字DISTINCT 決定了只有互不相同的值才被計算。下面是一個如何做到這一點的例子:SELECT COUNT(*) FROM authors注意函數(shù)COUNT()沒有指定任何字段。例如,假設(shè)有一個表保存了對你站點的質(zhì)量進行民意調(diào)查的結(jié)果。但有時你需要計算這些值的平均值。你把投票結(jié)果保存在名為vote的INT型字段中。假設(shè)你的站點被用來出售卡片,已經(jīng)運行了兩個月,是該計算賺了多少錢的時候了。再一次假設(shè)你有一個表用來保存對你的站點進行民意調(diào)查的結(jié)果。如果有人對你的站點投了數(shù)字10,函數(shù)MAX()將返回該值。你將學習如何從表中取出數(shù)據(jù),其某個字段的值處在一定的范圍,你還將學習如何把字段值從一種類型轉(zhuǎn)換成另一種類型,如何操作字符串和日期時間數(shù)據(jù)。要得到這些人的名字,你可以使用如下的SELECT 語句:SELECT username FROM opinion WHERE vote6 and vote11這個SELECT 語句會實現(xiàn)你的要求。要從表opinion中取出這些名字,你可以使用如下的SELECT 語句:SELECT username FROM opinion WHERE vote=1 or vote 這個SELECT語句會返回正確的結(jié)果,沒有理由不使用它。你也可以使用IN來匹配字符數(shù)據(jù)。SQL Sever足夠強大,可以在需要的時候把大部分數(shù)值從一種類型轉(zhuǎn)換為另一種類型。例如,假設(shè)你想從一個MONEY型字段中取出所有的值,并在結(jié)果后面加上字符串“US Dollars”。在這個例子中,字段price被轉(zhuǎn)換成長度為8個字符的CHAR型字段。在這一節(jié)中,你將學習如何使用最重要的字符函數(shù)和表達式。要取出正確的站點列表,你也許試圖使用這樣的查詢:SELECT site_name FROM site_directory WHERE site_desc=’trading card’這個查詢可以工作。你使用通配符和關(guān)鍵字LIKE來實現(xiàn)模式匹配。注意本例中百分號的使用?,F(xiàn)在,假設(shè)你的站點目錄變得太大而不能在一頁中完全顯示。要得到第一頁的站點列表,你可以使用如下的SQL語句:SELECT site_name FROM site_directory WHERE site_name LIKE ‘[AM]%’在這個例子中使用了表達式[AM],只取出那些首字母在A到M之間的站點。如果你想顯示那些以A,B或C開頭的站點,你可以用下面的查詢來實現(xiàn):SELECT site_name FROM site_directory WHERE site_name LIKE ‘[ABC]%’在這個例子中,括號中的表達式不再指定一個范圍,而是給出了一些字符。你也可以使用脫字符(^)來排除特定的字符。但是,名字為Moocrosoft的站點則不被返回。如果你想匹配方括號,應把它們也括在方括號中。例如,如果你建立一個Internet目錄,你也許想增加一個選項,允許訪問者按照站點名的發(fā)音來搜索站點,而不是按名字的拼寫。例如,上面的語句將返回站點名Microsoft和Macrosoft。要深入了解函數(shù)DIFFERENCE()是如何工作的,你可以用函數(shù)SOUNDEX()來返回函數(shù)DIFFERENCE()所使用的音標碼。你還可以發(fā)現(xiàn)Microsoft和Macrosoft的音標碼完全相同。WHERE子句中包含這兩個函數(shù)的查詢執(zhí)行起來效果不好。這里有一個任何使用函數(shù)RTRIM()的例子:SELECT RTRIM(site_name) FROM site_directory在這個例子中,如果任何一個站點的名字尾部有多余的空格,多余的空格將從查詢結(jié)果中刪去。第二章 表的操作:1)、Create table t_name (column1 char(10) identity,column2 varchar2(38),num number(38))2)、Create table t_name (column1 char(10) not null,column2 varchar2(38) not null,num number(38))3)、CREATE TABLE address(street VARCHAR(60) null ,city VARCHAR(40), state VARCHAR(20), zip VARCHAR(20), country VARCHAR(30) DEFAULT 39。 修改表字段類型:alter table test modify(name varchar(38))。 表的索引與附在一本書后面的索引非常相似。 注意: 當你的內(nèi)存容量或硬盤空間不足時,也許你不想給一個表增加索引。 假設(shè)你已經(jīng)通過本書的索引找到了一個句子所在的頁碼。 首先,把書翻到大概一半的地方,如果要找的頁碼比半本書處的頁碼小,就書翻到四分之一處,否則,就把書翻到四分之三的地方。一個表索引由一組頁組成,這些頁構(gòu)成了一個樹形結(jié)構(gòu)。 索引有兩種類型:聚簇索引和非聚簇索引。非聚簇索引則更象書的標準索引表,索引表中的順序通常與實際的頁碼順序是不一致的。 通常情況下,你使用的是聚簇索引,但是你應該對兩種類型索引的優(yōu)缺點都有所理解。 從建立了聚簇索引的表中取出數(shù)據(jù)要比建立了非聚簇索引的表快。 對聚簇索引的主要限制是每個表只能建立一個聚簇索引。 假如你不僅想根據(jù)日期,而且想根據(jù)用戶名從你的網(wǎng)點活動日志中取數(shù)據(jù)。 非聚簇索引需要大量的硬盤空間和內(nèi)存。如果你預計一個表需要頻繁地更新數(shù)據(jù),那么不要對它建立太多非聚簇索引。假如有一個表記錄了你的網(wǎng)點訪問者的姓和名字。如果你希望對各個字段進行分別查詢,你應該對各字段建立獨立的索引。假設(shè)你用一個表來保存你的網(wǎng)點的用戶密碼,你當然不希望兩個用戶有相同的密碼。你可以給一個索引起任何名字,但你應該在索引名中包含所索引的字段名,這對你將來弄清楚建立該索引的意圖是有幫助的。(這是一個索引的缺省屬性)如果你需要改變一個索引的類型,你必須刪除原來的索引并重建 一個。要建立一個聚簇索引,可以使用關(guān)鍵字CLUSTERED。你應該盡量避免在一個表中出現(xiàn)重復記錄,但是,如果已經(jīng)出現(xiàn)了,你可以使用這種方法。無論何時,只要可以,你應該盡量對一個對一個表建立唯一聚簇索引來增強查詢操作。更改索引:alter index test_name_test rebuild第四章 數(shù)據(jù)的插入與刪除向表中添加一個新記錄,你要使用SQL INSERT 語句。假設(shè)表mytable有三個字段first_column,second_column,和third_column。要了解更多的信息,請參考Microsoft SQL Sever 的文檔。在這種情況下,當新記錄建立時會插入值’some value’。當你向一個有標識字段的表中插入新記錄時,只要忽略該字段,標識字段會給自己賦一個新值。字段another_first應該與字段first_column有相同的數(shù)據(jù)類型。你可以給DELETE 語句提供WHERE 子句。你不應該有這種想法。要修改表中已經(jīng)存在的一條或多條記錄,應使用SQL UPDATE語句。下面是UPDATE語句的完整句法:UPDATE {table_name|view_name} SET [{table_name|view_name}] {column_list|variable_list|variable_and_column_list} [,{column_list2|variable_list2|variable_and_column_list2}… [,{column_listN|variable_listN|variable_and_column_listN}]] [WHERE clause]注意:你可以對文本型字段使用UPDATE語句。如果你不提供WHERE子句,表中的所有記錄都將被更新。你可以把SQL語句寫成任何你最容易讀的格式。當為一個表中的記錄建立備份時,這種形式的INSERT 語句是非常有用的。要做到這一點,只需在字段列表中指定你想要拷貝的字段。例如,如果你