BUỔI Bài 4: Ngôn ngữ SQL Khoa HTTT - Dương Khai Phong Nội dung Giới thiệu Các ngôn ngữ giao tiếp Ngôn ngữ định nghĩa liệu Ngôn ngữ thao tác liệu Ngơn ngữ truy vấn liệu có cấu trúc Ngôn ngữ điều khiển liệu Khoa HTTT - Dương Khai Phong Giới thiệu Là ngôn ngữ chuẩn để truy vấn thao tác CSDL quan hệ Là ngôn ngữ phi thủ tục Khởi nguồn SQL SEQUEL - Structured English Query Language, năm 1974) Các chuẩn SQL SQL89 SQL92 (SQL2) SQL99 (SQL3) Khoa HTTT - Dương Khai Phong Các ngôn ngữ giao tiếp Ngôn ngữ định nghĩa liệu (Data Definition Language - DDL): cho phép khai báo cấu trúc bảng, mối quan hệ ràng buộc Ngôn ngữ thao tác liệu (Data Manipulation Language - DML): cho phép thêm, xóa, sửa liệu Ngơn ngữ truy vấn liệu (Structured Query Language – SQL): cho phép truy vấn liệu Ngôn ngữ điều khiển liệu (Data Control Language – DCL): khai báo bảo mật thông tin, cấp quyền thu hồi quyền khai thác sở liệu Khoa HTTT - Dương Khai Phong Ngôn ngữ định nghĩa liệu 3.1 Lệnh tạo bảng (CREATE) 3.1.1 Cú pháp 3.1.2 Một số kiểu liệu 3.2 Lệnh sửa cấu trúc bảng (ALTER) 3.2.1 Thêm thuộc tính 3.2.2 Sửa kiểu liệu thuộc tính 3.2.3 Xố thuộc tính 3.2.4 Thêm ràng buộc tồn vẹn 3.2.5 Xố ràng buộc tồn vẹn 3.3 Lệnh xóa bảng (DROP) Khoa HTTT - Dương Khai Phong Ngôn ngữ định nghĩa liệu 3.1 Lệnh tạo bảng (CREATE) 3.1.1 Cú pháp CREATE TABLE ( [not null], [not null], … [not null], khai báo khóa chính, khóa ngoại, ràng buộc ) Khoa HTTT - Dương Khai Phong Ngôn ngữ định nghĩa liệu 3.1 Lệnh tạo bảng (CREATE) 3.1.1 Cú pháp CREATE TABLE ( [not null], [not null], … [not null], khai báo khóa chính, khóa ngoại, ràng buộc ) Khoa HTTT - Dương Khai Phong Ngôn ngữ định nghĩa liệu 3.1 Lệnh tạo bảng (CREATE) 3.1.2 Một số kiểu liệu: Kiểu liệu SQL Server Chuỗi ký tự varchar(n), char(n), Unicode: nvarchar(n), nchar(n) Số Số nguyên: tinyint,smallint, int, Số thực: numeric(m,n), decimal(m,n),float, real, Tiền tê: smallmoney, money smalldatetime =>dom(01/01,1900;06/06/2079) datetime => dom(01/01/1753;31/12/9999) bit => dom(0,1) Ngày tháng Luận lý Khoa HTTT - Dương Khai Phong Ngôn ngữ định nghĩa liệu 3.1 Lệnh tạo bảng (CREATE) Ví dụ: Cho lược đồ CSDL quản lý bán hàng gồm có quan hệ sau: KHACHHANG (MAKH, HOTEN, DCHI, SODT, NGSINH, DOANHSO, NGDK, CMND) NHANVIEN (MANV,HOTEN, NGVL, SODT) SANPHAM (MASP,TENSP, DVT, NUOCSX, GIA) HOADON (SOHD, NGHD, MAKH, MANV, TRIGIA) CTHD (SOHD,MASP,SL) Hãy tạo quan hệ từ lược đồ CSDL trên? Khoa HTTT - Dương Khai Phong Ngôn ngữ định nghĩa liệu 3.1 Lệnh tạo bảng (CREATE) Tạo quan hệ KHACHHANG: Create table KHACHHANG ( MAKH char(4) , primary key, HOTEN varchar(40), DCHI varchar(50), SODT varchar(20), NGSINH smalldatetime, DOANHSO money, NGDK smalldatetime, CMND varchar(10) ) Khoa HTTT - Dương Khai Phong 10 Ngôn ngữ thao tác liệu 4.1 Thêm liệu 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ộtn) VALUES (giá_trị_1,…., giá_trị_n) Ví dụ: insert into SANPHAM values('BC01','But chi', 'cay', 'Singapore', 3000) insert into SANPHAM(masp,tensp,dvt,gia) values ('BC01','But chi','cay', 3000) Khoa HTTT - Dương Khai Phong 21 Ngôn ngữ thao tác liệu 4.2 Sửa liệu Cú pháp: UPDATE tên_bảng SET cột_1 = giá_trị_1, cột_2 = giá_trị_2 … [WHERE điều_kiện] Lưu ý: cẩn thận với lệnh xóa sửa, khơng có điều kiện WHERE nghĩa xóa sửa tất Ví dụ: Tăng giá 10% sản phẩm “Trung Quoc” sản xuất UPDATE SANPHAM SET Gia = Gia*1.1 WHERE Nuocsx=‘Trung Quoc’ Khoa HTTT - Dương Khai Phong 22 Ngơn ngữ thao tác liệu 4.3 Xóa liệu Cú pháp: DELETE FROM tên_bảng [WHERE điều_kiện] Ví dụ: Xóa tồn nhân viên DELETE FROM NHANVIEN Xóa sản phẩm Trung Quốc sản xuất có giá thấp 10000 DELETE FROM SANPHAM WHERE (Gia Select NHANVIEN.* from Nhanvien Distinct: trùng lấy lần Select distinct nuocsx from SANPHAM Sắp xếp kết hiển thị: Order by Select * from SANPHAM order by nuocsx, gia DESC Khoa HTTT - Dương Khai Phong 32 Ngôn ngữ truy vấn liệu có cấu trúc 5.5 Tốn tử truy vấn Toán tử so sánh: =, , >,=,