插入數據 向表中添加一個新記錄
你要使用SQL INSERT語句
這裡有一個如何使用這種語句的例子
der=
cellspacing=
cellpadding=
bordercolorlight =
black
bordercolordark =
#FFFFFF
align=
center
> INSERT mytable(mycolumn) VALUES(
some data
);
這個語句把字符串
some data
插入表mytable的mycolumn字段中
將要被插入數據的字段的名字在第一個括號中指定
實際的數據在第二個括號中給出
INSERT 語句的完整句法如下
INSERT [INTO] {table_name|view_name} [(column_list)]
{DEFAULT VALUES | Values_list | select_statement};
如果一個表有多個字段
通過把字段名和字段值用逗號隔開
你可以向所有的字段中插入數據
假設表mytable有三個字段first_column
second_column和third_column
下面的INSERT語句添加了一條三個字段都有值的完整記錄
INSERT mytable (first_column
second_column
third_column)
VALUES (
some data
some more data
yet more data
);
注意
你可以使用INSERT語句向文本型字段中插入數據
但是
如果你需要輸入很長的字符串
你應該使用WRITETEXT語句
要了解更多的信息
請參考Microsoft SQL Sever 的文檔
如果你在INSERT語句中只指定兩個字段和數據會怎麼樣呢?換句話說
你向一個表中插入一條新記錄
但有一個字段沒有提供數據
在這種情況下
有下面的四種可能
) 如果該字段有一個缺省值
該值會被使用
例如
假設你插入新記錄時沒有給字段third_column提供數據
而這個字段有一個缺省值
some value
在這種情況下
當新記錄建立時會插入值
some value
) 如果該字段可以接受空值
而且沒有缺省值
則會被插入空值
) 如果該字段不能接受空值
而且沒有缺省值
就會出現錯誤
你會收到錯誤信息
The column in table mytable may not be null
) 最後
如果該字段是一個標識字段
那麼它會自動產生一個新值
當你向一個有標識字段的表中插入新記錄時
只要忽略該字段
標識字段會給自己賦一個新值
注意
向一個有標識字段的表中插入新記錄後
你可以用SQL變量@@identity來訪問新記錄的標識字段的值
考慮如下的SQL語句
INSERT mytable(first_column) VALUES(
some value
);
INSERT anothertable(another_first
another_second);
VALUES(@@identity
some value
);
如果表mytable有一個標識字段
該字段的值會被插入表anothertable的another_first字段
這是因為變量@@identity總是保存最後一次插入標識字段的值
字段another_first應該與字段first_column有相同的數據類型
但是
字段another_first不能是應該標識字段
Another_first字段用來保存字段first_column的值
刪除記錄 要從表中刪除一個或多個記錄
需要使用SQL DELETE語句
你可以給DELETE語句提供WHERE子句
WHERE子句用來選擇要刪除的記錄
例如
下面的這個DELETE語句只刪除字段first_column的值等於
Delete Me
的記錄
DELETE mytable WHERE first_column=
Deltet Me
;
DELETE 語句的完整句法如下
DELETE [FROM] {table_name|view_name} [WHERE clause];
在SQL SELECT語句中可以使用的任何條件都可以在DELECT語句的WHERE子句中使用
例如
下面的這個DELETE語句只刪除那些first_column字段的值為
goodbye
或second_column字段的值為
so long
的記錄
DELETE mytable WHERE first_column=
goodby
OR second_column=
so long
;
如果你不給DELETE語句提供WHERE子句
表中的所有記錄都將被刪除
你不應該有這種想法
如果你想刪除表中的所有記錄
應使用TRUNCATE TABLE語句
注意這裡為什麼要用TRUNCATE TABLE語句代替DELETE語句
當你使用TRUNCATE TABLE語句時
記錄的刪除是不作記錄的
也就是說
這意味著TRUNCATE TABLE要比DELETE快得多
更新記錄 要修改表中已經存在的一條或多條記錄
應使用SQL UPDATE語句
同DELETE語句一樣
UPDATE語句可以使用WHERE子句來選擇更新特定的記錄
請看這個例子
UPDATE mytable SET first_column=
Updated!
WHERE second_column=
Update Me!
;
這個UPDATE語句更新所有second_column字段的值為
Update Me!
的記錄
對所有被選中的記錄
字段first_column的值被置為
Updated!
下面是UPDATE語句的完整句法
UPDATE {table_name|view_name}
SET [{table_name|view_name}]
{column_list|variable_list|variable_and_column_list}
[
{column_list
|variable_list
|variable_and_column_list
}…
[
{column_listN|variable_listN|variable_and_column_listN}]]
[WHERE clause]
注意
你可以對文本型字段使用UPDATE語句
但是
如果你需要更新很長的字符串
應使用UPDATETEXT語句
要了解更多的信息
請參考Microsoft SQL Sever 的文檔
如果你不提供WHERE子句
表中的所有記錄都將被更新
你也可以同時更新多個字段
例如
下面的UPDATE語句同時更新first_column
second_column和third_column這三個字段
UPDATE mytable SET first_column=
Updated!
Second_column=
Updated!
Third_column=
Updated!
WHERE first_column=
Update Me!
;
技巧
SQL忽略語句中多余的空格
你可以把SQL語句寫成任何你最容易讀的格式
用SELECT創建記錄和表 你也許已經注意到
INSERT語句與DELETE語句和UPDATE語句有一點不同
它一次只操作一個記錄
然而
有一個方法可以使INSERT 語句一次添加多個記錄
要作到這一點
你需要把INSERT語句與SELECT語句結合起來
象這樣
INSERT mytable(first_column
second_column)
SELECT another_first
another_second
FROM anothertable
WHERE another_first=
Copy Me!
;
這個語句從anothertable拷貝記錄到mytable
只有表anothertable中字段another_first的值為
Copy Me!
的記錄才被拷貝
當為一個表中的記錄建立備份時
這種形式的INSERT語句是非常有用的
在刪除一個表中的記錄之前
你可以先用這種方法把它們拷貝到另一個表中
如果你需要拷貝整個表
你可以使用SELECT INTO語句
例如
下面的語句創建了一個名為newtable的新表
該表包含表mytable的所有數據
SELECT * INTO newtable FROM mytable;
你也可以指定只有特定的字段被用來創建這個新表
要做到這一點
只需在字段列表中指定你想要拷貝的字段
另外
你可以使用WHERE子句來限制拷貝到新表中的記錄
下面的例子只拷貝字段second_columnd的值等於
Copy Me!
的記錄的first_column字段
SELECT first_column INTO newtable
FROM mytable
WHERE second_column=
Copy Me!
;
使用SQL修改已經建立的表是很困難的
例如
如果你向一個表中添加了一個字段
沒有容易的辦法來去除它
另外
如果你不小心把一個字段的數據類型給錯了
你將沒有辦法改變它
但是
使用本節中講述的SQL語句
你可以繞過這兩個問題
例如
假設你想從一個表中刪除一個字段
使用SELECT INTO語句
你可以創建該表的一個拷貝
但不包含要刪除的字段
這使你既刪除了該字段
又保留了不想刪除的數據
如果你想改變一個字段的數據類型
你可以創建一個包含正確數據類型字段的新表
創建好該表後
你就可以結合使用UPDATE語句和SELECT語句
把原來表中的所有數據拷貝到新表中
通過這種方法
你既可以修改表的結構
又能保存原有的數據
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22148.html