SQL常用語句之數據庫中表的創建、刪除以及屬性的修改-篇幅3


一.表的創建:

CREATE TABLE [database_name.[schema_name].|schema_name.]table_name

(column_name1 data_type                 --列名

[ DEFAULT constant_expression]    --約束類型

[ IDENTITY ( SEED, INCREMENT )]  --列標識

[ NULL | NOT NULL ][ ,…n]         --是否允許為空

)

[ON { filegroup | DEFAULT } ]      --所在文件組

 

例.為sales數據庫在文件組USER1上創建Category種類表

use sales

CREATE TABLE Category

(CategoryID int NOT NULL,

 CategoryName nvarchar(15),

 Description nvarchar(200),

 NodeID char(8) IDENTITY(1,1)    --標識列標識從1開始遞增,每次增幅為1

)

ON USER1

二.表結構的修改--增加、刪除、修改列:

ALTER TABLE table_name

{ ADD column_name  date_type [DEFAULT  contant_expression]

[IDENTITY(SEED,INCREMENT)] [NULL | NOT NULL] [ ,…n]

| DROP  COLUMN  column_name

| ALTER  COLUMN  column_name  new_datetype  [NULL | NOT NULL ]

}

例.在數據庫test的表Custom中增加Address列

ALTER TABLE Custom

ADD Address char(20)

刪除xx列

ALTER TABLE Custom

DROP COLUMN xx

修改列:將Custom表中的Address字段的長度改為30,且不能為空

ALTER TABLE Custom

ALTER COLUMN Address char(30) not null

 

三.修改表中的內容--插入、刪除:

1.在表中插入數據:

INSERT [ INTO ] table_name [ ( column_name [,…n] ) ]
VALUES ( expression | NULL | DEFAULT [,…n] )--expression為要插入的值,字符型與日期類型要加   ' '  號

例.在表Seller中插入下面數據

INSERT INTO Seller(SaleID,SaleName,Sex,Birthday,HireDate,Address,Telephone,Notes)

VALUES('01','張三',DEFAULT,'1974-07-25',NULL,NULL,NULL,DEFAULT)    

--其中空值(null)可以不寫出來,對應的列名也不必列出,對有默認值的可以使用DEFAULT使用默認值

--具有IDENTITY屬性的列,其值由系統給出,用戶不必向表中插入數據。

 

2.修改表中數據:

UPDATE table_name

SET column_name=expression [,…n]

[ WHERE search_conditions ]       

 

3.刪除表中數據:

DELETE [ FROM ] table_name
[ WHERE search_conditions]

四.創建表的約束:

總的語法格式:

CREATE TABLE table_name

( column_name data_type  [ [ CONSTRAINT constraint_name ] constraint_type ]

[,…n]  )

在已經創建的表中添加約束:

ALTER TABLE table_name

[ WITH CHECK | WITH NOCHECK ]

ADD [ CONSTRAINT constraint_name ] constraint_type

--WITH CHECK | WITH NOCHECK代表新加入的約束對表中現有的數據是否進行檢查。

刪除約束:

   ALTER TABLE table_name

   DROP CONSTRAINT constraint_name

 

1.創建主鍵約束:主鍵用於唯一地標識表中每一條記錄。可以定義表中的一列或多列為主鍵。主鍵列的值不能重復,也不能為空值。

[ CONSTRAINT constraint_name ] PRIMARY KEY [ CLUSTERED | NONCLUSTERED ]

( col_name [,…n])

 

2.創建唯一約束:指定列上不可以有重復值

[ CONSTRAINT constraint_name ] UNIQUE [ CLUSTERED | NONCLUSTERED ]

  ( col_name [,…n])

 

3.創建CHECK約束:用來指定某列的可取值的范圍。

[ CONSTRAINT constraint_name ] CHECK (exp)   --exp是表達式(表示條件、范圍)

--作用:當向該表執行插入或更新操作時,SQL Server會檢查插入的新列值是否滿足CHECK約束的條件,若不滿足,系統會報錯,並拒絕執行插入或更新操作。

--注意:不能在具有IDENTITY屬性的列上設置CHECK約束。

 

4. 創建DEFAULT約束:給表中指定列賦予默認值,當向該表插入數據時,如果用戶沒有明確給出該列的值,SQL Server會自動為該列輸入默認值。每列只能有一個DEFAULT約束。

[ CONSTRAINT constraint_name ] DEFAULT (expression | NULL) FOR column_name

 

5.外鍵約束(Foreign key): 用於與其他表(主鍵表)中的列(稱為主鍵列)建立連接。

[ CONSTRAINT constraint_name ]

FOREIGN KEY (col_name1[,…n])

REFERENCES table_name(column_name1[,…n])

其中:

col_name1[,…n]:是要實現外鍵約束的列。

table_name:是主鍵表(參照表)表名。

column_name1[,…n]:是主鍵列(參照列)列名。

 

例.

例3.31  若sales數據庫中包含Seller表和Customer表。

Seller(SaleID、SaleName)

Customer(CustomerID、Company)

新建表Orders(OrderID、CustomerID、SaleID,OrderDate)

其中CustomerID、SaleID為外鍵。

 

CREATE TABLE Orders

(Orderid int PRIMARY KEY,

 CustomerID char(3) REFERENCES Customer(CustomerID),

 SaleID char(3) CONSTRAINT fk_sid REFERENCES Seller(SaleID),

 OrderDate datetime DEFAULT getdate())

 

 

例.  修改OrderDetail表,在OrderID列上創建外鍵約束。

ALTER TABLE OrderDetail

ADD CONSTRAINT fk_orderid

FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)

 

ALTER TABLE OrderDetail

WITH NOCHECK

ADD CONSTRAINT fk_orderid

FOREIGN KEY (OrderID) REFERENCES Orders(OrderID)

 

 

五.查看約束名:

sp_help student

  或者:

sp_helpconstraint student

 

六.刪除約束:

alter table_name

drop constraint  約束名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM