CHƯƠng 1: TỔng quan về sql server và csdl quan hệ i-giới thiệu sql server


VIII-THAY ĐỔI CẤU TRÚC BẢNG – ALTER TABLE



tải về 457.4 Kb.
trang7/12
Chuyển đổi dữ liệu27.07.2016
Kích457.4 Kb.
#7139
1   2   3   4   5   6   7   8   9   ...   12

VIII-THAY ĐỔI CẤU TRÚC BẢNG – ALTER TABLE:


Các trường hợp thay đổi cấu trúc bảng, đó là: Bổ sung thêm cột mới (ADD Column); Xóa cột; Sửa đổi định nghĩa của cột (MODIFY Column) và lệnh hủy bỏ RBTV trên cột hay trên cả bảng.

Cú pháp chung:

ALTER TABLE table_name

ALTER COLUMN column_name {data_type [(p[, s])] [NULL|NOT NULL]}

| ADD {[] | ColName AS Expression },...

| DROP COLUMN column [,...n]

| [WITH CHECK | WITH NOCHECK] ADD { }[,...n]

| DROP [CONSTRAINT] constraint_name

| {CHECK | NOCHECK} CONSTRAINT {ALL | constraint_name[,...n]}

| {ENABLE | DISABLE} TRIGGER {ALL | trigger_name[,...n]}

-1Sửa đổi kiểu dữ liệu hoặc kích thước của cột :


ALTER TABLE table
ALTER COLUMN ColName DataType [(p [, s])] [NULL | NOT NULL ]

Ví dụ: Sửa lại kích thước cột tên nhân viên (Name) thành 25 ký tự:

ALTER TABLE NhanVien ALTER COLUMN HoTenNV CHAR (25)

Chú ý: Không thể sửa cột :


  • Có kiểu text, image, ntext, or timestamp

  • Cột tính toán hoặc đã dùng trong cột tính toán

  • Đã sử dụng trong các ràng buộc ngoại trừ chỉ thay đổi kích thước.

  • Không được phép sửa đổi kích thước của cột cho nhỏ lại, và cũng không được phép thay đổi kiểu dữ liệu của cột, trừ trường hợp cột đó chưa có dữ liệu gì.

  • Không thể sửa đổi cột hiện chứa giá trị NULL từ thuộc tính NULL thành NOT NULL.

-2Thêm cột


ALTER TABLE table_name ADD <Định nghĩa cột> [,...]

Ví dụ: Thêm vài cột có ràng buộc:

CREATE TABLE ViDu ( CotA INT CONSTRAINT CotA_un UNIQUE)

GO

ALTER TABLE ViDu ADD

/* Thêm cột khóa chính */

CotB INT IDENTITY CONSTRAINT CotB_pk PRIMARY KEY,



/* Thêm cột tham chiếu với cột khác trên cùng table*/

CotC INT NULL

CONSTRAINT CotC_fk REFERENCES ViDu(CotA),

/* Thêm cột với ràng buộc dạng thức của dữ liệu */

CotD VARCHAR(16) NULL

CONSTRAINT CotD_chk

CHECK (CotD IS NULL OR CotD LIKE "[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" OR CotD LIKE "([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"),



/* Thêm cột với giá trị mặc định */

CotE DECIMAL(3,3) CONSTRAINT CotE_defa DEFAULT .081

GO

EXEC SP_HELP ViDu



Chú ý: Trong trường hợp Table đã có dữ liệu, nếu bạn cần:

        • Thêm cột NOT NULL: Phải thực hiện qua 3 bước: (i) thêm cột với thuộc tính NULL, (ii) điền đầy đủ các giá trị cho cột, (iii) đổi lại thuộc tính của cột thành NOT NULL.

        • Thêm cột mới và điền giá trị Default cho các dòng đang tồn tại trong bảng:

Dùng DEFAULT với thuộc tính WITH VALUES để cung cấp giá trị cho mỗi dòng đang tồn tại trong bảng.

ALTER TABLE MyTable ADD AddDate smalldatetime NOT NULL

CONSTRAINT AddDateDflt DEFAULT GetDate() WITH VALUES

-3Xóa cột :


ALTER TABLE <tablename> DROP COLUMN ColName [,...n]

Ví dụ : CREATE TABLE ViDuXoaCot ( CotA INT, CotB VARCHAR(20) NULL)

GO

ALTER TABLE ViDuXoaCot DROP COLUMN CotB



GO

EXEC sp_help ViDuXoaCot

GO

Chú ý: Không thể xóa những cột:


  • Đang dùng trong một Index.

  • Có ràng buộc CHECK, FOREIGN KEY, UNIQUE, or PRIMARY KEY.

  • Có chỉ định giá trị DEFAULT.

  • Có chỉ định rule.

-4Thêm RBTV cho bảng :


ALTER TABLE TableName

[WITH CHECK | WITH NOCHECK] ADD { }[,...n]

  • ::= [CONSTRAINT constraint_name ]

PRIMARY KEY( Col1 [ ,...n ] )

UNIQUE ( Col1 [ ,...n ] )

FOREIGN KEY ( Col1 [ ,...n ] ) REFERENCES ref_table ( ref_col [ ,...n ] )
            [ ON DELETE { CASCADE | NO ACTION } ]
            [ ON UPDATE { CASCADE | NO ACTION } ]
DEFAULT FOR Col [ WITH VALUES ]
CHECK( BT Điều kiện )

Ví dụ: ALTER TABLE SanPham

ADD CONSTRAINT SoTon_defa DEFAULT 0 FOR SoTon


        • WITH NOCHECK: Không kiểm tra ràng buộc đối với những dữ liệu đang có trên cột

ALTER TABLE ViDu WITH NOCHECK

ADD CONSTRAINT CotA_chk CHECK (CotA > 1)

GO

ALTER TABLE CTDH WITH NOCHECK



ADD CONSTRAINT SoLuong_chk CHECK (SoLuong >=0)

Chú ý: Để sửa đổi RBTV, trước hết cần loại bỏ (DROP) chúng rồi sau đó bổ sung RBTV mới.

-5Hủy bỏ RBTV khỏi bảng.


ALTER TABLE table DROP CONSTRAINT ên RBTV>

-6Kích hoạt hay tạm ngưng kiểm tra các ràng buộc Foreign key và Check:


ALTER TABLE table

{CHECK | NOCHECK} CONSTRAINT {ALL | ConstraintName[,...n]}

Ví dụ :-- Disable the constraint and try again.

ALTER TABLE ViDu NOCHECK CONSTRAINT CotA_chk

-- Reenable the constraint and try another insert, will fail.

ALTER TABLE ViDu CHECK CONSTRAINT CotA_chk


-7Đổi tên cột :


SP_RENAME 'TableName.OldColName', 'NewColName', 'COLUMN'

Ví dụ: SP_RENAME 'customers.[contact title]', 'title', 'COLUMN'

tải về 457.4 Kb.

Chia sẻ với bạn bè của bạn:
1   2   3   4   5   6   7   8   9   ...   12




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương