国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

SQL的基本操作

2024-07-21 02:06:26
字體:
來源:轉載
供稿:網(wǎng)友
sql的基本操作1.數(shù)據(jù)類型
數(shù)據(jù)類弄是數(shù)據(jù)的一種屬性,表示數(shù)據(jù)所表示信息的類型。任何一種計算機語言都定義了自己的數(shù)據(jù)類型。當然,不同的程序語言都具有不同的特點,所定義的數(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)二進制數(shù)據(jù)類型

二進制數(shù)據(jù)包括 binary、varbinary 和 image.

binary 數(shù)據(jù)類型既可以是固定長度的(binary),也可以是變長度的。

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

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

在 image 數(shù)據(jù)類型中存儲的數(shù)據(jù)是以位字符串存儲的,不是由 sql server 解釋的,必須由應用程序來解釋。例如,應用程序可以使用 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 標準定義的字符。在 unicode 標準中,包括了以各種字符集定義的全部字符。使用unicode 數(shù)據(jù)類型,所戰(zhàn)勝的窨是使用非 unicode 數(shù)據(jù)類型所占用的窨大小的兩倍。

在 sql server 中,unicode 數(shù)據(jù)以 nchar、nvarchar 和 ntext 數(shù)據(jù)類型存儲。使用這種字符類型存儲的列可以存儲多個字符集中的字符。當列的長度變化時,應該使用 nvarchar 字符類型,這時最多可以存儲 4000 個字符。當列的長度固定不變時,應該使用 nchar 字符類型,同樣,這時最多可以存儲 4000 個字符。當使用 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 日結束(每一個值要求 8 個存儲字節(jié))。使用 smalldatetime 數(shù)據(jù)類型時,所存儲的日期范圍是 1900 年 1 月 1日 開始,到 2079 年 12 月 31 日結束(每一個值要求 4 個存儲字節(jié))。

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

set dateformat {format | @format _var|

其中,format | @format_var 是日期的順序。有效的參數(shù)包括 mdy、dmy、ymd、ydm、myd 和 dym。在默認情況下,日期格式為 mdy。

例如,當執(zhí)行 set dateformat ymd 之后,日期的格式為年 月 日 形式;當執(zhí)行 set dateformat dmy 之后,日期的格式為 日 月有年 形式

(5)數(shù)字數(shù)據(jù)類型

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

整數(shù)由正整數(shù)和負整數(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。例如,三分之一這個分數(shù)記作。3333333,當使用近似數(shù)據(jù)類型時能準確表示。因此,從系統(tǒng)中檢索到的數(shù)據(jù)可能與存儲在該列中數(shù)據(jù)不完全一樣。

(6)貨幣數(shù)據(jù)表示正的或者負的貨幣數(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 活動的先后順序,以二進投影的格式表示。timestamp 數(shù)據(jù)與插入數(shù)據(jù)或者日期和時間沒有關系。

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

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

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

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

當創(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ù)類型

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

例子:

use master

exec sp_droptype 'ssn'

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


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


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

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

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

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

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

fielgrowth:該選取項用來指定文件的增量,當然該選項不能與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的大小調整為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.表的相關操作)


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)建一個表,該表包含了學生的有關信息,即有學號、姓名、性別、出生日期、籍貫、聯(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表示學生代號,數(shù)據(jù)類型為int,不允許為空;name表示學生姓名,數(shù)據(jù)類型為varchar,長度為10,不允許為空;sex表示學生的性別,數(shù)據(jù)類型為char,長度為2,允許為空;birthday表示學生的出生日期,數(shù)據(jù)類型為datetime,允許為空;hometown表示學生的籍貫,數(shù)據(jù)類型為varchar,長度為30,允許為空;telephone_no表示學生的聯(lián)系電腦,數(shù)據(jù)類型為varchar,長度為12,允許為空;address表示學生的住址,數(shù)據(jù)類型為varchar,長度為30,允許為空;others表示學生的備注信息,長度為50,允許為空。


2.修改表的結構

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

語法:

alter table table

{

ado

{[]

|colun_name as computed_column_expression

|[]

}[,...n]

|drop

{column column

}[,...n]

}


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

use cust

alter table students add ying varchar(10) null


打開cust數(shù)據(jù)庫,修改其中的表students的結構,刪除一個字段,字段名為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 形式為表中的某一行的所有列插入默認值。使用這種形式的前提條件是表中的所有列必須是這四種類型之一:identity屬性,timestamp數(shù)據(jù)類型,允許為null,或者有一個指定的默認值。否則,會錯誤信息。

例子:

use cust

insert into students default values

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


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

例子:

use cust

insert into students values(11,"影子",default,default,default,default,default,default)

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


(3)插入部分數(shù)據(jù)

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

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

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

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

例子:

use cust

insert into students (number,name)

values (110,"影子")

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

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

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ù)時,應該注意下面幾點:

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

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

☆要插入數(shù)據(jù)的表必須和 select 的結果集兼容。兼容的含義是列的數(shù)量和順序必須相同,列的數(shù)據(jù)類型或者相同,或者sql server 可以自動轉換。

例子:

use cust

insert students

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

from students

注意:

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

補充:

你還可以“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ù)據(jù)庫的 select into/bulk copy 為真。

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

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

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

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

☆這種方法多用在對列進行各種計算的情況。

例子:

select number,name

into newcust1

from students

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

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


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

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

update 語句的語法如下:

update {table_name|view_name}

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

[where clause]

在使用 update 語句時,如果沒有使用 where 子句,那么就對表中所有的行進行修改。如果使用update 語句修改數(shù)據(jù)時與數(shù)據(jù)完整性約束有沖突,那么修改就不會發(fā)生,整個修改事務全部滾回。例如,這種沖突可能是所輸入的值是錯誤的數(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ù)

當數(shù)據(jù)庫中的數(shù)據(jù)不需要的進修可以刪除。一般情況下,刪除數(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ù)

補充:

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

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


5.用 drop table 命令刪除表

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

drop table 語句的語法如下:

drop table table_name

例子:

use cust

drop table students

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

補充:

不能使用 drop table 語句刪除正在被約束參考的表,必須首先要么刪除外鍵約束,要么刪除參考表。表的所有者可以刪除表。當刪除表是時,綁定在該表上的規(guī)則或者默認則失掉了綁定,該表的約束或者觸發(fā)器則自動被刪除。如果重新創(chuàng)建表,必須重新綁定相應的規(guī)則和默認、重新創(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ù)所提供的一個或多個條件限定其檢索的記錄。條件是一個表達式,可具有真假兩種判斷。

例子:

select * from students where name="影子"

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

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

補充:

使用 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 在某個取值范圍內

like 匹配某個模式

in 包含在某個值列表中

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


例子:

(1).between 操作符

use cust

select * from students

where number between 1 and 100

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


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

use cust

select * from students

where name like "%影%"

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


四種通配符的含義

通配符 描述

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

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

[] 指定范圍內的任意單個字符

[^] 不在指定范圍內的任意單個字符


全部示例子如下:

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

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

like "%een" 返回以"een"結束的任意字符串

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

like "_en" 返回以"en"結束的三個字符串

like "[ck]%" 返回以"c"或者"k"開始的任意字符串

like "[s-v]ing" 返回長為四個字符的字符串,結尾是"ing",開始是從s到v。

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


4. 使用 order by 對結果排序

order by 子句告訴數(shù)據(jù)庫引擎對其檢索的記錄進行排序。可以對任何字段排序,或者對多個字段排序,并且可以以升序或隆序進行排序。

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

例子:

use cust

select * from students

where name like "%影%"

order by number

對返回的結果按 number 進行排序。


以降序排序

如要以隆序排序,只需在排序的字段之后使用 desc 關鍵字。

例子:

use cust

select * from students

where name like "%影%"

order by number desc


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

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

例子:

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 對字段名進行別名化

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

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

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

不管是什么原因對字段命以別名,在 sql 中都可以容易地使用 as 子句做得。

例子:

select number as 學號 ,name as 姓名 from students


7. 合并查詢

合并查詢( union query )用于合并具有相同字段結構的兩個表的內容,如果想在一個結果集中顯示多個記錄源中的不相關的記錄時,這十分有用。

例子:

select *

from students

union

select *

from students1

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

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

例子:

select *

from students

union all

select *

from students1

該合并查詢顯示 students 表和 students1 表的內容時,沒有對重復記錄進行處理

補充:

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

union 運算符的語法形式如下:

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 運算符,有下列幾點需要說明:

·在默認情況下,union 運算符刪除全部冗余行。如果使用all 選項,那么冗余行不刪除。

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

·在結果集中,列名來自第一個 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 連接關鍵字來確定使用的連接形式。例如:

☆使用 inner join 關鍵字,結果集中僅包含滿足條件的行。

☆使用 cross join 關鍵字,結果集中包含兩個表中所有行的組合。

☆使用 outer join 關鍵字,結果集中既包含那些滿足條件的行,還包含那些其中某個表的全部行。

sql server 連接語法形式如下所示:

select table_name.column_name,table_name.column_name,...

from [table_name,tab

注冊會員,創(chuàng)建你的web開發(fā)資料庫,
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 竹北市| 和田县| 石城县| 大方县| 江川县| 濮阳市| 铅山县| 青田县| 威远县| 额济纳旗| 崇信县| 汤原县| 会昌县| 永安市| 丹东市| 怀远县| 道真| 苗栗县| 克山县| 尼勒克县| 钦州市| 天镇县| 金塔县| 通辽市| 景德镇市| 祁东县| 延安市| 宝丰县| 潼关县| 丰顺县| 北流市| 蒙城县| 清苑县| 金山区| 唐海县| 色达县| 岑巩县| 治多县| 五原县| 保靖县| 沈丘县|