Professional Documents
Culture Documents
a. SQL là gì?
b. Tại sao SQL là cần thiết
c. Chức năng của SQL
d. Lịch sử của SQL
e. Các lệnh trong SQL
a. SQL là gì?
4
b. Tại sao SQL là cần thiết
5
c. Chức năng của SQL
6
c. Chức năng của SQL
7
d. Lịch sử của SQL
1970 - Dr. Edgar F. "Ted" Codd của IBM được biết đến
như là cha đẻ của cơ sở dữ liệu quan hệ. Ông miêu tả một
mô hình quan hệ cho các cơ sở dữ liệu.
1978 - IBM tiếp tục phát triển ý tưởng của Codd và công
bố một sản phẩm tên là System/R.
8
d. Lịch sử của SQL
9
e. Các lệnh trong SQL
DML (Data
Manipulation
Language) –
Ngôn ngữ thao
tác dữ liệu
11
e. Các lệnh trong SQL
Cú pháp:
Xóa cơ sở dữ liệu
Cú pháp:
DROP DATABASE <tên_cơ_sở_dữ_liệu_cũ>;
Hãy xóa cơ sở dữ liệu có tên là QLNS
DROP DATABASE QLNS;
3. Làm việc với bảng
19
b. Lệnh tạo cấu trúc bảng
20
b. Lệnh tạo cấu trúc bảng
21
b. Lệnh tạo cấu trúc bảng
Tạo bảng Hang(Mah, tenh, mau, slco);
TT Tên thuộc tính Mô tả Kiểu dữ liệu(độ rộng) Ràng buộc
1 MaH Mã hàng Chuỗi kí tự(15) Khóa chính
2 TenH Tên hàng Chuỗi kí tự(35)
3 Mau Màu Chuỗi kí tự(30)
4 SLCo Số lượng có Số nguyên
22
b. Lệnh tạo cấu trúc bảng
CREATE TABLE PN
( khóa chính
SoPN char(15) NOT NULL PRIMARY
KEY,
Ngay date NOT NULL,
MaNCC char(35) NOT NULL
)
23
b. Lệnh tạo cấu trúc bảng
Tạo bảng HangNhap(SoPN, Mah, SL, Gia);
TT Tên thuộc tính Mô tả Kiểu dữ liệu(độ rộng) Ràng buộc
1 MaH Mã hàng Chuỗi kí tự(15) Khóa chính, khóa ngoài
2 SoPN Số phiếu nhập Chuỗi kí tự(15) Khóa chính, khóa ngoài
3 Gia Giá Tiền tệ(money)
4 SL Số lượng nhập Số nguyên
24
b. Lệnh tạo cấu trúc bảng
Chú ý:
Khi tạo bảng có kiểu liên kết là 1-n thì phải tạo bảng phía
1 trước rồi mới tạo bảng phía n
26
c. Lệnh sửa cấu trúc bảng
tên_bản
ALTER TABLE <tên_bảng> g
sửa cột đã
{ có
ALTER COLUMN <tên_cột> <kiểu_dữ_liệu> [NULL | NOT NULL]
thêm cột/ràng
| ADD {<tên_cột_mới> buộc
<kiểu_dữ_liệu>/<ràng buộc> } [ ,...n ]
| DROP COLUMN <tên_cột_xóa>/<ràng buộc> [ ,...n ]
}
xóa cột/ràng buộc
27
c. Lệnh sửa cấu trúc bảng
Thêm bảng Hang(Mah, tenh, mau, slco) cột MaNCC có kiểu là
chuỗi (độ rộng 20) T
T
Tên
thuộc
Mô tả Kiểu dữ
liệu(độ rộng)
Ràng buộc
tính
ALTER TABLE Hang thêm cột 1 MaH Mã hàng Chuỗi kí
tự(15)
Khóa chính
Thêm ràng buộc khóa ngoài cho cột MaNCC tham chiếu đến
bảng NCC
ALTER TABLE Hang ADD FOREIGN KEY (MaNCC) REFERENCES
NCC(MaNCC) Thêm ràng buộc khóa
ngoài
28
c. Lệnh sửa cấu trúc bảng
Thay đổi kiểu dữ liệu của cột Mau từ kiểu là chuỗi (độ rộng 30)
thành kiểu chuỗi có độ rộng 15, có thể bỏ trống sửa cột
ALTER TABLE Hang ALTER COLUMN Mau char(15) NULL
T Tên Mô tả Kiểu dữ Ràng buộc
T thuộc liệu(độ rộng)
tính
Xóa ràng buộc khóa ngoài của cột 1 MaH Mã hàng Chuỗi kí
tự(15)
Khóa chính
buộc
29
c. Lệnh sửa cấu trúc bảng
Chú ý:
Khi xóa cột trong bảng nếu cột đó là khóa ngoài thì xóa
ràng buộc khóa ngoài trước rồi mới xóa cột đó
30
d. Lệnh xóa bảng
31
4. Lệnh cập nhật dữ liệu
a. Lệnh INSERT
b. Lệnh UPDATE
c. Lệnh DELETE
a. Lệnh INSERT
n
• PN( SoPN, Ngay, MaNCC)
n
• Hangnhap( SoPN, Mah, SL, Gia)
Tạo các bảng cơ sở dữ liệu trên biết rằng
TT Tên thuộc tính Mô tả Kiểu dữ liệu(độ rộng) Ràng buộc
1 MaH Mã hàng Chuỗi kí tự(15) Khóa chính, khóa ngoài
2 TenH Tên hàng Chuỗi kí tự(35)
3 Mau Màu Chuỗi kí tự(30)
4 SoPN Số phiếu nhập Chuỗi kí tự(15) Khóa chính, khóa ngoài
5 MaNCC Mã nhà cung cấp Chuỗi kí tự(35)
6 Ngay Ngày nhập Ngày tháng
7 SLCo Số lượng có Số nguyên
8 Gia Giá Tiền tệ(money)
9 SL Số lượng nhập Số nguyên
35
a. Lệnh INSERT
Tạo bảng Hang(Mah, tenh, mau, slco);
TT Tên thuộc tính Mô tả Kiểu dữ liệu(độ rộng) Ràng buộc
1 MaH Mã hàng Chuỗi kí tự(15) Khóa chính
2 TenH Tên hàng Chuỗi kí tự(35)
3 Mau Màu Chuỗi kí tự(30)
4 SLCo Số lượng có Số nguyên
CREATE TABLE Hang INSERT Hang(MaH,TenH,Mau, SLCo)
( VALUES(‘H005','Tủ Lạnh', ‘Trắng', 2100);
MaH char(15) NOT NULL Hoặc
PRIMARY KEY, INSERT Hang
VALUES(‘H006',Máy giặt', ‘Trắng', 200);
TenH char(35) NOT NULL,
Mau char(30) NOT NULL,
SLCo int NOT NULL,
)
36
a. Lệnh INSERT
Tạo bảng PN(SoPN, Ngay, MaNCC);
TT Tên thuộc tính Mô tả Kiểu dữ liệu(độ rộng) Ràng buộc
1 SoPN Số phiếu nhập Chuỗi kí tự(15) Khóa chính
2 MaNCC Mã nhà cung cấp Chuỗi kí tự(35)
3 Ngay Ngày nhập Ngày tháng
CREATE TABLE PN
INSERT PN(SoPN,Ngay, MaNCC)
(
VALUES(‘PN001',GETDATE(), ‘NCC1’)
SoPN char(15) NOT NULL Hoặc
PRIMARY KEY, INSERT PN
Ngay date NOT NULL, VALUES(‘PN002',GETDATE(), ‘NCC1’)
MaNCC char(35) NOT NULL
)
37
a. Lệnh INSERT
Tạo bảng HangNhap(SoPN, Mah, SL, Gia);
TT Tên thuộc tính Mô tả Kiểu dữ liệu(độ rộng) Ràng buộc
1 MaH Mã hàng Chuỗi kí tự(15) Khóa chính, khóa ngoài
2 SoPN Số phiếu nhập Chuỗi kí tự(15) Khóa chính, khóa ngoài
3 Gia Giá Tiền tệ(money)
4 SL Số lượng nhập Số nguyên
CREATE TABLE HangNhap
( MaH char(15) NOT NULL,
SoPN char(15) NOT NULL,
SL int NOT NULL,
Gia money NOT NULL,
PRIMARY KEY(MaH,SoPN),
FOREIGN KEY (MaH) REFERENCES Hang,
FOREIGN KEY (SoPN) REFERENCES PN
)
38
a. Lệnh INSERT
INSERT Hang(MaH,TenH,Mau, SLCo) INSERT PN(SoPN,Ngay, MaNCC)
VALUES(‘H005','Tủ Lạnh', ‘Trắng', 2100); VALUES(‘PN001',GETDATE(), ‘NCC1’)
Hoặc Hoặc
INSERT Hang INSERT PN
VALUES(‘H006',‘Máy giặt', ‘Trắng', 200); VALUES(‘PN002',GETDATE(), ‘NCC1’)
39
a. Lệnh INSERT
VD: lấy thông tin về số phiếu, ngày nhập và tổng tiền nhập
của mỗi phiếu, thêm dữ liệu truy xuất được vào bảng PN1
INSERT INTO PN1(SoPN, Ngay, TongTien)
SELECT PN.SoPN, Ngay, SUM(SL * Gia)
FROM HANG, PN, HangNhap
WHERE Hang.MaH = HangNhap.MaH
AND PN.SoPN = HangNhap.SoPN
GROUP BY PN.SoPN, Ngay
41
b. Lệnh UPDATE
[ WHERE { <search_condition> } ]
VD: Thay đổi cho phiếu nhập ‘PN001’ nhà cung cấp là
Hitachi
UPDATE PN
SET MaNCC=‘Hitachi’
WHERE SoPN = ‘PN001'
43
b. Lệnh UPDATE
VD: tăng số lượng có của các sản phẩm khi được nhập
thêm biêt rằng: SLCo=SLCo+SL
UPDATE HANG
SET SLCo= SLCo+SL
WHERE HANG.MaH=HangNhap.MaH
44
c. Lệnh DELETE