SQL的基本操作
數據類弄是數據的一種屬性,表示數據所表示信息的類型。任何一種計算機語言都定義了自己的數據類型。當然,不同的程序語言都具有不同的特點,所定義的數據類型的各類和名稱都或多或少有些不同。SQL Server 提供了 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 個字節。
Varbinary[(n)] 是 n 位變長度的二進制數據。其中,n 的取值范圍是從 1 到 8000。其存儲窨的大小是 n + 4個字節,不是 n 個字節。
在 Image 數據類型中存儲的數據是以位字符串存儲的,不是由 SQL Server 解釋的,必須由應用程序來解釋。例如,應用程序可以使用 BMP、TIEF、GIF 和 JPEG 格式把數據存儲在 Image 數據類型中。
(2)字符數據類型
字符數據的類型包括 Char,Varchar 和 Text。
字符數據是由任何字母、符號和數字任意組合而成的數據。
Varchar 是變長字符數據,其長度不超過 8KB。Char 是定長字符數據,其長度最多為 8KB。超過 8KB 的ASCII 數據可以使用Text 數據類型存儲。例如,因為 Html 文檔全部都是 ASCII 字符,并且在一般情況下長度超過 8KB,所以這些文檔可以 Text 數據類型存儲在 SQL Server 中。
(3)Unicode 數據類型
Unicode 數據類型包括 Nchar,Nvarchar 和Ntext。
在 Microsoft SQL Server 中,傳統的非 Unicode 數據類型允許使用由特定字符集定義的字符。在 SQL Server 安裝過程中,允許選擇一種字符集。使用 Unicode 數據類型,列中可以存儲任何由Unicode 標準定義的字符。在 Unicode 標準中,包括了以各種字符集定義的全部字符。使用Unicode 數據類型,所戰勝的窨是使用非 Unicode 數據類型所占用的窨大小的兩倍。
在 SQL Server 中,Unicode 數據以 Nchar、Nvarchar 和 Ntext 數據類型存儲。使用這種字符類型存儲的列可以存儲多個字符集中的字符。當列的長度變化時,應該使用 Nvarchar 字符類型,這時最多可以存儲 4000 個字符。當列的長度固定不變時,應該使用 Nchar 字符類型,同樣,這時最多可以存儲 4000 個字符。當使用 Ntext 數據類型時,該列可以存儲多于 4000 個字符。
(4)日期和時間數據類型
日期和時間數據類型包括 Datetime 和 Smalldatetime 兩種類型。
日期和時間數據類型由有效的日期和時間組成。例如,有效的日期和時間數據包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01 AM 8/17/98”。前一個數據類型是日期在前,時間在后一個數據類型是霎時間在前,日期在后。在 Microsoft SQL Server 中,日期和時間數據類型包括Datetime 和 Smalldatetime 兩種類型時,所存儲的日期范圍是從 1753 年 1 月 1 日開始,到 9999 年12 月 31 日結束(每一個值要求 8 個存儲字節)。使用 Smalldatetime 數據類型時,所存儲的日期范圍是 1900 年 1 月 1日 開始,到 2079 年 12 月 31 日結束(每一個值要求 4 個存儲字節)。
日期的格式可以設定。設置日期格式的命令如下:
Set DateFormat {format | @format _var|
其中,format | @format_var 是日期的順序。有效的參數包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默認情況下,日期格式為 MDY。
例如,當執行 Set DateFormat YMD 之后,日期的格式為年 月 日 形式;當執行 Set DateFormat DMY 之后,日期的格式為 日 月有年 形式
(5)數字數據類型
數字數據只包含數字。數字數據類型包括正數和負數、小數(浮點數)和整數 。
整數由正整數和負整數組成,例如 39、25、0-2 和 33967。在 Micrsoft SQL Server 中,整數存儲的數據類型是 Int,Smallint 和 Tinyint。Int 數據類型存儲數據的范圍大于 Smallint 數據類型存儲數據的范圍,而 Smallint 據類型存儲數據的范圍大于 Tinyint 數據類型存儲數據的范圍。使用 Int 數據狗昔存儲數據的范圍是從 -2 147 483 648 到 2 147 483 647(每一個值要求 4個字節存儲空間)。使用 Smallint 數據類型時,存儲數據的范圍從 -32 768 到 32 767(每一個值要求2個字節存儲空間)。使用 Tinyint 數據類型時,存儲數據的范圍是從0 到255(每一個值要求1個字節存儲空間)。
精確小婁數據在 SQL Server 中的數據類型是 Decimal 和 Numeric。這種數據所占的存儲空間根據該數據的位數后的位數來確定。
在SQL Server 中,近似小數數據的數據類型是 Float 和 Real。例如,三分之一這個分數記作。3333333,當使用近似數據類型時能準確表示。因此,從系統中檢索到的數據可能與存儲在該列中數據不完全一樣。
(6)貨幣數據表示正的或者負的貨幣數量 。在 Microsoft SQL Server 中,貨幣數據的數據類型是Money 和 Smallmoney。Money 數據類型要求 8 個存儲字節,Smallmoney 數據類型要求 4 個存儲字節。
(7)特殊數據類型
特殊數據類型包括前面沒有提過的數據類型。特殊的數據類型有3種,即 Timestamp、Bit 和 Uniqueidentifier。
Timestamp 用于表示SQL Server 活動的先后順序,以二進投影的格式表示。Timestamp 數據與插入數據或者日期和時間沒有關系。
Bit 由 1 或者 0 組成。當表示真或者假、ON 或者 OFF 時,使用 Bit 數據類型。例如,詢問是否是每一次訪問的客戶機請求可以存儲在這種數據類型的列中。
Uniqueidentifier 由 16 字節的十六進制數字組成,表示一個全局唯一的。當表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標識號列使用這種數據類型可以區別不同的客戶。
2.用戶定義的數據類型
用戶定義的數據類型基于在 Microsoft SQL Server 中提供的數據類型。當幾個表中必須存儲同一種數據類型時,并且為保證這些列有相同的數據類型、長度和可空性時,可以使用用戶定義的數據類型。例如,可定義一種稱為 postal_code 的數據類型,它基于 Char 數據類型。
當創建用戶定義的數據類型時,必須提供三個數:數據類型的名稱、所基于的系統數據類型和數據類型的可空性。
(1)創建用戶定義的數據類型
創建用戶定義的數據類型可以使用 Transact-SQL 語句。系統存儲過程 sp_addtype 可以來創建用戶定義的數據類型。其語法形式如下:
sp_addtype {type},[,system_data_bype][,'null_type']
其中,type 是用戶定義的數據類型的名稱。system_data_type 是系統提供的數據類型,例如 Decimal、Int、Char 等等。 null_type 表示該數據類型是如何處理空值的,必須使用單引號引起來,例如'NULL'、'NOT NULL'或者'NONULL'。
例子:
Use cust
Exec sp_addtype ssn,'Varchar(11)',"Not Null'
創建一個用戶定義的數據類型 ssn,其基于的系統數據類型是變長為11 的字符,不允許空。
例子:
Use cust
Exec sp_addtype birthday,datetime,'Null'
創建一個用戶定義的數據類型 birthday,其基于的系統數據類型是 DateTime,允許空。
例子:
Use master
Exec sp_addtype telephone,'varchar(24),'Not Null'
Eexc sp_addtype fax,'varchar(24)','Null'
創建兩個數據類型,即 telephone 和 fax
(2)刪除用戶定義的數據類型
當用戶定義的數據類型不需要時,可刪除。刪除用戶定義的數據類型的命令是 sp_droptype {'type'}。
例子:
Use master
Exec sp_droptype 'ssn'
注意:當表中的列還正在使用用戶定義的數據類型時,或者在其上面還綁定有默認或者規則時,這種用戶定義的數據類型不能刪除。
2.數據庫的相關操作
1.如何創建數據庫
(1).使用 Create Database 創建數據庫
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:該選項是一個關鍵字,用來指定主文件組中的文件。主文件組不公包含了數據庫系統表中的全部內容,而且還包含了沒有在用戶文件組中包含的全部對象。一個數據庫只能有一個主文件。在默認情況下,即在沒有指定Primary關鍵字時,列在語句中的第一個文件就是主文件。
Name:該選項指定數據庫的邏輯名字,這是在SQL Server 系統中使用的名稱,是數據庫在SQL Server 中標識符。
Filename:該選項用來指定數據庫所在文件的操作系統文件名稱和路徑。在os_file_name中的路徑必須是SQL Server 所在服務器上的一個文件夾。該操作系統文件名稱與Name 的邏輯名稱是一一對應的。
Size:該選項用來指定數據庫操作系統文件的大小。在指定文件大小的時候,既可以使用MB單位,也可以使用KB單位。如果沒有指定單位,那么系統默認的單位是MB。文件最小是1MB,也就是說,數據庫所在的文件不能小于1MB。在默認情況下,數據庫數據文件的大小是3MB,數據庫日志文件的大小是 1MB。
Maxsize:該選項用來指定操作系統文件可以增長的最大尺寸。在指定文件增長尺寸的時候,既可以使用MB單位,也可以使用KB單位。如果沒有指定單位,那么系統的默認單位是MB。如果沒有指定文件可以增長的最大尺寸,那么系統的增長是沒有限制的,可以占滿整個磁盤空間。
FielGrowth:該選取項用來指定文件的增量,當然該選項不能與Maxsize選項有沖突。該選項指定的數據值為零時,表示文件不能增長。該選項可以用MB、KB和百分比指定。
例子:
創建一個cust數據庫,該數據庫的主數據文件的邏輯名稱是cust_data,操作系統文件是cust.mdf,大小是15MB,最大是 30MB,以20%的速度增加;該數據庫的日志文件的邏輯名稱是cust_log,操作系統是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.如何增加數據庫的大小
(1).使用Alter Database命令來增加數據庫文件的大小
如果在創建數據庫文件時沒有配置文件的大小自動增長,那么可以使用Alter Database命令來增加文件的大小。
例子:
將數據庫cust的數據文件cust_data的大小調整為50MB。
Alter Database cust
Modify File (Name='cust_data',Size=50)
(2).使用Add File 增加一個次要文件
通過為數據庫增加次要的數據文件和日志文件來增加數據庫的大小。
例子:
Alter Database cust
Add File
(Name=cust_data2,Filename='d:cust2.mdf',
Size=5MB,
Maxsize=10MB,
Filegrowth=10%)
3.壓縮數據庫和數據文件
(1)使用Dbcc Shrinkdatabase 命令壓縮整個數據庫
例子:
將cust數據庫的大小壓縮到10%
Dbcc Shrinkdatabase (cust,10)
(2)使用Dbcc ShrinkFile命令壓縮數據庫中的某一個數據文件
例子:
將cust數據文件的大小壓縮到5MB
Dbcc ShrinkFile (cust,5)
4.刪除數據庫
(1)使用Drop命令刪除數據庫
例子:
將刪除cust數據庫
Drop Database cust
3.表的相關操作)
1.創建表
(1)用Create Table 命令創建表
語法:
Create Table tabl_name
({
}column_name As computed_column_expression
}
}[,...n]
)
[On {fiegroup | Default}]
[Textimage_On {fiegroup | Default}]
例子:
打開cust數據庫,創建一個表,該表包含了學生的有關信息,即有學號、姓名、性別、出生日期、籍貫、聯系電話、住址和備注信息。
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表示學生代號,數據類型為int,不允許為空;name表示學生姓名,數據類型為varchar,長度為10,不允許為空; sex表示學生的性別,數據類型為char,長度為2,允許為空;birthday表示學生的出生日期,數據類型為datetime,允許為空; hometown表示學生的籍貫,數據類型為varchar,長度為30,允許為空;telephone_no表示學生的聯系電腦,數據類型為 varchar,長度為12,允許為空;address表示學生的住址,數據類型為varchar,長度為30,允許為空;others表示學生的備注信息,長度為50,允許為空。
2.修改表的結構
(1)使用T-SQL語句增加和刪除一個新列
語法:
Alter Table table
{
ADO
{[]
|colun_name As computed_column_expression
|[]
}[,...n]
|Drop
{Column column
}[,...n]
}
例子:打開cust數據庫,修改其中的表students的結構,增加一個新字段,字段名為ying,數據類型是varchar,長度是10,沒有默認值,充許為空。
Use cust
Alter Table students Add ying varchar(10) null
打開cust數據庫,修改其中的表students的結構,刪除一個字段,字段名為ying。
Use cust
Alter Table students Drop Column ying
3.向表中插入數據
(1)用 Insert 語句
語法如下:
Insert [Into]
{table_name|view_name}[(column_list)]
{Values|values_list|select_statement}
注意:在插入數據時,字符數據和日期數據要使用引號引起來。
例子:
Use cust
Insert Into students
Values (11,"影子","男","1999-12-12","湖北","83779805","武漢市橋口區","VB愛好者")
打開cust數據庫,向students表中插入數據
(2)用Default 選項
在插入數據時,可以使用Default選項。Default選項有兩種形式,一種形式是Default Values,另一種是Default。
Default Values 形式為表中的某一行的所有列插入默認值。使用這種形式的前提條件是表中的所有列必須是這四種類型之一:Identity屬性,Timestamp數據類型,允許為Null,或者有一個指定的默認值。否則,會錯誤信息。
例子:
Use cust
Insert Into students Default Values
這個例子會出現錯誤,因為students表的number字段是設置為不允許為空的。
Default 形式是為表中的某一列插入默認值。要插入的該列必須具備一定的條件,即該列要么是Timestamp 數據類型,要么是允許為Null,要么是有一個指定的默認值,否則,會出現錯誤信息。
例子:
Use cust
Insert Into students Values(11,"影子",Default,Default,Default,Default,Default,Default)
由天前2個字段不能為空,所以要賦值,否則會出現錯誤,而后面的6個字段允許為空,因此可以調用Default默認。
(3)插入部分數據
在使用Insert語句插入數據是,還可以插入部分數據,也就是可以為每一行的指定的部分列插入數據。在插入部分數據時,應該注意以下三個問題:
☆在 Insert 子句中,指定要插入數據的列名。
☆在 Values 子句中,列出與列名對應的數據。列名的順序和數據的順序應該完全對應。
☆在 Insert 子句中,沒有列出的列應該至少具有這四種類型之一:Identtty 屬性,Timestamp 數據類型,允許為 Null,或者有一個指定的默認值。否則,會出現錯誤信息。
例子:
Use cust
Insert Into students (number,name)
Values (110,"影子")
打開cust數據庫,向students表中插入一行數據
注意:如用下例語句將發生錯誤,因為name字段是不允許為空的(在創建數據庫時設定的)
Insert Into students (number)
Values (110)
(4)用 Select 語句插入多條數據
Insert 語句插入數據的特點是每一次只能插入一行數據。相反,Select 也可以用在 Insert 語句中,并且可以一次插入多條數據。使用 Select 語句插入數據的語法形式如下:
Insert table_name
Select column_list
From table_list
Where search_conditions
在使用 Select 語句插入數據時,應該注意下面幾點:
☆在 Insert 語句中使用 Select 時,他們參考的表既可以是相同的,也可以是不同的。
☆要插入數據的表必須已經存在。
☆要插入數據的表必須和 Select 的結果集兼容。兼容的含義是列的數量和順序必須相同,列的數據類型或者相同,或者SQL Server 可以自動轉換。
例子:
Use cust
Insert students
Select number,name,sex,birthday,hometown,telphone_no,address,others
From students
注意:
Select 后面的字段要輸完整,這個例子是自己向自己插入多條數據(自己向自己插入是被允許的)
補充:
你還可以“From students”后面加上“Where name="影子"”,只插入name等于影子的記錄,可以用And 和 Or 加上多個條件。
(5)使用 Select Into 插入數據到一個新表中
帶有 Into 子句的 Select 語句允許用戶定義一個新表并且把數據插入到新表中。這種方法不同于前面講述的那些方法。在前面的那些方法中,一個共同的特點,是在數據輸入之前表已經存在。而使用 Select Into 插入數據的方法,是在插入數據的過程中建立新表。
Select Into 語句的語法如下:
Select select_list
Into new_table_name
From table_list
Where search_conditions
在使用 Select Into 插入數據時,要注意下面幾點:
☆在某個數據庫中使用 Select Into 插入數據時,設置該數據庫的 Select Into/Bulk Copy 為真。
☆新表不能存在,否則會產生錯誤信息。
☆新表中的列和行是基于查詢結果集
☆要插入的數據不記錄在日志中。
☆在select_list 中出現的列應該使用別名,否則,新表中的列沒有列名。沒列名的表只能通過 Select * From new_table_name 的形式查詢。因此,應該為列起個別名。
☆這種方法多用在對列進行各種計算的情況。
例子:
Select number,name
Into newcust1
From students
創建新的表newcust1,插入students表中的number和name字段的所有數據。
補充:如果要插入所有字段的記錄,則“Select *”,也可在“From students”后加條件,方法和上個例子一樣。
(6)用 UPdate 語句修改表中的數據
Update 語句用來修改表中已存在的數據。Update 語句既可以一次修改一行數據,也可以一次修改許多行,甚至可以一次修改表中的全部數據。Update 語句使用 Where 子句指定要修改的行,使用 Set 子句給出新的數據。新數據可以是常量,也可以是指定的表達式,還可以是使用 From 子句來自其他表的數據。
Update 語句的語法如下:
Update {table_name|view_name}
Set {column_list}=expression [,. . .]
[Where clause]
在使用 Update 語句時,如果沒有使用 Where 子句,那么就對表中所有的行進行修改。如果使用Update 語句修改數據時與數據完整性約束有沖突,那么修改就不會發生,整個修改事務全部滾回。例如,這種沖突可能是所輸入的值是錯誤的數據類型,或者所輸入的值違背了在該列定義的規則約束,等等。
例子:
Use cust
Update students
Set name=name+"007"
Where number>100
打開cust數據庫,修改students表,使number>100的數據的name的值全部加"007"。
4.用 Delete 語句刪除表中的數據
當數據庫中的數據不需要的進修可以刪除。一般情況下,刪除數據使用 Delete 語句。Delete 語句可以一次從一個表中刪除一條或者多條數據行。
Delete 語句的語法如下:
Delete [From] table_name
Where search_conditions
在 Delete 語句中如果使用了 Where 子句,那么就從指定的表中刪除滿足 Where 子句條件的數據行。
例子:
Use cust
Delete students
Where number>100
刪除 students中,number>100的數據
補充:
如果在 Delete 語句中沒有指定 Where 子句,那么就將表中所有的記錄全部刪除,即 Delete students 語句刪除表中的全部記錄。
在刪除表中的全部數據時,還可以使用 Truncate Table 語句。Truncate Table 語句和 Delete 語句都可以將表中的全部數據刪除,但是,兩條語句又有不同的特點。當用戶使用 Delete 語句刪除數據時,被刪除的數據要記錄在日志中。并不將對數據的變化記錄在日志中。因此,使用 Truncate Table students 語句刪除記錄的速度快于使用 Delete students 語句刪除表中記錄的速度。
5.用 Drop Table 命令刪除表
當數據庫中的表不需要時可以刪除。刪除表可以使用 Drop Table 語句。刪除表就是刪除表的定義以及表的全部數據、索引、觸發器、約束和指定該表的許可。當刪除表時,基于表的視圖不能被刪除,必須使用 Drop View 語句刪除視圖。
Drop Table 語句的語法如下:
Drop Table table_name
例子:
Use cust
Drop Table students
刪除cust數據庫中的students表。
補充:
不能使用 Drop Table 語句刪除正在被約束參考的表,必須首先要么刪除外鍵約束,要么刪除參考表。表的所有者可以刪除表。當刪除表是時,綁定在該表上的規則或者默認則失掉了綁定,該表的約束或者觸發器則自動被刪除。如果重新創建表,必須重新綁定相應的規則和默認、重新創建觸發器和增加必要的約束。另外,系統表不能刪除。
刪除表的許可屬于表的所有者。然而,數據所有者(DBO)、系統管理員(SA)和DLL管理員可以刪除數據庫中的任何對象。
4.數據的檢索
1.用 Select 子句檢索記錄
Select 子句是每一個檢索數據的查詢核心。它告訴數據庫引擎返回什么字段。
Select 子句的常見形式是:
Select *
該子句的意思是“返回在所指定的記錄源中能找到的所有字段”。這種命令形式很方便,因為你無需知道從表中檢索的字段名稱。然而,檢索表中的所有列是低效的。因此,因該只檢索需要的字段,這樣可以大大的提高查詢的效率。
2.使用 From 子句指定記錄源
From 子句說明的是查詢檢索記錄的記錄源;該記錄源可以是一個表或另一個存儲查詢。
你還能從多個表中檢索記錄,這在后面的章節中將介紹。
例子:
Select * From students 檢索students表中的所有記錄
3.用 Where 子句說明條件
Where 子句告訴數據庫引擎根據所提供的一個或多個條件限定其檢索的記錄。條件是一個表達式,可具有真假兩種判斷。
例子:
Select * From students Where name="影子"
返回students中name字段為影子的列表,這次所返回的結果沒有特定順序,除非你使用了 Order By 子句。該子句將在后面的章節介紹。
注意:Where 子句中的文本字符串界限符是雙引號,在VB中因改為單引號,因為在VB中字符串的界定符是雙引號。
補充:
使用 And 和 Or 邏輯可以將兩個或更多的條件鏈接到一起以創建更高級的 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 子句告訴數據庫引擎對其檢索的記錄進行排序。可以對任何字段排序,或者對多個字段排序,并且可以以升序或隆序進行排序。
在一個正式的 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 關鍵字可以只顯示一個大記錄前面或后面的少數幾個記錄。在查詢中,Top 關鍵字與排序子句一起把結果集限制為少數幾個記錄或按某個百分比顯示整個結果記錄集合中的一部分。
例子:
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 對字段名進行別名化
為什么在查詢中對字段命以別名,或重新命名,這樣做的原因有兩個:
☆所涉及的表的字段名很長,想使字段在結果集中更易處理一些。
☆創建的查詢產生了某些計算或合計列,需要對之進行命名。
不管是什么原因對字段命以別名,在 SQL 中都可以容易地使用 As 子句做得。
例子:
Select number As 學號 ,name As 姓名 From students
7. 合并查詢
合并查詢( Union Query )用于合并具有相同字段結構的兩個表的內容,如果想在一個結果集中顯示多個記錄源中的不相關的記錄時,這十分有用。
例子:
Select *
From students
Union
Select *
From students1
該查詢結果集把 students 和 students1 中的記錄合并到一個結果中,其輸出就和原表歸檔之前一模一樣。
注意:缺省情況下,合并查詢不會返回重復記錄(如果記錄歸檔系統在把記錄拷到歸檔表中后不將相應的記錄刪除,這時該功能就有用了),可以加上 All 關鍵字而讓合并查詢顯示重復記錄。
例子:
Select *
From students
Union All
Select *
From students1
該合并查詢顯示 students 表和 students1 表的內容時,沒有對重復記錄進行處理
補充:
Union 運算符允許把兩個或者多個查詢結果合并到一個查詢結果集中。如果比較 Union 和 Join 兩咱運算符,那么 Union 運算符增加行的數量,而 Join 運算符增加列的數量。使用 Union 時應該注意,兩個結果中的列的結構必須匹配,數據類型必須兼容等等。
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 必須有相同數量的列、兼容的數據類型并且按照同樣的順序出現。
·在結果集中,列名來自第一個 Select 語句。
8.連接查詢
在實際使用過程中經常需要同時從兩個表或者兩個以上表中檢索數據。連接就是允許同時從兩個表或者兩個以上表中檢索數據,指定這些表中某個或者某些列作為連接條件。在 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
posted on 2005-02-28 21:20 辰 閱讀(165) 評論(0) 編輯 收藏 所屬分類: 數據庫相關