【正文】
, 39。, 2)運行結果如下 abcabcabc NULL*/REVERSE() 函數將指定的字符串的字符排列順序顛倒REPLACE() 函數返回被替換了指定子串的字符串/*select replace(39。 (^排除指定范圍) 只能在使用like關鍵字的where子句中使用通配符)or stockpath = 39。 END AS Category, CONVERT(varchar(30), title) AS Shortened Title, price AS PriceFROM titlesWHERE price IS NOT NULLORDER BY 1WHILE CONTINUE BREAKdeclare x int y int c intselect x = 1 y=1while x 3beginprint x 打印變量x 的值while y 3beginselect c = 100*x + yprint c 打印變量c 的值select y = y + 1endselect x = x + 1select y = 1endWAITFOR例 等待1 小時2 分零3 秒后才執(zhí)行SELECT 語句waitfor delay ’01:02:03’select * from employee例 等到晚上11 點零8 分后才執(zhí)行SELECT 語句waitfor time ’23:08:00’select * from employee***SELECT***select *(列名) from table_name(表名) where column_name operator valueselect * from stock_information where stockid = str(nid)stockname = 39。 THEN 39。 THEN 39。else print 39。select id = 39。本章小結: 初次使用事件探查器時,一般用默認跟蹤模板即可。 顯式的錯誤和異常的解決 對于第一類問題,通常的解決辦法是: 首先要利用事件探查器跟蹤有問題賬套,重點查看在跟蹤過程中,報錯語句前后的sql語句所涉及到的數據表或數據對象內容是否有問題。存儲過程:SP:StmtCompleted。Object_ID( )作用與之相反。 如:pubs庫中有個名字是employee_insupd的觸發(fā)器(這個名字很有可能是被后面講的事件探查器跟蹤出來的結果),若想查詢該觸發(fā)器是依賴于哪個表時,以下的語句非常有用。 sysobjects系統表 sysobjects系統表存在于每個用戶自建的數據庫中,在數據庫內創(chuàng)建的每個對象(約束、默認值、日志、規(guī)則、存儲過程等)在表中占一行,該表常用的字段有xtype字段(代表對象類型,常用的類型有:U = 用戶表、P = 存儲過程、TR = 觸發(fā)器、V = 視圖、D = 默認值或 DEFAULT 約束),name字段(代表對象名,如表名、存儲過程名) 在SQLServer查詢分析器中執(zhí)行一下語句,找出表名字為au開頭的用戶自定義表: select name from pubs..sysobjects where xtype = 39。 其語法為: DROP TRIGGER { 觸發(fā)器名字 } [ ,...n ] 刪除觸發(fā)器的語句是: use pubs DROP TRIGGER mySelect 游標的使用DECLARE CURSOR定義 TransactSQL 服務器游標的特性,例如游標的滾動行為和用于生成游標對其進行操作的結果集的查詢。第三節(jié) 創(chuàng)建和執(zhí)行存儲過程、觸發(fā)器和游標 創(chuàng)建存儲過程 創(chuàng)建存儲過程的關鍵字是Create Proc(也可以是create procedure) 在SQLServer查詢分析器中執(zhí)行如下語句創(chuàng)建一個名字為testPro的存儲過程:use pubsgocreate proc testProcas select * from authors 帶參數存儲過程的創(chuàng)建:use pubsgocreate proc testProcX name varchar(20)as select * from authors where au_lname = name 執(zhí)行存儲過程 執(zhí)行無參數存儲過程的語句是: exec pubs..testproc 執(zhí)行帶參數存儲過程的語句是(注意參數的賦值): exec pubs..testprocx name=39。CREATE VIEW 必須是查詢批處理中的第一條語句。包括如何創(chuàng)建數據庫、表、索引,視圖、存儲過程、觸發(fā)器、游標的簡單應用等,同時本章也講解一些能有效提高維護效率的SQL知識:系統存儲過程、系統表的應用。, 39。在SQLServer查詢分析器中執(zhí)行如下語句:Select * Into pubs..new_table1From pubs..titles用語句Select * from pubs..new_table1可以查詢出剛才新生成的表及其中剛剛插入的數據。BU987639。, 39。具體的Union語法請查詢聯機幫助。在SQLServer查詢分析器中執(zhí)行如下語句:Select * From father Full Join son On = 結果如下(注意下表中的NULL):FidNameSidNameFid11A1Ason1121A2Ason2131A3Ason3143C4Cson1353C5Cson236NULLNULL6Dson1472BNULLNULLNULL 在SQLServer查詢分析器中執(zhí)行如下語句:Select * from father Full join son on = where is null Or is null實現的功能為:找出在Son表中有,而在father表中沒有對應的記錄以及在Father表中有,而在son表中沒有對應的記錄。在SQLServer查詢分析器中執(zhí)行如下語句:Select * From father Left Join son On = 結果如下(注意下表中的NULL):FidNameSidNameFid11A1Ason1121A2Ason2131A3Ason3142BNULLNULLNULL53C4Cson1363C5Cson23 在SQLServer查詢分析器中執(zhí)行如下語句:Select * from father left join son on = where is null 實現的功能為:找出在father表中有,而在son表中沒有對應的記錄。Join分為內連接和外連接。 Where子句Where子句的作用是指定查詢返回行的條件。 第二節(jié) Select語句中的常用子句及函數 SQL中函數的使用在SQL 中的函數可以執(zhí)行一些儲如對某一列進行匯總或將一個字符串中的字符轉換為大寫的操作。對SQL語言的學習,關鍵是要邊學習邊實踐,讀者可以在SQLServer查詢分析器中實際練習本專刊提供的語句。如Accinformation表中的cSysID字段。圖2數據庫 (database) :為特定目的(如搜索、排序和重新組織數據)而組織和提供的信息、表和其它對象的集合。 Microsoft SQLServerSQLServer中常用的工具包括:企業(yè)管理器、查詢分析器、事件探查器等。而且在實際的維護實踐中,也會發(fā)現,MSDE出現異常的情況遠多于SQLServer。 每個SQLServer數據庫是由兩類文件組成:一類是數據文件,包括主數據文件(擴展名為mdf)和次要數據文件(擴展名為ndf,該類文件不是必須的,U8數據庫通常沒有該文件);一類是日志文件(擴展名為ldf)。事件探查器是U8維護工作中最為常用的分析工具。本??饕獌热荩旱谝徽?概述U8數據庫特點、常用的SQL工具、語法格式,以及SQLServer數據庫中的一些常用的術語。第一節(jié) U8數據庫簡述 U8數據庫 用友U8系列產品的后臺數據庫是采用Microsoft SQLServer。另外,以Access為后臺數據庫的產品安裝盤中有壓縮的演示賬套數據庫文件,直接用Winzip解壓縮后,就可以作為參照的數據字典使用。 第二節(jié) 常用的SQL工具簡介 SQL本身是一種語言,需要在特定的環(huán)境中運行??梢圆东@有關每個事件的數據并將其保存到文件或 SQL Server 表中供以后分析。例如,某個教育數據庫將具有一個教師表、一個學生表和一個課程表。更多的內容還請參閱聯機幫助。第一節(jié) 簡單的SELECT查詢在SQLServer的查詢分析器中執(zhí)行如下兩句SQL語句:USE NorthwindSELECT * FROM [Order Details]執(zhí)行該語句返回Order Details表中包含所有列的記錄。 Select語句的常用子句Select中的常用子句包括:Where,Order By,Group by,Having,Join等。另外Having語句后的條件可以是聚合函數(如sum函數、Max函數),而where后不能接聚合函數。如果未指定聯接類型,則該連接形式為默認形式。 使用全連接語句Full Outer Join連接Full Outer Join是指定在結果集中包含左表或右表中不滿足聯接條件的行,并將對應于另一個表的輸出列設為 NULL。 In子句會在Select語句子查詢語句中講解。Creating Web Pages39。在SQLServer查詢分析器中執(zhí)行如下語句(刪除剛才插入的記錄):select * from pubs..titles where title_id =39。UpDate pubs..titles set price = 200 where title_id =39。 In子句的使用方法IN子句是確定給定的值是否與子查詢或列表中的值相匹配。Select語句及其子句靈活的語法是學習的難點,在U8維護工作中, Join子句是最為常用的語法,必須重點學習。 刪除表的語法:Drop table 表名(可以一次性刪除多個表,表名和表名之間用逗號隔開)。 創(chuàng)建索引的簡單語法是:create [unique][clustered] index 索引名 on 表名(列[asc|desc]) 下面的示例為pubs庫的 authors 表的 au_id 列創(chuàng)建索引:USE pubsCREATE INDEX au_id_ind ON authors (au_id) 刪除索引刪除索引的語法為:drop index 下面的示例為刪除剛剛在pubs庫的 authors 表的 au_id 列創(chuàng)建的索引:USE pubsdrop index 視圖和表的區(qū)別 視圖和表的用法基本相同。 在pubs庫中的titles表上創(chuàng)建一個名字為mySelect觸發(fā)器,當對改表做插入和更新操作時,該觸發(fā)器自動執(zhí)行,檢索出修改后的titles表的記錄:use pubsgoCREATE TRIGGER mySelectON titlesFOR INSERT, UPDATE as Select * from titlesGO 可執(zhí)行如下語句看一下觸發(fā)器