2. Ngôn ngữ hỏi có cấu trúc – SQL (Structured Query Language)
2.1. Ngôn ngữ định nghĩa dữ liệu
Trong SQL có một số phép tính được sử dụng để có thể tạo ra các quan hệ (bảng), các khung nhìn của người sử dụng (View), các tệp chỉ số (Index).
2.1.1. Tạo bảng
Cú pháp: CREATE TABLE <tên bảng>
(<tên trường1> <kiểu trường1>([<độ rộng1>[,<độ chính xác1>])] [NULL / NOT NULL] [CHECK <btđk> [ERROR <thông báo>]] [DEFAULT <giá trị>] [PRIMARY KEY / UNIQUE] [REFERENCES <tên bảng 2> [TAG <tên trường ở bảng 2>]]
[, <tên trường2> <kiểu trường2>([<độ rộng2>[,<độ chính xác2>])] [NULL / NOT NULL] [CHECK <btđk> [ERROR <thông báo>] [DEFAULT <giá trị>] ….)
Trong đó: Tên bảng là xâu ký tự không chứa ký tự trống, không trùng từ khoá
Tên trường là xâu ký tự không chứa ký tự trống. trong một bảng không
có 2 tên trường trùng nhau
Kiểu trường: là một trong các kiểu sau:
Char(n) Xâu ký tự độ dài cố định
Varchar[(n)] Xâu ký tự độ dài thay đổi, độ dài tối đa n
int Số nguyên.
Smallint Số nguyên nhỏ.
Numeric (p,d) Số dấu chấm thập phân cố định, gồm p chữ số và 1 dấu chấm, trong đó d chữ số bên phải dấu chấm.
Real, Double Precision Số dấu phẩy động và số dấu phẩy động độ chính xác gấp đôi
Float (n) Số dấu phẩy động độ chính xác n chữ số sau dấu phẩy
Date Ngày tháng năm
Time Giờ phút giây
NULL: Cho phép bỏ trống giá trị nếu cần thiết NOT NULL: Bắt buộc cột phải có giá trị cụ thể Check (btđk): Kiểm tra điều kiện trường
Error <thông báo>:Lời thông báo nếu nhập sai điều kiện trên Default: giá trị mặc định cho trường
Primary key:Lựa chọn trường này làm khoá chính Unique:Xác định tính duy nhất của trường
References: Tham chiếu đến bảng khác
Tag: Tên trường khoá chính ở bảng tham chiếu
VD1: Tạo bảng Khoa gồm mã khoa gồm 2ký tự không chấp nhận giá trị rỗng, tên khoa gồm 20 ký tự, số điện thoại gồm 7 số
CREATE TABLE khoa (MaKhoa char(2) NOT NULL, TenKh varchar(20), Đthoai int)
VD2: CREATE TABLE Lop (lopID char(5) PRIMARY KEY, tenlop varchar(20), nganh varchar(20), khoahoc varchar(10), MaKhoa char(2) REFERENCES khoa TAG MaKhoa)
VD3: CREATE TABLE sinhvien(svid varchar(10) PRIMARY KEY, hodem varchar(20), ten varchar(10), ngaysinh date CHECK ngaysinh<date()+356*16 ERROR 'nhap sai ngay sinh' DEFAULT date(), noisinh varchar(30), lopid char(5) REFERENCES lop TAG lopid)
2.1.3. Xoá bảng
Cú pháp:DROP TABLE tênbảng
Ví dụ: DROP TABLE khoa
2.1.4. Tạo khung nhìn
Cú pháp:CREATE VIEW tênview (danh sách tên cột) AS mệnh đề SELECT VD: Tạo view HOCBONG gồm các cột tên sinh viên, tên lớp, học bổng
CREATE VIEW hocbong (TenSV, TenLop, Hocbong) AS SELECT (TenSV, TenLop, Hocbong) FROM danhsach WHERE hocbong > 0
2.1.5. Thêm cột mới
Cú pháp:ALTER TABLE tên_bảng ADD tên_cột kiểu
VD1: Thêm cột Trưởng khoa cho bảng KHOA với kiểu là xâu ký tự ALTER TABLE khoa ADD TruongKhoa varchar(25)
VD2: Thêm cột ngày thành lập khoa cho bảng KHOA ALTER TABLE khoa ADD NgayTL date
2.1.6. Xoá cột:
Cú pháp:: ALTER TABLE tên_bảng DROP tên_cột Ví dụ: xoá cột trưởng khoa trong bảng khoa
2.1.7. Tạo lập các chỉ mục:
Tạo chỉ mục là tạo ra một bảng lưu trữ vị trí các bản ghi dựa trên giá trị tăng dần của một hay một số cột nào đó. Điều này có ý nghĩa làm tăng tốc độ tìm kiếm thông tin trong CSDL. Tạo chỉ mục không làm thay đổi thứ tự vật lý của các bản ghi trong bảng
Cú pháp:CREATE INDEX <tên bảng chỉ mục> ON <tên bảng>(<tên cột 1>[,<tên cột 2>,…])
Ví dụ: CREATE INDEX nv_index ON nhanvien(ten)
2.1.7. Loại bỏ bảng chỉ mục:
DROP INDEX <tên bảng chỉ mục>
Ví dụ: Tạo CSDL gồm 5 bảng như sau:
Bảng SINHVIEN
Tên trường Kiểu độ rộng Chú thích / Ràng buộc
Svid C 10 Mã sinh viên
Hodem C 20 họ đệm
Tên C 10 Tên
Ngaysinh D 8 Ngày sinh < ngày hiện tại+365*16
Noisinh C 30 Nơi sinh
Lopid C 5 Mã lớp
Ghichu M Thông tin thêm về sinh viên
Bảng LOP
Tên trường Kiểu độ rộng Chú thích / Ràng buộc
Lopid C 5 Mã lớp
Tenlop C 20 Tên lớp
Nganh C 20 Ngành học
Khoahoc C 10 Khoá học
Bảng RENLUYEN
Tên trường Kiểu độ rộng Chú thích / Ràng buộc
Svid C 10 Mã sinh viên
Hocky I 4 0< học kỳ <= 10 Nd1 I 4 0<= nội dung 1 <=10 Nd2 I 4 0<= nội dung 1 <=10 Nd3 I 4 0<= nội dung 1 <=10 Nd4 I 4 0<= nội dung 1 <=10 Nd5 I 4 0<= nội dung 1 <=10 Kq I 4 Kết quả Xeploai C 5 Xếp loại Bảng MONHOC
Tên trường Kiểu độ rộng Chú thích / Ràng buộc
Monid I 4 Mã môn học
Tenmon C 35 Tên môn
Dvht I 4 Đơn vị học trình
Hocky I 4 0< học kỳ <= 10
Lopid C 5 Mã lớp
Bảng HOCTAP
Tên trường Kiểu độ rộng Chú thích / Ràng buộc
Htid B 8 Mã cho mỗi bản ghi trong bảng
Svid C 10 Mã sinh viên
Hocky I 4 0< học kỳ <= 10 Monid I 4 Mã môn học Dhs1 F 20 0<= dhs1 <= 10 Dhs2 F 20 0<= dhs2 <= 10 Dtlan1 F 20 0<= dtlan1 <= 10 Dtlan2 F 20 0<= dtlan2 <= 10 Dtlan3 F 20 0<= dtlan3 <= 10
Thiết lập mối quan hệ giữa các bảng.