久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

SQL的基本操作

 xiaoping 2006-02-16



1.數(shù)據(jù)類型
數(shù)據(jù)類弄是數(shù)據(jù)的一種屬性,表示數(shù)據(jù)所表示信息的類型,。任何一種計算機(jī)語言都定義了自己的數(shù)據(jù)類型,。當(dāng)然,不同的程序語言都具有不同的特點,,所定義的數(shù)據(jù)類型的各類和名稱都或多或少有些不同,。SQL Server 提供了 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ù)類型既可以是固定長度的(Binary),也可以是變長度的,。

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

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

在 Image 數(shù)據(jù)類型中存儲的數(shù)據(jù)是以位字符串存儲的,,不是由 SQL Server 解釋的,,必須由應(yīng)用程序來解釋,。例如,,應(yīng)用程序可以使用 BMP、TIEF,、GIF 和 JPEG 格式把數(shù)據(jù)存儲在 Image 數(shù)據(jù)類型中,。

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

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

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

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

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

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

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

在 SQL Server 中,Unicode 數(shù)據(jù)以 Nchar,、Nvarchar 和 Ntext 數(shù)據(jù)類型存儲,。使用這種字符類型存儲的列可以存儲多個字符集中的字符。當(dāng)列的長度變化時,,應(yīng)該使用 Nvarchar 字符類型,,這時最多可以存儲 4000 個字符。當(dāng)列的長度固定不變時,應(yīng)該使用 Nchar 字符類型,,同樣,,這時最多可以存儲 4000 個字符。當(dāng)使用 Ntext 數(shù)據(jù)類型時,,該列可以存儲多于 4000 個字符,。

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

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

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

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

Set DateFormat {format | @format _var|

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

例如,當(dāng)執(zhí)行 Set DateFormat YMD 之后,,日期的格式為年 月 日 形式,;當(dāng)執(zhí)行 Set DateFormat DMY 之后,日期的格式為 日 月有年 形式

(5)數(shù)字?jǐn)?shù)據(jù)類型

數(shù)字?jǐn)?shù)據(jù)只包含數(shù)字,。數(shù)字?jǐn)?shù)據(jù)類型包括正數(shù)和負(fù)數(shù),、小數(shù)(浮點數(shù))和整數(shù) 。

整數(shù)由正整數(shù)和負(fù)整數(shù)組成,,例如 39,、25,、0-2 和 33967。在 Micrsoft SQL Server 中,,整數(shù)存儲的數(shù)據(jù)類型是 Int,,Smallint 和 Tinyint。Int 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍大于 Smallint 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍,,而 Smallint 據(jù)類型存儲數(shù)據(jù)的范圍大于 Tinyint 數(shù)據(jù)類型存儲數(shù)據(jù)的范圍,。使用 Int 數(shù)據(jù)狗昔存儲數(shù)據(jù)的范圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求 4個字節(jié)存儲空間)。使用 Smallint 數(shù)據(jù)類型時,,存儲數(shù)據(jù)的范圍從 -32 768 到 32 767(每一個值要求2個字節(jié)存儲空間),。使用 Tinyint 數(shù)據(jù)類型時,,存儲數(shù)據(jù)的范圍是從0 到255(每一個值要求1個字節(jié)存儲空間),。

精確小婁數(shù)據(jù)在 SQL Server 中的數(shù)據(jù)類型是 Decimal 和 Numeric。這種數(shù)據(jù)所占的存儲空間根據(jù)該數(shù)據(jù)的位數(shù)后的位數(shù)來確定,。

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

(6)貨幣數(shù)據(jù)表示正的或者負(fù)的貨幣數(shù)量 ,。在 Microsoft SQL Server 中,,貨幣數(shù)據(jù)的數(shù)據(jù)類型是Money 和 Smallmoney。Money 數(shù)據(jù)類型要求 8 個存儲字節(jié),,Smallmoney 數(shù)據(jù)類型要求 4 個存儲字節(jié),。

(7)特殊數(shù)據(jù)類型

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

Timestamp 用于表示SQL Server 活動的先后順序,,以二進(jìn)投影的格式表示,。Timestamp 數(shù)據(jù)與插入數(shù)據(jù)或者日期和時間沒有關(guān)系。

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

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

2.用戶定義的數(shù)據(jù)類型

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

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

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

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

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

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

例子:

Use cust

Exec sp_addtype ssn,‘Varchar(11)‘,"Not Null‘

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

例子:

Use cust

Exec sp_addtype birthday,datetime,‘Null‘

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

例子:

Use master

Exec sp_addtype telephone,‘varchar(24),‘Not Null‘

Eexc sp_addtype fax,‘varchar(24)‘,‘Null‘

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

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

當(dāng)用戶定義的數(shù)據(jù)類型不需要時,可刪除,。刪除用戶定義的數(shù)據(jù)類型的命令是 sp_droptype {‘type‘},。

例子:

Use master

Exec sp_droptype ‘ssn‘

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


2.數(shù)據(jù)庫的相關(guān)操作


1.如何創(chuàng)建數(shù)據(jù)庫

(1).使用 Create Database 創(chuàng)建數(shù)據(jù)庫


Create Database 語名的語法形式如下:


Create Database database_name

[On

{[Primary](Name=logical_file_name,

Filename=‘os_file_name‘

[,Size=size]

[,Maxsize=max_size]

}[,...n]

]

[Log On

}(Name=Logical_name,

Filename=‘os_file_name‘

[,Size=size])

}[,...n]

]

[For Restore]


注釋:

Primary:該選項是一個關(guān)鍵字,,用來指定主文件組中的文件。主文件組不公包含了數(shù)據(jù)庫系統(tǒng)表中的全部內(nèi)容,,而且還包含了沒有在用戶文件組中包含的全部對象,。一個數(shù)據(jù)庫只能有一個主文件。在默認(rèn)情況下,,即在沒有指定Primary關(guān)鍵字時,,列在語句中的第一個文件就是主文件。

Name:該選項指定數(shù)據(jù)庫的邏輯名字,,這是在SQL Server 系統(tǒng)中使用的名稱,,是數(shù)據(jù)庫在SQL Server 中標(biāo)識符。

Filename:該選項用來指定數(shù)據(jù)庫所在文件的操作系統(tǒng)文件名稱和路徑,。在os_file_name中的路徑必須是SQL Server 所在服務(wù)器上的一個文件夾,。該操作系統(tǒng)文件名稱與Name 的邏輯名稱是一一對應(yīng)的,。

Size:該選項用來指定數(shù)據(jù)庫操作系統(tǒng)文件的大小,。在指定文件大小的時候,既可以使用MB單位,,也可以使用KB單位,。如果沒有指定單位,那么系統(tǒng)默認(rèn)的單位是MB,。文件最小是1MB,,也就是說,數(shù)據(jù)庫所在的文件不能小于1MB,。在默認(rèn)情況下,,數(shù)據(jù)庫數(shù)據(jù)文件的大小是3MB,數(shù)據(jù)庫日志文件的大小是1MB,。

Maxsize:該選項用來指定操作系統(tǒng)文件可以增長的最大尺寸,。在指定文件增長尺寸的時候,既可以使用MB單位,,也可以使用KB單位,。如果沒有指定單位,那么系統(tǒng)的默認(rèn)單位是MB,。如果沒有指定文件可以增長的最大尺寸,,那么系統(tǒng)的增長是沒有限制的,可以占滿整個磁盤空間,。

FielGrowth:該選取項用來指定文件的增量,,當(dāng)然該選項不能與Maxsize選項有沖突,。該選項指定的數(shù)據(jù)值為零時,表示文件不能增長,。該選項可以用MB,、KB和百分比指定。


例子:

創(chuàng)建一個cust數(shù)據(jù)庫,,該數(shù)據(jù)庫的主數(shù)據(jù)文件的邏輯名稱是cust_data,,操作系統(tǒng)文件是cust.mdf,大小是15MB,,最大是30MB,,以20%的速度增加;該數(shù)據(jù)庫的日志文件的邏輯名稱是cust_log,,操作系統(tǒng)是cust.ldf,,大小是3MB,最大是10MB,,以1MB的速度增加,。


Create Database cust

On

Primary (Name=cust_data,

Filename=‘d:cust.mdf‘,

Size=15MB,

Maxsize=30MB,

Filegrowth=20%)

Log On

(Name=cust_log,

Filename=‘d:cust.ldf‘,

Size=3MB,

Maxsize=10MB,

FileGrowth=1MB)


2.如何增加數(shù)據(jù)庫的大小

(1).使用Alter Database命令來增加數(shù)據(jù)庫文件的大小

如果在創(chuàng)建數(shù)據(jù)庫文件時沒有配置文件的大小自動增長,那么可以使用Alter Database命令來增加文件的大小,。


例子:

將數(shù)據(jù)庫cust的數(shù)據(jù)文件cust_data的大小調(diào)整為50MB,。

Alter Database cust

Modify File (Name=‘cust_data‘,Size=50)


(2).使用Add File 增加一個次要文件

通過為數(shù)據(jù)庫增加次要的數(shù)據(jù)文件和日志文件來增加數(shù)據(jù)庫的大小。

例子:

Alter Database cust

Add File

(Name=cust_data2,Filename=‘d:cust2.mdf‘,

Size=5MB,

Maxsize=10MB,

Filegrowth=10%)


3.壓縮數(shù)據(jù)庫和數(shù)據(jù)文件

(1)使用Dbcc Shrinkdatabase 命令壓縮整個數(shù)據(jù)庫

例子:

將cust數(shù)據(jù)庫的大小壓縮到10%

Dbcc Shrinkdatabase (cust,10)

(2)使用Dbcc ShrinkFile命令壓縮數(shù)據(jù)庫中的某一個數(shù)據(jù)文件

例子:

將cust數(shù)據(jù)文件的大小壓縮到5MB

Dbcc ShrinkFile (cust,5)


4.刪除數(shù)據(jù)庫

(1)使用Drop命令刪除數(shù)據(jù)庫

例子:

將刪除cust數(shù)據(jù)庫

Drop Database cust


3.表的相關(guān)操作)


1.創(chuàng)建表

(1)用Create Table 命令創(chuàng)建表

語法:

Create Table tabl_name

({

}column_name As computed_column_expression

}

}[,...n]

)

[On {fiegroup | Default}]

[Textimage_On {fiegroup | Default}]


例子:

打開cust數(shù)據(jù)庫,,創(chuàng)建一個表,,該表包含了學(xué)生的有關(guān)信息,即有學(xué)號,、姓名,、性別、出生日期,、籍貫,、聯(lián)系電話、住址和備注信息,。

Use cust

Create Table students

(

number int not null,

name varchar(10) not null,

sex char(2) null,

birthday datetime null,

hometown varchar(30) null,

telphone_no varchar(12) null,

address varchar(30) null,

others varchar(50) null

)

在這個表中number表示學(xué)生代號,,數(shù)據(jù)類型為int,不允許為空,;name表示學(xué)生姓名,,數(shù)據(jù)類型為varchar,長度為10,,不允許為空,;sex表示學(xué)生的性別,數(shù)據(jù)類型為char,,長度為2,,允許為空,;birthday表示學(xué)生的出生日期,數(shù)據(jù)類型為datetime,,允許為空,;hometown表示學(xué)生的籍貫,數(shù)據(jù)類型為varchar,,長度為30,,允許為空;telephone_no表示學(xué)生的聯(lián)系電腦,,數(shù)據(jù)類型為varchar,,長度為12,允許為空,;address表示學(xué)生的住址,,數(shù)據(jù)類型為varchar,長度為30,,允許為空,;others表示學(xué)生的備注信息,長度為50,,允許為空,。


2.修改表的結(jié)構(gòu)

(1)使用T-SQL語句增加和刪除一個新列

語法:

Alter Table table

{

ADO

{[]

|colun_name As computed_column_expression

|[]

}[,...n]

|Drop

{Column column

}[,...n]

}


例子:打開cust數(shù)據(jù)庫,修改其中的表students的結(jié)構(gòu),,增加一個新字段,,字段名為ying,數(shù)據(jù)類型是varchar,,長度是10,沒有默認(rèn)值,,充許為空,。

Use cust

Alter Table students Add ying varchar(10) null


打開cust數(shù)據(jù)庫,修改其中的表students的結(jié)構(gòu),,刪除一個字段,,字段名為ying。

Use cust

Alter Table students Drop Column ying


3.向表中插入數(shù)據(jù)

(1)用 Insert 語句

語法如下:

Insert [Into]

{table_name|view_name}[(column_list)]

{Values|values_list|select_statement}

注意:在插入數(shù)據(jù)時,,字符數(shù)據(jù)和日期數(shù)據(jù)要使用引號引起來,。

例子:

Use cust

Insert Into students

Values (11,"影子","男","1999-12-12","湖北","83779805","武漢市橋口區(qū)","VB愛好者")

打開cust數(shù)據(jù)庫,向students表中插入數(shù)據(jù)


(2)用Default 選項

在插入數(shù)據(jù)時,,可以使用Default選項,。Default選項有兩種形式,一種形式是Default Values,,另一種是Default,。

Default Values 形式為表中的某一行的所有列插入默認(rèn)值,。使用這種形式的前提條件是表中的所有列必須是這四種類型之一:Identity屬性,Timestamp數(shù)據(jù)類型,,允許為Null,,或者有一個指定的默認(rèn)值。否則,,會錯誤信息,。

例子:

Use cust

Insert Into students Default Values

這個例子會出現(xiàn)錯誤,因為students表的number字段是設(shè)置為不允許為空的,。


Default 形式是為表中的某一列插入默認(rèn)值,。要插入的該列必須具備一定的條件,即該列要么是Timestamp 數(shù)據(jù)類型,,要么是允許為Null,,要么是有一個指定的默認(rèn)值,否則,,會出現(xiàn)錯誤信息,。

例子:

Use cust

Insert Into students Values(11,"影子",Default,Default,Default,Default,Default,Default)

由天前2個字段不能為空,所以要賦值,,否則會出現(xiàn)錯誤,,而后面的6個字段允許為空,因此可以調(diào)用Default默認(rèn),。


(3)插入部分?jǐn)?shù)據(jù)

在使用Insert語句插入數(shù)據(jù)是,,還可以插入部分?jǐn)?shù)據(jù),也就是可以為每一行的指定的部分列插入數(shù)據(jù),。在插入部分?jǐn)?shù)據(jù)時,,應(yīng)該注意以下三個問題:

☆在 Insert 子句中,指定要插入數(shù)據(jù)的列名,。

☆在 Values 子句中,,列出與列名對應(yīng)的數(shù)據(jù)。列名的順序和數(shù)據(jù)的順序應(yīng)該完全對應(yīng),。

☆在 Insert 子句中,,沒有列出的列應(yīng)該至少具有這四種類型之一:Identtty 屬性,Timestamp 數(shù)據(jù)類型,,允許為 Null,,或者有一個指定的默認(rèn)值。否則,,會出現(xiàn)錯誤信息,。

例子:

Use cust

Insert Into students (number,name)

Values (110,"影子")

打開cust數(shù)據(jù)庫,向students表中插入一行數(shù)據(jù)

注意:如用下例語句將發(fā)生錯誤,因為name字段是不允許為空的(在創(chuàng)建數(shù)據(jù)庫時設(shè)定的)

Insert Into students (number)

Values (110)


(4)用 Select 語句插入多條數(shù)據(jù)

Insert 語句插入數(shù)據(jù)的特點是每一次只能插入一行數(shù)據(jù),。相反,,Select 也可以用在 Insert 語句中,并且可以一次插入多條數(shù)據(jù),。使用 Select 語句插入數(shù)據(jù)的語法形式如下:

Insert table_name

Select column_list

From table_list

Where search_conditions

在使用 Select 語句插入數(shù)據(jù)時,,應(yīng)該注意下面幾點:

☆在 Insert 語句中使用 Select 時,他們參考的表既可以是相同的,,也可以是不同的,。

☆要插入數(shù)據(jù)的表必須已經(jīng)存在。

☆要插入數(shù)據(jù)的表必須和 Select 的結(jié)果集兼容,。兼容的含義是列的數(shù)量和順序必須相同,,列的數(shù)據(jù)類型或者相同,或者SQL Server 可以自動轉(zhuǎn)換,。

例子:

Use cust

Insert students

Select number,name,sex,birthday,hometown,telphone_no,address,others

From students

注意:

Select 后面的字段要輸完整,,這個例子是自己向自己插入多條數(shù)據(jù)(自己向自己插入是被允許的)

補(bǔ)充:

你還可以“From students”后面加上“Where name="影子"”,只插入name等于影子的記錄,,可以用And 和 Or 加上多個條件,。


(5)使用 Select Into 插入數(shù)據(jù)到一個新表中

帶有 Into 子句的 Select 語句允許用戶定義一個新表并且把數(shù)據(jù)插入到新表中。這種方法不同于前面講述的那些方法,。在前面的那些方法中,,一個共同的特點,是在數(shù)據(jù)輸入之前表已經(jīng)存在,。而使用 Select Into 插入數(shù)據(jù)的方法,,是在插入數(shù)據(jù)的過程中建立新表。

Select Into 語句的語法如下:

Select select_list

Into new_table_name

From table_list

Where search_conditions

在使用 Select Into 插入數(shù)據(jù)時,,要注意下面幾點:

☆在某個數(shù)據(jù)庫中使用 Select Into 插入數(shù)據(jù)時,,設(shè)置該數(shù)據(jù)庫的 Select Into/Bulk Copy 為真。

☆新表不能存在,,否則會產(chǎn)生錯誤信息,。

☆新表中的列和行是基于查詢結(jié)果集

☆要插入的數(shù)據(jù)不記錄在日志中。

☆在select_list 中出現(xiàn)的列應(yīng)該使用別名,,否則,新表中的列沒有列名,。沒列名的表只能通過 Select * From new_table_name 的形式查詢,。因此,應(yīng)該為列起個別名,。

☆這種方法多用在對列進(jìn)行各種計算的情況,。

例子:

Select number,name

Into newcust1

From students

創(chuàng)建新的表newcust1,插入students表中的number和name字段的所有數(shù)據(jù)。

補(bǔ)充:如果要插入所有字段的記錄,,則“Select *”,,也可在“From students”后加條件,方法和上個例子一樣,。


(6)用 UPdate 語句修改表中的數(shù)據(jù)

Update 語句用來修改表中已存在的數(shù)據(jù),。Update 語句既可以一次修改一行數(shù)據(jù),也可以一次修改許多行,,甚至可以一次修改表中的全部數(shù)據(jù),。Update 語句使用 Where 子句指定要修改的行,使用 Set 子句給出新的數(shù)據(jù),。新數(shù)據(jù)可以是常量,,也可以是指定的表達(dá)式,還可以是使用 From 子句來自其他表的數(shù)據(jù),。

Update 語句的語法如下:

Update {table_name|view_name}

Set {column_list}=expression [,,. . .]

[Where clause]

在使用 Update 語句時,如果沒有使用 Where 子句,,那么就對表中所有的行進(jìn)行修改,。如果使用Update 語句修改數(shù)據(jù)時與數(shù)據(jù)完整性約束有沖突,那么修改就不會發(fā)生,,整個修改事務(wù)全部滾回,。例如,這種沖突可能是所輸入的值是錯誤的數(shù)據(jù)類型,,或者所輸入的值違背了在該列定義的規(guī)則約束,,等等。

例子:

Use cust

Update students

Set name=name+"007"

Where number>100

打開cust數(shù)據(jù)庫,,修改students表,,使number>100的數(shù)據(jù)的name的值全部加"007"。


4.用 Delete 語句刪除表中的數(shù)據(jù)

當(dāng)數(shù)據(jù)庫中的數(shù)據(jù)不需要的進(jìn)修可以刪除,。一般情況下,,刪除數(shù)據(jù)使用 Delete 語句。Delete 語句可以一次從一個表中刪除一條或者多條數(shù)據(jù)行,。

Delete 語句的語法如下:

Delete [From] table_name

Where search_conditions

在 Delete 語句中如果使用了 Where 子句,,那么就從指定的表中刪除滿足 Where 子句條件的數(shù)據(jù)行。

例子:

Use cust

Delete students

Where number>100

刪除 students中,,number>100的數(shù)據(jù)

補(bǔ)充:

如果在 Delete 語句中沒有指定 Where 子句,,那么就將表中所有的記錄全部刪除,即 Delete students 語句刪除表中的全部記錄,。

在刪除表中的全部數(shù)據(jù)時,,還可以使用 Truncate Table 語句。Truncate Table 語句和 Delete 語句都可以將表中的全部數(shù)據(jù)刪除,但是,,兩條語句又有不同的特點,。當(dāng)用戶使用 Delete 語句刪除數(shù)據(jù)時,被刪除的數(shù)據(jù)要記錄在日志中,。并不將對數(shù)據(jù)的變化記錄在日志中,。因此,使用 Truncate Table students 語句刪除記錄的速度快于使用 Delete students 語句刪除表中記錄的速度,。


5.用 Drop Table 命令刪除表

當(dāng)數(shù)據(jù)庫中的表不需要時可以刪除,。刪除表可以使用 Drop Table 語句。刪除表就是刪除表的定義以及表的全部數(shù)據(jù),、索引,、觸發(fā)器、約束和指定該表的許可,。當(dāng)刪除表時,,基于表的視圖不能被刪除,必須使用 Drop View 語句刪除視圖,。

Drop Table 語句的語法如下:

Drop Table table_name

例子:

Use cust

Drop Table students

刪除cust數(shù)據(jù)庫中的students表,。

補(bǔ)充:

不能使用 Drop Table 語句刪除正在被約束參考的表,必須首先要么刪除外鍵約束,,要么刪除參考表,。表的所有者可以刪除表。當(dāng)刪除表是時,,綁定在該表上的規(guī)則或者默認(rèn)則失掉了綁定,,該表的約束或者觸發(fā)器則自動被刪除。如果重新創(chuàng)建表,,必須重新綁定相應(yīng)的規(guī)則和默認(rèn),、重新創(chuàng)建觸發(fā)器和增加必要的約束。另外,,系統(tǒng)表不能刪除,。

刪除表的許可屬于表的所有者。然而,,數(shù)據(jù)所有者(DBO),、系統(tǒng)管理員(SA)和DLL管理員可以刪除數(shù)據(jù)庫中的任何對象。


4.數(shù)據(jù)的檢索


1.用 Select 子句檢索記錄

Select 子句是每一個檢索數(shù)據(jù)的查詢核心,。它告訴數(shù)據(jù)庫引擎返回什么字段,。

Select 子句的常見形式是:

Select *

該子句的意思是“返回在所指定的記錄源中能找到的所有字段”。這種命令形式很方便,,因為你無需知道從表中檢索的字段名稱。然而,檢索表中的所有列是低效的,。因此,,因該只檢索需要的字段,這樣可以大大的提高查詢的效率,。

2.使用 From 子句指定記錄源

From 子句說明的是查詢檢索記錄的記錄源,;該記錄源可以是一個表或另一個存儲查詢。

你還能從多個表中檢索記錄,,這在后面的章節(jié)中將介紹,。

例子:

Select * From students 檢索students表中的所有記錄

3.用 Where 子句說明條件

Where 子句告訴數(shù)據(jù)庫引擎根據(jù)所提供的一個或多個條件限定其檢索的記錄。條件是一個表達(dá)式,,可具有真假兩種判斷,。

例子:

Select * From students Where name="影子"

返回students中name字段為影子的列表,這次所返回的結(jié)果沒有特定順序,,除非你使用了 Order By 子句,。該子句將在后面的章節(jié)介紹。

注意:Where 子句中的文本字符串界限符是雙引號,,在VB中因改為單引號,,因為在VB中字符串的界定符是雙引號。

補(bǔ)充:

使用 And 和 Or 邏輯可以將兩個或更多的條件鏈接到一起以創(chuàng)建更高級的 Where 子句,。

例子:

Select * From students Where name="影子" And number>100

返回name為影子number大于100的列表,。

例子:

Select * From students Where name="影子" And (number>100 Or number<50)

返回name為影子,number大于100或者小于50的列表,。


Where 子句中用到的操作符

操作符 功能

< 小于

<= 小于或等于

> 大于

>= 大于或等于

= 等于

<> 不等于

Between 在某個取值范圍內(nèi)

Like 匹配某個模式

In 包含在某個值列表中

SQL中的等于和不等于等操作符與VB中的意義和使用相同


例子:

(1).Between 操作符

Use cust

Select * From students

Where number Between 1 and 100

Between 操作符返回的是位于所說明的界限之內(nèi)的所有記錄值,。這個例子就返回 number 字段 1 到 100 之間的全部記錄。


(2). Like 操作符和通配符

Use cust

Select * From students

Where name Like "%影%"

Like 操作符把記錄匹配到你說明的某個模式,。這個例子是返回含“影”的任意字符串,。


四種通配符的含義

通配符 描述

% 代表零個或者多個任意字符

_(下劃線) 代表一個任意字符

[] 指定范圍內(nèi)的任意單個字符

[^] 不在指定范圍內(nèi)的任意單個字符


全部示例子如下:

Like "BR%" 返回以"BR"開始的任意字符串

Like "br%" 返回以"Br"開始的任意字符串

Like "%een" 返回以"een"結(jié)束的任意字符串

Like "%en%" 返回包含"en"的任意字符串

Like "_en" 返回以"en"結(jié)束的三個字符串

Like "[CK]%" 返回以"C"或者"K"開始的任意字符串

Like "[S-V]ing" 返回長為四個字符的字符串,結(jié)尾是"ing",,開始是從S到V,。

Like "M[^c]%" 返回以"M"開始且第二個字符不是"c"的任意字符串。


4. 使用 Order By 對結(jié)果排序

Order By 子句告訴數(shù)據(jù)庫引擎對其檢索的記錄進(jìn)行排序,??梢詫θ魏巫侄闻判颍蛘邔Χ鄠€字段排序,,并且可以以升序或隆序進(jìn)行排序,。

在一個正式的 Select 查詢之后包含一個 Order By 子句,后跟想排序的字段(可以有多個)便可以說明一個排序順序,。

例子:

Use cust

Select * From students

Where name Like "%影%"

Order By number

對返回的結(jié)果按 number 進(jìn)行排序,。


以降序排序

如要以隆序排序,,只需在排序的字段之后使用 Desc 關(guān)鍵字。

例子:

Use cust

Select * From students

Where name Like "%影%"

Order By number Desc


5. 使用 Top 顯示某個范圍的第一個記錄或最后一個記錄,。

使用 Top 關(guān)鍵字可以只顯示一個大記錄前面或后面的少數(shù)幾個記錄,。在查詢中,Top 關(guān)鍵字與排序子句一起把結(jié)果集限制為少數(shù)幾個記錄或按某個百分比顯示整個結(jié)果記錄集合中的一部分,。

例子:

Select Top 3 * From students 返回 students 表中的前3條記錄

Select Top 10 Percent * From students 返回 students 表中前面的10%個記錄

Select Top 3 * From students Order By number desc 返回 students 表中 number 最大的(最后)的3條記錄


6. 用 As 對字段名進(jìn)行別名化

為什么在查詢中對字段命以別名,,或重新命名,這樣做的原因有兩個:

☆所涉及的表的字段名很長,,想使字段在結(jié)果集中更易處理一些,。

☆創(chuàng)建的查詢產(chǎn)生了某些計算或合計列,需要對之進(jìn)行命名,。

不管是什么原因?qū)ψ侄蚊詣e名,,在 SQL 中都可以容易地使用 As 子句做得。

例子:

Select number As 學(xué)號 ,name As 姓名 From students


7. 合并查詢

合并查詢( Union Query )用于合并具有相同字段結(jié)構(gòu)的兩個表的內(nèi)容,,如果想在一個結(jié)果集中顯示多個記錄源中的不相關(guān)的記錄時,,這十分有用。

例子:

Select *

From students

Union

Select *

From students1

該查詢結(jié)果集把 students 和 students1 中的記錄合并到一個結(jié)果中,,其輸出就和原表歸檔之前一模一樣,。

注意:缺省情況下,合并查詢不會返回重復(fù)記錄(如果記錄歸檔系統(tǒng)在把記錄拷到歸檔表中后不將相應(yīng)的記錄刪除,,這時該功能就有用了),,可以加上 All 關(guān)鍵字而讓合并查詢顯示重復(fù)記錄。

例子:

Select *

From students

Union All

Select *

From students1

該合并查詢顯示 students 表和 students1 表的內(nèi)容時,,沒有對重復(fù)記錄進(jìn)行處理

補(bǔ)充:

Union 運(yùn)算符允許把兩個或者多個查詢結(jié)果合并到一個查詢結(jié)果集中,。如果比較 Union 和 Join 兩咱運(yùn)算符,那么 Union 運(yùn)算符增加行的數(shù)量,,而 Join 運(yùn)算符增加列的數(shù)量,。使用 Union 時應(yīng)該注意,兩個結(jié)果中的列的結(jié)構(gòu)必須匹配,,數(shù)據(jù)類型必須兼容等等,。

Union 運(yùn)算符的語法形式如下:

Select select_list

From clause

Where clause

Group By clause

Having clause

Union [All]

Select select_list

From clause

Where clause

Group By clause

Having clause

Order By clause

Compute clause

對于 Union 運(yùn)算符,有下列幾點需要說明:

·在默認(rèn)情況下,,Union 運(yùn)算符刪除全部冗余行,。如果使用All 選項,那么冗余行不刪除,。

·在 Union 語句中的全部 select_list 必須有相同數(shù)量的列,、兼容的數(shù)據(jù)類型并且按照同樣的順序出現(xiàn)。

·在結(jié)果集中,,列名來自第一個 Select 語句,。


8.連接查詢

在實際使用過程中經(jīng)常需要同時從兩個表或者兩個以上表中檢索數(shù)據(jù),。連接就是允許同時從兩個表或者兩個以上表中檢索數(shù)據(jù),指定這些表中某個或者某些列作為連接條件,。在 SQL Server 中,,可以使用兩種連接語法形式,一種是 Ansi 連接語法形式,,這是連接用在 From 子句中,另外一種是 SQL Server 連接語句形式,,這是連接用在 Where 子句中,。

Ansi 連接語法形式如下:

Select table_name.column_name,table_name.column_name,...

From {table_name [join_type] Join table_name On search_conditions}

Where [search_conditions]

在 Ansi 語法形式中,可以 Ansi 連接關(guān)鍵字來確定使用的連接形式,。例如:

☆使用 Inner Join 關(guān)鍵字,,結(jié)果集中僅包含滿足條件的行。

☆使用 Cross Join 關(guān)鍵字,,結(jié)果集中包含兩個表中所有行的組合,。

☆使用 Outer Join 關(guān)鍵字,結(jié)果集中既包含那些滿足條件的行,,還包含那些其中某個表的全部行,。

SQL Server 連接語法形式如下所示:

Select table_name.column_name,table_name.column_name,...

From [table_name,tab


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多