sql語句---建立表
阿新 • • 發佈:2018-12-19
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)