熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL核心語句實用技巧

2013-11-15 14:40:18  來源: SQL Server 

   插入數據
  
  向表中添加一個新記錄你要使用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_columnsecond_column和third_column下面的INSERT語句添加了一條三個字段都有值的完整記錄
  
  INSERT mytable (first_columnsecond_columnthird_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_columnsecond_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_columnsecond_column)
  SELECT another_firstanother_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
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.