程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> SQL的基本操作(3.表的相關操作)

SQL的基本操作(3.表的相關操作)

編輯:VB綜合教程
1.創建表
  (1)用CreateTable命令創建表
  語法:
  CreateTabletabl_name
  ({
  }column_nameAscomputed_column_expression
  }
  }[,...n]
  )
  [On{fiegroup|Default}]
  [Textimage_On{fiegroup|Default}]
  
  例子:
  打開cust數據庫,創建一個表,該表包含了學生的有關信息,即有學號、姓名、性別、出生日期、籍貫、聯系電話、住址和備注信息。
  Usecust
  CreateTablestudents
  (
  numberintnotnull,
  namevarchar(10)notnull,
  sexchar(2)null,
  birthdaydatetimenull,
  hometownvarchar(30)null,
  telphone_novarchar(12)null,
  addressvarchar(30)null,
  othersvarchar(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語句增加和刪除一個新列
  語法:
  AlterTabletable
  {
  ADO
  {[]
  |colun_nameAscomputed_column_expression
  |[]
  }[,...n]
  |Drop
  {Columncolumn
  }[,...n]
  }
  
  例子:打開cust數據庫,修改其中的表students的結構,增加一個新字段,字段名為ying,數據類型是varchar,長度是10,沒有默認值,充許為空。
  Usecust
  AlterTablestudentsAddyingvarchar(10)null
  
  打開cust數據庫,修改其中的表students的結構,刪除一個字段,字段名為ying。
  Usecust
  AlterTablestudentsDropColumnying
  
  3.向表中插入數據
  (1)用Insert語句
  語法如下:
  Insert[Into]
  {table_name|view_name}[(column_list)]
  {Values|values_list|select_statement}
  注意:在插入數據時,字符數據和日期數據要使用引號引起來。
  例子:
  Usecust
  InsertIntostudents
  Values(11,"影子","男","1999-12-12","湖北","83779805","武漢市橋口區","VB愛好者")
  打開cust數據庫,向students表中插入數據
  
  (2)用Default選項
  在插入數據時,可以使用Default選項。Default選項有兩種形式,一種形式是DefaultValues,另一種是Default。
  DefaultValues形式為表中的某一行的所有列插入默認值。使用這種形式的前提條件是表中的所有列必須是這四種類型之一:Identity屬性,Timestamp數據類型,允許為Null,或者有一個指定的默認值。否則,會錯誤信息。
  例子:
  Usecust
  InsertIntostudentsDefaultValues
  這個例子會出現錯誤,因為students表的number字段是設置為不允許為空的。
  
  Default形式是為表中的某一列插入默認值。要插入的該列必須具備一定的條件,即該列要麼是Timestamp數據類型,要麼是允許為Null,要麼是有一個指定的默認值,否則,會出現錯誤信息。
  例子:
  Usecust
  InsertIntostudentsValues(11,"影子",Default,Default,Default,Default,Default,Default)
  由天前2個字段不能為空,所以要賦值,否則會出現錯誤,而後面的6個字段允許為空,因此可以調用Default默認。
  
  (3)插入部分數據
  在使用Insert語句插入數據是,還可以插入部分數據,也就是可以為每一行的指定的部分列插入數據。在插入部分數據時,應該注意以下三個問題:
  ☆在Insert子句中,指定要插入數據的列名。
  ☆在Values子句中,列出與列名對應的數據。列名的順序和數據的順序應該完全對應。
  ☆在Insert子句中,沒有列出的列應該至少具有這四種類型之一:Identtty屬性,Timestamp數據類型,允許為Null,或者有一個指定的默認值。否則,會出現錯誤信息。
  例子:
  Usecust
  InsertIntostudents(number,name)
  Values(110,"影子")
  打開cust數據庫,向students表中插入一行數據
  注意:如用下例語句將發生錯誤,因為name字段是不允許為空的(在創建數據庫時設定的)
  InsertIntostudents(number)
  Values(110)
  
  (4)用Select語句插入多條數據
  Insert語句插入數據的特點是每一次只能插入一行數據。相反,Select也可以用在Insert語句中,並且可以一次插入多條數據。使用Select語句插入數據的語法形式如下:
  Inserttable_name
  Selectcolumn_list
  Fromtable_list
  Wheresearch_conditions
  在使用Select語句插入數據時,應該注意下面幾點:
  ☆在Insert語句中使用Select時,他們參考的表既可以是相同的,也可以是不同的。
  ☆要插入數據的表必須已經存在。
  ☆要插入數據的表必須和Select的結果集兼容。兼容的含義是列的數量和順序必須相同,列的數據類型或者相同,或者SQLServer可以自動轉換。
  例子:
  Usecust
  Insertstudents
  Selectnumber,name,sex,birthday,hometown,telphone_no,address,others
  Fromstudents
  注意:
  Select後面的字段要輸完整,這個例子是自己向自己插入多條數據(自己向自己插入是被允許的)
  補充:
  你還可以“Fromstudents”後面加上“Wherename="影子"”,只插入name等於影子的記錄,可以用And和Or加上多個條件。
  
  (5)使用SelectInto插入數據到一個新表中
  帶有Into子句的Select語句允許用戶定義一個新表並且把數據插入到新表中。這種方法不同於前面講述的那些方法。在前面的那些方法中,一個共同的特點,是在數據輸入之前表已經存在。而使用SelectInto插入數據的方法,是在插入數據的過程中建立新表。
  SelectInto語句的語法如下:
  Selectselect_list
  Intonew_table_name
  Fromtable_list
  Wheresearch_conditions
  在使用SelectInto插入數據時,要注意下面幾點:
  ☆在某個數據庫中使用SelectInto插入數據時,設置該數據庫的SelectInto/BulkCopy為真。
  ☆新表不能存在,否則會產生錯誤信息。
  ☆新表中的列和行是基於查詢結果集
  ☆要插入的數據不記錄在日志中。
  ☆在select_list中出現的列應該使用別名,否則,新表中的列沒有列名。沒列名的表只能通過Select*Fromnew_table_name的形式查詢。因此,應該為列起個別名。
  ☆這種方法多用在對列進行各種計算的情況。
  例子:
  Selectnumber,name
  Intonewcust1
  Fromstudents
  創建新的表newcust1,插入students表中的number和name字段的所有數據。
  補充:如果要插入所有字段的記錄,則“Select*”,也可在“Fromstudents”後加條件,方法和上個例子一樣。
  
  (6)用UPdate語句修改表中的數據
  Update語句用來修改表中已存在的數據。Update語句既可以一次修改一行數據,也可以一次修改許多行,甚至可以一次修改表中的全部數據。Update語句使用Where子句指定要修改的行,使用Set子句給出新的數據。新數據可以是常量,也可以是指定的表達式,還可以是使用From子句來自其他表的數據。
  Update語句的語法如下:
  Update{table_name|view_name}
  Set{column_list}=expression[,...]
  [Whereclause]
  在使用Update語句時,如果沒有使用Where子句,那麼就對表中所有的行進行修改。如果使用Update語句修改數據時與數據完整性約束有沖突,那麼修改就不會發生,整個修改事務全部滾回。例如,這種沖突可能是所輸入的值是錯誤的數據類型,或者所輸入的值違背了在該列定義的規則約束,等等。
  例子:
  Usecust
  Updatestudents
  Setname=name "007"
  Wherenumber>100
  打開cust數據庫,修改students表,使number>100的數據的name的值全部加"007"。
  
  4.用Delete語句刪除表中的數據
  當數據庫中的數據不需要的進修可以刪除。一般情況下,刪除數據使用Delete語句。Delete語句可以一次從一個表中刪除一條或者多條數據行。
  Delete語句的語法如下:
  Delete[From]table_name
  Wheresearch_conditions
  在Delete語句中如果使用了Where子句,那麼就從指定的表中刪除滿足Where子句條件的數據行。
  例子:
  Usecust
  Deletestudents
  Wherenumber>100
  刪除students中,number>100的數據
  補充:
  如果在Delete語句中沒有指定Where子句,那麼就將表中所有的記錄全部刪除,即Deletestudents語句刪除表中的全部記錄。
  在刪除表中的全部數據時,還可以使用TruncateTable語句。TruncateTable語句和Delete語句都可以將表中的全部數據刪除,但是,兩條語句又有不同的特點。當用戶使用Delete語句刪除數據時,被刪除的數據要記錄在日志中。並不將對數據的變化記錄在日志中。因此,使用TruncateTablestudents語句刪除記錄的速度快於使用Deletestudents語句刪除表中記錄的速度。
  
  5.用DropTable命令刪除表
  當數據庫中的表不需要時可以刪除。刪除表可以使用DropTable語句。刪除表就是刪除表的定義以及表的全部數據、索引、觸發器、約束和指定該表的許可。當刪除表時,基於表的視圖不能被刪除,必須使用DropView語句刪除視圖。
  DropTable語句的語法如下:
  DropTabletable_name
  例子:
  Usecust
  DropTablestudents
  刪除cust數據庫中的students表。
  補充:
  不能使用DropTable語句刪除正在被約束參考的表,必須首先要麼刪除外鍵約束,要麼刪除參考表。表的所有者可以刪除表。當刪除表是時,綁定在該表上的規則或者默認則失掉了綁定,該表的約束或者觸發器則自動被刪除。如果重新創建表,必須重新綁定相應的規則和默認、重新創建觸發器和增加必要的約束。另外,系統表不能刪除。
  刪除表的許可屬於表的所有者。然而,數據所有者(DBO)、系統管理員(SA)和DLL管理員可以刪除數據庫中的任何對象。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved