MySQL查詢語句大全集錦(經典珍藏)_第1頁
MySQL查詢語句大全集錦(經典珍藏)_第2頁
MySQL查詢語句大全集錦(經典珍藏)_第3頁
MySQL查詢語句大全集錦(經典珍藏)_第4頁
MySQL查詢語句大全集錦(經典珍藏)_第5頁
已閱讀5頁,還剩97頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

PAGESQL查詢語句大全集錦MYSQL查詢語句大全集錦1:使用SHOW語句找出在服務器上當前存在什么數據庫:mysql>SHOWDATABASES;2:2、創(chuàng)建一個數據庫MYSQLDATAmysql>CREATEDATABASEMYSQLDATA;3:選擇你所創(chuàng)建的數據庫mysql>USEMYSQLDATA;(按回車鍵出現Databasechanged時說明操作成功!)4:查看現在的數據庫中存在什么表mysql>SHOWTABLES;5:創(chuàng)建一個數據庫表mysql>CREATETABLEMYTABLE(nameVARCHAR(20),sexCHAR(1));6:顯示表的結構:mysql>DESCRIBEMYTABLE;7:往表中加入記錄mysql>insertintoMYTABLEvalues(”hyq”,”M”);8:用文本方式將數據裝入數據庫表中(例如D:/mysql.txt)mysql>LOADDATALOCALINFILE“D:/mysql.txt”INTOTABLEMYTABLE;9:導入.sql文件命令(例如D:/mysql.sql)mysql>usedatabase;mysql>sourced:/mysql.sql;10:刪除表mysql>dropTABLEMYTABLE;11:清空表mysql>deletefromMYTABLE;12:更新表中數據mysql>updateMYTABLEsetsex=”f”wherename=’hyq’;以下是無意中在網絡看到的使用MySql的管理心得,在windows中MySql以服務形式存在,在使用前應確保此服務已經啟動,未啟動可用netstartmysql命令啟動。而Linux中啟動時可用“/etc/rc.d/init.d/mysqldstart”命令,注意啟動者應具有管理員權限。剛安裝好的MySql包含一個含空密碼的root帳戶和一個匿名帳戶,這是很大的安全隱患,對于一些重要的應用我們應將安全性盡可能提高,在這里應把匿名帳戶刪除、root帳戶設置密碼,可用如下命令進行:usemysql;deletefromUserwhereUser=”";updateUsersetPassword=PASSWORD(’newpassword’)whereUser=’root’;如果要對用戶所用的登錄終端進行限制,可以更新User表中相應用戶的Host字段,在進行了以上更改后應重新啟動數據庫服務,此時登錄時可用如下類似命令:mysql-uroot-p;mysql-uroot-pnewpassword;mysqlmydb-uroot-p;mysqlmydb-uroot-pnewpassword;上面命令參數是常用參數的一部分,詳細情況可參考文檔。此處的mydb是要登錄的數據庫的名稱。在進行開發(fā)和實際應用中,用戶不應該只用root用戶進行連接數據庫,雖然使用root用戶進行測試時很方便,但會給系統(tǒng)帶來重大安全隱患,也不利于管理技術的提高。我們給一個應用中使用的用戶賦予最恰當的數據庫權限。如一個只進行數據插入的用戶不應賦予其刪除數據的權限。MySql的用戶管理是通過User表來實現的,添加新用戶常用的方法有兩個,一是在User表插入相應的數據行,同時設置相應的權限;二是通過GRANT命令創(chuàng)建具有某種權限的用戶。其中GRANT的常用用法如下:grantallonmydb.*toNewUserName@HostNameidentifiedby“password”;grantusageon*.*toNewUserName@HostNameidentifiedby“password”;grantselect,insert,updateonmydb.*toNewUserName@HostNameidentifiedby“password”;grantupdate,deleteonmydb.TestTabletoNewUserName@HostNameidentifiedby“password”;若要給此用戶賦予他在相應對象上的權限的管理能力,可在GRANT后面添加WITHGRANTOPTION選項。而對于用插入User表添加的用戶,Password字段應用PASSWORD函數進行更新加密,以防不軌之人竊看密碼。對于那些已經不用的用戶應給予清除,權限過界的用戶應及時回收權限,回收權限可以通過更新User表相應字段,也可以使用REVOKE操作。下面給出本人從其它資料()獲得的對常用權限的解釋:全局管理權限:FILE:在MySQL服務器上讀寫文件。PROCESS:顯示或殺死屬于其它用戶的服務線程。RELOAD:重載訪問控制表,刷新日志等。SHUTDOWN:關閉MySQL服務。數據庫/數據表/數據列權限:ALTER:修改已存在的數據表(例如增加/刪除列)和索引。CREATE:建立新的數據庫或數據表。DELETE:刪除表的記錄。DROP:刪除數據表或數據庫。INDEX:建立或刪除索引。INSERT:增加表的記錄。SELECT:顯示/搜索表的記錄。UPDATE:修改表中已存在的記錄。特別的權限:ALL:允許做任何事(和root一樣)。USAGE:只允許登錄–其它什么也不允許做。

一、簡單查詢

簡單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE子句。它們分別說明所查詢列、查詢的

表或視圖、以及搜索條件等。

例如,下面的語句查詢testtable表中姓名為“張三”的nickname字段和email字段。

復制內容到剪貼板

代碼:SELECT`nickname`,`email`FROM`testtable`WHERE`name`='張三'

(一)選擇列表

選擇列表(select_list)指出所查詢列,它可以是一組列名列表、星號、表達式、變量(包括局部變量和全局變量)等構成。

1、選擇所有列

例如,下面語句顯示testtable表中所有列的數據:

復制內容到剪貼板

代碼:SELECT*FROMtesttable

2、選擇部分列并指定它們的顯示次序

查詢結果集合中數據的排列順序與選擇列表中所指定的列名排列順序相同。

例如:

復制內容到剪貼板

代碼:SELECTnickname,emailFROMtesttable

3、更改列標題

在選擇列表中,可重新指定列標題。定義格式為:

列標題=列名

列名列標題

如果指定的列標題不是標準的標識符格式時,應使用引號定界符,例如,下列語句使用漢字顯示列

標題:

復制內容到剪貼板

代碼:SELECT昵稱=nickname,電子郵件=email

FROMtesttable

4、刪除重復行

SELECT語句中使用ALL或DISTINCT選項來顯示表中符合條件的所有行或刪除其中重復的數據行,默認

為ALL。使用DISTINCT選項時,對于所有重復的數據行在SELECT返回的結果集合中只保留一行。

5、限制返回的行數

使用TOPn[PERCENT]選項限制返回的數據行數,TOPn說明返回n行,而TOPnPERCENT時,說明n是

表示一百分數,指定返回的行數等于總行數的百分之幾。

例如:

復制內容到剪貼板

代碼:SELECTTOP2*FROM`testtable`

復制內容到剪貼板

代碼:SELECTTOP20PERCENT*FROM`testtable`

(二)FROM子句

FROM子句指定SELECT語句查詢及與查詢相關的表或視圖。在FROM子句中最多可指定256個表或視圖,

它們之間用逗號分隔。

在FROM子句同時指定多個表或視圖時,如果選擇列表中存在同名列,這時應使用對象名限定這些列

所屬的表或視圖。例如在usertable和citytable表中同時存在cityid列,在查詢兩個表中的cityid時應

使用下面語句格式加以限定:

復制內容到剪貼板

代碼:SELECT`username`,citytable.cityid

FROM`usertable`,`citytable`

WHEREusertable.cityid=citytable.cityid在FROM子句中可用以下兩種格式為表或視圖指定別名:

復制內容到剪貼板

代碼:表名as別名

表名別名例如上面語句可用表的別名格式表示為:

復制內容到剪貼板

代碼:SELECT`username`,b.cityid

FROMusertablea,citytableb

WHEREa.cityid=b.cityidSELECT不僅能從表或視圖中檢索數據,它還能夠從其它查詢語句所返回的結果集合中查詢數據。

例如:

復制內容到剪貼板

代碼:SELECTa.au_fname+a.au_lname

FROMauthorsa,titleauthorta

(SELECT`title_id`,`title`

FROM`titles`

WHERE`ytd_sales`>10000

)ASt

WHEREa.au_id=ta.au_id

ANDta.title_id=t.title_id此例中,將SELECT返回的結果集合給予一別名t,然后再從中檢索數據。

(三)使用WHERE子句設置查詢條件

WHERE子句設置查詢條件,過濾掉不需要的數據行。例如下面語句查詢年齡大于20的數據:

復制內容到剪貼板

代碼:SELECT*FROMusertableWHEREage>20WHERE子句可包括各種條件運算符:

比較運算符(大小比較):>、>=、=、、!>、!=10ANDage復制內容到剪貼板

代碼:SELECT*FROM`usertable`ORDERBY`age`DESC,`userid`ASC另外,可以根據表達式進行排序。

二、聯(lián)合查詢

UNION運算符可以將兩個或兩個以上上SELECT語句的查詢結果集合合并成一個結果集合顯示,即執(zhí)行聯(lián)

合查詢。

UNION的語法格式為:

復制內容到剪貼板

代碼:select_statement

UNION[ALL]selectstatement

[UNION[ALL]selectstatement][…n]其中selectstatement為待聯(lián)合的SELECT查詢語句。

ALL選項表示將所有行合并到結果集合中。不指定該項時,被聯(lián)合查詢結果集合中的重復行將只保留一行。

聯(lián)合查詢時,查詢結果的列標題為第一個查詢語句的列標題。因此,要定義列標題必須在第一個查詢語

句中定義。要對聯(lián)合查詢結果排序時,也必須使用第一查詢語句中的列名、列標題或者列序號。

在使用UNION運算符時,應保證每個聯(lián)合查詢語句的選擇列表中有相同數量的表達式,并且每個查詢選

擇表達式應具有相同的數據類型,或是可以自動將它們轉換為相同的數據類型。在自動轉換時,對于數值類

型,系統(tǒng)將低精度的數據類型轉換為高精度的數據類型。

在包括多個查詢的UNION語句中,其執(zhí)行順序是自左至右,使用括號可以改變這一執(zhí)行順序。例如:

查詢1UNION(查詢2UNION查詢3)

三、連接查詢

通過連接運算符可以實現多個表查詢。連接是關系數據庫模型的主要特點,也是它區(qū)別于其它類型數據庫管理系統(tǒng)的一個標志。

在關系數據庫管理系統(tǒng)中,表建立時各數據之間的關系不必確定,常把一個實體的所有信息存放在

一個表中。當檢索數據時,通過連接操作查詢出存放在多個表中的不同實體的信息。連接操作給用戶帶

來很大的靈活性,他們可以在任何時候增加新的數據類型。為不同實體創(chuàng)建新的表,爾后通過連接進行

查詢。

連接可以在SELECT語句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出連接時有助于

將連接操作與WHERE子句中的搜索條件區(qū)分開來。所以,在Transact-SQL中推薦使用這種方法。

SQL-92標準所定義的FROM子句的連接語法格式為:

代碼:FROMjoin_tablejoin_typejoin_table[ON(join_condition)]其中join_table指出參與連接操作的表名,連接可以對同一個表操作,也可以對多表操作,對同一個表操作的連接又稱做自連接。

join_type指出連接類型,可分為三種:內連接、外連接和交叉連接。

內連接(INNERJOIN)使用比較運算符進行表間某(些)列數據的比較操作,并列出這些表中與連接條件相匹配的數據行。根據所使用的比較方式不同,內連接又分為等值連接、自然連接和不等連接三種。

外連接分為左外連接(LEFTOUTERJOIN或LEFTJOIN)、右外連接(RIGHTOUTERJOIN或RIGHTJOIN)

和全外連接(FULLOUTERJOIN或FULLJOIN)三種。與內連接不同的是,外連接不只列出與連接條件相匹配的行,而是列出左表(左外連接時)、右表(右外連接時)或兩個表(全外連接時)中所有符合搜索條件的數據行。

交叉連接(CROSSJOIN)沒有WHERE子句,它返回連接表中所有數據行的笛卡爾積,其結果集合中的數據行數等于第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。

連接操作中的ON(join_condition)子句指出連接條件,它由被連接表中的列和比較運算符、邏輯運算符等構成。

無論哪種連接都不能對text、ntext和image數據類型列進行直接連接,但可以對這三種列進行間接連接。例如:

代碼:SELECTp1.pub_id,p2.pub_id,p1.pr_info

FROMpub_infoASp1INNERJOINpub_infoASp2

ONDATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)(一)內連接

內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。

內連接分三種:

1、等值連接:在連接條件中使用等于號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重復列。

2、不等連接:在連接條件使用除等于運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>、>=、、!。

3、自然連接:在連接條件中使用等于(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,并刪除連接表中的重復列。例,下面使用等值連接列出authors和publishers表中位于同一城市的作者和出版社:

代碼:SELECT*

FROMauthorsASaINNERJOINpublishersASp

ONa.city=p.city又如使用自然連接,在選擇列表中刪除authors和publishers表中重復列(city和state):

復制內容到剪貼板

代碼:SELECTa.*,p.pub_id,p.pub_name,p.country

FROMauthorsASaINNERJOINpublishersASp

ONa.city=p.city

(二)外連接內連接時,返回查詢結果集合中的僅是符合查詢條件(WHERE搜索條件或HAVING條件)和連接條件

的行。而采用外連接時,它返回到查詢結果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個邊接表(全外連接)中的所有數據行。如下面使用左外連接將論壇內容和作者信息連接起來:

代碼:SELECTa.*,b.*FROM`luntan`LEFTJOINusertableasb

ONa.username=b.username下面使用全外連接將city表中的所有作者以及user表中的所有作者,以及他們所在的城市:

代碼:SELECTa.*,b.*

FROMcityasaFULLOUTERJOINuserasb

ONa.username=b.username

(三)交叉連接

交叉連接不帶WHERE子句,它返回被連接的兩個表所有數據行的笛卡爾積,返回到結果集合中的數

據行數等于第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。

例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數將等

于6*8=48行。

代碼:SELECT`type`,`pub_name`

FROM`titles`CROSSJOIN`publishers`

ORDERBY`type`

SQL核心語句(非常實用的幾個技巧)

_ArticleContent1_lblContent>插入數據

向表中添加一個新記錄,你要使用SQLINSERT語句。這里有一個如何使用這種語句的例子:

代碼:INSERTmytable(mycolumn)VALUES(‘somedata’)這個語句把字符串’somedata’插入表mytable的mycolumn字段中。將要被插入數據的字段的名字在第一個括號中指定,實際的數據在第二個括號中給出。

INSERT語句的完整句法如下:

代碼:INSERT[INTO]{table_name|view_name}[(column_list)]{DEFAULTVALUES|

Values_list|select_statement}如果一個表有多個字段,通過把字段名和字段值用逗號隔開,你可以向所有的字段中插入數據。假設表mytable有三個字段first_column,second_column,和third_column。下面的INSERT語句添加了一條三個字段都有值的完整記錄:

代碼:INSERTmytable(first_column,second_column,third_column)

VALUES(‘somedata’,’somemoredata’,’yetmoredata’)注意

你可以使用INSERT語句向文本型字段中插入數據。但是,如果你需要輸入很長的字符串,你應該使用WRITETEXT語句。這部分內容對本書來說太高級了,因此不加討論。要了解更多的信息,請參考MicrosoftSQLSever的文檔。

如果你在INSERT語句中只指定兩個字段和數據會怎么樣呢?換句話說,你向一個表中插入一條新記錄,但有一個字段沒有提供數據。在這種情況下,有下面的四種可能:

如果該字段有一個缺省值,該值會被使用。例如,假設你插入新記錄時沒有給字段third_column提供數據,而這個字段有一個缺省值’somevalue’。在這種情況下,當新記錄建立時會插入值’somevalue’。

如果該字段可以接受空值,而且沒有缺省值,則會被插入空值。

如果該字段不能接受空值,而且沒有缺省值,就會出現錯誤。你會收到錯誤信息:

Thecolumnintablemytablemaynotbenull.

最后,如果該字段是一個標識字段,那么它會自動產生一個新值。當你向一個有標識字段的表中插入新記錄時,只要忽略該字段,標識字段會給自己賦一個新值。

注意

向一個有標識字段的表中插入新記錄后,你可以用SQL變量@@identity來訪問新記錄

的標識字段的值??紤]如下的SQL語句:

復制內容到剪貼板

代碼:INSERTmytable(first_column)VALUES(‘somevalue’)[code]

[code]INSERTanothertable(another_first,another_second)

VALUES(@@identity,’somevalue’)如果表mytable有一個標識字段,該字段的值會被插入表anothertable的another_first字段。這是因為變量@@identity總是保存最后一次插入標識字段的值。

字段another_first應該與字段first_column有相同的數據類型。但是,字段another_first不能是應該標識字段。Another_first字段用來保存字段first_column的值。

刪除記錄

要從表中刪除一個或多個記錄,需要使用SQLDELETE語句。你可以給DELETE語句提供WHERE子句。WHERE子句用來選擇要刪除的記錄。例如,下面的這個DELETE語句只刪除字段first_column的值等于’DeleteMe’的記錄:

代碼:DELETEmytableWHEREfirst_column=’DeltetMe’DELETE語句的完整句法如下:

復制內容到剪貼板

代碼:DELETE[FROM]{table_name|view_name}[WHEREclause]在SQLSELECT語句中可以使用的任何條件都可以在DELECT語句的WHERE子句中使用。例如,下面的這個DELETE語句只刪除那些first_column字段的值為’goodbye’或second_column字段的值為’solong’的記錄:

代碼:DELETEmytableWHEREfirst_column=’goodby’ORsecond_column=’solong’如果你不給DELETE語句提供WHERE子句,表中的所有記錄都將被刪除。你不應該有這種想法。如果你想刪除應該表中的所有記錄,應使用第十章所講的TRUNCATETABLE語句。

注意

為什么要用TRUNCATETABLE語句代替DELETE語句?當你使用TRUNCATETABLE語句時,記錄的刪除是不作記錄的。也就是說,這意味著TRUNCATETABLE要比DELETE快得多。

更新記錄

要修改表中已經存在的一條或多條記錄,應使用SQLUPDATE語句。同DELETE語句一樣,UPDATE語句可以使用WHERE子句來選擇更新特定的記錄。請看這個例子:

代碼:UPDATEmytableSETfirst_column=’Updated!’WHEREsecond_column=’UpdateMe!’這個UPDATE語句更新所有second_column字段的值為’UpdateMe!’的記錄。對所有被選中的記錄,字段first_column的值被置為’Updated!’。

下面是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}]]

[WHEREclause]注意

你可以對文本型字段使用UPDATE語句。但是,如果你需要更新很長的字符串,應使用UPDATETEXT語句。這部分內容對本書來說太高級了,因此不加討論。要了解更多的信息,請參考MicrosoftSQLSever的文檔。

如果你不提供WHERE子句,表中的所有記錄都將被更新。有時這是有用的。例如,如果你想把表titles中的所有書的價格加倍,你可以使用如下的UPDATE語句:

你也可以同時更新多個字段。例如,下面的UPDATE語句同時更新first_column,second_column,和third_column這三個字段:

代碼:UPDATEmytableSETfirst_column=’Updated!’

Second_column=’Updated!’

Third_column=’Updated!’

WHEREfirst_column=’UpdateMe1’技巧

SQL忽略語句中多余的空格。你可以把SQL語句寫成任何你最容易讀的格式。

用SELECT創(chuàng)建記錄和表

你也許已經注意到,INSERT語句與DELETE語句和UPDATE語句有一點不同,它一次只操作一個記錄。然而,有一個方法可以使INSERT語句一次添加多個記錄。要作到這一點,你需要把INSERT語句與SELECT語句結合起來,象這樣:

代碼:INSERTmytable(first_column,second_column)

SELECTanother_first,another_second

FROManothertable

WHEREanother_first=’CopyMe!’這個語句從anothertable拷貝記錄到mytable.只有表anothertable中字段another_first的值為’CopyMe!’的記錄才被拷貝。

當為一個表中的記錄建立備份時,這種形式的INSERT語句是非常有用的。在刪除一個表中的記錄之前,你可以先用這種方法把它們拷貝到另一個表中。

如果你需要拷貝整個表,你可以使用SELECTINTO語句。例如,下面的語句創(chuàng)建了一個名為newtable的新表,該表包含表mytable的所有數據:

代碼:SELECT*INTOnewtableFROMmytable你也可以指定只有特定的字段被用來創(chuàng)建這個新表。要做到這一點,只需在字段列表中指定你想要拷貝的字段。另外,你可以使用WHERE子句來限制拷貝到新表中的記錄。下面的例子只拷貝字段second_columnd的值等于’CopyMe!’的記錄的first_column字段。

代碼:SELECTfirst_columnINTOnewtable

FROMmytable

WHEREsecond_column=’CopyMe!’使用SQL修改已經建立的表是很困難的。例如,如果你向一個表中添加了一個字段,沒有容易的辦法來去除它。另外,如果你不小心把一個字段的數據類型給錯了,你將沒有辦法改變它。但是,使用本節(jié)中講述的SQL語句,你可以繞過這兩個問題。

例如,假設你想從一個表中刪除一個字段。使用SELECTINTO語句,你可以創(chuàng)建該表的一個拷貝,但不包含要刪除的字段。這使你既刪除了該字段,又保留了不想刪除的數據。

如果你想改變一個字段的數據類型,你可以創(chuàng)建一個包含正確數據類型字段的新表。創(chuàng)建好該表后,你就可以結合使用UPDATE語句和SELECT語句,把原來表中的所有數據拷貝到新表中。通過這種方法,你既可以修改表的結構,又能保存原有的數據。

_ArticleContent1_lblContent>插入數據

向表中添加一個新記錄,你要使用SQLINSERT語句。這里有一個如何使用這種語句的例子:

復制內容到剪貼板

代碼:INSERTmytable(mycolumn)VALUES(‘somedata’)這個語句把字符串’somedata’插入表mytable的mycolumn字段中。將要被插入數據的字段的名字在第一個括號中指定,實際的數據在第二個括號中給出。

INSERT語句的完整句法如下:

復制內容到剪貼板

代碼:INSERT[INTO]{table_name|view_name}[(column_list)]{DEFAULTVALUES|Values_list|select_statement}如果一個表有多個字段,通過把字段名和字段值用逗號隔開,你可以向所有的字段中插入數據。假設表mytable有三個字段first_column,second_column,和third_column。下面的INSERT語句添加了一條三個字段都有值的完整記錄:

復制內容到剪貼板

代碼:INSERTmytable(first_column,second_column,third_column)VALUES(‘somedata’,’somemoredata’,’yetmoredata’)

[code]

注意

你可以使用INSERT語句向文本型字段中插入數據。但是,如果你需要輸入很長的字符串,你應該使用WRITETEXT語句。這部分內容對本書來說太高級了,因此不加討論。要了解更多的信息,請參考MicrosoftSQLSever的文檔。

如果你在INSERT語句中只指定兩個字段和數據會怎么樣呢?換句話說,你向一個表中插入一條新記錄,但有一個字段沒有提供數據。在這種情況下,有下面的四種可能:

如果該字段有一個缺省值,該值會被使用。例如,假設你插入新記錄時沒有給字段third_column提供數據,而這個字段有一個缺省值’somevalue’。在這種情況下,當新記錄建立時會插入值’somevalue’。

如果該字段可以接受空值,而且沒有缺省值,則會被插入空值。

如果該字段不能接受空值,而且沒有缺省值,就會出現錯誤。你會收到錯誤信息:

Thecolumnintablemytablemaynotbenull.

最后,如果該字段是一個標識字段,那么它會自動產生一個新值。當你向一個有標識字段的表中插入新記錄時,只要忽略該字段,標識字段會給自己賦一個新值。

注意

向一個有標識字段的表中插入新記錄后,你可以用SQL變量@@identity來訪問新記錄

的標識字段的值??紤]如下的SQL語句:

[code]INSERTmytable(first_column)VALUES(‘somevalue’)

復制內容到剪貼板

代碼:INSERTanothertable(another_first,another_second)VALUES(@@identity,’somevalue’)如果表mytable有一個標識字段,該字段的值會被插入表anothertable的another_first字段。這是因為變量@@identity總是保存最后一次插入標識字段的值。

字段another_first應該與字段first_column有相同的數據類型。但是,字段another_first不能是應該標識字段。Another_first字段用來保存字段first_column的值。

刪除記錄

要從表中刪除一個或多個記錄,需要使用SQLDELETE語句。你可以給DELETE語句提供WHERE子句。WHERE子句用來選擇要刪除的記錄。例如,下面的這個DELETE語句只刪除字段first_column的值等于’DeleteMe’的記錄:

復制內容到剪貼板

代碼:DELETEmytableWHEREfirst_column=’DeltetMe’DELETE語句的完整句法如下:

復制內容到剪貼板

代碼:DELETE[FROM]{table_name|view_name}[WHEREclause]在SQLSELECT語句中可以使用的任何條件都可以在DELECT語句的WHERE子句中使用。例如,下面的這個DELETE語句只刪除那些first_column字段的值為’goodbye’或second_column字段的值為’solong’的記錄:

復制內容到剪貼板

代碼:DELETEmytableWHEREfirst_column=’goodby’ORsecond_column=’solong’如果你不給DELETE語句提供WHERE子句,表中的所有記錄都將被刪除。你不應該有這種想法。如果你想刪除應該表中的所有記錄,應使用第十章所講的TRUNCATETABLE語句。

注意

為什么要用TRUNCATETABLE語句代替DELETE語句?當你使用TRUNCATETABLE語句時,記錄的刪除是不作記錄的。也就是說,這意味著TRUNCATETABLE要比DELETE快得多。

更新記錄

要修改表中已經存在的一條或多條記錄,應使用SQLUPDATE語句。同DELETE語句一樣,UPDATE語句可以使用WHERE子句來選擇更新特定的記錄。請看這個例子:

復制內容到剪貼板

代碼:UPDATEmytableSETfirst_column=’Updated!’WHEREsecond_column=’UpdateMe!’這個UPDATE語句更新所有second_column字段的值為’UpdateMe!’的記錄。對所有被選中的記錄,字段first_column的值被置為’Updated!’。

下面是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}]]

[WHEREclause]注意

你可以對文本型字段使用UPDATE語句。但是,如果你需要更新很長的字符串,應使用UPDATETEXT語句。這部分內容對本書來說太高級了,因此不加討論。要了解更多的信息,請參考MicrosoftSQLSever的文檔。

如果你不提供WHERE子句,表中的所有記錄都將被更新。有時這是有用的。例如,如果你想把表titles中的所有書的價格加倍,你可以使用如下的UPDATE語句:

你也可以同時更新多個字段。例如,下面的UPDATE語句同時更新first_column,second_column,和third_column這三個字段:

復制內容到剪貼板

代碼:UPDATEmytableSETfirst_column=’Updated!’

Second_column=’Updated!’

Third_column=’Updated!’

WHEREfirst_column=’UpdateMe1’技巧

SQL忽略語句中多余的空格。你可以把SQL語句寫成任何你最容易讀的格式。

用SELECT創(chuàng)建記錄和表

你也許已經注意到,INSERT語句與DELETE語句和UPDATE語句有一點不同,它一次只操作一個記錄。然而,有一個方法可以使INSERT語句一次添加多個記錄。要作到這一點,你需要把INSERT語句與SELECT語句結合起來,象這樣:

復制內容到剪貼板

代碼:INSERTmytable(first_column,second_column)

SELECTanother_first,another_second

FROManothertable

WHEREanother_first=’CopyMe!’這個語句從anothertable拷貝記錄到mytable.只有表anothertable中字段another_first的值為’CopyMe!’的記錄才被拷貝。

當為一個表中的記錄建立備份時,這種形式的INSERT語句是非常有用的。在刪除一個表中的記錄之前,你可以先用這種方法把它們拷貝到另一個表中。

如果你需要拷貝整個表,你可以使用SELECTINTO語句。例如,下面的語句創(chuàng)建了一個名為newtable的新表,該表包含表mytable的所有數據:

復制內容到剪貼板

代碼:SELECT*INTOnewtableFROMmytable你也可以指定只有特定的字段被用來創(chuàng)建這個新表。要做到這一點,只需在字段列表中指定你想要拷貝的字段。另外,你可以使用WHERE子句來限制拷貝到新表中的記錄。下面的例子只拷貝字段second_columnd的值等于’CopyMe!’的記錄的first_column字段。

復制內容到剪貼板

代碼:SELECTfirst_columnINTOnewtable

FROMmytable

WHEREsecond_column=’CopyMe!’使用SQL修改已經建立的表是很困難的。例如,如果你向一個表中添加了一個字段,沒有容易的辦法來去除它。另外,如果你不小心把一個字段的數據類型給錯了,你將沒有辦法改變它。但是,使用本節(jié)中講述的SQL語句,你可以繞過這兩個問題。

例如,假設你想從一個表中刪除一個字段。使用SELECTINTO語句,你可以創(chuàng)建該表的一個拷貝,但不包含要刪除的字段。這使你既刪除了該字段,又保留了不想刪除的數據。

如果你想改變一個字段的數據類型,你可以創(chuàng)建一個包含正確數據類型字段的新表。創(chuàng)建好該表后,你就可以結合使用UPDATE語句和SELECT語句,把原來表中的所有數據拷貝到新表中。通過這種方法,你既可以修改表的結構,又能保存原有的數據。SQL語法,SQL語句大全,SQL基礎SQL語法參考手冊(SQL)/數據類型

2006-07-2407:42

《SQL語法參考手冊(SQL)》

DB2提供了關連式資料庫的查詢語言SQL(StructuredQueryLanguage),是一種非??谡Z化、既易學又易懂的語法。此一語言幾乎是每個資料庫系統(tǒng)都必須提供的,用以表示關連式的*作,包含了資料的定義(DDL)以及資料的處理(DML)。SQL原來拼成SEQUEL,這語言的原型以“系統(tǒng)R“的名字在IBM圣荷西實驗室完成,經過IBM內部及其他的許多使用性及效率測試,其結果相當令人滿意,并決定在系統(tǒng)R的技術基礎發(fā)展出來IBM的產品。而且美國國家標準學會(ANSI)及國際標準化組織(ISO)在1987遵循一個幾乎是以IBMSQL為基礎的標準關連式資料語言定義。

一、資料定義DDL(DataDefinitionLanguage)

資料定語言是指對資料的格式和形態(tài)下定義的語言,他是每個資料庫要建立時候時首先要面對的,舉凡資料分哪些表格關系、表格內的有什麼欄位主鍵、表格和表格之間互相參考的關系等等,都是在開始的時候所必須規(guī)劃好的。

1、建表格:

CreateTABLEtable_name(

column1DATATYPE[NOTNULL][NOTNULLPRIMARYKEY],

column2DATATYPE[NOTNULL],

...)

說明:

DATATYPE--是資料的格式,詳見表。

NUTNULL--可不可以允許資料有空的(尚未有資料填入)。

PRIMARYKEY--是本表的主鍵。

2、更改表格

AlterTABLEtable_name

ADDCOLUMNcolumn_nameDATATYPE

說明:增加一個欄位(沒有刪除某個欄位的語法。

AlterTABLEtable_name

ADDPRIMARYKEY(column_name)

說明:更改表得的定義把某個欄位設為主鍵。

AlterTABLEtable_name

DropPRIMARYKEY(column_name)

說明:把主鍵的定義刪除。

3、建立索引

CreateINDEXindex_nameONtable_name(column_name)

說明:對某個表格的欄位建立索引以增加查詢時的速度。

4、刪除

Droptable_name

Dropindex_name

二、的資料形態(tài)DATATYPEs

smallint

16位元的整數。

interger

32位元的整數。

decimal(p,s)

p精確值和s大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數

點後有幾位數。如果沒有特別指定,則系統(tǒng)會設為p=5;s=0。

float

32位元的實數。

double

64位元的實數。

char(n)

n長度的字串,n不能超過254。

varchar(n)

長度不固定且其最大長度為n的字串,n不能超過4000。

graphic(n)

和char(n)一樣,不過其單位是兩個字元double-bytes,n不能超過127。這個形態(tài)是為

了支援兩個字元長度的字體,例如中文字。

vargraphic(n)

可變長度且其最大長度為n的雙字元字串,n不能超過2000。

date

包含了年份、月份、日期。

time

包含了小時、分鐘、秒。

timestamp

包含了年、月、日、時、分、秒、千分之一秒。

三、資料*作DML(DataManipulationLanguage)

資料定義好之後接下來的就是資料的*作。資料的*作不外乎增加資料(insert)、查詢資料(query)、更改資料(update)、刪除資料(delete)四種模式,以下分別介紹他們的語法:

1、增加資料:

InsertINTOtable_name(column1,column2,...)

valueS(value1,value2,...)

說明:

1.若沒有指定column系統(tǒng)則會按表格內的欄位順序填入資料。

2.欄位的資料形態(tài)和所填入的資料必須吻合。

3.table_name也可以是景觀view_name。

InsertINTOtable_name(column1,column2,...)

Selectcolumnx,columny,...FROManother_table

說明:也可以經過一個子查詢(subquery)把別的表格的資料填入。

2、查詢資料:

基本查詢

Selectcolumn1,columns2,...

FROMtable_name

說明:把table_name的特定欄位資料全部列出來

Select*

FROMtable_name

Wherecolumn1=xxx

[ANDcolumn2〉yyy][ORcolumn3〈〉zzz]

說明:

1.’*’表示全部的欄位都列出來。

2.Where之後是接條件式,把符合條件的資料列出來。

Selectcolumn1,column2

FROMtable_name

orDERBYcolumn2[DESC]

說明:ORDERBY是指定以某個欄位做排序,[DESC]是指從大到小排列,若沒有指明,則是從小到大

排列

組合查詢

組合查詢是指所查詢得資料來源并不只有單一的表格,而是聯(lián)合一個以上的

表格才能夠得到結果的。

Select*

FROMtable1,table2

Wheretable1.colum1=table2.column1

說明:

1.查詢兩個表格中其中column1值相同的資料。

2.當然兩個表格相互比較的欄位,其資料形態(tài)必須相同。

3.一個復雜的查詢其動用到的表格可能會很多個。

整合性的查詢:

SelectCOUNT(*)

FROMtable_name

Wherecolumn_name=xxx

說明:

查詢符合條件的資料共有幾筆。

SelectSUM(column1)

FROMtable_name

說明:

1.計算出總和,所選的欄位必須是可數的數字形態(tài)。

2.除此以外還有AVG()是計算平均、MAX()、MIN()計算最大最小值的整合性查詢。

Selectcolumn1,AVG(column2)

FROMtable_name

GROUPBYcolumn1

HAVINGAVG(column2)〉xxx

說明:

1.GROUPBY:以column1為一組計算column2的平均值必須和AVG、SUM等整合性查詢的關鍵字

一起使用。

2.HAVING:必須和GROUPBY一起使用作為整合性的限制。

復合性的查詢

Select*

FROMtable_name1

WhereEXISTS(

Select*

FROMtable_name2

Whereconditions)

說明:

1.Where的conditions可以是另外一個的query。

2.EXISTS在此是指存在與否。

Select*

FROMtable_name1

Wherecolumn1IN(

Selectcolumn1

FROMtable_name2

Whereconditions)

說明:

1.IN後面接的是一個集合,表示column1存在集合里面。

2.Select出來的資料形態(tài)必須符合column1。

其他查詢

Select*

FROMtable_name1

Wherecolumn1LIKE’x%’

說明:LIKE必須和後面的’x%’相呼應表示以x為開頭的字串。

Select*

FROMtable_name1

Wherecolumn1IN(’xxx’,’yyy’,..)

說明:IN後面接的是一個集合,表示column1存在集合里面。

Select*

FROMtable_name1

Wherecolumn1BETWEENxxANDyy

說明:BETWEEN表示column1的值介於xx和yy之間。

3、更改資料:

Updatetable_name

SETcolumn1=’xxx’

Whereconditoins

說明:

1.更改某個欄位設定其值為’xxx’。

2.conditions是所要符合的條件、若沒有Where則整個table的那個欄位都會全部被更改。

4、刪除資料:

DeleteFROMtable_name

Whereconditions

說明:刪除符合條件的資料。

說明:關于Where條件后面如果包含有日期的比較,不同數據庫有不同的表達式。具體如下:

(1)如果是ACCESS數據庫,則為:Wheremydate〉#2000-01-01#

(2)如果是ORACLE數據庫,則為:Wheremydate〉cast(’2000-01-01’asdate)

或:Wheremydate〉to_date(’2000-01-01’,’yyyy-mm-dd’)

在Delphi中寫成:

thedate=’2000-01-01’;

query1.SQL.add(’select*fromabcwheremydate〉cast(’+’’’’+thedate+’’’’+’asdate)’);

如果比較日期時間型,則為:

Wheremydatetime〉to_date(’2000-01-0110:00:01’,’yyyy-mm-ddhh24:mi:ss’)

Recordset對象一些有用的屬性"/〉引用來自增加一個:Recordset對象一些有用的屬性

rs.CursorType=

rs.CursorLocation=

rs.LockType=

rs.CacheSize=

rs.Pagesize=

rs.Pagecount=

rs.RecordCount=

’’CursorTypeValues

ConstadOpenForwardOnly=0僅向前

ConstadOpenKeyset=1鍵集游標

ConstadOpenDynamic=2動態(tài)游標

ConstadOpenStatic=3靜態(tài)游標

’’LockTypeValues

ConstadLockReadOnly=1默認值,只讀

ConstadLockPessimistic=2保守式記錄鎖定

ConstadLockOptimistic=3開放式記錄鎖定,只在調用Update方法時鎖定記錄

ConstadLockBatchOptimistic=4開放式批更新

’’CursorLocationValues

ConstadUseServer=2

ConstadUseClient=3

Setrs=Server.CreateObject("ADODB.Rrecordset")

rs.Open.sqlst,conn,1,1’讀取

rs.Opensqlst,conn,1,2’新增,修改,或刪除)

下一頁:《SQLSERVER的數據類型》

〉〉〉我想分頁!--這么長的文章,在這里來個分頁多好??!哈哈〈〈〈

《SQLSERVER的數據類型》

1.SQLSERVER的數據類型

數據類弄是數據的一種屬性,表示數據所表示信息的類型。任何一種計算機語言都定義了自己的數據類型。當然,不同的程序語言都具有不同的特點,所定義的數據類型的各類和名稱都或多或少有些不同。SQLServer提供了25種數據類型:

·Binary[(n)]

·Varbinary[(n)]

·Char[(n)]

·Varchar[(n)]

·Nchar[(n)]

·Nvarchar[(n)]

·Datetime

·Smalldatetime

·Decimal[(p[,s])]

·Numeric[(p[,s])]

·Float[(n)]

·Real

·Int

·Smallint

·Tinyint

·Money

·Smallmoney

·Bit

·Cursor

·Sysname

·Timestamp

·Uniqueidentifier

·Text

·Image

·Ntext

(1)二進制數據類型

二進制數據包括Binary、Varbinary和Image

Binary數據類型既可以是固定長度的(Binary),也可以是變長度的。

Binary[(n)]是n位固定的二進制數據。其中,n的取值范圍是從1到8000。其存儲窨的大小是n+4個字節(jié)。

Varbinary[(n)]是n位變長度的二進制數據。其中,n的取值范圍是從1到8000。其存儲窨的大小是n+4個字節(jié),不是n個字節(jié)。

在Image數據類型中存儲的數據是以位字符串存儲的,不是由SQLServer解釋的,必須由應用程序來解釋。例如,應用程序可以使用BMP、TIEF、GIF和JPEG格式把數據存儲在Image數據類型中。

(2)字符數據類型

字符數據的類型包括Char,Varchar和Text

字符數據是由任何字母、符號和數字任意組合而成的數據。

Varchar是變長字符數據,其長度不超過8KB。Char是定長字符數據,其長度最多為8KB。超過8KB的ASCII數據可以使用Text數據類型存儲。例如,因為Html文檔全部都是ASCII字符,并且在一般情況下長度超過8KB,所以這些文檔可以Text數據類型存儲在SQLServer中。

(3)Unicode數據類型

Unicode數據類型包括Nchar,Nvarchar和Ntext

在MicrosoftSQLServer中,傳統(tǒng)的非Unicode數據類型允許使用由特定字符集定義的字符。在SQLServer安裝過程中,允許選擇一種字符集。使用Unicode數據類型,列中可以存儲任何由Unicode標準定義的字符。在Unicode標準中,包括了以各種字符集定義的全部字符。使用Unicode數據類型,所戰(zhàn)勝的窨是使用非Unicode數據類型所占用的窨大小的兩倍。

在SQLServer中,Unicode數據以Nchar、Nvarchar和Ntext數據類型存儲。使用這種字符類型存儲的列可以存儲多個字符集中的字符。當列的長度變化時,應該使用Nvarchar字符類型,這時最多可以存儲4000個字符。當列的長度固定不變時,應該使用Nchar字符類型,同樣,這時最多可以存儲4000個字符。當使用Ntext數據類型時,該列可以存儲多于4000個字符。

(4)日期和時間數據類型

日期和時間數據類型包括Datetime和Smalldatetime兩種類型

日期和時間數據類型由有效的日期和時間組成。例如,有效的日期和時間數據包括“4/01/9812:15:00:00:00PM”和“1:28:29:15:01AM8/17/98”。前一個數據類型是日期在前,時間在后一個數據類型是霎時間在前,日期在后。在MicrosoftSQLServer中,日期和時間數據類型包括Datetime和Smalldatetime兩種類型時,所存儲的日期范圍是從1753年1月1日開始,到9999年12月31日結束(每一個值要求8個存儲字節(jié))。使用Smalldatetime數據類型時,所存儲的日期范圍是1900年1月1日開始,到2079年12月31日結束(每一個值要求4個存儲字節(jié))。

日期的格式可以設定。設置日期格式的命令如下:

SetDateFormat{format|@format_var|

其中,format|@format_var是日期的順序。有效的參數包括MDY、DMY、YMD、YDM、MYD和DYM。在默認情況下,日期格式為MDY。

例如,當執(zhí)行SetDateFormatYMD之后,日期的格式為年月日形式;當執(zhí)行SetDateFormatDMY之后,日期的格式為日月有年形式

(5)數字數據類型

數字數據只包含數字。數字數據類型包括正數和負數、小數(浮點數)和整數

整數由正整數和負整數組成,例如39、25、0-2和33967。在MicrsoftSQLServer中,整數存儲的數據類型是Int,Smallint和Tinyint。Int數據類型存儲數據的范圍大于Smallint數據類型存儲數據的范圍,而Smallint據類型存儲數據的范圍大于Tinyint數據類型存儲數據的范圍。使用Int數據狗昔存儲數據的范圍是從-2147483648到2147483647(每一個值要求4個字節(jié)存儲空間)。使用Smallint數據類型時,存儲數據的范圍從-32768到32767(每一個值要求2個字節(jié)存儲空間)。使用Tinyint數據類型時,存儲數據的范圍是從0到255(每一個值要求1個字節(jié)存儲空間)。

精確小婁數據在SQLServer中的數據類型是Decimal和Numeric。這種數據所占的存儲空間根據該數據的位數后的位數來確定。

在SQLServer中,近似小數數據的數據類型是Float和Real。例如,三分之一這個分數記作。3333333,當使用近似數據類型時能準確表示。因此,從系統(tǒng)中檢索到的數據可能與存儲在該列中數據不完全一樣。

(6)貨幣數據表示正的或者負的貨幣數量。

在MicrosoftSQLServer中,貨幣數據的數據類型是Money和Smallmoney

Money數據類型要求8個存儲字節(jié),Smallmoney數據類型要求4個存儲字節(jié)。

(7)特殊數據類型

特殊數據類型包括前面沒有提過的數據類型。特殊的數據類型有3種,即Timestamp、Bit和Uniqueidentifier。

Timestamp用于表示SQLServer活動的先后順序,以二進投影的格式表示。Timestamp數據與插入數據或者日期和時間沒有關系。

Bit由1或者0組成。當表示真或者假、ON或者OFF時,使用Bit數據類型。例如,詢問是否是每一次訪問的客戶機請求可以存儲在這種數據類型的列中。

Uniqueidentifier由16字節(jié)的十六進制數字組成,表示一個全局唯一的。當表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標識號列使用這種數據類型可以區(qū)別不同的客戶。

2.用戶定義的數據類型

用戶定義的數據類型基于在MicrosoftSQLServer中提供的數據類型。當幾個表中必須存儲同一種數據類型時,并且為保證這些列有相同的數據類型、長度和可空性時,可以使用用戶定義的數據類型。例如,可定義一種稱為postal_code的數據類型,它基于Char數據類型。

當創(chuàng)建用戶定義的數據類型時,必須提供三個數:數據類型的名稱、所基于的系統(tǒng)數據類型和數據類型的可空性。

(1)創(chuàng)建用戶定義的數據類型

創(chuàng)建用戶定義的數據類型可以使用Transact-SQL語句。系統(tǒng)存儲過程sp_addtype可以來創(chuàng)建用戶定義的數據類型。其語法形式如下:

sp_addtype{type},[,system_data_bype][,’null_type’]

其中,type是用戶定義的數據類型的名稱。system_data_type是系統(tǒng)提供的數據類型,例如Decimal、Int、Char等等。null_type表示該數據類型是如何處理空值的,必須使用單引號引起來,例如’NULL’、’NOTNULL’或者’NONULL’。

例子:

Usecust

Execsp_addtypessn,’Varchar(11)’,"NotNull’

創(chuàng)建一個用戶定義的數據類型ssn,其基于的系統(tǒng)數據類型是變長為11的字符,不允許空。

例子:

Usecust

Execsp_addtypebirthday,datetime,’Null’

創(chuàng)建一個用戶定義的數據類型birthday,其基于的系統(tǒng)數據類型是DateTime,允許空。

例子:

Usemaster

Execsp_addtypetelephone,’varchar(24),’NotNull’

Eexcsp_addtypefax,’varchar(24)’,’Null’

創(chuàng)建兩個數據類型,即telephone和fax

(2)刪除用戶定義的數據類型

當用戶定義的數據類型不需要時,可刪除。刪除用戶定義的數據類型的命令是sp_droptype{’type’}。

例子:

Usemaster

Execsp_droptype’ssn’

注意:當表中的列還正在使用用戶定義的數據類型時,或者在其上面還綁定有默認或者規(guī)則時,這種用戶定義的數據類型不能刪除。

以下為SQLSERVER7.0以上版本的字段類型說明。SQLSERVER6.5的字段類型說明請參考SQLSERVER提供的說明。

字段類型描述

bit0或1的整型數字

int從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數字

smallint從-2^15(-32,768)到2^15(32,767)的整型數字

tinyint從0到255的整型數字

decimal從-10^38到10^38-1的定精度與有效位數的數字

numericdecimal的同義詞

money從-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的貨幣數據,最小貨幣單位千分之十

smallmoney從-214,748.3648到214,748.3647的貨幣數據,最小貨幣單位千分之十

float從-1.79E+308到1.79E+308可變精度的數字

real從-3.04E+38到3.04E+38可變精度的數字

datetime從1753年1月1日到9999年12日31的日期和時間數據,最小時間單位為百分之三秒或3.33毫秒

smalldatetime從1900年1月1日到2079年6月6日的日期和時間數據,最小時間單位為分鐘

timestamp時間戳,一個數據庫寬度的唯一數字

uniqueidentifier全球唯一標識符GUID

char定長非Unicode的字符型數據,最大長度為8000

varchar變長非Unicode的字符型數據,最大長度為8000

text變長非Unicode的字符型數據,最大長度為2^31-1(2G)

nchar定長Unicode的字符型數據,最大長度為8000

nvarchar變長Unicode的字符型數據,最大長度為8000

ntext變長Unicode的字符型數據,最大長度為2^31-1(2G)

binary定長二進制數據,最大長度為8000

varbinary變長二進制數據,最大長度為8000

image變長二進制數據,最大長度為2^31-1(2G)

〉〉〉我想分頁!--這么長的文章,在這里來個分頁多好?。」础础?/p>

《SQL語句的基本語法》

一.Select語句的完整語法為:

Select[ALL|DISTINCT|DISTINCTROW|TOP]

{*|talbe.*|[table.]field1[ASalias1][,[table.]field2[ASalias2][,…]]}

FROMtableexpression[,…][INexternaldatabase]

[Where…]

[GROUPBY…]

[HAVING…]

[ORDERBY…]

[WITHOWNERACCESSOPTION]

說明:

用中括號([])括起來的部分表示是可選的,用大括號({})括起來的部分是表示必須從中選擇其中的一個。

1FROM子句

FROM子句指定了Select語句中字段的來源。FROM子句后面是包含一個或多個的表達式(由逗號分開),其中的表達式可為單一表名稱、已保存的查詢或由INNERJOIN、LEFTJOIN或RIGHTJOIN得到的復合結果。如果表或查詢存儲在外部數據庫,在IN子句之后指明其完整路徑。

例:下列SQL語句返回所有有定單的客戶:

SelectorderID,Customer.customerID

FROMordersCustomers

Whereorders.CustomerID=Customers.CustomeersID

2ALL、DISTINCT、DISTINCTROW、TO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論