MYSQL使用手冊(cè)資料_第1頁
MYSQL使用手冊(cè)資料_第2頁
MYSQL使用手冊(cè)資料_第3頁
MYSQL使用手冊(cè)資料_第4頁
MYSQL使用手冊(cè)資料_第5頁
已閱讀5頁,還剩79頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1:使用SHOW語句找出在效勞器上當(dāng)前存在什么數(shù)據(jù)庫:

mysql>SHOWDATABASES;

2:創(chuàng)立一個(gè)數(shù)據(jù)庫MYSQLDATA

mysql>CREATEDATABASEMYSQLDATA;

3:選擇你所創(chuàng)立的數(shù)據(jù)庫

mysql>USEMYSQLDATA;(按回車鍵出現(xiàn)Databasechanged時(shí)

說明操作成功!)

4:查看現(xiàn)在的數(shù)據(jù)庫中存在什么表

mysql>SHOWTABLES;

5:創(chuàng)立一個(gè)數(shù)據(jù)庫表

mysql>CREATETABLEMYTABLE(nameVARCHAR(20),sex

CHAR(l));

6:顯示表的構(gòu)造:

mysql>DESCRIBEMYTABLE;

7彳主表中參加記錄

mysql>insertintoMYTABLEvalues("hyq":M");

8:用文本方式梯攵據(jù)裝入數(shù)據(jù)庫表中〔例如D:/mysql.txt]

mysql>LOADDATALOCALINFILE"D:/mysql.txt〃INTO

TABLEMYTABLE;

9:導(dǎo)入.sql文件命令〔例如D:/mysql.sql]

mysql>usedatabase;

mysql>sourced:/mysql.sql;

10刪除表

mysql>dropTABLEMYTABLE;

11?港六豐

■L’./月工衣

mysql>deletefromMYTABLE;

12:更新表中數(shù)據(jù)

mysql>updateMYTABLEsetsex=*Twherename=zhyq';

以下是無意中在網(wǎng)絡(luò)看到的使用MySql的管理心得,

在windows中MySql以效勞形式存在,在使用前應(yīng)確保此效勞已

經(jīng)啟動(dòng),未啟動(dòng)可用netstartmysql命令啟動(dòng)。而Linux中啟動(dòng)時(shí)

可用7etc/rc.d/init.d/mysqIdstart"命令,注意啟動(dòng)者應(yīng)具有管

理員權(quán)限。

剛安裝好的MySql包含一個(gè)含空密碼的root帳戶和一個(gè)匿名帳戶,

這是很大的平安隱患,對(duì)于一些重要的應(yīng)用我們應(yīng)將平安性盡可能提

高,在這里應(yīng)把匿名帳戶刪除、root帳戶設(shè)置密碼,可用如下命令

進(jìn)展:

usemysql;

deletefromUserwhereUser="

updateUsersetPassword=PASSWORDfnewpassword,)

whereUser=,roof;

如果要對(duì)用戶所用的登錄終端進(jìn)展限制,可以更新User表中相應(yīng)用

戶的Host字段,在進(jìn)展了以上更改后應(yīng)重新啟動(dòng)數(shù)據(jù)庫效勞,此時(shí)

登錄時(shí)可用如下類似命令:

mysql-uroot-p;

mysql-uroot-pnewpassword;

mysqlmydb-uroot-p;

mysqlmydb-uroot-pnewpassword;

上面命令參數(shù)是常用參數(shù)的一局部,詳細(xì)情況可參考文檔。此處的

mydb是要登錄的數(shù)據(jù)庫的名稱。

在進(jìn)展開發(fā)和實(shí)際應(yīng)用中,用戶不應(yīng)該只用root用戶進(jìn)展連接數(shù)據(jù)

庫,雖然使用root用戶進(jìn)展測(cè)試時(shí)很方便,但會(huì)給系統(tǒng)帶來重大平

安隱患,也不利于管理技術(shù)的提高。我們給一個(gè)應(yīng)用中使用的用戶

賦予最恰當(dāng)?shù)臄?shù)據(jù)庫權(quán)限。如一個(gè)只進(jìn)展數(shù)據(jù)插入的用戶不應(yīng)賦予其

刪除數(shù)據(jù)的權(quán)限。MySql的用戶管理是通過User■表來實(shí)現(xiàn)的,添力口

新用戶常用的方法有兩個(gè),一是在User表插入相應(yīng)的數(shù)據(jù)行,同時(shí)

設(shè)置相應(yīng)的權(quán)限;二是通過GRANT命令創(chuàng)立具有某種權(quán)限的用戶。

其中GRANT的常用用法如下:

grantallonmydb.*toNewUserName@HostNameidentified

bynpassword*;

grantusageon*.*toNewUserName@HostNameidentifiedby

“password”;

grantselect,insert,updateonmydb.*to

NewUserName@HostNameidentifiedby“password”;

grantupdate,deleteonmydb.TestTableto

NewUserName@HostNameidentifiedby“password”;

假設(shè)要給此用戶賦予他在相應(yīng)對(duì)象上的權(quán)限的管理能力,可在

GRANT后面添加WITHGRANTOPTION選項(xiàng)。而對(duì)于用插入U(xiǎn)ser

表添加的用戶,Password字段應(yīng)用PASSWORD函數(shù)進(jìn)展更新加

密,以防不軌之人竊看密碼。對(duì)于那些已經(jīng)不用的用戶應(yīng)給予去除,

權(quán)限過界的用戶應(yīng)及時(shí)回收權(quán)限,回收權(quán)限可以通過更新User表相

應(yīng)字段,也可以使用REVOKE操作。

下面給出本人從其它資料(cn-java)獲得的對(duì)常用權(quán)限的解

釋:

全局管理權(quán)限:

FILE:在MySQL效勞器上讀寫文件。

PROCESS:顯示或殺死屬于其它用戶的效勞線程。

RELOAD:重載訪問控制表,刷新日志等。

SHUTDOWN:關(guān)閉MySQL效勞。

數(shù)據(jù)庫/數(shù)據(jù)表/數(shù)據(jù)列權(quán)限:

ALTER:修改已存在的數(shù)據(jù)表(例如增加/刪除列)和索引。

CREATE:建立新的數(shù)據(jù)庫或數(shù)據(jù)表。

DELETE:刪除表的記錄。

DROP:刪除數(shù)據(jù)表或數(shù)據(jù)庫。

INDEX:建立或刪除索引。

INSERT:增加表的記錄。

SELECT:顯示/搜索表的記錄。

UPDATE:修改表中已存在的記錄。

特別的權(quán)限:

ALL:允許做任何事(和root一樣)。

USAGE:只允許登錄-其它什么也不允許做。

一、簡(jiǎn)單查詢

簡(jiǎn)單的Transact-SQL查詢只包括選擇列表、FROM子句和WHERE

子句。它們分別說明所查詢列、查詢的

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

例如,下面的語句查詢testtable表中姓名為"張三”的nickname

字段和email字段。

復(fù)制內(nèi)容到剪貼板

代碼:SELECT'nicknamel'email'FROM'testtable'WHERE

'name'='張三’

(-)選擇列表

選擇列表(selecLlist)指出所查詢列,它可以是一組列名列表、星號(hào)、

表達(dá)式、變量(包括局部變量和全局變量)等構(gòu)成。

1、選擇所有列

例如,下面語句顯示testtable表中所有列的數(shù)據(jù):

復(fù)制內(nèi)容到剪貼板

代碼:SELECT*FROMtesttable

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

查詢結(jié)果集合中數(shù)據(jù)的排列順序與選擇列表中所指定的列名排列順

序一樣。

例如:

復(fù)制內(nèi)容到剪貼板

代碼:SELECTnickname,emailFROMtesttable

3、更改列標(biāo)題

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

列標(biāo)題二列名

列名列標(biāo)題

如果指定的列標(biāo)題不是標(biāo)準(zhǔn)的標(biāo)識(shí)符格式時(shí),應(yīng)使用引號(hào)定界符,例

如,以下語句使用漢字顯示列

標(biāo)題:

復(fù)制內(nèi)容到剪貼板

代碼:SELECTB尼稱二nickname,電子由B件=emailFROMtesttable

4、刪除重復(fù)行

SELECT語句中使用ALL或DISTINCT選項(xiàng)來顯示表中符合條件的所

有行或刪除其中重復(fù)的數(shù)據(jù)行,默認(rèn)

為使用選項(xiàng)時(shí),對(duì)于所有重復(fù)的數(shù)據(jù)行在

ALLeDISTINCTSELECT

返回的結(jié)果集合中只保存一行。

5、限制返回的行數(shù)

使用TOPMPERCENT]選項(xiàng)限制返回的數(shù)據(jù)行數(shù),TOPn說明返回

n行,而TOPnPERCENT時(shí),說明n是

表示一百分?jǐn)?shù),指定返回的行數(shù)等于總行數(shù)的百分之幾。

例如:

復(fù)制內(nèi)容到剪貼板

代碼:SELECTTOP2*FROM'testtable'

復(fù)制內(nèi)容到剪貼板

代碼:SELECTTOP20PERCENT*FROM'testtable'

(二)FROM子句

FROM子句指定SELECT語句查詢及與查詢相關(guān)的表或視圖。在

FROM子句中最多可指定256個(gè)表或視圖,

它們之間用逗號(hào)分隔。

在FROM子句同時(shí)指定多個(gè)表或視圖時(shí),如果選擇列表中存在同名

列,這時(shí)應(yīng)使用對(duì)象名限定這些列

所屬的表或視圖。例如在usertable和citytable表中同時(shí)存在cityid

列,在查詢兩個(gè)表中的cityid時(shí)應(yīng)

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

復(fù)制內(nèi)容到剪貼板

代石馬:SELECT'username',citytable.cityid

FROM'usertable','citytable'

WHEREusertable.cityid=citytable.cityid在FROM子句中可用以

下兩種格式為表或視圖指定別名:

復(fù)制內(nèi)容到剪貼板

代碼:表名as別名

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

復(fù)制內(nèi)容到剪貼板

代石馬:SELECT'username',b.cityid

FROMusertablea,citytableb

WHEREa.cityid=b.cityidSELECT不僅能從表或視圖中檢索數(shù)據(jù),它

還能夠從其它查詢語句所返回的結(jié)果集合中查詢數(shù)據(jù)。

例如:

復(fù)制內(nèi)容到剪貼板

代石馬:SELECTa.au_fname+a.au_lname

FROMauthorsa,titleauthorta

(SELECT'titlejd','title'

FROM'titles'

WHERE'ytd_sales'>10000

)ASt

WHEREa.au_id=ta.au_id

ANDta.title_id=ttitle_id止匕例中,將SELECT返回的結(jié)果集合給予

一別名t,然后再從中檢索數(shù)據(jù)。

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

WHERE子句設(shè)置查詢條件,過濾掉不需要的數(shù)據(jù)行。例如下面語句

查詢年齡大于20的數(shù)據(jù):

復(fù)制內(nèi)容到剪貼板

代碼:SELECT*FROMusertableWHEREage>20WHERE子句可

包括各種條件運(yùn)算符:

比擬運(yùn)算符(大小比擬):>、>=、=、、?。尽?!=10ANDage復(fù)制內(nèi)

容到剪貼板

代碼:SELECT*FROM'usertable'ORDERBY'age'DESC,'userid'

ASC另外,可以根據(jù)表達(dá)式進(jìn)展排序。

二、聯(lián)合查詢

UNION運(yùn)算符可以將兩個(gè)或兩個(gè)以上上SELECT語句的查詢結(jié)果集

合合并成一個(gè)結(jié)果集合顯示,即執(zhí)行聯(lián)

合查詢。

UNION的語法格式為:

復(fù)制內(nèi)容到剪貼板

代石馬:select_statement

UNION[ALL]selectstatement

[UNION[ALL]selectstatement][…n]其中selectstatement為待聯(lián)

合的SELECT查詢語句。

ALL選項(xiàng)表示將所有行合并到結(jié)果集合中。不指定該項(xiàng)時(shí),被聯(lián)合查

詢結(jié)果集合中的重復(fù)行將只保存一行。

聯(lián)合查詢時(shí),查詢結(jié)果的列標(biāo)題為第一個(gè)查詢語句的列標(biāo)題。因此,

要定義列標(biāo)題必須在第一個(gè)查詢語

句中定義。要對(duì)聯(lián)合查詢結(jié)果排序時(shí),也必須使用第一查詢語句中的

列名、列標(biāo)題或者列序號(hào)。

在使用UNION運(yùn)算符時(shí),應(yīng)保證每個(gè)聯(lián)合查詢語句的選擇列表中

有一樣數(shù)量的表達(dá)式,并且每個(gè)查詢選

擇表達(dá)式應(yīng)具有一樣的數(shù)據(jù)類型,或是可以自動(dòng)將它們轉(zhuǎn)換為一樣的

數(shù)據(jù)類型。在自動(dòng)轉(zhuǎn)換時(shí),對(duì)于數(shù)值類

型,系統(tǒng)將低精度的數(shù)據(jù)類型轉(zhuǎn)換為高精度的數(shù)據(jù)類型。

在包括多個(gè)查詢的UNION語句中,其執(zhí)行順序是自左至右,使用括

號(hào)可以改變這一執(zhí)行順序。例如:

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

三、連接查詢

通過連接運(yùn)算符可以實(shí)現(xiàn)多個(gè)表查詢。連接是關(guān)系數(shù)據(jù)庫模型的主

要特點(diǎn),也是它區(qū)別于其它類型數(shù)據(jù)庫管理系統(tǒng)的一個(gè)標(biāo)志。

在關(guān)系數(shù)據(jù)庫管理系統(tǒng)中,表建立時(shí)各數(shù)據(jù)之間的關(guān)系不必確定,

常把一個(gè)實(shí)體的所有信息存放在

一個(gè)表中。當(dāng)檢索數(shù)據(jù)時(shí),通過連接操作查詢出存放在多個(gè)表中的不

同實(shí)體的信息。連接操作給用戶帶

來很大的靈活性,他們可以在任何時(shí)候增加新的數(shù)據(jù)類型。為不同實(shí)

體創(chuàng)立新的表,此后通過連接進(jìn)展

查詢。

連接可以在SELECT語句的FROM子句或WHERE子句中建立,

似是而非在FROM子句中指出連接時(shí)有助于

將連接操作與WHERE子句中的搜索條件區(qū)分開來。所以,在

Transact-SQL中推薦使用這種方法。

SQL-92標(biāo)準(zhǔn)所定義的FROM子句的連接語法格式為:

代碼:FROMjoin_tablejoinjypejoin_table[ON(join_condition)]

其中joinjable指出參與連接操作的表名,連接可以對(duì)同一個(gè)表操

作,也可以對(duì)多表操作,對(duì)同一個(gè)表操作的連接又稱做自連接。

joinjype指出連接類型,可分為三種:內(nèi)連接、外連接和穿插連接。

內(nèi)連接(INNERJOIN)使用比擬運(yùn)算符進(jìn)展表間某(些)列數(shù)據(jù)的比擬

操作,并列出這些表中與連接條件相匹配的數(shù)據(jù)行。根據(jù)所使用的比

擬方式不同,內(nèi)連接又分為等值連接、自然連接和不等連接三種。

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

(RIGHTOUTERJOIN或RIGHTJOIN)

和全外連接(FULLOUTERJOIN或FULLJOIN)三種。與內(nèi)連接不同

的是,外連接不只列出與連接條件相匹配的行,而是列出左表(左外

連接時(shí))、右表(右外連接時(shí))或兩個(gè)表(全外連接時(shí))中所有符合搜索條

件的數(shù)據(jù)行。

穿插連接(CROSSJOIN)沒有WHERE子句,它返回連接表中所有

數(shù)據(jù)行的笛卡爾積,其結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一個(gè)表中符合查

詢條件的數(shù)據(jù)行數(shù)乘以第二個(gè)表中符合查詢條件的數(shù)據(jù)行數(shù)。

連接操作中的ON(join_condition)子句指出連接條件,它由被連

接表中的列和比擬運(yùn)算符、邏輯運(yùn)算符等構(gòu)成。

無論哪種連接都不能對(duì)text、ntext和image數(shù)據(jù)類型列進(jìn)展直接

連接,但可以對(duì)這三種列進(jìn)展間接連接。例如:

代石馬:SELECTpl.pub_id,p2.pub_id,pl.pr_info

FROMpubjnfoASplINNERJOINpubjnfoASp2

ONDATALENGTH(pl.pr_info)=DATALENGTH(p2.pr_info)(一)內(nèi)

連接

內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比擬運(yùn)算符比

擬被連接列的列值。

內(nèi)連接分三種:

L等值連接:在連接條件中使用等于號(hào)(=)運(yùn)算符比擬被連接列的列

值,其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列。

2、不等連接:在連接條件使用除等于運(yùn)算符以外的其它比擬運(yùn)算符

比擬被連接的列的列值。這些運(yùn)算符包括>、>二、、!。

3、自然連接:在連接條件中使用等于(二)運(yùn)算符比擬被連接列的列值,

但它使用選擇列表指出查詢結(jié)果集合中所包括的列,并刪除連接表中

的重復(fù)列。

例,下面使用等值連接列出authors和publishers表中位于同一城

市的作者和出版社:

代碼:SELECT*

FROMauthorsASaINNERJOINpublishersASp

ONa.city=p.city又如使用自然連接在選擇列表中刪除authors和

publishers表中重復(fù)列(city和state):

復(fù)制內(nèi)容到剪貼板

代石馬:SELECTa.*,p.pub_id,p.pub_name,p.country

FROMauthorsASaINNERJOINpublishersASp

ONa.city=p.city

(二)外連接內(nèi)連接時(shí),返回查詢結(jié)果集合中的僅是符合查詢條件

(WHERE搜索條件或HAVING條件)和連接條件

的行。而采用外連接時(shí),它返回到查詢結(jié)果集合中的不僅包含符合連

接條件的行,而且還包括左表(左外連接時(shí))、右表(右外連接時(shí))或兩

個(gè)邊接表(全外連接)中的所有數(shù)據(jù)行。

如下面使用左外連接將論壇內(nèi)容和作者信息連接起來:

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

ONa.username=b.username下面使用全外連接將city表中的所

有作者以及user表中的所有作者,以及他們所在的城市:

代碼:SELECTa*,b.*

FROMcityasaFULLOUTERJOINuserasb

ONa.username=b.username

(三)穿插連接

穿插連接不帶WHERE子句,它返回被連接的兩個(gè)表所有數(shù)據(jù)行的

笛卡爾積,返回到結(jié)果集合中的數(shù)

據(jù)行數(shù)等于第一個(gè)表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個(gè)表中符

合查詢條件的數(shù)據(jù)行數(shù)。

例,titles表中有6類圖書,而publishers表中有8家出版社,那么

以下穿插連接檢索到的記錄數(shù)將等

于6*8=48行。

代石馬:SELECT'type','pub_name'

FROM'titles'CROSSJOIN'publishers'

ORDERBY'type'

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

_ArticleContentl_lblContent>插入數(shù)據(jù)

向表中添加一個(gè)新記錄,你要使用SQLINSERT語句。這里有一個(gè)

如何使用這種語句的例子:

代碼INSERTmytable(mycolumn)VALUES("somedata')這

個(gè)語句把字符串‘somedata'插入表mytable的mycolumn字段

中。將要被插入數(shù)據(jù)的字段的名字在第一個(gè)括號(hào)中指定,實(shí)際的數(shù)據(jù)

在第二個(gè)括號(hào)中給出。

INSERT語句的完整句法如下:

代碼INSERT[INTO]{table_name|view_name}[(column_「st)]

{DEFAULTVALUES|

Valuesjist|select_statement)如果一^表有多個(gè)字段,通過把字

段名和字段值用逗號(hào)隔開,你可以向所有的字段中插入數(shù)據(jù)。假設(shè)表

mytable有三個(gè)字段first_column,second_column,^n

third_columno

下面的INSERT語句添加了一條三個(gè)字段都有值的完整記錄:

代碼INSERTmytable

(first_column,second_column,third_column)

VALUES('somedata'/somemoredata1/yetmoredata7)

注意

你可以使用INSERT語句向文本型字段中插入數(shù)據(jù)。但是,如果你需

要輸入很長(zhǎng)的字符串,你應(yīng)該使用WRITETEXT語句。這局部?jī)?nèi)容對(duì)

本書來說太高級(jí)了,因此不加討論。要了解更多的信息,請(qǐng)參考

MicrosoftSQLSever的文檔。

如果你在INSERT語句中只指定兩個(gè)字段和數(shù)據(jù)會(huì)怎么樣呢?換句

話說,你向一個(gè)表中插入一條新記錄,但有一個(gè)字段沒有提供數(shù)據(jù)。

在這種情況下,有下面的四種可能:

如果該字段有一個(gè)缺省值,該值會(huì)被使用。例如,假設(shè)你插入新記錄

時(shí)沒有給字段third,olumn提供數(shù)據(jù),而這個(gè)字段有一個(gè)缺省值’

somevalue'。在這種情況下,當(dāng)新記錄建立時(shí)會(huì)插入值’some

value'。

如果該字段可以承受空值,而且沒有缺省值,那么會(huì)被插入空值。

如果該字段不能承受空值,而且沒有缺省值,就會(huì)出現(xiàn)錯(cuò)誤。你會(huì)收

到錯(cuò)誤信息:

Thecolumnintablemytablemaynotbenull.

最后,如果該字段是一個(gè)標(biāo)識(shí)字段,那么它會(huì)自動(dòng)產(chǎn)生一個(gè)新值。當(dāng)

你向一個(gè)有標(biāo)識(shí)字段的表中插入新記錄時(shí),只要忽略該字段,標(biāo)識(shí)字

段會(huì)給自己賦一個(gè)新值。

注意

向一個(gè)有標(biāo)識(shí)字段的表中插入新記錄后,你可以用SQL變量

@@identity來訪問新記錄

的標(biāo)識(shí)字段的值??紤]如下的SQL語句:

復(fù)制內(nèi)容到剪貼板

代碼INSERTmytable(first_column)VALUES('somevalue')

[code]

[code]INSERTanothertable(another_first,another_second)

VALUES(@@identity,zsomevalue')如果表mytable有一^^標(biāo)

識(shí)字段,該字段的值會(huì)被插入表anothertable的another_first字

段。這是因?yàn)樽兞緻@identity總是保存最后一次插入標(biāo)識(shí)字段的

值。

字段another_first應(yīng)該與字段first_column有一樣的數(shù)據(jù)類型。但

是,字段another_first不能是應(yīng)該標(biāo)識(shí)字段。Another_first字段用

來保存字段first_column的值。

刪除記錄

要從表中刪除一個(gè)或多個(gè)記錄,需要使用SQLDELETE語句。你可

以給DELETE語句提供WHERE子句。WHERE子句用來選擇要?jiǎng)h

除的記錄。例如,下面的這個(gè)DELETE語句只刪除字段first_column

的值等于‘DeleteMe'的記錄:

代碼:DELETEmytableWHEREfirst_column=zDeltetMe'

DELETE語句的完整句法如下:

復(fù)制內(nèi)容到剪貼板

代碼:DELETE[FROM]{table_name|view_name}[WHEREclause]

iSSQLSELECT語句中可以使用的任何條件都可以在DELECT語句

的WHERE子句中使用。例如,下面的這個(gè)DELETE語句只刪除那

些first_column字段的值為‘goodbye'或second_column字段

的值為'solong'的記錄:

代碼:DELETEmytableWHEREfirst_column二'goodby,OR

second_column=zsolong'如果你不給DELETE語句提供

WHERE子句,表中的所有記錄都將被刪除。你不應(yīng)該有這種想法。

如果你想刪除應(yīng)該表中的所有記錄,應(yīng)使用第十章所講的

TRUNCATETABLE語句。

注意

為什么要用TRUNCATETABLE語句代替DELETE語句?當(dāng)你使用

TRUNCATETABLE語句時(shí),記錄的刪除是不作記錄的。也就是說,

這意味著TRUNCATETABLE要比DELETE快得多。

更新記錄

要修改表中已經(jīng)存在的一條或多條記錄,應(yīng)使用SQLUPDATE語句。

同DELETE語句一樣,UPDATE語句可以使用WHERE子句來選擇更

新特定的記錄。請(qǐng)看這個(gè)例子:

代碼:UPDATEmytableSETfirst_column=zUpdated!7WHERE

second_column=zUpdateMe!z這個(gè)UPDATE語句更新所有

second_column字段的值為‘UpdateMe!’的記錄。對(duì)所有被選

中的記錄,字段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]注意

你可以對(duì)文本型字段使用UPDATE語句。但是,如果你需要更新很

長(zhǎng)的字符串,應(yīng)使用UPDATETEXT語句。這局部?jī)?nèi)容對(duì)本書來說太

高級(jí)了,因此不加討論。要了解更多的信息,請(qǐng)參考MicrosoftSQL

Sever的文檔。

如果你不提供WHERE子句,表中的所有記錄都將被更新。有時(shí)這是

有用的。例如,如果你想把表titles中的所有書的價(jià)格加倍,你可以

使用如下的UPDATE語句:

你也可以同時(shí)更新多個(gè)字段。例如,下面的UPDATE語句同時(shí)更新

first_column,second_column,^nthird_column這三個(gè)字段:

代碼:UPDATEmytableSETfirst_column=zUpdated!'

Second_column=,Updated!'

Third_column=,Updated!'

WHEREfirst_column=,UpdateMel'技巧

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

讀的格式。

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

你也許已經(jīng)注意到,INSERT語句與DELETE語句和UPDATE語句

有一點(diǎn)不同,它一次只操作一個(gè)記錄。然而,有一個(gè)方法可以使

INSERT語句一次添加多個(gè)記錄。要作到這一點(diǎn),你需要把INSERT

語句與SELECT語句結(jié)合起來,象這樣:

代碼INSERTmytable(first_coIumn,second_coIumn)

SELECTanother_first,another_second

FROManothertable

WHEREanother_first=,CopyMe!(這個(gè)語句從anothertable

拷貝記錄到mytable.只有表anothertable中字段another_first的

值為‘CopyMeF的記錄才被拷貝。

當(dāng)為一個(gè)表中的記錄建立備份時(shí),這種形式的INSERT語句是非常

有用的。在刪除一個(gè)表中的記錄之前,你可以先用這種方法把它們拷

貝到另一個(gè)表中。

如果你需要拷貝整個(gè)表,你可以使用SELECTINTO語句。例如,下

面的語句創(chuàng)立了一個(gè)名為newtable的新表,該表包含表mytable

的所有數(shù)據(jù):

代碼:SELECT*INTOnewtableFROMmytable你也可以指定只有

特定的字段被用來創(chuàng)立這個(gè)新表。要做到這一點(diǎn),只需在字段列表中

指定你想要拷貝的字段。另外,你可以使用WHERE子句來限制拷

貝到新表中的記錄。下面的例子只拷貝字段second_columnd的值

等于‘CopyMe!(的記錄的first_column字段。

代碼:SELECTfirst_columnINTOnewtable

FROMmytable

WHEREsecond_column=(CopyMe!'使用SQL修改已經(jīng)建立

的表是很困難的。例如,如果你向一個(gè)表中添加了一個(gè)字段,沒有容

易的方法來去除它。另外,如果你不小心把一個(gè)字段的數(shù)據(jù)類型給錯(cuò)

了,你將沒有方法改變它。但是,使用本節(jié)中講述的SQL語句,你

可以繞過這兩個(gè)問題。

例如,假設(shè)你想從一個(gè)表中刪除一個(gè)字段。使用SELECTINTO語句,

你可以創(chuàng)立該表的一個(gè)拷貝,但不包含要?jiǎng)h除的字段。這使你既刪除

了該字段,又保存了不想刪除的數(shù)據(jù)。

如果你想改變一個(gè)字段的數(shù)據(jù)類型,你可以創(chuàng)立一個(gè)包含正確數(shù)據(jù)類

型字段的新表。創(chuàng)立好該表后,你就可以結(jié)合使用UPDATE語句和

SELECT語句才巴原來表中的所有數(shù)據(jù)拷貝到新表中。通過這種方法,

你既可以修改表的構(gòu)造,又能保存原有的數(shù)據(jù)。

_ArticleContentl_lblContent>插入數(shù)據(jù)

向表中添加一個(gè)新記錄,你要使用SQLINSERT語句。這里有一個(gè)

如何使用這種語句的例子:

復(fù)制內(nèi)容到剪貼板

代碼INSERTmytable(mycolumn)VALUES('somedata1)這

個(gè)語句把字符串‘somedata,插入表mytable的mycolumn字段

中。將要被插入數(shù)據(jù)的字段的名字在第一個(gè)括號(hào)中指定,實(shí)際的數(shù)據(jù)

在第二個(gè)括號(hào)中給出。

INSERT語句的完整句法如下:

復(fù)制內(nèi)容到剪貼板

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

{DEFAULTVALUES|Valuesjist|select_statement)如果一個(gè)表

有多個(gè)字段,通過把字段名和字段值用逗號(hào)隔開,你可以向所有的字

段中插入數(shù)據(jù)。假設(shè)表mytable有三個(gè)字段

下面的

first_column,second_column,^nthird_columnoINSERT

語句添加了一條三個(gè)字段都有值的完整記錄:

復(fù)制內(nèi)容到剪貼板

代碼INSERTmytable

(first_column,second_column,third_column)VALUES('some

data'/somemoredata'/yetmoredata')

[code]

注意

你可以使用INSERT語句向文本型字段中插入數(shù)據(jù)。但是,如果你需

要輸入很長(zhǎng)的字符串,你應(yīng)該使用WRITETEXT語句。這局部?jī)?nèi)容對(duì)

本書來說太高級(jí)了,因此不加討論。要了解更多的信息,請(qǐng)參考

MicrosoftSQLSever的文檔。

如果你在INSERT語句中只指定兩個(gè)字段和數(shù)據(jù)會(huì)怎么樣呢?換句

話說,你向一個(gè)表中插入一條新記錄,但有一個(gè)字段沒有提供數(shù)據(jù)。

在這種情況下,有下面的四種可能:

如果該字段有一個(gè)缺省值,該值會(huì)被使用。例如,假設(shè)你插入新記錄

時(shí)沒有給字段third,olumn提供數(shù)據(jù),而這個(gè)字段有一個(gè)缺省值’

somevalue'。在這種情況下,當(dāng)新記錄建立時(shí)會(huì)插入值’some

value'。

如果該字段可以承受空值,而且沒有缺省值,那么會(huì)被插入空值。

如果該字段不能承受空值,而且沒有缺省值,就會(huì)出現(xiàn)錯(cuò)誤。你會(huì)收

到錯(cuò)誤信息:

Thecolumnintablemytablemaynotbenull.

最后,如果該字段是一個(gè)標(biāo)識(shí)字段,那么它會(huì)自動(dòng)產(chǎn)生一個(gè)新值。當(dāng)

你向一個(gè)有標(biāo)識(shí)字段的表中插入新記錄時(shí),只要忽略該字段,標(biāo)識(shí)字

段會(huì)給自己賦一個(gè)新值。

注意

向一個(gè)有標(biāo)識(shí)字段的表中插入新記錄后,你可以用SQL變量

@@identity來訪問新記錄

的標(biāo)識(shí)字段的值。考慮如下的SQL語句:

[code]INSERTmytable(first_column)VALUES("somevalue1)

復(fù)制內(nèi)容到剪貼板

代石馬INSERTanothertable(another_first,another_second)

VALUES(@@identity/somevalue')如果表mytable有一^^標(biāo)

識(shí)字段,該字段的值會(huì)被插入表anothertable的another_first字

段。這是因?yàn)樽兞緻@identity總是保存最后一次插入標(biāo)識(shí)字段的

值。

字段another_first應(yīng)該與字段first_column有一樣的數(shù)據(jù)類型。但

是,字段another_first不能是應(yīng)該標(biāo)識(shí)字段。Another_first字段用

來保存字段first_column的值。

刪除記錄

要從表中刪除一個(gè)或多個(gè)記錄,需要使用SQLDELETE語句。你可

以給DELETE語句提供WHERE子句。WHERE子句用來選擇要?jiǎng)h

除的記錄。例如,下面的這個(gè)DELETE語句只刪除字段first_column

的值等于‘DeleteMe'的記錄:

復(fù)制內(nèi)容到剪貼板

代碼:DELETEmytableWHEREfirst_column=zDeltetMe'

DELETE語句的完整句法如下:

復(fù)制內(nèi)容到剪貼板

代碼:DELETE[FROM]{table_name|view_name}[WHEREclause]

iSSQLSELECT語句中可以使用的任何條件都可以在DELECT語句

的WHERE子句中使用。例如,下面的這個(gè)DELETE語句只刪除那

些first_column字段的值為‘goodbye'或second_column字段

的值為‘solong'的記錄:

復(fù)制內(nèi)容到剪貼板

代碼:DELETEmytableWHEREfirst_column二'goodby,OR

second_column=zsolong'如果你不給DELETE語句提供

WHERE子句,表中的所有記錄都將被刪除。你不應(yīng)該有這種想法。

如果你想刪除應(yīng)該表中的所有記錄,應(yīng)使用第十章所講的

TRUNCATETABLE語句。

注意

為什么要用TRUNCATETABLE語句代替DELETE語句?當(dāng)你使用

TRUNCATETABLE語句時(shí),記錄的刪除是不作記錄的。也就是說,

這意味著TRUNCATETABLE要比DELETE快得多。

更新記錄

要修改表中已經(jīng)存在的一條或多條記錄,應(yīng)使用SQLUPDATE語句。

同DELETE語句一樣,UPDATE語句可以使用WHERE子句來選擇更

新特定的記錄。請(qǐng)看這個(gè)例子:

復(fù)制內(nèi)容到剪貼板

代碼:UPDATEmytableSETfirst_column=zUpdated!7WHERE

second_column=zUpdateMe!z這個(gè)UPDATE語句更新所有

second_column字段的值為‘UpdateMe!’的記錄。對(duì)所有被選

中的記錄,字段first_column的值被置為‘Updated!'。

下面是UPDATE語句的完整句法:

復(fù)制內(nèi)容到剪貼板

代碼: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|vanable_and_column_listN}]]

[WHEREclause]注意

你可以對(duì)文本型字段使用UPDATE語句。但是,如果你需要更新很

長(zhǎng)的字符串,應(yīng)使用UPDATETEXT語句。這局部?jī)?nèi)容對(duì)本書來說太

高級(jí)了,因此不加討論。要了解更多的信息,請(qǐng)參考MicrosoftSQL

Sever的文檔。

如果你不提供WHERE子句,表中的所有記錄都將被更新。有時(shí)這是

有用的。例如,如果你想把表titles中的所有書的價(jià)格加倍,你可以

使用如下的UPDATE語句:

你也可以同時(shí)更新多個(gè)字段。例如,下面的UPDATE語句同時(shí)更新

first_column,second_column,^nthird_column這三個(gè)字段:

復(fù)制內(nèi)容到剪貼板

代碼:UPDATEmytableSETfirst_column=zUpdated!'

Second_column=,Updated!'

Third_column=,Updated!'

WHEREfirst_column=,UpdateMel'技巧

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

讀的格式。

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

你也許已經(jīng)注意到,INSERT語句與DELETE語句和UPDATE語句

有一點(diǎn)不同,它一次只操作一個(gè)記錄。然而,有一個(gè)方法可以使

INSERT語句一次添加多個(gè)記錄。要作到這一點(diǎn),你需要把INSERT

語句與SELECT語句結(jié)合起來,象這樣:

復(fù)制內(nèi)容到剪貼板

代碼INSERTmytable(first_column,second_column)

SELECTanother_first,another_second

FROManothertable

WHEREanother_first=zCopyMe!(這個(gè)語句從anothertable

拷貝記錄到mytable.只有表anothertable中字段another_first的

值為‘CopyMeF的記錄才被拷貝。

當(dāng)為一個(gè)表中的記錄建立備份時(shí),這種形式的INSERT語句是非常

有用的。在刪除一個(gè)表中的記錄之前,你可以先用這種方法把它們拷

貝到另一個(gè)表中。

如果你需要拷貝整個(gè)表,你可以使用SELECTINTO語句。例如,下

面的語句創(chuàng)立了一個(gè)名為newtable的新表,該表包含表mytable

的所有數(shù)據(jù):

復(fù)制內(nèi)容到剪貼板

代碼:SELECT*INTOnewtableFROMmytable你也可以指定只有

特定的字段被用來創(chuàng)立這個(gè)新表。要做到這一點(diǎn),只需在字段列表中

指定你想要拷貝的字段。另外,你可以使用WHERE子句來限制拷

貝到新表中的記錄。下面的例子只拷貝字段second_columnd的值

等于‘CopyMe!(的記錄的first_column字段。

復(fù)制內(nèi)容到剪貼板

代碼:SELECTfirst_columnINTOnewtable

FROMmytable

WHEREsecond_column=zCopyMe!'使用SQL修改已經(jīng)建立

的表是很困難的。例如,如果你向一個(gè)表中添加了一個(gè)字段,沒有容

易的方法來去除它。另外,如果你不小心把一個(gè)字段的數(shù)據(jù)類型給錯(cuò)

了,你將沒有方法改變它。但是,使用本節(jié)中講述的SQL語句,你

可以繞過這兩個(gè)問題。

例如,假設(shè)你想從一個(gè)表中刪除一個(gè)字段。使用SELECTINTO語句,

你可以創(chuàng)立該表的一個(gè)拷貝,但不包含要?jiǎng)h除的字段。這使你既刪除

了該字段,又保存了不想刪除的數(shù)據(jù)。

如果你想改變一個(gè)字段的數(shù)據(jù)類型,你可以創(chuàng)立一個(gè)包含正確數(shù)據(jù)類

型字段的新表。創(chuàng)立好該表后,你就可以結(jié)合使用UPDATE語句和

SELECT語句才巴原來表中的所有數(shù)據(jù)拷貝到新表中。通過這種方法,

你既可以修改表的構(gòu)造,又能保存原有的數(shù)據(jù)。

SQL語法,SQL語句大全,SQL根底

SQL語法參考手冊(cè)(SQL)/數(shù)據(jù)類型

2006-07-2407:42

?SQL語法參考手冊(cè)(SQL)?

DB2提供了關(guān)連式資料庫的查詢語言SQL(StructuredQuery

Language),是一種非??谡Z化、既易學(xué)又易懂的語法。此一語言幾

乎是每個(gè)資料庫系統(tǒng)都必須提供的,用以表示關(guān)連式的*作,包含了

資料的定義〔DDL〕以及資料的處理〔DML〕。SQL原來拼成

SEQUEL,這語言的原型以"系統(tǒng)R"的名字在IBM圣荷西實(shí)驗(yàn)室

完成,經(jīng)過IBM內(nèi)部及其他的許多使用性及效率測(cè)試,其結(jié)果相當(dāng)

令人滿意,并決定在系統(tǒng)R的技術(shù)根底開展出來IBM的產(chǎn)品。而

且美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì)〔ANSI〕及國(guó)際標(biāo)準(zhǔn)化組織[ISO]在1987遵

循一個(gè)幾乎是以IBMSQL為根底的標(biāo)準(zhǔn)關(guān)連式資料語言定義。

一、資料定義DDL(DataDefinitionLanguage)

資料定語言是指對(duì)資料的格式和形態(tài)下定義的語言,他是每個(gè)資料庫

要建立時(shí)候時(shí)首先要面對(duì)的,舉凡資料分哪些表格關(guān)系、表格內(nèi)的有

什麼欄位主鍵、表格和表格之間互相參考的關(guān)系等等,都是在開場(chǎng)的

時(shí)候所必須規(guī)劃好的。

1、建表格:

CreateTABLEtable_name(

columnlDATATYPE[NOTNULL][NOTNULLPRIMARYKEY],

column2DATATYPE[NOTNULL],

…〕

說明:

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

NUTNULL一可不可以允許資料有空的〔尚未有資料填入

PRIMARYKEY--是本表的主鍵。

2、更改表格

AlterTABLEtable_name

ADDCOLUMNcolumn_nameDATATYPE

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

AlterTABLEtable_name

ADDPRIMARYKEY(column_name)

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

AlterTABLEtable_name

DropPRIMARYKEY(column_name)

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

3、建立索引

CreateINDEXindex_nameONtable_name(column_name)

說明:對(duì)某個(gè)表格的欄位建立索引以增加查詢時(shí)的速度。

4、刪除

Droptable_name

Dropindex_name

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

smallint

16位元的整數(shù)。

interger

32位元的整數(shù)。

decimal(p,s)

P準(zhǔn)確值和s大小的十進(jìn)位整數(shù),準(zhǔn)確值p是指全部有幾個(gè)數(shù)

(digits)大小值,s是指小數(shù)

點(diǎn)彳度有幾位數(shù)。如果沒有特別指定,那么系統(tǒng)會(huì)設(shè)為

p=5;s=00

float

32位元的實(shí)數(shù)。

double

64位元的實(shí)數(shù)。

char(n)

長(zhǎng)度的字串,不能超過

nn254O

varchar(n)

長(zhǎng)度不固定且其最大長(zhǎng)度為的字串,不能超過

nn4000o

graphic(n)

和char(n)一樣,不過其單位是兩個(gè)字元double-bytes,n不能

超過127。這個(gè)形態(tài)是為

了支援兩個(gè)字元長(zhǎng)度的字體,例如中文字。

vargraphic(n)

可變長(zhǎng)度且其最大長(zhǎng)度為的雙字元字串,不能超過

nn2000o

date

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

time

包含了小時(shí)、分鐘、秒。

timestamp

包含了年、月、日、時(shí)、分、秒、千分之一秒。

三、資料*作DML[DataManipulationLanguage)

資料定義好之彳度接下來的就是資料的*作。資料的*作不外乎增加資料

[insert).查詢資料〔query]、更改資料〔update)、刪除資料

[delete]四種模式,以下分別介紹他們的語法:

1、增加資料:

InsertINTOtable_name(columnl,column2,...)

values(valuel,value2,...)

說明:

L假設(shè)沒有指定column系統(tǒng)那么會(huì)按表格內(nèi)的欄位順序填入資料。

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

也可以是景觀

3.table_nameview_nameo

InsertINTOtable_name(columnl,column2,...)

Selectcolumnx,columny,...FROManother_table

說明:也可以經(jīng)過一個(gè)子查詢〔subquery〕把別的表格的資料填入。

2、查詢資料:

根本查詢

Selectcolumnl,columns2,...

FROMtable_name

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

Select*

FROMtable_name

Wherecolumnl=xxx

[ANDcolumn2〉yyy][ORcolumn3〈〉z(mì)zz]

說明:

L'*'表示全部的欄位都列出來。

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

Selectcolumnl,column2

FROMtablename

orDERBYcolumn2[DESC]

說明:ORDERBY是指定以某個(gè)欄位做排序,[DESC]是指從大到小

排列,假設(shè)沒有指明,那么是從小到大

排列

組合查詢

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

以上的

表格才能夠得到結(jié)果的。

Select*

FROMtablel,table2

Wheretablel.columl=table2.columnl

說明:

1.查詢兩個(gè)表格中其中columnl值一樣的資料。

2.當(dāng)然兩個(gè)表格相互比擬的欄位,其資料形態(tài)必須一樣。

3.一個(gè)復(fù)雜的查詢其動(dòng)用到的表格可能會(huì)很多個(gè)。

整合性的查詢:

SelectCOUNT(*)

FROMtable_name

Wherecolumn_name=xxx

說明:

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

SelectSUM(columnl)

FROMtable_name

說明:

L計(jì)算出總和,所選的欄位必須是可數(shù)的數(shù)字形態(tài)。

2.除此以外還有AVG()是計(jì)算平均、MAX()、MIN()計(jì)算最大最小

值的整合性查詢。

Selectcolumnl,AVG(column2)

FROMtable_name

GROUPBYcolumnl

HAVINGAVG(column2)〉xxx

說明:

l.GROUPBY:以columnl為一組計(jì)算column2的平均值必須和

AVG、SUM等整合性查詢的關(guān)鍵字

一起使用。

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

復(fù)合性的查詢

Select*

FROMtable_namel

WhereEXISTS(

Select*

FROMtable_name2

Whereconditions)

說明:

的可以是另外一個(gè)的

l.Whereconditionsquery0

2.EXISTS在此哥旨存在與否。

Select*

FROMtable_namel

WherecolumnlIN(

Selectcolumnl

FROMtable_name2

Whereconditions)

說明:

1.IN彳爰面接的是一個(gè)集合,表示columnl存在集合里面。

出來的資料形態(tài)必須符合

2.Selectcolumnlo

其他查詢

Select*

FROMtable_namel

WherecolumnlLIKE'x%'

說明:LIKE必須和彳麥面的‘x%'相照應(yīng)表示以x為開頭的字串。

Select*

FROMtable_namel

WherecolumnlIN('xxx'/yyy'

說明:IN彳麥面接的是一個(gè)集合,表示columnl存在集合里面。

Select*

FROMtablenamel

WherecolumnlBETWEENxxANDyy

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

3、更改資料:

Updatetable_name

SETcolumnl=,xxx'

Whereconditoins

說明:

L更改某個(gè)欄位設(shè)定其值為‘xxx'。

2,conditions是所要符合的條件、假設(shè)沒有Where那么整個(gè)

table的那個(gè)欄位都會(huì)全部被更改。

4、刪除資料:

DeleteFROMtable_name

Whereconditions

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

說明:關(guān)于Where條件后面如果包含有日期的比擬,不同數(shù)據(jù)庫有

不同的表達(dá)式。具體如下:

(1)如果是ACCESS數(shù)據(jù)庫那么為Wheremydate)#2000-01-01#

(2)如果是ORACLE數(shù)據(jù)庫,那么為:Wheremydate)cast(,

2000-01-01'asdate)

或:Wheremydate)to_date(z2000-01-01z/yyyy-mm-dd')

在Delphi中寫成:

thedate=(2000-01-01z;

queryl.SQLaddfselect*fromabcwheremydate)cast(z+

+thedate+''''+'asdate)');

如果比擬日期時(shí)間型,那么為:

Wheremydatetime)to_date((2000-01-0110:00:01'

yyyy-mm-ddhh24:mi:ss,)

Recordset對(duì)象一些有用的屬性7〉引用來自增加一個(gè):

Recordset對(duì)象一些有用的屬性

rs.CursorType=

rs.CursorLocation=

rs.LockType=

rs.CacheSize=

rs.Pagesize=

rs.Pagecount=

rs.RecordCount=

''——CursorTypeValues——

ConstadOpenForwardOnly=0僅向前

ConstadOpenKeyset=1鍵集游標(biāo)

ConstadOpenDynamic=2動(dòng)態(tài)游標(biāo)

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

''——LockTypeValues——

ConstadLockReadOnly=1默認(rèn)值,只讀

ConstadLockPessimistic=2保守式記錄鎖定

ConstadLockOptimistic=3開放式記錄鎖定,只在調(diào)用Update

方法時(shí)鎖定記錄

ConstadLockBatchOptimistic=4開放式批更新

''——CursorLocationValues——

ConstadllseServer=2

ConstadllseClient=3

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

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

rs.Opensqlst,conn,1,2'新增,修改,或刪除〕

下一頁:?SQLSERVER的數(shù)據(jù)類型?

〉〉〉我想分頁--這么長(zhǎng)的文章,在這里來個(gè)分頁多好??!

哈哈〈〈〈

?SQLSERVER的數(shù)據(jù)類型?

l.SQLSERVER的數(shù)據(jù)類型

數(shù)據(jù)類弄是數(shù)據(jù)的一種屬性,表示數(shù)據(jù)所表示信息的類型。任何

一種計(jì)算機(jī)語言都定義了自己的數(shù)據(jù)類型。當(dāng)然,不同的程序語言都

具有不同的特點(diǎn),所定義的數(shù)據(jù)類型的各類和名稱都或多或少有些不

同。SQLServer提供了25種數(shù)據(jù)類型:

?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)二進(jìn)制數(shù)據(jù)類型

二進(jìn)制數(shù)據(jù)包括Binary.Varbinary和Image

Binary數(shù)據(jù)類型既可以是固定長(zhǎng)度的(Binary),也可以是變長(zhǎng)度

的。

Binary[(n)]是n位固定的二進(jìn)制數(shù)據(jù)。其中,n的取值范圍

是從到其存儲(chǔ)窖的大小是個(gè)字節(jié)。

18000on+4

Varbinary[(n)]是n位變長(zhǎng)度的二進(jìn)制數(shù)據(jù)。其中,n的取值

范圍是從到其存儲(chǔ)窖的大小是個(gè)字節(jié),不是個(gè)

18000on+4n

字節(jié)。

在Image數(shù)據(jù)類型中存儲(chǔ)的數(shù)據(jù)是以位字符串存儲(chǔ)的,不是由

SQLServer解釋的,必須由應(yīng)用程序來解釋。例如,應(yīng)用程序可以

使用BMP、TIEF、GIF和JPEG格式把數(shù)據(jù)存儲(chǔ)在Image數(shù)據(jù)類

型中。

(2)字符數(shù)據(jù)類型

字符數(shù)據(jù)的類型包括Char,Varchar和Text

字符數(shù)據(jù)是由任何字母、符號(hào)和數(shù)字任意組合而成的數(shù)據(jù)。

是變長(zhǎng)字符數(shù)據(jù),其長(zhǎng)度不超過是定長(zhǎng)字

Varchar8KB0Char

符數(shù)據(jù)其長(zhǎng)度最多為8KB。超過8KB的ASCII數(shù)據(jù)可以使用Text

數(shù)據(jù)類型存儲(chǔ)。例如,因?yàn)镠tml文檔全部都是ASCII字符,并且

在一般情況下長(zhǎng)度超過8KB,所以這些文檔可以Text數(shù)據(jù)類型存

儲(chǔ)在SQLServer中。

⑶Unicode數(shù)據(jù)類型

Unicode數(shù)據(jù)類型包括Nchar,Nvarchar和Ntext

在MicrosoftSQLServer中,傳統(tǒng)的非Unicode數(shù)據(jù)類型允

許使用由特定字符集定義的字符。在SQLServer安裝過程中,允許

選擇一種字符集。使用Unicode數(shù)據(jù)類型,列中可以存儲(chǔ)任何由

Unicode標(biāo)準(zhǔn)定義的字符。在Unicode標(biāo)準(zhǔn)中,包括了以各種字

符集定義的全部字符。使用Unicode數(shù)據(jù)類型,所戰(zhàn)勝的窖是使用

非Unicode數(shù)據(jù)類型所占用的窖大小的兩倍。

在中,數(shù)據(jù)以和

SQLServerUnicodeNcharxNvarchar

Ntext數(shù)據(jù)類型存儲(chǔ)。使用這種字符類型存儲(chǔ)的列可以存儲(chǔ)多個(gè)字符

集中的字符。當(dāng)列的長(zhǎng)度變化時(shí),應(yīng)該使用Nvarchar字符類型,這

時(shí)最多可以存儲(chǔ)4000個(gè)字符。當(dāng)列的長(zhǎng)度固定不變時(shí),應(yīng)該使用

Nchar字符類型,同樣,這時(shí)最多可以存儲(chǔ)4000個(gè)字符。當(dāng)使用

Ntext數(shù)據(jù)類型時(shí),該列可以存儲(chǔ)多于4000個(gè)字符。

⑷日期和時(shí)間數(shù)據(jù)類型

日期和時(shí)間數(shù)據(jù)類型包括Datetime和Smalldatetime兩種

類型

日期和時(shí)間數(shù)據(jù)類型由有效的日期和時(shí)間組成。例如,有效的日

期和時(shí)間數(shù)據(jù)包括"4/01/9812:15:00:00:00PM”和

/z前一個(gè)數(shù)據(jù)類型是日期在前,時(shí)間

"1:28:29:15:01AM8/17/980

在后一個(gè)數(shù)據(jù)類型是霎時(shí)間在前,日期在后。在MicrosoftSQL

Server中,日期和時(shí)間數(shù)據(jù)類型包括Datetime和Smalldatetime

兩種類型時(shí),所存儲(chǔ)的日期范圍是從1753年1月1日開場(chǎng),到

9999年12月31日完畢(每一個(gè)值要求8個(gè)存儲(chǔ)字節(jié))。使用

Smalldatetime數(shù)據(jù)類型時(shí)所存儲(chǔ)的日期范圍是1900年1月1

日開場(chǎng)到2079年12月31日完畢(每一個(gè)值要求4個(gè)存儲(chǔ)字

節(jié))。

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

SetDateFormat{format|@format_var|

其中,format|@format_var是日期的順序。有效的參數(shù)包括

、、、、和在默認(rèn)情況

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論