Các lệnh với bảng

Một phần của tài liệu TÀI LIỆU DẠY HỌC CƠ SỞ DỮ LIỆU (Trang 83 - 88)

3.2. C ÁC LỆNH VỚI BẢNG VÀ TỆP CHỈ SỐ

3.2.1. Các lệnh với bảng

a. Cách đặt tên đối tượng

SQL chuẩn hóa đều quy định cách đặt tên các đối tượng như tên bảng, tên cột của bảng, tên View, tên ràng buộc toàn vẹn (RBTV),... như sau:

Tên gọi gồm tối đa 32 kí tự chữ cái Latinh, chữ số Ả Rập và dấu gạch chân (Underscore) và phải bắt đầu bằng một chữ cái Latinh hoặc dấu gạch chân.

Tuyệt đối không chứa khoảng trắng hay kí tự chữ cái không phải Latinh.

Chữ in hoa hay chữ thường đều được xem là như nhau. Tên bảng phải là duy nhất trong CSDL và không trùng với bất cứ từ khóa nào.

Tên cột của một bảng phải là khác nhau, nhưng chúng có thể giống nhau nếu chúng nằm trong các bảng khác nhau. Ví dụ, tên cột mã lớp nên đặt là MaLop trong cả hai bảng LOP và SINH_VIEN,

Ví dụ 3.15. Các tên hợp lệ và không hợp lệ LOP_K16: là tên hợp lệ

16LOP: không hợp lệ, vì tự đầu tiên là chữ số.

LỚP_K16: không hợp lệ vì có kí tự tiếng Việt

SINH_VIEN-HOC_PHAN: không hợp lệ vì có dấu trừ (-) SINH VIEN: không hợp lệ vì có khoảng trắng

UPDATE: không hợp lệ vì là từ dành riêng của ngôn ngữ.

84 b. Lệnh tạo bảng (CREATE TABLE)

Tạo một bảng: đặt tên cho bảng và xác định số cột, kiểu dữ liệu của mỗi cột.

Cú pháp

CREATE TABLE <tên bảng> (

<tên cột 1><kiểu dữ liệu 1>(<kích thước 1>),

<tên cột 2><kiểu dữ liệu 2>(<kích thước 2>), ...

<tên cột n><kiểu dữ liệu n>(<kích thước n>) );

Ví dụ 3.16. Lệnh SQL để tạo bảng SINH_VIEN trong đó MaSV là thuộc tính khóa; mỗi sinh viên phải có họ tên, năm sinh xác định, nghĩa là HoTenSV, NamSinh phải khác NULL; đồng thời ta có thể muốn giới tính mặc định của các sinh viên là

“Nam”.

CREATE TABLE SINH_VIEN (

MaSV NUMBER(10) NOT NULL, HoTenSV VARCHAR (20) NOT NULL,

NamSinh DATE NOT NULL,

GioiTinh CHAR (3) DEFAULT “Nam”, QueQuan VARCHAR (40),

PRIMARY KEY (MaSV) );

b. Lệnh thay đổi cấu trúc của bảng

Lệnh ALTER TABLE trong SQL được sử dụng để thay đổi cấu trúc của một bảng đang tồn tại, bao gồm

• Bổ sung thêm cột mới (ADD Column);

• Sửa đổi định nghĩa của cột (MODIFY Column)

• lệnh hủy bỏ RBTV trên cột hay trên cả bảng.

b1. Bổ sung thêm cột mới Cú pháp

ALTER TABLE <tên bảng>

ADD ( <mô tả cột>[< RBTV cột>]) [ mệnh đề ENABLEDISABLE ];

trong đó

< mô tả cột> :: = <tên cột><kiểu d.l>[ (<kích thước>) ]

Ví dụ 3.17. Bổ sung thêm cột nơi sinh (NoiSinh) dài 40 kí tự vào bảng SINH_VIEN:

ALTER TABLE SINH_VIEN ADD (NoiSinh CHAR(40) );

85 b2. Sửa đổi định nghĩa cột mới

Cú pháp

ALTER TABLE <tên bảng>

MODIFY (<Tên cột><kiểu> (<kích thước>) ) [ mệnh đề ENABLEDISABLE]

Ví dụ 3.18. Sửa lại kích thước cột họ tên sinh viên (HoTenSV) thành 25 kí tự:

ALTER TABLE SINH_VIEN MODIFY (HoTenSV CHAR (25));

Lưu ý:

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

• Không thể bổ sung cột mới với thuộc tính NOT NULL được. Muốn vậy phải thực hiện qua 3 bước:

o (i) thêm cột với thuộc tính NULL, o (ii) điền đầy đủ các giá trị cho cột,

o (iii) đổi lại thuộc tính của cột thành NOT NULL.

• 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 dùng tùy chọn MODIFY để định nghĩa RBTV trên cột (trừ RBTV NULL và NOT NULL).

b3. Hủy bỏ RBTV khỏi bảng

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

Cú pháp

ALTER TABLE <tên bảng>

DROP [CONSTRAINT <tên RBTV>

PRIMARY KEY 

UNIQUE (<cột>, <cột> ...)] [ CASCADE];

Từ khóa CASCADE được sử dụng khi muốn tất cả các RBTV phụ thuộc tồn tại cũng sẽ được hủy bỏ.

Ví dụ 3.19. Hủy bỏ RBTV khóa chính của bảng LOP ALTER TABLE LOP

DROP PRIMARY KEY

Ví dụ 3.20. Hủy bỏ RBTV khóa chính của bảng SINH_VIEN đồng thời hủy bỏ các RBTV phù thuộc tồn tại khác:

ALTER TABLE SINH_VIEN DROP PRIMARY KEY CASCADE

Câu lệnh này cũng hủy bỏ luôn cả RBTV khóa ngoài SINH_VIEN.MaLop

86

b4. Mệnh đề ENABLE và DISABLE của câu lệnh ALTER TABLE

Cú pháp tổng quát của câu lệnh ALTER TABLE với mệnh đề ENABLE ALTER TABLE <tên bảng>

ENABLE UNIQUE  PRIMARY KEY  CONSTRAINT <tên RBTV>

[ CASCADE];

Cú pháp tổng quát của câu lệnh ALTER TABLE với mệnh đề DISABLE ALTER TABLE <tên bảng>

DISABLE UNIQUE  PRIMARY KEY  CONSTRAINT <tên RBTV>

[ CASCADE];

Ngữ nghĩa: Có thể kích hoạt (ENABLE) hoặc tạm ngưng kiểm tra (DISABLE) đối với các RBTV về giá trị duy nhất (UNIQUE), khóa chính (PRIMARY KEY) hoặc các RBTV khác (CONSTRAINT <tên RBTV>).

Lưu ý:

• Khi kích hoạt một RBTV thì RBTV đó sẽ có tác dụng trên toàn bộ dữ liệu của bảng. Tất cả các dữ liệu trong bảng đều phải thỏa mãn RBTV.

• Khi kích hoạt các RBTV UNIQUE hoặc PRIMARY KEY thì bảng chỉ mục (INDEX) tương ứng sẽ tự động được tạo lập.

• Mệnh đề ENABLE và DISABLE có thể được sử dụng cả trong câu lệnh CREATE TABLE và ALTER TABLE.

• Từ khóa CASCADE cho phép kích hoạt hoặc tạm ngưng kích hoạt tất cả các RBTV phụ thuộc tồn tại khác có liên quan.

Ví dụ 3.21. Ngưng kích hoạt RBTV về khóa ngoài của bảng LOP đối với bảng SINH_VIEN

ALTER TABLE LOP

DISABLE CONSTRAINT PKEY;

Ví dụ 3.22. Ngưng kích hoạt RBTV khóa chính của quan hệ LOP đồng thời ngưng kích hoạt RBTV khóa ngoài của quan hệ SINH_VIEN

ALTER TABLE LOP

DISABLE PRIMARY KEY CASCADE;

Ví dụ 3.23. Kích hoạt RBTV khóa ngoài của LOP vừa tạm ngưng ở trên để nó hoạt động trở lại

ALTER TABLE LOP

ENABLE CONSTRAINT PKEY;

Ví dụ 3.24. Kích hoạt RBTV khóa chính của quan hệ LOP đồng thời kích hoạt RBTV khóa ngoài của quan hệ SINH_VIEN hoạt động trở lại

ALTER TABLE LOP

ENABLE PRIMARY KEY CASCADE;

87 c. Lệnh đổi tên của bảng

Cú pháp

RENAME <tên bảng cũ> | <tên View cũ>

TO <tên bảng mới> | <tên View mới>;

Ngữ nghĩa: Tên bảng hoặc tên View sẽ được đổi thành tên mới sau từ khóa TO.

Lưu ý: Khi tên bảng hoạc tên View được đổi thành tên mới, thì các tên View có liên quan hay các chương trình ứng dụng có sử dụng bảng (hoặc View) cũng phải được sửa đổi theo tên mới, nếu không sẽ không sử dụng được.

Ví dụ 3.25. Đổi tên bảng SINH_VIEN thành SV RENAME SINH_VIEN TO SV;

d. Lệnh xoá bảng d1. Xoá bảng

Lệnh DROP TABLE trong SQL được sử dụng để hủy bỏ bảng có tên sau từ khóa DROP TABLE ra khỏi CSDL. Khi đó tất cả các dữ liệu, chỉ mục (index), trigger, ràng buộc và quyền được trao cho bảng đó trong bảng đều bị xóa bỏ. Để hủy bỏ các RBTV khác có liên quan tới bảng, cần phải bổ sung vào câu lệnh từ khóa CASCADE CONSTRAINTS.

Cú pháp

DROP TABLE <tên bảng>|<tên View>|<tên Index>

[CASCADE CONSTRAINTS];

Lưu ý:

• Khi một bảng đã bị hủy bỏ khỏi CSDL thì tất cả các VIEW, các thủ tục và hàm có liên quan tới bảng vần tồn tại, nhưng không còn hợp lệ nữa.

• Chỉ những người tạo ra bảng hoặc người quản trị CSDL (DataBase Administrator - DBA) mới có quyền hủy bỏ bảng khỏi CSDL.

• Có thể sử dụng lệnh DROP để hủy bỏ các bảng logic (VIEW) và chỉ mục (INDEX).

Ví dụ 3.26. Hủy bỏ bảng LOP khỏi CSDL DROP TABLE LOP;

d2. Xóa bỏ tất cả các dòng của bảng và giải phóng vùng nhớ Cú pháp

TRUNCATE TABLE <tên bảng> ;

Ngữ nghĩa: Lệnh TRUNCATE sau khi đã xóa bỏ các bản ghi khỏi bảng thì vùng nhớ của các bản ghi này sẽ được thu hồi và cho phép các bảng khác sử dụng.

Lưu ý: Chỉ có người tạo ra bảng hoặc những người quản trị CSDL mới có quyền hạn TRUNCATE bảng.

Có 3 lệnh xoá bảng là lệnh DELETE, lệnh DROP và lệnh TRUNCATE nhưng có một số điểm khác nhau giữa chúng.

88

Điểm khác nhau giữa lệnh DELETE và lệnh TRUNCATE

• Lệnh DELETE chỉ xóa các hàng từ bảng dựa trên điều kiện đã được định nghĩa bởi mệnh đề WHERE hoặc xóa tất cả các hàng từ bảng nếu điều kiện này không được xác định. Nhưng nó không giải phóng bộ nhớ chứa bảng đó.

• Trong khi đó, lệnh TRUNCATE xóa tất cả các hàng từ bảng và giải phóng bộ nhớ chứa bảng đó.

Điểm khác nhau giữa lệnh DROP và lệnh TRUNCATE

• lệnh DROP ngoài xóa hàng của bảng nó sẽ xoá cả định nghĩa bảng, do đó, sẽ xoá cả: Cấu trúc bảng, mối quan hệ, các ràng buộc về toàn vẹn dữ liệu, quyền truy cập

• lệnh TRUNCATE chỉ xoá hàng của bảng, cấu trúc bảng được giữa nguyên.

Một phần của tài liệu TÀI LIỆU DẠY HỌC CƠ SỞ DỮ LIỆU (Trang 83 - 88)

Tải bản đầy đủ (PDF)

(188 trang)