當前位置:首頁 » 編程語言 » 標簽系統sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

標簽系統sql

發布時間: 2022-09-28 21:41:29

Ⅰ 求一條sql語句,把資料庫表中一個欄位裡面的數據數字和文字都分開,並且生成一個相對應的列

2 命名規則
2.1 表名
XXX相關表以r_作為前綴,YYY相關表以t_作為前綴。如r_acc 、t_bcc。
後台表名盡量與前台表名相同,後台獨有的表應以_b作為後綴。如r_gggd_b。
命名應盡量反映存儲的數據內容。
2.2 視圖名
視圖以v_作為前綴。由於前台無視圖,故不需加_b。
命名應盡量體現各視圖的功能。
2.3 觸發器名
觸發器名為相應的表名加上後綴,Insert觸發器加'_i',Delete觸發器加'_d',Update觸發器加'_u',如:r_bch_i,r_bch_d,r_bch_u。
2.4 存儲過程名
存儲過程應以'sp_'開頭,後續部分主要以動賓形式構成,並用下劃線分割各個組成部分。如增加BSC機架的DRT單板的存儲過程為'sp_ins_board_drt'。
2.5 變數名
變數名採用小寫,若屬於片語形式,用下劃線分隔每個單詞,如@my_err_no。
2.6 命名中其他注意事項
以上命名都不得超過30個字元的系統限制。
變數名的長度限制為29(不包括標識字元@)。
數據對象、變數的命名都採用英文字元。禁止使用中文命名。

3 編程結構和描述
SQL SERVER系統中,一個批處理是從客戶傳給伺服器的一個完整的包,可以包含若干條SQL語句。批處理中的語句是作為一組去進行語法分析、編譯和執行的。觸發器、存儲過程等數據對象則是將批處理永久化的方法。
3.1 注釋
注釋可以包含在批處理中。在觸發器、存儲過程中包含描述性注釋將大大增加文本的可讀性和可維護性。本規范建議:
1、 注釋以英文為主。
實際應用中,發現以中文注釋的SQL語句版本在英文環境中不可用。為避免後續版本執行過程中發生某些異常錯誤,建議使用英文注釋。
2、 注釋盡可能詳細、全面。
創建每一數據對象前,應具體描述該對象的功能和用途。
傳入參數的含義應該有所說明。如果取值范圍確定,也應該一並說明。取值有特定含義的變數(如boolean類型變數),應給出每個值的含義。
3、 注釋語法包含兩種情況:單行注釋、多行注釋
單行注釋:注釋前有兩個連字元(--),最後以行尾序列(CR-LF)結束。一般,對變數、條件子句可以採用該類注釋。
多行注釋:符號/*和*/之間的內容為注釋內容。對某項完整的操作建議使用該類注釋。
4、 注釋簡潔,同時應描述清晰。
3.2 函數注釋:
編寫函數文本--如觸發器、存儲過程以及其他數據對象--時,必須為每個函數增加適當注釋。該注釋以多行注釋為主,主要結構如下:
/************************************************************************
*name : --函數名
*function : --函數功能
*input : --輸入參數
*output : --輸出參數
*author : --作者
*CreateDate : --創建時間
*UpdateDate : --函數更改信息(包括作者、時間、更改內容等)
*************************************************************************/
CREATE PROCEDURE sp_xxx

3.3 條件執行語句if…else
條件語句塊(statenemt block,以 begin…end為邊界)僅在if子句的條件為真時才被執行。為提高代碼的可讀性,建議嵌套不多於5層。還有,當嵌套層次太多時,應該考慮是否可以使用case語句。
3.4 重復執行while和跳轉語句goto
需要多次執行的語句,可以使用while結構。其中,控制while循環的條件在任何處理開始之前需要先執行一次。循環體中的保留字break無條件的退出while循環,然後繼續處理後續語句;保留字continue重新計算while條件,如果條件為真,則從循環開始處重新執行各語句。
使用跳轉語句goto和標簽label也可以方便地實現循環和其他更靈活的操作。SQL SERVER僅具有單通道語法分析器,因此不能解析對尚未創建的對象所做的前向參考。換言之,跳轉到某標簽的後續語句應該是可執行的(如不存在可能尚未創建的數據對象)。
3.5 書寫格式
資料庫伺服器端的觸發器和存儲過程是一類特殊的文本,為方便開發和維護,提高代碼的易讀性和可維護性。規范建議按照分級縮進格式編寫該文本。
順序執行的各命令位於同一級;條件語句塊(statenemt block,以 begin…end為邊界)位於下一級,類推。
SQL語句是該文本的主體。為適應某些教復雜的用戶需求,SQL語句可能比較龐大。為方便閱讀和維護,規范建議按照SQL語句中系統保留字的關鍵程度再劃分為三級。具體分級請參照下表。其中,非系統保留字(如欄位名、數據表名、標點符號)相對本級保留字再縮進一級。多個連續的非保留字可以分行書寫,也可以寫在同一行。當WHERE包含的條件子句教復雜時,應該每行只寫一個條件分句,並為重要的條件字句填寫單行注釋。
在保證基本縮進格式的前提下,可以通過對齊某些重要關鍵字(如條件關鍵字AND、OR,符號 = 、 <> 等)來進一步提高文本的易讀性和可維護性。
相鄰兩級的縮進量為10個空格。這也是ISQL編輯器默認的文本縮進量。另外,在ISQL編輯器中,一個TAB鍵也相當於10個空格。

註:按照功能,四類SQL語句(SELECT、INSERT、UPDATE、DELETE)的關鍵字可以劃分為三類:主關鍵字、次關鍵字、一般關鍵字。如下表所示:
主關鍵字 次關鍵字 一般關鍵字
SELECTINSERT (INTO)UPDATEDELETE FROMWHEREVALUESINSERT…SELECT…FROM語句中的SELECT和FROM ANDORBETWEENINLIKE

3.6 字體
系統保留字應大寫,包括系統公共變數等。其他字元(如用戶自定義變數、用戶自定義數據對象名)小寫。
需要特殊強調的部分可以大寫。
一條完整注釋語句的首字元應大寫。對某變數、某條件字句的注釋可以全部使用小寫。

通過下一節中生成表r_a的刪除觸發器的實例可以部分說明對象命名、注釋、基本書寫格式和字元大小寫方面的一些注意事項。

4 觸發器編程規范
4.1 範例
下面通過一個例子,說明觸發器編程中應遵守的規范:

/* delete related r_a according to deleted table */
CREATE TRIGGER r_a_d ON r_a
FOR DELETE
AS
IF @@ROWCOUNT = 0 -no rows deleted
RETURN

/* delete r_b table related to deleted table */
DELETE r_b
FROM r_b b, deleted d
WHERE b.id=d.id

IF @@ERROR != 0
BEGIN
RAISERROR("Error occurred deleting related records", 16, 1)
ROLLBACK TRAN
END

RETURN

作以下幾點說明:
1. 檢查是否有行被修改。注意:不論數據是否被修改,觸發器都會引發,執行情況取決於T-SQL語句的執行,而和任何潛在的where子句是否執行無關。
2. 因為被刪除行在該表中不再可用,所以應在被刪除的表中查看。
3. 檢查T-SQL語句的返回代碼,以捕獲任何出錯條件。
4.2 事務過程中的觸發器
1. 觸發器內的rollback將所有工作返回至最外層的begin tran,完成觸發器內的處理並異常終止當前的批處理。
2. 不可以從觸發器內部返回至某個已命名的事務過程,這將產生運行錯誤,掛起所有工作並終止批處理。
5 存儲過程編程規范
5.1 帶有參數的執行
在執行存儲過程時,可以通過名字來制定參數,這樣可以用任何順序傳遞參數,而且自動起到注釋的作用,因此建議編程時使用這種方法。
5.2 預設參數值
把參數的預設值定為null,這是捕獲在過程內調用存儲過程所產生的錯誤的常用方法,不應讓標准伺服器消息報告參數丟失。在給定預設之後,可以校驗該預設值並在存儲過程內採取措施。
注意,當附值SELECT語句不返回行時,局部變數將保持在SELECT語句執行之前所具有的值。建議使用系統提供的某些全局變數(如@@ROWCOUNT)檢測SELECT返回的結果。
5.3 返回值
每個存儲過程自動返回一個整數型的狀態值:成功完成時返回0,而返回-1~-99表示SQL Server檢測到了錯誤。以下為SQL Server系統常用的返回狀態碼:
值 含義
0 Procere was executed successfully
?-1 Object missing
?-2 Datatype error occurred
?-3 Process was chosen as deadlock victim
? -4 Permission error occurred
?-5 Syntax error occurred
? -6 Miscellaneous user error occurred
?-7 Resource error, such as out of space, occurred
? -8 Non-fatal internal problem encountered
?-9 System limit was reached
??-10 Fatal internal inconsistency occurred
??-11 Fatal internal inconsistency occurred
??-12 Table or index is corrupt
??-13 Database is corrupt
?-14 Hardware error occurred
在程序中,用return語句可指定大於0或小於-99的返回值,調用程序可以設置局部變數接收和檢查返回狀態。
5.4 存儲過程和事務處理
如果事務處理在存儲過程返回時的嵌套層次與執行時的層次不同,SQL Server會顯示信息提示事務處理嵌套失控。因為存儲過程並不異常終止該批處理,在執行和確認隨後的語句時,過程內的rollback tran 會導致數據完整性損失。
在編寫存儲過程時,應遵守以下原則:
1. 過程對@@trancount應無凈改變。
2. 僅當存儲過程發出begin tran語句時,才發出rollback tran。
5.5 其他注意事項
存儲過程應該堅實可靠的,因為它們是駐留在伺服器中,被頻繁使用的。應仔細檢查參數的有效性,並在有問題時返回出錯信息。應確保參數的數據類型和被比較的欄的數據類型匹配,從而避免數據類型匹配錯誤。在每個SQL語句之後要檢查@@error。

6 數據對象的國際化
6.1 關於數據對象的命名
數據對象和變數的命名一律採用英文字元。禁止使用中文命名。其他命名注意事項和規范請參考2命名規則。
6.2 關於RAISERROR
SQL SERVER 系統的RAISERROR命令能夠把某個出錯情況返回給調用過程,這對說明調用過程的執行情況很有必要;同時可以部分避免客戶端的冗餘操作。另外,結合系統存儲過程sp_addmessage和sp_dropmessage可以方便實現數據對象在SQL SERVER端的國際化。
SQL SERVER的MASTER資料庫中有錯誤信息數據表sysmessages,專門用於存儲系

Ⅱ SQL中我要輸入下一個命令是,怎麼才能不被之前的命令影響

只能重新發起新命令。
當發出一個命令時,mysql將它發送給伺服器並顯示執行結果,然後顯示另一個mysql>顯示它准備好接受其它命令。mysql用表格(行和列)方式顯示查詢輸出。第一行包含列的標簽,隨後的行是查詢結果。通常,列標簽是你取自資料庫表的列的名字。如果你正在檢索一個表達式而非表列的值(如剛才的例子),mysql用表達式本身標記列。mysql顯示返回了多少行,以及查詢花了多長時間,它給你提供伺服器性能的一個大致概念。因為他們表示時鍾時間(不是CPU或機器時間),並且因為他們受到諸如伺服器負載和網路延時的影響,因此這些值是不精確的。
SQL是英文StructuredQueryLanguage的縮寫,意思為結構化查詢語言。SQL語言的主要功能就是同各種資料庫建立聯系,進行溝通。按照ANSI(美國國家標准協會)的規定,SQL被作為關系型資料庫管理系統的標准語言。SQL語句可以用來執行各種各樣的操作,例如更新資料庫中的數據,從資料庫中提取數據等。

Ⅲ 帝國Cms 6.5的標簽支持按SQL語句調用方法說明

1.標簽上面的「操作類型」參數要設為24,然後「欄目id」為SQL語句
2.需要開啟支持按SQL語句調用:打開e/class/connect.php文件(粗體文字的設置)
//部分參數設置
$do_theloginlog=0;
//是否記錄登陸日誌(0為記錄,1為不記錄)
$do_thedolog=0;
//是否記錄操作日誌(0為記錄,1為不記錄)
$do_openbqquery=0;
//開啟標簽支持sql語句查詢(0為不支持,1為開啟)
$do_openreadfile=0;
//開啟讀取頁面標簽支持讀取伺服器本地文件,為了安全,一般情況請不要開啟(0為不支持,1為開啟)
$do_txtpath="../../d/txt/";//文本型數據存放目錄
?>
3.調用例子,以ecmsinfo為例:
[ecmsinfo]"select
*
from
phome_ecms_news
where
classid=1
order
by
id
desc
limit
10",10,30,0,24,1,0[/ecmsinfo]
註:顯示欄目id為1的10條新聞表記錄。

Ⅳ sql是什麼

SQL是英文Structured Query Language的縮寫形式,它的意思是表示結構化查詢語言。SQL語言的主要功能就是同各種資料庫建立聯系。此外,SQL是被當成為關系型資料庫管理系統的標准語言。其是由Microsoft開發和推廣的關系資料庫管理系統。

(4)標簽系統sql擴展閱讀:

SQL Server的特點如下:

1、具有真正的客戶機和伺服器體系結構。

2、圖形化用戶界面,使系統管理和資料庫管理更加直觀。

3、豐富的編程介面工具,為用戶進行程序設計提供了更大的選擇餘地。

4、其完全集成,利用了NT的許多功能,如發送和接受消息等。

Ⅳ 標簽管理應用系統完成了哪3個方面的需求設計

我認為從對業務的價值來說,標簽和畫像是類似中間層的系統模塊,具體來說,數據資產本質上是一些採集、采購所獲得的數據源,但企業希望在數據源的基礎上,實現資產變現,而且不斷擴大資產價值。

Ⅵ sql語法查詢數據都有什麼語法

http://www.eeyes.net/et/etnew/jiaocheng/sql.txt
或:
SQL介紹
使用SELECT 語句從表中取數據
創建新表
欄位屬性
向表中添加數據
刪除和修改表

為了建立交互站點,你需要使用資料庫來存儲來自訪問者的信息。例如,你要建立一個職業介紹服務的站點,你就需要存儲諸如個人簡歷,所感興趣的工作等等這樣的信息。創建動態網葉也需要使用資料庫,如果你想顯示符合來訪者要求的最好的工作,你就需要從資料庫中取出這份工作的信息。你將會發現,在許多情況下需要使用資料庫。
在這一章里,你將學會怎樣使用"結構化查詢語言"(SQL〕來操作資料庫。SQL語言是資料庫的標准語言。在Active Sever Pages 中,無論何時你要訪問一個資料庫,你就要使用SQL語言。因此,掌握好SQL對ASP編程是非常重要的。

注意:
你可以把"SQL"讀作"sequel",也可以按單個字母的讀音讀作S-Q-L。 兩種發音都是正確的,每種發音各有大量的支持者。在本書里,認為"SQL"讀作"sequel"。

通過這一章的學習,你將理解怎樣用SQL實現資料庫查詢,你將學會怎樣使用這種查詢從數據表中取出信息,最後,你將學會怎樣設計和建立自己的資料庫。

注意:
通過下面幾章對SQL的介紹,你將對SQL有足夠的了解,從而可以有效地使用Active Sever Pages。但是,SQL是一種復雜的語言,本書不可能包括它的全部細節。要全面掌握SQL語言,你需要學習在Microsoft SQL Sever 中使用SQL。你可以到附近的書店去買一本Microsoft SQL Sever 6.5。

SQL介紹:
本書假設你是在SQL操作Microsoft SQL Sever 的資料庫。你也可以用SQL操作許多其它類型的資料庫。SQL是操作資料庫的標准語言。(事實上,關於SQL語言有一個專門的ANSI標准〕

注意:
不要在你的站點上試圖用Microsoft Access代替Microsoft SQL Sever。SQL Sever可以同時服務於許多用戶,如果你希望你的站點有較高的訪問率,MS Access是不能勝任的。

在學習SQL的細節之前,你需要理解它的兩大特點。一個特點容易掌握,另一個掌握起來有點困難。
第一個特點是所有SQL資料庫中的數據都存儲在表中。一個表由行和列組成。例如,下面這個簡單的表包括name 和e-mail address:
Name Email Address
................................................................
Bill Gates [email protected]
president Clinton [email protected]
Stephen Walther [email protected]
這個表有兩列(列也稱為欄位,域〕:Name和Email Address。有三行,每一行包含一組數據。一行中的數據組合在一起稱為一條記錄。
無論何時你向表中添加新數據,你就添加了一條新記錄。一個數據表可以有幾十個記錄,也可以有幾千甚至幾十億個記錄。雖然你也許永遠不需要存儲十億個Email地址,但知道你能這樣做總是好的,也許有一天你會有這樣的需要。
你的資料庫很有可能包含幾十個表,所有存儲在你資料庫中的信息都被存儲在這些表中。當你考慮怎樣把信息存儲在資料庫中時,你應該考慮怎樣把它們存儲在表中。
SQL的第二個特點有些難於掌握。這種語言被設計為不允許你按照某種特定的順序來取出記錄,因為這樣做會降低SQL Sever取記錄的效率。使用SQL,你只能按查詢條件來讀取記錄。
當考慮如何從表中取出記錄時,自然會想到按記錄的位置讀取它們。例如,也許你會嘗試通過一個循環,逐個記錄地掃描,來選出特定的記錄。在使用SQL時,你必須訓練自己,不要有這種思路。
假如你想選出所有的名字是"Bill Gates"的記錄,如果使用傳統的編程語言,你也許會構造一個循環,逐個查看錶中的記錄,看名字域是否是"Bill Gates"。
這種選擇記錄的方法是可行的,但是效率不高。使用SQL,你只要說,"選擇所有名字域等於Bill Gates的記錄",SQL就會為你選出所有符合條件的記錄。SQL會確定實現查詢的最佳方法。
建設你想取出表中的前十個記錄。使用傳統的編程語言,你可以做一個循環,取出前十個記錄後結束循環。但使用標準的SQL查詢,這是不可能實現的。從SQL的角度來說,在一個表中不存在前十個記錄這種概念。
開始時,當你知道你不能用SQL實現某些你感覺應該能實現的功能,你會受到挫折。你也許會以頭撞牆甚至想寫惡毒的信件給SQL的設計者們。但後來你會認識到,SQL的這個特點不僅不是個限制,反而是其長處。因為SQL不根據位置來讀取記錄,它讀取記錄可以很快。
綜上所述,SQL有兩個特點:所有數據存儲在表中,從SQL的角度來說,表中的記錄沒有順序。在下一節,你將學會怎樣用SQL從表中選擇特殊的記錄。

使用SQL從表中取記錄。
SQL的主要功能之一是實現資料庫查詢。如果你熟悉Internet 引擎,那麼你已經熟悉查詢了。你使用查詢來取得滿足特定條件的信息。例如,如果你想找到有ASP信息的全部站點,你可以連接到 Yahoo!並執行一個對Active Sever Pages的搜索。在你輸入這個查詢後,你會收到一個列表,表中包括所有其描述中包含搜索表達式的站點。
多數Internet 引擎允許邏輯查詢。在邏輯查詢中,你可以包括特殊的運算符如AND、OR和NOT,你使用這些運算符來選擇特定的記錄。例如,你可以用AND來限制查詢結果。如果你執行一個對Active Sever Pages AND SQL的搜索。你將得到其描述中同時包含Active Sever Pages 和SQL的記錄。當你需要限制查詢結果時,你可以使用AND。
如果你需要擴展查詢的結果,你可以使用邏輯操作符OR。例如,如果你執行一個搜索,搜索所有的其描述中包含Active Sever Pages OR SQL的站點,你收到的列表中將包括所有其描述中同時包含兩個表達式或其中任何一個表達式的站點。
如果你想從搜索結果中排除特定的站點,你可以使用NOT。例如,查詢"Active Sever Pages "AND NOT "SQL"將返回一個列表,列表中的站點包含Active Sever Pages,但不包含SQL。當必須排除特定的記錄時,你可以使用NOT。
用SQL執行的查詢與用Internet搜索引擎執行的搜索非常相似。 當你執行一個SQL查詢時,通過使用包括邏輯運算符的查詢條件,你可以得到一個記錄列表。此時查詢結果是來自一個或多個表。
SQL查詢的句法非常簡單。假設有一個名為email_table 的表,包含名字和地址兩個欄位,要得到Bill Gates 的e_mail地址,你可以使用下面的查詢:

SELECT email from email_table WHERE name="Bill Gates"

當這個查詢執行時,就從名為email_table的表中讀取Bill Gates的e_mail 地址。這個簡單的語句包括三部分:
■ SELECT語句的第一部分指名要選取的列。在此例中,只有email列被選取。當執行 時,只顯示email列的值 [email protected]
■ SELECTT語句的第二部份指明要從哪個(些)表中查詢數據。在此例中,要查詢的表名為email_table 。
■ 最後,SELECT語句的WHERE子句指明要選擇滿足什麼條件的記錄。在此例中,查詢條件為只有name列的值為Bill Gates 的記錄才被選取。
Bill Gates很有可能擁有不止一個email地址。如果表中包含Bill Gates的多個email地址。用上述的SELECT語句可以讀取他所有的email地址。SELECT語句從表中取出所有name欄位值為Bill Gates 的記錄的email 欄位的值。
前面說過,查詢可以在查詢條件中包含邏輯運算符。假如你想讀取Bill Gates 或Clinton總統的所有email地址,你可以使用下面的查詢語句:

SELECT email FROM email_table WHERE name="Bill Gates" OR
name="president Clinton"

此例中的查詢條件比前一個復雜了一點。這個語句從表email_table中選出所有name列為Bill Gates或president Clinton的記錄。如果表中含有Bill Gates或president Clinton的多個地址,所有的地址都被讀取。
SELECT語句的結構看起來很直觀。如果你請一個朋友從一個表中為你選擇一組記錄,你也許以非常相似的方式提出你的要求。在SQL SELECT語句中,你"SELECT特定的列FROM一個表WHERE某些列滿足一個特定的條件"。
下一節將介紹怎樣執行SQL查詢來選取記錄。這將幫助你熟悉用SELECT語句從表中取數據的各種不同方法。

使用ISQL執行SELECT查詢
當你安裝SQL Sever時,你同時安裝了一個叫作ISQL/w的應用程序。ISQL/w允許你執行交互的SQL查詢。在把查詢包括到你的ASP網頁中之前,用ISQL/w對其進行測試是非常有用的。

注意:
在這本書的第一部份,你學習了怎樣安裝和配置Microsoft SQL Sever 。如果沒有安裝SQL Sever或者SQL Sever不能運行,請參閱第三章"安裝和使用SQL Sever"。

選擇任務上SQL Sever程序組中的ISQL_w以啟動該程序。程序啟動時,首先會出現一個對話框,要求輸入伺服器信息和登錄信息(見圖10.1)。在Sever框中,輸入你的SQL伺服器的名字。如果伺服器正運行在本地計算機上,伺服器名字就是你計算機的名字。在登錄信息框中,輸入一個登錄帳號和密碼或選擇使用"可信連接",然後單擊Connect按鈕。

圖10。1

注意:
如果你將SQL Sever配置為使用完整安全或混合安全,那麼你可以使用可信連接。如果你使用標准安全,你則需要提供用戶帳號和密碼。要了解更多信息,參見第三章。

如果一切正常,在你單擊連接按鈕後會出現一個查詢窗口,如圖10.2所示。(如果有異常,請參考第三章)

圖10.2

在執行查詢之前,你需要選擇資料庫。安裝 SQL Sever時你已為自己創建了一個資料庫,SQL Sever還有許多系統資料庫,如master,model,msdb,和tempdb。
方便的是,SQL Sever帶有一個特殊的名為pubs的例子資料庫。庫 pubs中包含供一個虛擬的出版商使用的各個表。文檔中所有的例子程序都是針對這個庫來設計的。本書中的許多例子也使用這個資料庫。
在查詢窗口頂部的DB下拉框中選擇資料庫pubs,這樣你就選擇了資料庫。你所有的查詢都將針對這個庫中的各個表來執行。現在你可以執行你的第一個查詢了。這真讓人興奮!
你的第一個查詢將針對一個名為autrors的表,表中包含所有為某個虛擬出版商工作的作者的相關數據。單擊查詢窗口並輸入以下的語句:

SELECT phone FROM authors WHERE au_name="Ringer"

輸入完成後,單擊執行查詢按鈕(一個綠色三角形,看起來像VCR播放鍵)。單擊此按鈕後,任何出現在查詢窗口中的語句均會被執行。查詢窗口會自動變成結果顯示窗口,你可以看到查詢的結果(見圖10.3)。
你看到的查詢結果也許與圖10.3所示的不同。在SQL Sever的不同版本中,庫pubs中的數據會有所不同。對SQL Sever 6.5來說,將會找到兩條記錄。結果顯示窗口中應顯示如下內容:

phone
...................
801 826_0752
801 826_0752
(2 row(s) affected)

圖10.3

你所執行的SELECT語句從表authors中取出所有名字為Ringer的作者的電話號碼。你通過在WHERE子句中使用特殊的選擇條件來限制查詢的結果。你也可以忽略選擇條件,從表中取出所有作者的電話號碼。要做到這一點,單擊Query標簽,返回到查詢窗口,輸入以下的SELECT語句:

SELECT Phone FROM authors
這個查詢執行後,會取出表authors中的所有電話號碼(沒有特定的順序)。如果表authors中包含一百個電話號碼,會有一百個記錄被取出,如果表中有十億個電話號碼,這十億條記錄都會被取出(這也許需要一些時間)。
表authrs的欄位包括姓,名字,電話號碼,地址,城市,州和郵政編碼。通過在SELECT語句的第一部份指定它們,你可以從表中取出任何一個欄位。你可以在一個SELECT語句中一次取出多個欄位,比如:

SELECT au_fname ,au_lname, phone FROM authors

這個SELECT語句執行後,將取出這三個列的所有值。下面是這個查詢的結果的一個示例(為了節省紙張,只顯示查詢結果的一部分,其餘記錄用省略號代替):

au_fname au_lname phone
.....................................................................................
Johnson White 408 496_7223
Marjorie Green 415 986_7020
Cheryl Carson 415 548_7723
Michael O'Leary 408 286_2428
...
(23 row(s) affected)

在SELECT語句中,你需要列出多少個欄位,你就可以列出多少。不要忘了把欄位名用逗號隔開。你也可以用星號(*)從一個表中取出所有的欄位。這里有一個使用星號的例子:

SELECT * FROM authors

這個SELECT語句執行後,表中的所有欄位的值都被取出。你會發現你將在SQL查詢中頻繁使用星號。

技巧:
你可以使用星號來查看一個表的所有列的名字。要做到這一點,只需要在執行完SELECT語句後看一下查詢結果的列標題。

操作多個表
到現在為止,你只嘗試了用一句SQL查詢從一個表中取出數據。你也可以用一個SELECT語句同時從多個表中取出數據,只需在SELECT語句的FROM從句中列出要從中取出數據的表名稱即可:

SELECT au_lname ,title FROM authors, titles

這個SELECT語句執行時,同時從表authors和表titles中取出數據。從表authors中取出所有的作者名字,從表titles中取出所有的書名。在ISQL/w程序中執行這個查詢,看一下查詢結果。你會發現一些奇怪的出乎意料的情況:作者的名字並沒有和它們所著的書相匹配,而是出現了作者名字和書名的所有可能的組合,這也許不是你所希望見到的。
出了什麼差錯?問題在於你沒有指明這兩個表之間的關系。你沒有通過任何方式告訴SQL如何把表和表關聯在一起。由於不知道如何關聯兩個表,伺服器只能簡單地返回取自兩個表中的記錄的所有可能組合。
要從兩個表中選出有意義的記錄組合,你需要通過建立兩表中欄位的關系來關聯兩個表。要做到這一點的途徑之一是創建第三個表,專門用來描述另外兩個表的欄位之間的關系。
表authors有一個名為au_id的欄位,包含有每個作者的唯一標識。表titles有一個名為title_id的欄位,包含每個書名的唯一標識。如果你能在欄位au_id和欄位title_id 之間建立一個關系,你就可以關聯這兩個表。資料庫pubs中有一個名為titleauthor的表,正是用來完成這個工作。表中的每個記錄包括兩個欄位,用來把表titles和表authors關聯在一起。下面的SELECT語句使用了這三個表以得到正確的結果:

SELECT au_name,title FROM authors,titles,titleauthor
WHERE authors.au_id=titleauthor.au_id
AND titles.title_id=titleauthor.title_id

當這個SELECT語句執行時,每個作者都將與正確的書名相匹配。表titleauthor指明了表authors和表titles的關系,它通過包含分別來自兩個表的各一個欄位實現這一點。第三個表的唯一目的是在另外兩個表的欄位之間建立關系。它本身不包含任何附加數據。
注意在這個例子中欄位名是如何書寫的。為了區別表authors和表titles中相同的欄位名au_id,每個欄位名前面都加上了表名前綴和一個句號。名為author.au_id 的欄位屬於表authors,名為titleauthor.au_id的欄位屬於表titleauthor,兩者不會混淆。
通過使用第三個表,你可以在兩個表的欄位之間建立各種類型的關系。例如,一個作者也許寫了許多不同的書,或者一本書也許由許多不同的作者共同完成。當兩個表的欄位之間有這種"多對多"的關系時,你需要使用第三個表來指明這種關系。
但是,在許多情況下,兩個表之間的關系並不復雜。比如你需要指明表titles和表publishers之間的關系。因為一個書名不可能與多個出版商相匹配,你不需要通過第三個表來指明這兩個表之間的關系。要指明表titles和表publishers之間的關系,你只要讓這兩個表有一個公共的欄位就可以了。在資料庫pubs中,表titles和表publishers都有一個名為pub_id的欄位。如果你想得到書名及其出版商的一個列表,你可以使用如下的語句:
SELECT title,pub_name FROM titles,publishers
WHERE titles.pub_id=publishers.pub_id

當然,如果一本書是由兩個出版商聯合出版的,那麼你需要第三個表來代表這種關系。
通常,當你予先知道兩個表的欄位間存在"多對多"關系時,就使用第三個表來關聯這兩個表。反之,如果兩個表的欄位間只有"一對一"或"一對多"關系,你可以使用公共欄位來關聯它門。

操作欄位
通常,當你從一個表中取出欄位值時,該值與創建該表時所定義的欄位名聯系在一起。如果你從表authors中選擇所有的作者名字,所有的值將會與欄位名au_lname相聯系。但是在某些情況下,你需要對欄位名進行操作。在SELECT語句中,你可以在預設欄位名後面僅跟一個新名字來取代它。例如,可以用一個更直觀易讀的名字Author Last Name來代替欄位名au_lname:

SELECT au_lname "Author Last Name" FROM authors

當這個SELECT語句執行時,來自欄位au_lname的值會與"Author Last Name"相聯系。查詢結果可能是這樣:

Author Last Name
................................................................................
White
Green
Carson
O'Leary
Straight
...
(23 row(s) affected)

注意欄位標題不再是au_lname,而是被Author Last Name所取代。
你也可以通過執行運算,來操作從一個表返回的欄位值。例如,如果你想把表titles中的所有書的價格加倍,你可以使用下面的SELECT語句:

SELECT price*2 FROM titles

當這個查詢執行時,每本書的價格從表中取出時都會加倍。但是,通過這種途徑操作欄位不會改變存儲在表中的書價。對欄位的運算只會影響SELECT語句的輸出,而不會影響表中的數據。為了同時顯示書的原始價格和漲價後的新價格,你可以使用下面的查詢:

SELECT price "Original price", price*2 "New price" FROM titles

當數據從表titles中取出時,原始價格顯示在標題Original price下面,加倍後的價格顯示在標題New price下面。結果可能是這樣:

original price new price
.........................................................................
19.99 39.98
11.95 23.90
2.99 5.98
19.99 39.98
...
(18 row(s) affected)

你可以使用大多數標準的數學運算符來操作欄位值,如加(+),減(-),乘(*)和除(/)。你也可以一次對多個欄位進行運算,例如:

SELECT price*ytd_sales "total revenue" FROM titles

在這個例子中,通過把價格與銷售量相乘,計算出了每種書的總銷售額。這個SELECT語句的結果將是這樣的:

total revenue
.....................................................
81,859,05
46,318,20
55,978,78
81,859,05
40,619,68
...
(18 row(s) affected)

最後,你還可以使用連接運算符(它看起來像個加號)來連接兩個字元型欄位:

SELECT au_fname+" "+au_lname "author name" FROM authors

在這個例子中,你把欄位au_fname和欄位au_lname粘貼在一起,中間用一個逗號 隔開,並把查詢結果的標題指定為author name。這個語句的執行結果將是這樣的:

author names
..................................................................
Johnson White
Marjorie Green
Cheryl Carson
Michael O'Leary
Dean Straight
...
(23 row(s) affected)

可以看到,SQL為你提供了對查詢結果的許多控制。你應該在ASP編程過程中充分利用這些優點。使用SQL來操作查詢結果幾乎總是比使用有同樣作用的腳本效率更高。

排序查詢結果
本章的介紹中曾強調過,SQL表沒有內在的順序。例如,從一個表中取第二個記錄是沒有意義的。從SQL的角度看來,沒有一個記錄在任何其他記錄之前。
然而,你可以操縱一個SQL查詢結果的順序。在預設情況下,當記錄從表中取出時,記錄不以特定的順序出現。例如,當從表authors中取出欄位au_lname時,查詢結果顯示成這樣:

au_lname
...........................................
White
Green
Carson
O'Leary
Straight
...
(23 row(s) affected)

看一列沒有特定順序的名字是很不方便的。如果把這些名字按字母順序排列,讀起來就會容易得多。通過使用ORDER BY子句,你可以強制一個查詢結果按升序排列,就像這樣:

SELECT au_lname FROM authors ORDER BY au_lname

當這個SELECT語句執行時,作者名字的顯示將按字母順序排列。ORDER BY子句將作者名字按升序排列。
你也可以同時對多個列使用ORDER BY子句。例如,如果你想同時按升序顯示欄位au_lname和欄位au_fname,你需要對兩個欄位都進行排序:

SELECT au_lname,au_fname FROM authors ORDER BY au_lname ,au_fname

這個查詢首先把結果按au_lname欄位進行排序,然後按欄位au_fname排序。記錄將按如下的順序取出:

au_lname au_fname
...............................................................................
Bennet Abraham
Ringer Albert
Ringer Anne
Smith Meander
...
(23 row(s) affected)

注意有兩個作者有相同的名字Ringer。名為Albert Ringer的作者出現名為Anne Ringer的作者之前,這是因為姓Albert按字母順序應排在姓Anne之前。
如果你想把查詢結果按相反的順序排列,你可以使用關鍵字DESC。關鍵字DESC把查詢結果按降序排列,如下例所示:

SELECT au_lname,au_fname FROM authors
WHERE au_lname="Ringer" ORDER BY au_lname ,au_fname DESC

這個查詢從表authors中取出所有名字為Ringer的作者記錄。ORDER BY子句根據作者的名字和姓,將查詢結果按降序排列。結果是這樣的:

au_lname au_fname
....................................................................................................
Ringer Anne
Ringer Albert
(2 row(s) affectec)

注意在這個表中,姓Anne出現在姓Albert之前。作者名字按降序顯示。
你也可以按數值型欄位對一個查詢結果進行排序。例如,如果你想按降序取出所有書的價格,你可以使用如下的SQL查詢:

SELECT price FROM titles ORDER BY price DESC

這個SELECT語句從表中取出所有書的價格,顯示結果時,價格低的書先顯示,價格高的書後顯示。

警告:
不是特別需要時,不要對查詢結果進行排序,因為伺服器完成這項工作要費些力氣。這意味著帶有ORDER BY 子句的SELECT語句執行起來比一般的SELECT語句花的時間長。

取出互不相同的記錄
一個表有可能在同一列中有重復的值。例如,資料庫pubs的表authors中有兩個作者的名字是Ringer。如果你從這個表中取出所有的名字,名字Ringer將會顯示兩次。
在特定情況下,你可能只有興趣從一個表中取出互不相同的值。如果一個欄位有重復的值,你也許希望每個值只被選取一次,你可以使用關鍵字DISTINCT來做到這一點:

SELCET DISTINCT au_lname FROM authors WHERE au_lname="Ringer"

當這個SELECT語句執行時,只返回一個記錄。通過在SELECT語句中包含關鍵字DISTINCT,你可以刪除所有重復的值。例如,假設有一個關於新聞組信息發布的表,你想取出所有曾在這個新聞組中發布信息的人的名字,那麼你可以使用關鍵字DISTINCT。每個用戶的名字只取一次——盡管有的用戶發布了不止一篇信息。
警告:
如同ORDER BY子句一樣,強制伺服器返回互不相同的值也會增加運行開銷。福氣不得不花費一些時間來完成這項工作。因此,不是必須的時候不要使用關鍵字DISTINCT。

創建新表
前面說過,資料庫中的所有數據存儲在表中。數據表包括行和列。列決定了表中數據的類型。行包含了實際的數據。
例如,資料庫pubs中的表authors有九個欄位。其中的一個欄位名為為au_lname,這個欄位被用來存儲作者的名字信息。每次向這個表中添加新作者時,作者名字就被添加到這個欄位,產生一條新記錄。
通過定義欄位,你可以創建一個新表。每個欄位有一個名字和一個特定的數據類型(數據類型在後面的"欄位類型"一節中講述),例如欄位au_lname存儲的是字元型數據。一個欄位也可以存儲其它類型的數據。
使用SQL Sever,創建一個新表的方法是很多的。你可以可執行一個SQL語句或使用SQL事務管理器(SQL Enterprise Manager)來創建一個新表。在下一節里,你將學會如何用SQL語句來創建一個新表。

用SQL創建新表
注意:
如果你還沒有建立自己的資料庫,現在就跳回到第三章創建這個庫。你絕不能向master,tempdb或任何其他任何系統資料庫中添加數據。

從SQL Sever程序組(在任務欄中)中啟動ISQL/w程序。出現查詢窗口後,從窗口頂部的下拉列表中選擇你在第三章所創建的資料庫。下一步,在查詢窗口中鍵入下面的SQL語句,單擊執行查詢按鈕,執行這個語句:

CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate
DATETIME)

如果一切正常,你會在結果窗口中看到如下的文字(如果出現異常,請參閱第三章):

This command dit not return data ,and it did not return any rows

祝賀你,你已經建立了你的第一個表!
你所創建的表名為guestbook,你可以使用這個表來存儲來字你站點訪問者的信息。你是用REEATE TABLE語句創建的這個表,這個語句有兩部分:第一部份指定表的名子;第二部份是括在括弧中的各欄位的名稱和屬性,相互之間用逗號隔開。
表guestbook有三個欄位:visitor,comments 和entrydate。visitor欄位存儲訪問者的名字,comments欄位存儲訪問者對你站點的意見,entrydate欄位存儲訪問者訪問你站點的日期和時間。

Ⅶ sql資料庫中常用的數據類型有什麼

一、整數數據類型:整數數據類型是最常用的數據類型之一。

1、INT(INTEGER)

INT (或INTEGER)數據類型存儲從-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之間的所有正負整數。每個INT 類型的數據按4 個位元組存儲,其中1 位表示整數值的正負號,其它31 位表示整數值的長度和大小。

2、SMALLINT

SMALLINT 數據類型存儲從-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之間的所有正負整數。每個SMALLINT 類型的數據佔用2 個位元組的存儲空間,其中1 位表示整數值的正負號,其它15 位表示整數值的長度和大小。

二、浮點數據類型:浮點數據類型用於存儲十進制小數。浮點數值的數據在SQL Server 中採用上舍入(Round up 或稱為只入不舍)方式進行存儲。

1、REAL數據類型

REAL數據類型可精確到第7 位小數,其范圍為從-3.40E -38 到3.40E +38。 每個REAL類型的數據佔用4 個位元組的存儲空間。

2、FLOAT

FLOAT數據類型可精確到第15 位小數,其范圍為從-1.79E -308 到1.79E +308。 每個FLOAT 類型的數據佔用8 個位元組的存儲空間。 FLOAT數據類型可寫為FLOAT[ n ]的形式。n 指定FLOAT 數據的精度。n 為1到15 之間的整數值。

當n 取1 到7 時,實際上是定義了一個REAL 類型的數據,系統用4 個位元組存儲它;當n 取8 到15 時,系統認為其是FLOAT 類型,用8 個位元組存儲它。

三、二進制數據類型

1、BINARY

BINARY 數據類型用於存儲二進制數據。其定義形式為BINARY( n), n 表示數據的長度,取值為1 到8000 。在使用時必須指定BINARY 類型數據的大小,至少應為1 個位元組。BINARY 類型數據佔用n+4 個位元組的存儲空間。

在輸入數據時必須在數據前加上字元「0X」 作為二進制標識,如:要輸入「abc 」則應輸入「0xabc 」。若輸入的數據過長將會截掉其超出部分。若輸入的數據位數為奇數,則會在起始符號「0X 」後添加一個0,如上述的「0xabc 」會被系統自動變為「0x0abc」。

2、VARBINARY

VARBINARY數據類型的定義形式為VARBINARY(n)。 它與BINARY 類型相似,n 的取值也為1 到8000, 若輸入的數據過長,將會截掉其超出部分。

不同的是VARBINARY數據類型具有變動長度的特性,因為VARBINARY數據類型的存儲長度為實際數值長度+4個位元組。當BINARY數據類型允許NULL 值時,將被視為VARBINARY數據類型。

四、邏輯數據類型

1、BIT:BIT數據類型佔用1 個位元組的存儲空間,其值為0 或1 。如果輸入0 或1 以外的值,將被視為1。 BIT 類型不能定義為NULL 值(所謂NULL 值是指空值或無意義的值)。

五、字元數據類型:字元數據類型是使用最多的數據類型。它可以用來存儲各種字母、數字元號、特殊符號。一般情況下,使用字元類型數據時須在其前後加上單引號』或雙引號」 。

1、CHAR

CHAR 數據類型的定義形式為CHAR[ (n) ]。 以CHAR 類型存儲的每個字元和符號佔一個位元組的存儲空間。n 表示所有字元所佔的存儲空間,n 的取值為1 到8000, 即可容納8000 個ANSI 字元。

若不指定n 值,則系統默認值為1。 若輸入數據的字元數小於n,則系統自動在其後添加空格來填滿設定好的空間。若輸入的數據過長,將會截掉其超出部分。

(7)標簽系統sql擴展閱讀:

SQL包括了所有對資料庫的操作,主要是由4個部分組成:

1、數據定義:這一部分又稱為「SQL DDL」,定義資料庫的邏輯結構,包括定義資料庫、基本表、視圖和索引4部分。

2、數據操縱:這一部分又稱為「SQL DML」,其中包括數據查詢和數據更新兩大類操作,其中數據更新又包括插入、刪除和更新三種操作。

3、數據控制:對用戶訪問數據的控制有基本表和視圖的授權、完整性規則的描述,事務控制語句等。

4、嵌入式SQL語言的使用規定:規定SQL語句在宿主語言的程序中使用的規則。

Ⅷ 科訊[求助]sql 標簽中 怎麼嵌套系統函數 如{SQL_區域({$GetClassID})}

這個事情可是不太好辦啊,讓高手來解決一下吧。