Chương 4 : Các câu lệnh SQL trong Oracle
4.1. Ngôn ngữ định nghĩa dữ liệu (Data Definition Language-DDL):
4.1.2. Các thao tác trên cấu trúc bảng:
a) Tạo bảng:
Cú pháp:
CREATE TABLE <table name> (
Column_name 1 datatype, Column_name 2 datatype,
…
Column_name n datatype )
Loại dữ liệu Mô tả
VARCHAR2(n) Dữ liệu ký tự, n <= 4000
CHAR(n) Dữ liệu kiểu ký tự, kích thước cố định, n<=2000 NUMBER Kiểu số nguyên, số ký số tối đa là 38 ký số NUMBER(p) Kiểu số nguyên, với số kí số tối đa là p
NUMBER(p,s) Kiểu số thực, tối đa p ký số, s số thập phân. P38, -84s 127
DATE Kiểu ngày
LONG Kiểu ký tự có chiều dài lên đến 2GB RAW Chuỗi nhị phân dài tối đa 2000 bytes LONG RAW Chuỗi nhị phân dài tối đa 2GB BLOB Binary Large Object có độ dài 4GB CLOB Character Large Object có độ dài 4GB
Ví dụ:
CREATE TABLE SINHVIEN ( MA_SV VARCHAR2(10),
HO_TEN VARCHAR2(25) NOT NULL, NGAY_SINH DATE,
CONTRAINT PK_SV PRIMARY KEY (MA_SV) )
Một số chú ý khi đặt tên bảng:
Tên phải bắt đầu với một kí tự A-Z, hoặc a-z.
Có thể chứa những ký tự, những số đặc biệt(#, $,..) nhưng khơng nên sử dụng.
Tên có thể viết thường hay viết hoa.
Không được trùng tên với những đối tượng khác. Tên trường (cột) trong một bảng phải là duy nhất.
b) Sửa đổi cấu trúc bảng:
Thêm một cột vào bảng:
Cú pháp:
ALTER TABLE table_name ADD (column_name datatype);
Ví dụ:
ALTER TABLE NHANVIEN ADD (GHICHU VARCHAR2(50)) Sửa dữ liệu của cột trong bảng:
Cú pháp:
ALTER TABLE table_name MODIFY (column_name new_datatype);
Ví dụ:
ALTER TABLE NHANVIEN MODIFY (GHICHU VARCHAR2(100)) Thêm ràng buộc vào bảng:
Cú pháp:
ALTER TABLE table_name ADD CONSTRAINT constraint_name [UNIQUE | PRIMARY KEY | FOREIGN KEY | CHECK ]…
Xóa ràng buộc trong bảng:
Cú pháp:
ALTER TABLE NHAN_VIEN DROP CONSTRAINT fk_PB_NV; Xóa một cột trong bảng:
Cú pháp:
ALTER TABLE table_name DROP COLUMN column_name;
Ví dụ:
ALTER TABLE NHANVIEN DROP COLUMN GHICHU; Xóa bảng:
Cú pháp:
DROP TABLE table_name [CASCADE CONSTRAINT]
CASEADE CONSTRAINT: hủy bỏ sự tham chiếu của các dối tượng đến nó.
Ví dụ:
DROP TABLE NHAN_VIEN
c) Đổi tên bảng:
Cú pháp:
RENAME old TO new;
Ví dụ:
RENAME NHANVIEN TO NHAN_VIEN;
d) Ràng buộc toàn vẹn:
Ràng buộc khóa chính:
Cú pháp:
[CONSTRAINT constraint_name] PRIMARY KEY (column1, column2,…)
Ví dụ:
CREATE TABLE PHONG_BAN (
MA_PHG NUMBER(3), TEN_PHG VARCHAR2(100), DIA_DIEM VARCHAR2(10),
CONSTRAINT PK_PB PRIMARY KEY (MA_PHG)); )
Ràng buộc khóa ngoại:
Cú pháp:
[CONSTRAINT constraint_name] FOREIGN KEY (column) REFERENCES table(primary key column)
Ví dụ:
CONSTRAINT fk_pb_nv FOREIGN KEY (MA_PHG) REFERENCES PHONG_BAN (MA_PHG) ON DELETE CASCADE
Khai báo ON DELETE CASADE trong ví dụ trên, nếu xóa một mẩu tin trong mẫu phịng ban mà bản nhân viên có tham chiếu đến mẩu tin đó, thì mẫu tin liên quan đến phịng ban bị xóa sẽ được tự động xóa trong bảng NHAN_VIEN.
Ràng buộc miền giá trị:
Cú pháp:
[CONSTRAINT constraint_name] CHECK (condition)
Ví dụ:
CREATE TABLE SINH_VIEN ( MA_SV VARCHAR2(10),
HO_TEN VARCHAR2(25) NOT NULL, NG_SINH DATE,
GIOI_TINH VARCHAR2(10),
CONSTARINT PK_SV PRIMARY KEY (MA_SV),
CONSTRAINT CHK_GT CHECK GIOI_TINH IN (‘Nam’, ‘Nu’) );
Ràng buộc duy nhất:
Cú pháp:
[CONSTRAINT constraint_name] UNIQUE (column1, column2,…)
Ví dụ:
CREATE TABLE PHONG_BAN ( MA_PHG NUMBER(3),
TEN_PHG VARCHAR2(100), DIA_DIEM VARCHAR2(10),
Cho phép hủy tất cả các dòng từ một bảng . Lệnh này giống lệnh DELETE nhưng hiệu quả hơn vì dữ liệu khơng bị đẩy vào ROLLBACK segment.
Cú pháp:
TRUNCATE TABLE table_name [REFUSE STORAGE]
REFUSE STORAGE: Giữ lại khoảng trống từ những giống bị xóa của bảng.