1. 程式人生 > >sql語句---建立表

sql語句---建立表

1、SQL Server資料庫主要的列屬性

是否允許為空值(NULL或NOT NULL)
定義主鍵(PRIMARY KEY)
自動生成列值(IDENTITY) 
定義預設值(DEFAULT) 

2、使用CREATE TABLE語句建立表

語法:CREATE TABLE 表名
(
	列名1  資料型別和長度1  列屬性1,
	列名2  資料型別和長度2  列屬性2,
	......
	列名n  資料型別和長度n  列屬性n
)

例子:建立表Employeer表
	 
	 create table Employees
	 (
		Emp_id int PRIMARY KEY IDENTITY(1,1),
		Emp_name varchar(50) NOT NULL,
		Sex char(2) DEFAULT('男'),
		Title varchar(50) NOT NULL,
		Wage float DEFAULT(0),
		IdCard varchar(20) NOT NULL,
		Dep_id int NOT NULL
	 )

3、修改表 通常包括重命名錶、修改表的列名、向表中新增列、修改列屬性和刪除表中的列等操作。

3.1 修改表名|表列

語法:sp_rename 原物件名, 新物件名, 物件型別
	在重命名錶時,可以省略物件型別引數
	使用COLUMN關鍵字表示對列進行重新命名。
例子:
	1.修改Emolyees表的名字
		sp_rename Employees ,EmpInfo
	2.修改EmplInfo表的Wage名改為Salary
		sp_rename 'EmpInfo.Wage', 'Salary','COLUM'
		
3.2 表中新增列

語法:ALTER TABLE 表名 ADD 列名 資料型別和長度 列屬性
例子:
	往EmpInfo新增Tele
	alter table EmpInfo add Tele char(50) not null
	

3.3 修改列屬性

語法:ALTER TABLE 表名 ALTER COLUMN 列名 新資料型別和長度 新列屬性
例子:
	表Employees中修改Tele列的資料型別為char,長度為30,並允許空。
	ALTER TABLE Employees ALTER COLUMN Tele char(30) NULL


注意:如果表中存在資料,則對列屬性的修改必須與現有的資料相容。
	
3.4 刪除列 

語法:ALTER TABLE 表名 DROP RULE 規則名1 [, 規則名2, ..., 規則名n] 
例子:
	在表Employees中刪除Tele列
	ALTER TABLE Employees DROP COLUMN Tele

3.5,刪除表
語法:DROP TABLE 表名
例子:
	刪除EmpInfo表
	drop table EmpInfo
	
	
注意:不能使用DROP TABLE來刪除系統表。

4、資料修改語句 語法:UPDATE 表名 SET 列名1=值1 [, 列名2=值2, …, 列名n=值n ][WHERE 更新條件] 例子: USE 學生管理 UPDATE 學生 SET 入學成績=入學成績+10

5、表約束 表約束的型別: 5.1 主鍵(PRIMARY KEY)約束 5.2 唯一性(UNIQUE)約束 5.3 檢查(CHECK)約束 5.4 預設(DEFAULT)約束 5.5 外來鍵(FOREIGN KEY)約束

5.1 管理主鍵約束 :
	-----1.建立主鍵約束	2.修改主鍵約束   3.刪除主鍵約束 

	5.1.1 建立主鍵約束
		語法:CONSTRAINT 主鍵名 PRIMARY KEY [ CLUSTERED | NONCLUSTERED ] (列名1 [, 列名2, ... 列名n])
		例子:
			建立表test,同時使用CONSTRAINT子句定義主鍵PK_test
			CREATE TABLE test
			(
				testid	int,
				test	varchar(50),
				CONSTRAINT PK_test PRIMARY KEY (testid)
			)

	5.1.2 修改主鍵約束
		語法:ADD CONSTRAINT 主鍵名 PRIMARY KEY [ CLUSTERED |NONCLUSTERED](列名1 [, 列名2, ... 列名n])
		例子:
			建立表Student,將StuId列設定為主鍵
			CREATE TABLE Student
			(
				StuId	int	IDENTITY(1,1),
				StuName	varchar(50)	NOT NULL,
				Sex	bit	DEFAULT(0),
				Class	varchar(50)	NOT NULL,
				Score	float	DEFAULT(0),
			)
			ALTER TABLE Student
			ADD CONSTRAINT PK_Stu PRIMARY KEY NONCLUSTERED (StuId)
			


	5.1.3 刪除主鍵約束
		語法:ALTER TABLE <表名> DROP CONSTRAINT <PRIMARY KEY約束名>
		例子:
			刪除表Student的主鍵約束PK_Stu
			ALTER TABLE Student DROP CONSTRAINT PK_Stu


	5.2 唯一性約束
		語法:CONSTRAINT 約束名 UNIQUE [ CLUSTERED | NONCLUSTERED ](列名1 [, 列名2, ... 列名n])
		例子:建立表test1,將test_name列設定唯一性約束
		CREATE TABLE test1
		(
			testid	int,
			testname	varchar(50),
			CONSTRAINT PK_test1 PRIMARY KEY (testid),
			CONSTRAINT IX_test1 UNIQUE (testname)
		)
	
	5.3 檢查約束 
		5.3.1 建立檢查約束
		語法:CONSTRAINT 約束名  CHECK [NOT FOR REPLICATION] (邏輯表示式)
		例子1:
			Student列Score的值大於或等於0
			alter table Student add constraint CK_Student check (Score>=0)
		例子2:
			建立表Student,同時建立檢查約束,定義列Score的值大於或等於0
			CREATE TABLE Student
			(
				StuId	int	IDENTITY(1,1),
				StuName	varchar(50)	NOT NULL,
				Sex	bit	DEFAULT(0),
				Class	varchar(50)	NOT NULL,
				Score	float	DEFAULT(0),
				CONSTRAINT PK_Student PRIMARY KEY (StuId),
				CONSTRAINT IX_Student UNIQUE (StuName),
				CONSTRAINT CK_Student CHECK (Score>=0)
			)
		例子3:
			建立表Client,同時建立檢查約束,定義郵政編碼列Postcode的值是由6位數字組成的字串
			CREATE TABLE Client
			(
				Id	int	IDENTITY(1,1),
				CltOrg	varchar(50)	NOT NULL,
				Address	varchar(100)	NOT NULL,
				Postcode	varchar(10)	NOT NULL,
				CONSTRAINT PK_Client PRIMARY KEY (Id),
				CONSTRAINT IX_Client UNIQUE (CltOrg),
				CONSTRAINT CK_Client CHECK (Postcode LIKE '[0-9][0-9][0-9][0-9][0-9] [0-9]')
			)

		5.3.2 存在的表中新增檢查約束 
		語法:ALTER TABLE <表名> ADD CONSTRAINT <CHECK約束名> CHECK (<約束條件>)
		例子1: 
			在表Employees中新增一個檢查約束,指定列Sex的值只能等於“男”或“女”
			ALTER TABLE Employees ADD CONSTRAINT CK_SEX CHECK (Sex='男' OR Sex='女')
		
		5.3.2 刪除檢查約束
		語法:ALTER TABLE <表名>DROP CONSTRAINT <CHECK約束名> 
		例子1:
			刪除表Employees中的檢查約束CK_SEX
			ALTER TABLE Employees DROP CONSTRAINT CK_SEX
		
	5.4 預設約束 
		語法:CONSTRAINT 約束名 DEFAULT 約束表示式 [FOR 列名]
		例子:
			表Employees的列Title的預設約束為“職員”
			alter table Employees add constraint DE_Title default '職員' for title 
			
	5.5 外部鍵約束
		語法:CONSTRAINT 約束名 FOREIGN KEY (列名1 [, 列名2, ..., 列名n] REFERENCES 關聯表 (關聯列名1 [, 關聯列名2, ..., 關聯列名n])
		例子:
			修改表Employees,與表Departments建立外來鍵約束。主鍵列為表Departments的列Dep_id,外來鍵列為表Employees的列Dep_id
			alter table Employees add constraint FK_Employees_Departments foreign key (Dep_id) references Departments (Dep_id)