插入資料
向表中新增乙個新記錄,你要使用sql insert 語句。這裡有乙個如何使用這種語句的例子:
insert mytable (mycolumn) values (『some data』)
這個語句把字串』some data』插入表mytable的mycolumn欄位中。將要被插入資料的字段的名字在第乙個括號中指定,實際的資料在第二個括號中給出。
insert 語句的完整句法如下:
insert [into] [(column_list)]
如果乙個表有多個字段,通過把欄位名和字段值用逗號隔開,你可以向所有的字段中插入資料。假設表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 語句中只指定兩個欄位和資料會怎麼樣呢?換句話說,你向乙個表中插入一條新記錄,但有乙個字段沒有提供資料。在這種情況下,有下面的四種可能:
如果該字段有乙個預設值,該值會被使用。例如,假設你插入新記錄時沒有給字段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] [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 set
[,…
[,]]
[where clause]
注意 如果你不提供where子句,表中的所有記錄都將被更新。有時這是有用的。例如,如果你想把表titles中的所有書的**加倍,你可以使用如下的update 語句:
你也可以同時更新多個字段。例如,下面的update語句同時更新first_column,second_column,和third_column這三個字段:
update mytable set first_column=』updated!』
second_column=』updated!』
third_column=』updated!』
where first_column=』update me1』
技巧 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 語句,把原來表中的所有資料拷貝到新錶中。通過這種方法,你既可以修改表的結構,又能儲存原有的資料。
SQL核心語句 非常實用的幾個技巧
sql核心語句 非常實用的幾個技巧 插入資料 向表中新增乙個新記錄,你要使用sql insert 語句。這裡有乙個如何使用這種語句的例子 insert mytable mycolumn values some data 這個語句把字串 some data 插入表mytable的mycolumn欄位中...
SQL核心語句 非常實用的幾個技巧
articlecontent1 lblcontent 插入資料 向表中新增乙個新記錄,你要使用sql insert 語句。這裡有乙個如何使用這種語句的例子 insert mytable mycolumn values some data 這個語句把字串 some data 插入表mytable的my...
SQL核心語句,非常實用的小技巧
向表中新增乙個新記錄。例 insert student people1 values some data 以上語句是把字串 some data 插入表student的people1欄位中。將要被插入資料的字段的名字在第乙個括號中指定,實際的資料在第二個括號中給出。insert 語句的完整句法如下 i...