SqlServer對表的基本操作
手動建庫建表


腳本建庫建表
??SQL Server關系資料庫的資料表結構主要是由記錄(行)和欄位(列)構成,每一行代表唯一的一條記錄(Record),而每列則代表所有記錄中的一個域(Field)(也稱為欄位、屬性),?
注意:在同一個資料庫里,表的名字也必須是唯一的,在同一個表里,列的名字必須是唯一的,
SQL Server中的表一共有兩類,即永久表和臨時表,
- 永久表都保存在資料庫檔案中
- 臨時表雖然與永久表很相似,但它們卻是存盤在tempdb資料庫中的,而且當不再使用這些臨時表時,它們會被自動洗掉,
SQL Server的資料型別可以分為系統內置的資料型別和用戶自定義資料型別,系統資料型別是系統內置的資料型別,主要有:
??1)整數型
????
??2)小數資料型別(精確資料型別)
??3)近似數值型(浮點資料型別)

??4)字符型和Unicode字符型

??5)邏輯數值型

??6)日期和時間資料

??7)二進制資料型別

??8)貨幣型資料

??9)其他資料型別

定義:
??資料完整性就是要求資料庫表中的資料具有準確性,
方法:
??為了維護資料庫中資料的準確性,通常是在創建表時為表中的欄位定義約束,防止將錯誤的資料插入到表中,
分類:
??SQL Server中資料完整性包含四種型別分別是:物體完整性、域完整性、參照完整性、用戶定義完整性,
(1)物體完整性
??物體完整性將記錄(行)定義為特定表的唯一物體,即每一行資料都反映不同的物體,不能存在相同的資料行,
??通過索引、UNIQUE(唯一)約束、PRIMARY KEY(主鍵)約束、標識列屬性可以實作物體完整性,
| 約束種類 | 功能描述 |
|
PRIMARY |
KEY(主鍵)約束,唯一識別每一條記錄的標志,可以有多列共同組成 |
|
IDENTITY(自增)約束 |
列值自增,一般使用此屬性設定的列作為主鍵 |
|
UNIQUE(唯一)約束 |
可以使用UNIQUE約束確保在非主鍵列中不存在重復值,但列值可以是NULL(空) |
(2)域完整性
域完整性指特定欄位項的有效性,
可以強制域完整性限制型別(通過使用資料型別)、限制格式(通過使用CHECK約束和規則)或限制可能值的范圍(通過使用FOREIGN KEY 約束、CHECK約束、DEFAULT定義、NOTNULL定義和規則),
| 名稱 | 描述 |
|
CHECK(檢查)約束 |
用于限制列中值得范圍 |
|
FOREIGN KEY(外鍵) |
一個表中的FORENIGN KEY 指向另一個表中的PRIMARY KEY |
|
DEFAULT(默認值)約束 |
用于向列中插入默認值 |
|
NOT NULL(非空)約束 |
用于強制列不接受NULL(空)值 |
(3)參照完整性
在輸入或洗掉資料行時,參照完整性約束用來保持表與表之間已定義的關系,在SQL Server 2016中,參照完整性通過FOREIGN KEY和CHECK約束,以外鍵與主鍵之間或外鍵與唯一鍵之間的關系為基礎,參照完整性確保鍵值在所有表中一致,這類一致性要求不能參考不存在的值,如果一個鍵值發生更改,則整個資料庫中,對該鍵值的所有參考要進行一致的更改,
(4)用戶定義完整性
用戶自定義完整性用來定義特定的規則,例如,輸入學生年齡時,只能輸入大于0的值,所有完整性類別都支持用戶定義完整性,這包括創建表中所有列級約束和表級約束、存盤程序以及觸發器,
創建表的步驟:
??1)定義表結構:給表的每一列取欄位名,并確定每一列的資料型別、資料長度、列資料是否可以為空等,
??2)設定約束:設定約束是為了限制該列輸入值的取值范圍,以保證輸入資料的正確性和一致性,
??3)添加資料:表結構建立完成之后,就可以向表中輸入資料了,
create table
CREATE TABLE 表名
(列1定義,
列2定義,
列n 定義)
/*其中:
< 列定義 > ::= { 列名 資料型別 }
[ [ DEFAULT 約束運算式 ]
| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
]
[ < 列約束> ] [ ...n ]
*/
??案例1.
????創建帶有參照約束的學生表,學生表的表結構定義如下表所示,“學號”欄位為學生表的主鍵,“班級代碼”欄位為學生表的外鍵,它必須參照班級表中的“班級代碼”欄位的值,

CREATE TABLE 學生(
// identity表示自增列的意思,而intidentity(1,1)表示從1開始遞增,每次自增1,
// primary key的作用是定義主鍵;主鍵的值不可以重復,也不可以為空
學號 char(12) IDENTITY(1,1) PRIMARY KEY,
姓名 varchar(20) NOT NULL, // not null為不為空
性別 char(2),
出身日期 datatime,
入學時間 datatime,
班級代碼 char(9) CONSTRAINT fk_bjdm REFERENCES 班級(班級代碼) )
// 代碼中的PRIMARY IDENTITY CONSTRAINT等關鍵字是對表中各列進行完整性約束的一些詞語

表的查看
1、 使用系統存盤程序Sp_help 查看
??使用系統存盤程序sp_help來查看表的屬性的方法是:在sp_help后面加上要看的表名作為引數,其格式如下:
??EXEC sp_help 表名
????例如,要查看上述在Students資料庫中所創建的學生表的屬性,可以使用如下陳述句: EXEC sp_help 學生表
????如果用戶想查看該資料庫中所有表的屬性,則可以直接使用系統存盤程序sp_help后不帶任何引數來進行顯示,
2、使用SQL Server Management Studio(SSMS)查看
??除了上述使用系統存盤程序來顯示表的屬性外,在SQL Server Management Studio中查看表的定義會更加方便,其方法如下:
??1)、在【物件資源管理器】下展開資料庫并選中“表”選項,在需要查看表的名稱上右鍵單擊,在彈出的快捷選單中選擇“屬性”選項,可以打開“表屬性”對話框,用戶可以查看表中每一列的定義,
表的修改
??要修改表,可以使用ALTER TABLE陳述句或SQL Server ManagementStudio兩種方法來進行,
??1、使用T-SQL 陳述句ALTER TABLE命令修改表
??使用ALTER TABLE陳述句對表進行修改常見的情況有以下幾種,
????1、向表中添加新列
????向表中添加新列時 : 需要在 ALTER TABLE 陳述句中使用 ADD子句,
????語法格式如下:
??? 修改表中列的定義 ALTER TABLE 表名 ALTER COLUMN 列名 <列屬性> ;
ALTER TABLE 表名 ADD 列名 資料型別 屬性1 屬性2……..
//【例】向教材表增加單價列,列名為單價,資料型別為float,默認空值,代碼如下:
ALTER TABLE 教材
ADD 單價 float(2) NULL;
GO
注意:向已存在的表中增加列時,應使新增加的列具有默認值或允許其為空值,添加列完成時,SQL Server將向表中已存在的行填充新增列的默認值或空值,如果既沒有提供默認值也不允許為空值,那么新增列的操作將出錯,因為SQL Sever不知道該怎么處理那些已經存在的行,
?????2、洗掉表中的列
??????洗掉表中的列需要使用ALTER TABLE陳述句的DROP COLUMN子句, 格式:
??????ALTER TABLE 表名 DROP COLUMN 列名 ; // column是欄位,也就是列!
????【例】將教材表中建立的“單價”列洗掉,其代碼如下:
ALTER TABLE 教材 DROP COLUMN單價;
GO
?? 3、修改表中列的定義
????修改表中某列的屬性定義語法如下:
?? ALTER TABLE 表名 ALTER COLUMN 列名 <列屬性> ;
????例】將教材表中教材名稱欄位資料型別的長度修改為20
ALTER TABLE 教材 ALTER COLUMN 教材名稱 varchar(20);
GO
?
???4、修改表中列的名稱
????修改表中某列的列名語法如下:
???? EXEC SP_RENAME‘表名.原列名’,‘新列名’, ‘COLUMN’ ;
????【例】將班級表中系部名稱修改為院系名稱
EXEC SP_RENAME ‘班級.系部代碼’,‘院系代碼’, ’COLUMN’;
GO


??資料洗掉
??1)普通DELETE陳述句,
????基本語法: DELETE FROM 表名 [WHERE 邏輯運算式 ]
??2)關聯DELETE陳述句,
????DELETE 表名 [FROM 源表名 [ , … N ]] [WHERE 邏輯運算式 ]
????【例】將“選課”表中的學分欄位值小于課程表中學分的課程洗掉,
????代碼如下:
DELETE 選課 FROM 選課 a,課程 b WHERE a.課程號=b.課程號 AND a.學分<b.學生
??3)子查詢DELETE陳述句,
·????基本語法: DELETE FROM 表名 [WHERE 邏輯運算式 ]
????【例】找出課程號在“選課”表中而又不在“課程”表中的記錄給予洗掉,
????代碼如下:
DELETE 選課 WHERE 課程號 NOT IN (SELECT 課程號 FROM 課程)
?? 4)TRUNCATE TABLE陳述句 ,
????基本語法: TRUNCATE TABLE 表名;
????【例】清空“教材”表,
????代碼如下: TRUNCATE TABLE 教材;


轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/508862.html
標籤:SQL Server

