freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

sql循序漸進-閱讀頁

2024-10-14 17:19本頁面
  

【正文】 IGN(x)當(dāng)x為負數(shù)、零、正數(shù)的時候分別返回x的符號0或者1MOD(x,y)返回x除以y的余數(shù),跟x%y作用一樣FLOOR(x)返回小于等于x的最大整數(shù)CEILING(x) 或 CEIL(x)返回大于等于x的最小整數(shù)POWER(x,y)返回x的y次方的數(shù)值ROUND(x)返回最接近于x的數(shù)ROUND(x,d)返回小數(shù)點數(shù)為4的接近于x的數(shù)SQRT(x)返回x的平方根下面舉個例子:SELECT round(salary), firstnameFROM employee_info 上面這條語句將從employee_info表中選擇salary最接近的數(shù)以及firstname列。如果你想從兩個表或者更多的表中進行檢索,該怎么辦呢?好在我們可以使用SQL和關(guān)系數(shù)據(jù)庫系統(tǒng)的一個很有用的特性,即Join。Join允許你從兩個表或者更多的表連接數(shù)據(jù)進行數(shù)據(jù)檢索,而只需要利用一個SELECT語句。下面舉個例子:SELECT listofcolumnsFROM table1,table2WHERE searchcondition(s) Join通過示范當(dāng)你只處理一個表的時候會發(fā)生什么事情可以使得Join的解釋更簡單,所以這里我沒有使用Join?,F(xiàn)在你有一個表的數(shù)據(jù)庫用來檢索所有顧客的信息以及他們從你的商店買了什么,下面就是這個表的所有列:每次一個新行被插入到表中,所有的列都將被更新,這樣就導(dǎo)致了不必要的”多余數(shù)據(jù)”。 即有Customer_info 表和Purchases 表:Customer_info 表為:customer_number firstname lastname address city state zip Purchases 表為:customer_number date item price 現(xiàn)在開始,不管顧客什么時候進行重復(fù)的購物,只有第二個表Purchases 需要更新。你仔細點就會發(fā)現(xiàn)兩個表中還是有一個cusomer_number列是相同的。下面舉個例子來使用這兩個表,假如你想搜索顧客的名字以及他們所買的東西,你可以使用以下的語句來實現(xiàn):SELECT , , FROM customer_info, purchasesWHERE = 。這里要注意每列總是在表名之前,這卻也不是必需的。如果兩個表之間有一個相同的列,它就是必須的。注意;上面描述的這個語法將在絕大多數(shù)的數(shù)據(jù)庫系統(tǒng)起作用,本教程的也是一樣。當(dāng)然你可以試一試修改以上的代碼,你可以使用JOIN(ANSI SQL92語法規(guī)范中的INNER JOIN):SELECT , , FROM customer_info INNER JOIN purchasesON = 。 這個例子將從employee_info和employee_sales表中選擇當(dāng)employee_info表的employeeid等于employee_sales表的employeeid的employeeid 、emplyee_info表中l(wèi)astname以及employee_sales表中的ission數(shù)值。既然有這樣的有點,我們何樂而不為呢?(18)索引索引索引允許DBMS更快地訪問數(shù)據(jù)。這個索引對于給定列索引數(shù)值的時通知DBMS找到表中某一行,這有點象書的索引,它告訴你對于給定的字你能找到哪一頁。下面語句是為名字創(chuàng)建所以:CREATE INDEX NAME_IDX ON ANTIQUEOWNERS (OWNERLASTNAME, OWNERFIRSTNAME)。就象前面教程中,我們也可以drop(刪除)一個表。有些DBMS不強迫要求主鍵,換句話說就是,類的唯一性不會自動強制。好吧,再給你舉個例子,如果你象插入另外一行到AntiqueOwners表中,比如這個OwnerID是02,有些系統(tǒng)可以讓你這樣做即使我們要求所有行的數(shù)值都要是不同的。(19)DISTINCT和排除復(fù)制DISTINCT和排除復(fù)制假如你象列出所有買過古董的ID和名字,很明顯,你可能會將所有的顧客都列出來而沒有考慮有些顧客是買過多講古董的,所以這時你會發(fā)現(xiàn)有些數(shù)據(jù)是重復(fù)的。為了實現(xiàn)這個目的,你可以使用DISTINCT關(guān)鍵字。但是,你要考慮到Antiques表中的SellerID列是AntiqueOwners表的一個外碼,所以顧客只能在AntiqueOwners表列出ID和名字的行才被列出。為了防止復(fù)制的發(fā)生,我們還想將LastName以字母順序排列,然后在按字母順序排列FirstName最后排列OwnerID,因此我們還必須使用ORDER BY子句,具體語句如下:SELECT DISTINCT SELLERID, OWNERLASTNAME, OWNERFIRSTNAMEFROM ANTIQUES, ANTIQUEOWNERSWHERE SELLERID = OWNERIDORDER BY OWNERLASTNAME, OWNERFIRSTNAME, OWNERID在這個例子中,因為每個人都買都一個件古董,所以我們將Lasname以字母順序列出所有的古董擁有者。首先我們看一下一個查詢語句,它搜索所有已經(jīng)定貨的顧客的LastName以及他們定什么貨,語句如下:SELECT Last Name, Item OrderedFROM ORDERS ORD, ANTIQUEOWNERS OWNWHERE = AND IN(SELECT ITEMFROM ANTIQUES)。OWN amp。這樣做就避免了模棱兩可的情況,特別是在equijoin WHERE子句中當(dāng)兩個列都名為OwenerID的時候,而點號就通知SQL我們使用是兩個不同表的不同OwnerID。更為重要的,在WHERE子句中的AND強迫In子查詢被調(diào)用(= ANY or = SOME 都等價于使用IN)。然后,對于從Orders表列出的行,ItemDesired必須在從Antiques表中返回的Items列表中,然后在定貨可以有另外的擁有者填寫的情況下列出一個item。(21)更多的子查詢更多的子查詢我們可以使用在SELECT查詢語句中再包括一個SELECT子查詢語句。具體語句如下:SELECT OWNERIDFROM ANTIQUESWHERE PRICE (SELECT AVG(PRICE) + 100FROM ANTIQUES)。這里你可以使用DISTINCT OWNERID來排除復(fù)制的現(xiàn)象。這個子查詢返回了一系列的顧客,當(dāng)且僅當(dāng)物品擁有者的ID出現(xiàn)在子查詢的列表中,古董的擁有者的LastName才會顯示出來。John39。Bookcase39。上面的語句中的子查詢首先搜索買過bookcase的顧客的BuyerID,然后在外層的查詢中來更新他的FirstName。如果商店在處理Chair的時候,有個顧客想看看所有擁有者的列表,就可以使用EXSIST,語句如下:SELECT OWNERFIRSTNAME, OWNERLASTNAMEFROM ANTIQUEOWNERSWHERE EXISTS(SELECT *FROM ANTIQUESWHERE ITEM = 39。)。如果沒有搜索到Chair,則沒有行被返回,條件就為假。舉個例子來說明吧:SELECT BUYERID, ITEMFROM ANTIQUESWHERE PRICE = ALL(SELECT PRICEFROM ANTIQUES)。子查詢返回了Antiques表中的所有的Price列,而外層的查詢逐行查詢Antiques表,并且如果它的Price大于等于(或者ALL)列中的Prices,它就會被列出,它就是最好價格的Item。(23)UNION 和 外部連接UNION 和 外部連接有些時候,你可以想一起看多個查詢的結(jié)果、組合它們的輸出,你可以使用UNION關(guān)鍵字。這里要注意SQL要求SELECT的列表必須匹配,即列于數(shù)據(jù)類型匹配。同時還有一提的是,SQL但使用UNION的使用會進行自動復(fù)制排除。Outer Join(外部連接)通常是在JOIN查詢被聯(lián)合,而行沒有包括到JOIN中的時候使用,特別是在常量文本flags被包括的時候尤為有用。is in both Orders amp。FROM ORDERS, ANTIQUESWHERE OWNERID = BUYERIDUNIONSELECT BUYERID, 39。FROM ANTIQUESWHERE BUYERID NOT IN(SELECT OWNERIDFROM ORDERS)。這個UNION合并了這個列表以及以下第二個的列表。這可能是一種最容易的方法來產(chǎn)生這個列表。比如,在一個表中,主鍵是salesperson,而在其它的表中主鍵是customers,并且它們的salesperson列在相同的行。如果所有salespersons的列表要顯示出來,那么就要外部連接了。嵌入SQL允許程序連接數(shù)據(jù)庫并且包括SQL代碼到程序中,這樣在程序中就可以對數(shù)據(jù)庫進行使用、操作以及處理數(shù)據(jù)等等。嵌入SQL對于不同系統(tǒng)是不一樣的,所以在不同的系統(tǒng)中對以下的程序稍作修改,特別是變量的聲明以及過程記錄等。以下是詳細的代碼:include /* 以下這部分是聲明主機變量,它將使用于程序中*/EXEC SQL BEGIN DECLARE SECTION。char FirstName[100], LastName[100], Item[100]。/* 以下包括SQLCA變量,它可以用來進行錯誤檢查 */EXEC SQL INCLUDE SQLCA。/* 以下是連接數(shù)據(jù)庫并檢查是否有錯誤產(chǎn)生T */ if() {printf(Printer, Error connecting to database server.\n)。}printf(Connected to database server.\n)。它將在查詢結(jié)果多于一行的時候使用*/EXEC SQL DECLARE ItemCursor CURSOR FORSELECT ITEM, BUYERIDFROM ANTIQUESORDER BY ITEM。/* 你可以在這里還可以加入另外一些錯誤檢查的內(nèi)容,這里就省略了*//* 當(dāng)這個CURSOR沒有數(shù)據(jù), sqlcode將被產(chǎn)生以允許我們退出循環(huán)。*/EXEC SQL FETCH ItemCursor INTO :Item, :BuyerID。EXEC SQL SELECT OWNERFIRSTNAME, OWNERLASTNAMEINTO :FirstName, :LastNameFROM ANTIQUEOWNERSWHERE BUYERID = :BuyerID。EXEC SQL FETCH ItemCursor INTO :Item, :BuyerID。*/EXEC SQL CLOSE DataCursor。exi
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1