Sql表資料操作

來源:互聯網
上載者:User
資料 表資料操作包括資料的插入、修改和刪除。
一、插入資料

在向表中添加資料時應該注意兩點:第一是使用者權限,只有sysadmin角包成員、資料庫和資料庫對

象所有者及其授權使用者才有許可權向表中添加資料;第二是資料格式,對於不同的資料類型,插入資料的

格式也不一樣,應嚴格遵守它們各自的格式要求。

Transact-SQL語言中用INSERT語句向表或視圖中插入新的資料行。INSERT語句的文法格式為:

INSERT [INTO] table_source

{[column_list]

VALUES ({DEFAULT | constant_expression} [,…n])

|DEFAULT VALUES

|select_statement

|execute_statement

}

}

其中,column_list參數為新插入資料行中一列或多列列名列表,它說明INSERT 語句只為指定列插

入資料。在給表或視中部分列插入資料時,必須使用列名列表方式指出這部分列名。其餘未指定列的列

值要根據它們的預設值和空值屬性情況而定,它們有以下幾種可能取值:

(1)對於timestamp列或具有IDENTITY屬性列,它們的列值由SQL Server計算後自動賦值。

(2)如果這些列有預設值或關聯有預設資料庫對象,插入新列時,它們的值為預設值。

(3)當這些列沒有預設值設定時,但它們允許空值時,該列值為空白。

(4)當這些列既沒有預設值設定,也不允許空值時,SQL Server在執行INSERT 語句時將產生錯誤,

導致插入操作失敗。

當未指定column_list 參數時,為各列所提供的資料順序應嚴格按照表中各列的定義順序,而使用

column_list參數則可以調整向表中所插入資料的列順序,只要VALUES子句所提供的資料順序與column_

list參數中指定的列順序相同即可。

VALUES子句為新插入行中column_list 參數所指定列提供資料,這些資料可以以常量運算式形式提

供,或使用DEFAULT關鍵字說明向列中插入其預設值。

DEFAULT VALUES說明向表中所有列插入其預設值。對於具有INDENTITY 屬性或timestamp 資料類型

列,系統將自動插入下一個適當值。對於沒有設定預設值的列,如果它們允許空值,SQL Server將插入

null,否則返回一錯誤訊息。

select_statement是標準的資料庫查詢語句,它是SQL Server為INSERT語句所提供的又一種資料插

入方式。INSERT語句將select_statement子句所返回的結果集合資料插入到指定表中。查詢語句結果集

合每行中的資料數量、 資料類型和排列順序也必須與表中所定義列或 column_list 參數中指定列的數

量、資料類型和排列順序完全相同。

SQL Server為INSERT語句提供的第四種資料插入方式是通過執行系統預存程序,其資料來自於過程

執行後所產生的結果集合。所執行的過程可以為預存程序、系統預存程序或擴充預存程序,它們既可以

為本機存放區過程,又可以是遠程伺服器上的預存程序,只要使用者具有它們的執行許可權即可。有關儲存過

程請參閱對應的內容。

table_source說明INSERT語句插入資料時所操作的表或視圖,其文法格式可簡單書寫為:

{table_name [[AS] table_alias]

| view_name [[AS] table_alias]

}

table_name和view_name說明被插入資料的表或視圖名稱,table_alias參數為表或視圖設定別名。

使用別名有兩方面原因:第一、當表或視圖名稱較長時,使用別名可以簡化書寫工作;第二,在自串連

或子查詢中,使用別名可以區別同一個表或視圖。

在向表中插入資料時, 如果所插入的資料與約束或規則的要求衝突, 或是它們的資料類型不相容

時,將導致INSERT 語句執行失敗。當使用SELECT或EXECUTE子句向表中一次插入多行資料時,如果其中

有任一行資料有誤,它將導致整個插入操作失敗,使SQL Server停止所有資料行的插入操作。

例一、使用數值列表方式( 假定 usertable 表中只定義了name、age和sex欄位,且name、sex均為

char類型,age為int類型)。

INSERT usertable

VALUES ('張三','女',18)

例二、使用列名列表方式

INSERT usertable (age,name)

VALUES (18,'張三')

例三、在數值列表中,還可以將變數的值插入到表中。在使用變數為列提供資料時,應保證變數的

資料類型與列資料類型相同,或是可以自動將它們轉換為相同的資料類型。例如:

DECLARE @name char(16)

SET @name='張三'

INSERT usertable

VALUES (@name,DEFAULT,20)

本例中Asp中是這樣的:

dim name

name="張三"

sqlstr="INSERT usertable VALUES ('"&name&"','女',20)"

……


例四、將SELECT子句的所返回的結果集合插入到表中。例如:

INSERT usertable (name,sex,age)

SELECT 's'+name,sex,age

FROM usertable

WHERE name like '張%%'


二、修改資料

Transact-SQL中的UPDATE語句用於修改表中資料,該語句的文法格式為:

UPDATE ()

SET (

column_name={expression | DEFAULT }

| @variable = expression

} [,…n]

[FROM

{

| (select_statement) [AS] table_alias [,…m]) ]

}

[,…n]

]

[WHERE


| CURRENT OF ({[GLOBAL] cursor_name } | cursor_variable_name} }

]

別看寫了一大堆,最常用的只是下列格式:

UPDATE table_name

SET column_name1=variable1,column_name2=variable2

WHERE search_conditions

其中table_or_view參數指出待修改的表或視圖名稱,其格式與INSERT語句中該參數的格式相同。

SET子句指出表中被修改的列或變數,以及它們的新值。column_name為被修改的列名,@variable

為一個已經聲明的局部變數名稱,它們修改後的值由expression運算式提供,或使用DEFAULT關鍵字將

預設值賦給指定列。

FROM子句引出另一個表,它為UPDATE語句的資料修改操作提供條件。

WHERE子句中的search_conditions 參數說明UPDATE語句的修改條件,它指出表或視圖中的哪些行

需要修改。省略WHERE子句時,說明對指定的表或視圖中的所有行進行修改!!!!

WHERE子句中的CURRENT OF說明在遊標的當前位置處執行修改操作,遊標由curror_name 或遊標變

量cursor_variable_name指定。

UPDATE不能修改具有IDENTITY屬性列的列值。

例一、將usertable表中所有人員的性別改為'男'

UPDATE usertable

SET sex='男'


例二、將性別為null的所有人員的性別改成'男'

UPDATE usertable

SET sex='男'

WHERE sex IS NULL

例三、將所有姓名為null的人員的姓名改為'張三'、性別改為'女',年齡改為18

UPDATE usertable



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。