Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 77 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
77
Dung lượng
561,2 KB
Nội dung
Các kiểu liệu SQL ● ● ● ● ● ● ● ● ● ● ● char(n) varchar(n) int bit smallint numeric(p,d) real, double float(n) date time timestamp 01/07/17 Phạm Thị Ngọc Diễm 17 CREATE TABLE ● Lệnh tạo bảng đơn giản – CREATE TABLE ( – [rangbuoc_cot […]] | rangbuoc_bang [, ] ) CHECK () rangbuoc_cot – ● ● NOT NULL ● UNIQUE ● PRIMARY KEY ● DEFAULT rangbuoc_bang : Phạm Thị Ngọc Diễm + FOREIGN KEY( ) REFERENCES () 01/07/17 18 CREATE TABLE - Ví dụ ● Ví dụ đơn giản CREATE TABLE PHICONG( MPC smallint , hoten varchar(30), dchi varchar(30)); CREATE TABLE CONGTY( MCT smallint , tencty varchar(30), nuoc varchar(20)); => Bảng chưa định nghĩa khóa ràng buộc khác 01/07/17 Phạm Thị Ngọc Diễm 19 CREATE TABLE - Ví dụ ● Thêm ràng buộc PRIMARY KEY, NOT NULL, UNIQUE CREATE TABLE PHICONG( MPC smallint PRIMARY KEY, hoten varchar(30) NOT NULL, dchi varchar(30)); CREATE TABLE CONGTY( MCT smallint NOT NULL, tencty varchar(30) UNIQUE, nuoc varchar(20), 01/07/17 PRIMARY KEY (MCT) ); Phạm Thị Ngọc Diễm 20 CREATE TABLE - Ví dụ ● Thêm khố ngoại ràng buộc khác, đặt tên cho ràng buộc CREATE TABLE CHUYENBAY( SOCB varchar(10) NOT NULL, MPC smallint NOT NULL, MMB smallint NOT NULL, noidi varchar(20) DEFAULT 'Paris', noiden varchar(20), khoangcach int CHECK(khoangcach>0), giodi time, gioden time , ngaybay date, CONSTRAINT fk_MPC FOREIGN KEY(MPC)REFERENCES PHICONG(MPC), FOREIGN KEY(MMB) REFERENCES MAYBAY(MMB) ); => Khóa nhiều cộtPhạm ? Thị Ngọc Diễm 01/07/17 21 CREATE TABLE - RB tham chiếu CASCADE ● ● ● Mệnh đề REFERENCES lệnh CREATE TABLE ALTER TABLE hỗ trợ mệnh đề ON DELETE ON UPDATE CASCADE định nghĩa cho cập nhật xố liệu tuỳ chọn sau dùng: – SQL Server: [ ON DELETE | UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] – 01/07/17 Oracle : [ ON DELETE | UPDATE { RESTRICT | CASCADE | SET NULL | NO ACTION} ] Phạm Thị Ngọc Diễm 22 CREATE TABLE - RB tham chiếu CASCADE SET NULL: cột nhận giá trị NULL cột tham chiếu bị xoá cập nhật CASCADE: cột câp nhật cột tham chiếu cập nhật dòng bị xố dòng tham chiếu bị xố SET DEFAULT: cột nhận giá trị mặc định thao tác cập nhật/xoá thực dòng tham chiếu NO ACTION/RESTRICT: tuỳ chọn mặc định Nếu thao tác cập nhật hay xố thực dòng tham chiếu, thao tác bị cấm 01/07/17 Phạm Thị Ngọc Diễm 23 CREATE TABLE - RB tham chiếu CASCADE CREATE TABLE Albums ( AlbumID INT PRIMARY KEY, Name VARCHAR(50) ); CREATE TABLE Tracks ( TrackID INT PRIMARY KEY, Title VARCHAR(50), AlbumID INT REFERENCES Albums(AlbumID) ON DELETE SET NULL ON UPDATE CASCADE ); 01/07/17 Phạm Thị Ngọc Diễm 24 CREATE TABLE - RB tham chiếu CASCADE CREATE TABLE Albums ( AlbumID INT PRIMARY KEY, Name VARCHAR(50) ); CREATE TABLE Tracks ( TrackID INT PRIMARY KEY, Title VARCHAR(50), AlbumID INT DEFAULT REFERENCES Albums(AlbumID) ON DELETE SET DEFAULT ON UPDATE CASCADE ); 01/07/17 Phạm Thị Ngọc Diễm 25 ALTER TABLE ● Cho phép thay đổi cấu trúc bảng, thêm xoá RBTV ● Thay đổi cấu trúc bảng, gồm : – Cú pháp thêm cột ALTER TABLE ADD – Cú pháp xóa cột ALTER TABLE DROP COLUMN – Cú pháp đổi kiểu liệu cột SQL Server ALTER TABLE ALTER COLUMN 01/07/17 Phạm Thị Ngọc Diễm 26 Truy vấn – Ràng buộc ● ● ● ● ● ● Mệnh đề ORDER BY không dùng truy vấn Câu truy vấn phải bao cặp dấu ngoặc đơn () Mệnh đề SELECT truy vấn bao gồm thuộc tính trừ trường hợp dùng EXISTS Thuộc tính điều kiện với truy vấn thuộc tính mệnh đề SELECT truy vấn phải tương thích trừ trường hợp dùng EXISTS Các thuộc tính định nghĩa SELECT sử dụng SELECT Nhưng thuộc tính định nghĩa SELECT sử dụng SELECT 01/07/17 Phạm Thị Ngọc Diễm 84 Truy vấn – Điều kiện & Toán tử ● ● Nếu truy vấn trả giá trị, tốn tử >, >=, ANY (SELECT socho FROM LOAIMAYBAY WHERE NSX='Airbus') * Tìm họ tên phi cơng Pháp có số ngày làm việc lớn phi cơng Anh 01/07/17 Phạm Thị Ngọc Diễm 86 Truy vấn – Điều kiện & Tốn tử ● Ví dụ Tìm kiểu máy bay hãng Airbus mà có số chỗ lớn số chỗ tất kiểu hãng Boeing SELECT loai FROM LOAIMAYBAY WHERE NSX= 'Airbus' AND socho > ALL (SELECT socho FROM LOAIMAYBAY WHERE NSX='Boeing') 01/07/17 Phạm Thị Ngọc Diễm 87 Truy vấn – Điều kiện & Tốn tử ● Ví dụ Tìm máy bay thực chuyến bay đến Paris? SELECT * FROM MAYBAY WHERE EXISTS (SELECT MMB FROM CHUYENBAY WHERE MAYBAY.MMB=CHUYENBAY.MMB AND noiden='paris') SELECT * FROM MAYBAY WHERE MMB IN (SELECT MMB FROM CHUYENBAY => Cũng sử dụng IN =ANY thay cho EXISTS WHERE noiden='paris') 01/07/17 Phạm Thị Ngọc Diễm 88 Sử dụng OUTER JOIN ● LEFT JOIN, RIGHT JOIN sử dụng thay cho truy vấn trường hợp sau (phép trừ): SELECT t1.* FROM Table1 t1 WHERE t1.ID NOT IN (SELECT t2.ID FROM Table2 t2) Được thay – 01/07/17 SELECT t1.* FROM Table1 t1 LEFT JOIN Table2 t2 ON t1.ID = t2.ID WHERE t2.ID IS NULL Hoặc SELECT t1.* FROM Table1 t1 RIGHT JOIN Table2 t2 ON t1.ID = t2.ID Phạm Thị Ngọc Diễm WHERE t1.ID IS NULL 89 Sử dụng OUTER JOIN ● Ví dụ Tìm phi cơng làm việc cho công ty Air France mà không làm việc cho cơng ty Qantas Tìm phi cơng làm việc cho công ty Air France Qantas không làm cho hai công ty 01/07/17 Phạm Thị Ngọc Diễm 90 Các hàm kết tập ● Sử dụng mệnh đề SELECT HAVING ● Đầu vào: tập giá trị cột nhóm ● Đầu ra: giá trị ● Các hàm thuộc tính số: ● – SUM : tính tổng giá trị thuộc tính chọn – AVG : tính giá trị trung bình Các hàm thuộc tính số kiểu liệu khác: – MIN : giá trị nhỏ – MAX : giá trị lớn Phạm Thị Ngọc Diễm – COUNT : đếm số giá trị 01/07/17 91 Các hàm kết tập ● Ví dụ: Có tất phi công nước Pháp SELECT COUNT(*) FROM PHICONG WHERE nuoc='Phap'; Tính tổng khoảng cách bay, đường bay ngắn nhất, dài độ dài trung bình chuyến bay phi cơng mã số 20 SELECT SUM(khoangcach) as Tong, MIN(khoangcach) Nho_nhat, MAX(khoangcach) Lon_nhat, AVG(khoangcach) as Trung_binh FROM CHUYENBAY 01/07/17 WHERE MPC=20; Phạm Thị Ngọc Diễm 92 GROUP BY - Gom nhóm ● Mệnh đề GROUP BY dùng kết hợp với hàm kết tập để nhóm kết theo nhiều cột SELECT [,, ], [,, ] FROM [,, ] [WHERE ] GROUP BY [,, ]; ● Luật: thuộc tính mệnh đề SELECT phải bao hàm hàm kết tập mệnh đề GROUP BY 01/07/17 Phạm Thị Ngọc Diễm 93 GROUP BY - Gom nhóm ● Ví dụ 1: Số phi công nước SELECT nuoc, count(*) so_phi_cong FROM PHICONG GROUP BY ● nuoc ; Ví dụ 2: Tổng số ngày làm việc phi công SELECT MPC, sum(songay) tong_ngay FROM LAMVIEC GROUP BY MPC ; 01/07/17 Phạm Thị Ngọc Diễm 94 GROUP BY - HAVING ● Mệnh đề WHERE dùng với hàm kết tập => điều kiện nhóm với hàm kết tập → dùng HAVING ● WHERE : điều kiện dòng ● HAVING hiểu điều kiện hàm kết tập ● Ví dụ: Số phi cơng nước lớn phi công SELECT nuoc, count(*) so_phi_cong FROM PHICONG GROUP BY 01/07/17 nuoc HAVING count(*) >=3 ; Phạm Thị Ngọc Diễm 95 SELECT – Lưu kết ● SELECT INTO cho phép lưu kết truy vấn vào bảng biến SELECT [, ] INTO FROM ; – SQL Server cho phép lưu kết vào biến tạm với cú pháp: SELECT [, ] INTO FROM ; ● Ví dụ: SELECT * INTO temp FROM CONGTY 01/07/17 SELECT * INTO #temp FROM CONGTY Phạm Thị Ngọc Diễm 96 SELECT – Thêm liệu cho bảng ● INSERT INTO cho phép thêm dòng vào bảng từ kết truy vấn SELECT INSERT INTO [([, ]) ] ; ● Ví dụ: CREATE TABLE PHICONG_PHAP( MPC smallint PRIMARY KEY, hoten varchar(30), dchi varchar(30)); 01/07/17 INSERT INTO PHICONG_PHAP SELECT MPC, hoten, dchi FROM PHICONG WHERE nuoc='Phap' Phạm Thị Ngọc Diễm 97 SELECT – Giới hạn kết hiển thị ● Trong SQL Server, để giới hạn số dòng kết quả, sử dụng SELECT TOP(số_dòng) ● Ví dụ: Sắp xếp phi cơng theo họ tên hiển thị người SELECT TOP(2) * FROM PHICONG ORDER BY hoten 01/07/17 Phạm Thị Ngọc Diễm 98 ... NOT NULL, MMB smallint NOT NULL, noidi varchar(20) DEFAULT 'Paris', noiden varchar(20), khoangcach int CHECK(khoangcach>0), giodi time, gioden time , ngaybay date, CONSTRAINT fk_MPC FOREIGN KEY(MPC)REFERENCES... ngữ thao liệu Ngôn ngữ thao tác liệu (DML) cho phép: ● Hiển thị: SELECT ● Xóa : DELETE ● Thêm : INSERT ● Cập nhật : UPDATE 01/07/17 liệu bảng Phạm Thị Ngọc Diễm 31 Lệnh INSERT ● Thêm dòng liệu vào... tất chuyến bay từ 10000 km đến 15000 km SELECT * FROM CHUYENBAY 01/07/17 Phạm Thị Ngọc Diễm WHERE khoangcach BETWEEN 10000 AND 15000;48 Toán tử LIKE ● Được sử dụng mệnh đề WHERE để tìm mẫu cụ thể