II. Ngôn ngữ SQL
a. Ngôn ngữ định nghĩa dữ liệu (DDL– Data Definition Language)
Bao gồm:
Lệnh tạo table, tạo view (CREATE...)
Lệnh sửa cấu trúc table, thêm, xóa ràng buộc toàn vẹn trên table
(ALTER...)
Lệnh xóa table, xóa view (DROP...)
31 Cú pháp tạo Table:
CREATE [GLOBAL TEMPORARY] TABLE [tên_schema.]tên_table ( tên_cột kiểu_cột [DEFAULT biểu_thức_mặc_định][Các_ràng_buộc_trên_cột] [,tên_cột kiểu_cột [,...]] [, Các_ràng_buộc_trên_bảng] ) ;
Các ràng buộc (RB) trên cột có thể bao gồm một hoặc nhiều loại sau: [CONSTRAINT tên_ràng_buộc] {UNIQUE|PRIMARY KEY}
[CONSTRAINT tên_ràng_buộc] CHECK(điều_kiện_kiểm_tra) [CONSTRAINT tên_ràng_buộc] [NOT] NULL [CONSTRAINT tên_ràng_buộc] REFERENCES tên_bảng [(các_cột_khóa_tham_chiếu)] [ON DELETE {CASCADE|SET
NULL}]
Các ràng buộc trên bảng có thể bao gồm một hoặc nhiều loại sau CONSTRAINT tên_ràng_buộc {UNIQUE|PRIMARY KEY}(tên_cột
[,tên_cột...]) CONSTRAINT tên_ràng_buộc CHECK(điều_kiện_kiểm_tra) CONSTRAINT tên_ràng_buộc FOREIGN KEY (danh_sách_cột)
REFERENCES tên_table [(các_cột_khóa_tham_chiếu)] [ON DELETE {CASCADE|SET NULL
Kiểu dữ liệu:
Loại dữ liệu Mô tả
VARCHAR2(n) Dữ liệu kiểu ký tự, n<=4000
CHAR(n) Dữ liệu kiểu ký tự, kích thước cố đinh, 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. p≤38,
-84 ≤ s ≤ 127.Ví dụ: số 7456123, khai báo kiểu number (7, -2) = 7456100
DATE Kiểu ngày, lưu ngày từ 1/1/4712 BC ->
32
LONG Kiểu số nguyên
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 (Bynary Large Object) có độ dài ≤ 4GB
CLOB (Character Large Object) có độ dài ≤ 4GB
BFILE Chứa con trỏ chỉ đến một tập tin nhị phân ở ngoài
DB
Ví dụ: Cho lược đồ CSDL “quản lý đề án cty” như sau:
NHANVIEN (MaNV, HoNV, TenLot, TenNV, Phai, Luong, Phong, NgaySinh, DiaChi, Ma_NQL)
PHONGBAN (MaPHG, TenPHG, TrPHG, NG_NhanChuc)
Câu lệnh để tạo một table nhân viên:
CREATE TABLE NHANVIEN( MANV VARCHAR(10) NOT NULL, HONV VARCHAR(20), TENLOT VARCHAR(20), TENNV NVARCHAR2(30), PHAI VARCHAR(20), LUONG NUMBER, PHONG VARCHAR(20), NGAYSINH VARCHAR(30), DIACHI VARCHAR(20), MA_NQL VARCHAR(10),
PRIMARY KEY(MANV),
FOREIGN KEY(PHONG) REFERENCES PHONGBAN(MAPHG) ) ;
33
Kết quả:
Cú pháp tạo View:
CREATE [OR REPLACE] [FORCE] VIEW <tên_view> [tên-cột1, cột2,…] AS SELECT … [Điều kiện] [Ràng buộc]
Ví dụ: câu lệnh để tạo một view chứa họ tên nhân viên phòng số 5 và tên phòng ban họ trực thuộc.
CREATE VIEW TrucThuoc
AS SELECT MANV, HONV, TENNV, TENPHG FROM NhanVien, PhongBan
WHERE PHONG = MAPHG AND PHONG = 5
34
Ghi chú: tùy chọn Replace sẽ xóa view và tạo view mới nếu view đã tồn tại rồi.
Update view:
CREATE OR REPLACE VIEW view_name AS
SELECT columns FROM table
WHERE conditions;
Sửa cấu trúc bảng – Alter
Thêm thuộc tính:
ALTER TABLE tên_table ADD tên_cột kiểu_dữ_liệu
Ví dụ: thêm cột Ghi_chú vào table nhân viên ALTER TABLE NHANVIEN ADD GHI_CHU varchar2(20)
35 Sửa kiểu dữ liệu thuộc tính:
ALTER TABLE tên_table ALTER COLUMN tên_cột kiểu_dữ_liệu_mới
Ví dụ: Sửa kiểu dữ liệu của cột Ghi chú
ALTER TABLE NHANVIEN ALTER COLUMN GHI_CHU varchar2(30)
Xóa thuộc tính:
ALTER TABLE tên_bảng DROP COLUMN tên_cột
Ví dụ: Xóa cột Ghi_chú từ bảng nhân viên ALTER TABLE NHANVIEN DROP COLUMN GHI_CHU
Xóa ràng buộc toàn vẹn:
36
Ví dụ:
ALTER TABLE NHANVIEN1 DROP CONSTRAINT FK_NV_PB
Xóa Bảng, View:
Cú pháp xóa Table
DROP TABLE tên_table
Ví dụ: Xóa bảng NHANVIEN
DROP TABLE NHANVIEN
Lệnh xóa bảng dữ liệu ràng buộc giữa các bảng.
DROP TABLE tên_bảng [,tên_bảng] ... [CASCADE CONSTRAINTS]
CASCADE CONSTRAINTS: xóa các ràng buộc toàn vẹn liên quan đến các khóa chính trong bảng. Nếu bỏ qua từ khóa này và trong bảng có tồn tại các ràng buộc toàn vẹn liên quan đến các bảng khác, Oracle báo lỗi và không thực thi câu lệnh này.
37
Ví dụ:
DROP TABLE NHANVIEN CASCADE CONSTRAINTS ;
Cú pháp xóa view:
DROP VIEW tên_view
Ví dụ: Xóa View Trực thuộc DROP VIEW TrucThuoc
38 Thêm dữ liệu vào bảng
Cú pháp:
INSERT INTO tên_bảng VALUES (giá_trị_1, giá_trị_2,…, giá_trị_n) INSERT INTO tên_bảng (cột1, cột2) VALUES (giá_trị_1, giá_trị_2);
Ví dụ:
INSERT INTO NHANVIEN
VALUES ( 1, 'NGUYEN', 'THI', 'BICH', 'NU','3500000', 'PH01', '1993', 'THU DUC', 'NQL1') ;
39 Sửa dữ liệu của bảng:
UPDATE tên_bảng SET cột_i = biểu_thức_i, . . . , cột_j = biểu_thức_j> [WHERE điều_kiện>];
Ví dụ: Sửa họ nhân viên có mã số ‘1’ thành ‘Le’
40 Xóa dữ liệu trong bảng:
DELETE FROM tên_bảng [WHERE điều_kiện];
Ví dụ: Xóa nhân viên có mã số ‘1’
DELETE FROM NHANVIEN WHERE MANV=‘1’
41 Các câu query cơ bản trên table
Select:
Select column from table where condition
Ví dụ:
Update
Cú pháp: UPDATE table SET
column1 = expression1, column2 = expression2, ... column_n = expression_n, WHERE conditions; Ví dụ:
update sinhvien set svname = 'vuhung' where svid = 3;
42 Delete:
DELETE FROM table WHERE conditions;
Ví dụ: delete from sinhvien where svid = 2;
Insert:
INSERT INTO table (column1, column2, ... column_n ) VALUES (expression1, expression2, ... expression_n );
Ví dụ:
insert into sinhvien(SVID, SVNAME, LHID) values (20,'tran van c',2);
Function cũng gần tương tự với procedure nhưng function có trả về giá trị.
Create funciton:
CREATE [OR REPLACE] FUNCTION function_name [ (parameter [,parameter]) ] RETURN return_datatype IS | AS [declaration_section] BEGIN executable_section [EXCEPTION exception_section] END;
43
create or replace function getTenSinhvien(masv in int) return nvarchar2
is
tensv nvarchar2(30); begin
select svname into tensv from sinhvien
where svid = masv; return tensv; end;
Kết quả:
Drop function:
DROP PROCEDURE procedure_name