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管理員可以刪除數據庫中的任何對象。->