Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 135 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
135
Dung lượng
1,02 MB
Nội dung
Chương Ngôn ngữ SQL Nội dung chi tiết Giới thiệu Định nghĩa liệu Truy vấn liệu Cập nhật liệu Khung nhìn (view) Chỉ mục (index) Nhập môn Cơ sở liệu - Khoa CNTT Giới thiệu Ngôn ngữ Đại số quan hệ - Cách thức truy vấn liệu Khó khăn cho người sử dụng SQL (Structured Query Language) - Ngôn ngữ cấp cao Người sử dụng cần đưa nội dung cần truy vấn Được phát triển IBM (1970s) Được gọi SEQUEL Được ANSI công nhận phát triển thành chuẩn SQL-86 SQL-92 SQL-99 Nhập môn Cơ sở liệu - Khoa CNTT Giới thiệu (tt) SQL gồm - Định nghĩa liệu (DDL) Thao tác liệu (DML) Định nghĩa khung nhìn Ràng buộc toàn vẹn Phân quyền bảo mật Điều khiển giao tác Lý thuyết : Chuẩn SQL-92 Ví dụ : SQL Server SQL sử dụng thuật ngữ - Bảng ~ quan hệ Cột ~ thuộc tính Dòng ~ Nhập môn Cơ sở liệu - Khoa CNTT Nội dung chi tiết Giới thiệu Định nghĩa liệu - Kiểu liệu Các lệnh định nghĩa liệu Truy vấn liệu Cập nhật liệu Khung nhìn (view) Chỉ mục (index) Nhập môn Cơ sở liệu - Khoa CNTT Định nghĩa liệu Là ngôn ngữ mô tả - Lược đồ cho quan hệ Miền giá trị tương ứng thuộc tính Ràng buộc toàn vẹn Chỉ mục quan hệ Gồm - CREATE TABLE (tạo bảng) DROP TABLE (xóa bảng) ALTER TABLE (sửa bảng) CREATE DOMAIN (tạo miền giá trị) CREATE DATABASE … Nhập môn Cơ sở liệu - Khoa CNTT Kiểu liệu Số (numeric) - INTEGER SMALLINT NUMERIC, NUMERIC(p), NUMERIC(p,s) DECIMAL, DECIMAL(p), DECIMAL(p,s) REAL DOUBLE PRECISION FLOAT, FLOAT(p) Nhập môn Cơ sở liệu - Khoa CNTT Kiểu liệu (tt) Chuỗi ký tự (character string) - Chuỗi bit (bit string) - CHARACTER, CHARACTER(n) CHARACTER VARYING(x) BIT, BIT(x) BIT VARYING(x) Ngày (datetime) - DATE gồm ngày, tháng năm TIME gồm giờ, phút giây TIMESTAMP gồm ngày Nhập môn Cơ sở liệu - Khoa CNTT Lệnh tạo bảng Để định nghĩa bảng - Tên bảng Các thuộc tính Tên thuộc tính Kiểu liệu Các ràng buộc toàn vẹn thuộc tính (RBTV) Cú pháp CREATE TABLE ( [], [], … [] ) Nhập môn Cơ sở liệu - Khoa CNTT Ví dụ - Tạo bảng CREATE TABLE NHANVIEN ( MANV CHAR(9), HONV VARCHAR(10), TENDEM VARCHAR(20), TENNV VARCHAR(10), NS DATETIME, DCHI VARCHAR(50), GT CHAR(3), LUONG INT, MA_NQL CHAR(9), PHG INT ) Nhập môn Cơ sở liệu - Khoa CNTT 10 Khung nhìn (tt) Tại phải sử dụng khung nhìn? - Che dấu tính phức tạp liệu Đơn giản hóa câu truy vấn Hiển thị liệu dạng tiện dụng An toàn liệu Nhập môn Cơ sở liệu - Khoa CNTT 121 Định nghĩa khung nhìn Cú pháp CREATE VIEW AS DROP VIEW Bảng ảo có - - Danh sách thuộc tính trùng với thuộc tính mệnh đề SELECT Số dòng phụ thuộc vào điều kiện mệnh đề WHERE Dữ liệu lấy từ bảng mệnh đề FROM Nhập môn Cơ sở liệu - Khoa CNTT 122 Ví dụ CREATE VIEW NV_P5 AS SELECT MANV, HONV, TENDEM, TENVN FROM NHANVIEN WHERE PHG=5 CREATE VIEW TONGLNG_SLNV_PB AS SELECT MAPHG, TENPB, COUNT(*) AS SLNV, SUM(LUONG) AS TONGLNG FROM NHANVIEN, PHONGBAN WHERE PHG=MAPHG GROUP BY TENPHG Nhập môn Cơ sở liệu - Khoa CNTT 123 Truy vấn khung nhìn Tuy không chứa liệu thực câu truy vấn khung nhìn SELECT TENNV FROM NV_P5 WHERE HONV LIKE ‘Nguyen’ NV_P5 ← πMANV,HONV, TENDEM, TENNV (σPHG=5 (NHANVIEN)) π TENNV ( σ HONV=‘Nguyen’ (NV_P5)) Nhập môn Cơ sở liệu - Khoa CNTT 124 Truy vấn khung nhìn (tt) Có thể viết câu truy vấn liệu từ khung nhìn bảng SELECT HONV, TENVN, TENDA, THOIGIAN FROM NV_P5, PHANCONG, DEAN WHERE MANV=MA_NVIEN AND SODA=MADA NV_P5 TMP ← ← πMANV,HONV, TENDEM, TENNV (σPHG=5 (NHANVIEN)) NV_P5 π MANV=MA_NVIEN TENNV,TENDA,THOIGIAN PHONGBAN DEAN SODA=MADA (TMP) Nhập môn Cơ sở liệu - Khoa CNTT 125 Cập nhật khung nhìn Có thể dùng câu lệnh INSERT, DELETE UPDATE cho khung nhìn đơn giản - Khung nhìn xây dựng bảng có khóa bảng Không thể cập nhật liệu - Khung nhìn có dùng từ khóa DISTINCT Khung nhìn có sử dụng hàm kết hợp Khung nhìn có mệnh đề SELECT mở rộng Khung nhìn xây dựng từ bảng có RB cột Khung nhìn xây dựng từ nhiều bảng Nhập môn Cơ sở liệu - Khoa CNTT 126 Cập nhật khung nhìn (tt) Sửa lại họ cho nhân viên mã ‘123456789’ phòng ‘Pham’ UPDATE NV_P5 SET HONV=‘Pham’ WHERE MANV= ‘123456789’ Nhập môn Cơ sở liệu - Khoa CNTT 127 Nội dung chi tiết Giới thiệu Định nghĩa liệu Truy vấn liệu Cập nhật liệu Khung nhìn (view) Chỉ mục (index) - Định nghĩa Chọn lựa mục Nhập môn Cơ sở liệu - Khoa CNTT 128 Chỉ mục Chỉ mục thuộc tính A cấu trúc liệu làm cho việc tìm kiếm mẫu tin có chứa A hiệu SELECT * FROM NHANVIEN Đọc 10.000 WHERE PHG=5 AND GT=‘Nu’ Đọc 200 Bảng NHANVIEN có 10.000 Có 200 nhân viên làm việc cho phòng Nhập môn Cơ sở liệu - Khoa CNTT Đọc 70 129 Chỉ mục (tt) Cú pháp CREATE INDEX ON () DROP INDEX Ví dụ CREATE INDEX PHG_IND ON NHANVIEN(PHG) CREATE INDEX PHG_GT_IND ON NHANVIEN(PHG, GT) Nhập môn Cơ sở liệu - Khoa CNTT 130 Chỉ mục (tt) Nhận xét - - Tìm kiếm nhanh trường hợp so sánh với số phép kết Làm chậm thao tác thêm, xóa sửa Tốn chi phí Lưu trữ mục Truy xuất đĩa nhiều Chọn lựa cài đặt mục hợp lý??? Nhập môn Cơ sở liệu - Khoa CNTT 131 Ví dụ Xét quan hệ - PHANCONG(MA_NVIEN, SODA, THOIGIAN) Giả sử - PHANCONG lưu trữ 10 block - Trung bình nhân viên tham gia đề án đề án có khoảng nhân viên làm - Dữ liệu trải 10 block Chi phí để tìm nhân viên hay đề án Khi sử dụng mục - Chi phí để đọc toàn liệu PHANCONG 10 Chi phí đọc hay cập nhật mục Thao tác thêm cần lần truy xuất đĩa Nhập môn Cơ sở liệu - Khoa CNTT 132 Ví dụ (tt) Giả sử có thao tác thực thường xuyên - Q1 SELECT SODA, THOIGIAN FROM PHANCONG WHERE MA_NVIEN=‘123456789’ - Q2 SELECT MANV FROM PHANCONG WHERE SODA=1 AND THOIGIAN=20.5 - Q3 INSERT INTO PHANCONG VALUES ( 123456789’, 1, 20.5) Nhập môn Cơ sở liệu - Khoa CNTT 133 Ví dụ (tt) Bảng so sánh chi phí Thao tác Không có mục Chỉ mục MA_NVIEN Q1 10 10 Q2 10 10 4 Q3 4 + 8p1 + 8p2 + 6p2 + 6p1 - 2p1 – 2p2 Chí phí TB Chỉ mục SODA Chỉ mục thuộc tính Khoảng thời gian thực Q1 p1 Khoảng thời gian thực Q2 p2 Khoảng thời gian thực Q3 - p1 - p2 Nhập môn Cơ sở liệu - Khoa CNTT 134 Nhập môn Cơ sở liệu - Khoa CNTT 135 [...]... CNTT 25 Truy vấn cơ bản (tt) SQL và ĐSQH π SELECT × FROM σ WHERE SELECT L π σ FROM L ( R C (R)) WHERE C Nhập môn Cơ sở dữ liệu - Khoa CNTT 26 Ví dụ Lấy tất cả các cột của quan hệ kết quả SELECT * FROM NHANVIEN WHERE PHG =5 MANV HONV TENDEM TENNV NS DCHI GT LUONG MA_NQL PHG 3334 455 55 Nguyen Thanh Tung 12/08/1 955 638 NVC Q5 Nam 40000 8886 655 55 5 987987987... 09/ 15/ 1962 Ba Ria VT Nam 38000 3334 455 55 5 Nhập môn Cơ sở dữ liệu - Khoa CNTT 27 Mệnh đề SELECT SELECT MANV, HONV, TENDEM, TENNV FROM NHANVIEN WHERE PHG =5 AND GT=‘Nam’ MANV HONV TENDEM TENNV 3334 455 55 Nguyen Thanh Tung 987987987 Nguyen Manh Hung Nhập môn Cơ sở dữ liệu - Khoa CNTT 28 Mệnh đề SELECT (tt) Tên bí danh SELECT MANV, HONV AS HO, TENDEM AS ‘TEN DEM’, TENNV AS TEN FROM NHANVIEN WHERE PHG =5 AND... rộng SELECT MANV, LUONG*1.1 AS ‘LUONG10%’ FROM NHANVIEN WHERE PHG =5 AND GT=‘Nam’ MANV LUONG10% 3334 455 55 33000 987987987 2 750 0 Nhập môn Cơ sở dữ liệu - Khoa CNTT 31 Mệnh đề SELECT (tt) Loại bỏ các dòng trùng nhau SELECT SELECTDISTINCT LUONG LUONG FROM FROMNHANVIEN NHANVIEN WHERE WHEREPHG =5 PHG=5AND ANDGT=‘Nam’ GT=‘Nam’ LUONG 30000 250 00 250 00 38000 - Tốn chi phí - Người dùng muốn thấy 38000 Nhập môn Cơ... DEM’, TENNV AS TEN FROM NHANVIEN WHERE PHG =5 AND GT=‘Nam’ MANV HO TEN DEM TEN 3334 455 55 Nguyen Thanh Tung 987987987 Nguyen Manh Hung Nhập môn Cơ sở dữ liệu - Khoa CNTT 29 Mệnh đề SELECT (tt) Mở rộng SELECT MANV, HONV + ‘ ’ + TENDEM + ‘ ’ + TENNV AS ‘HO TEN’ FROM NHANVIEN WHERE PHG =5 AND GT=‘Nam’ MANV HO TEN 3334 455 55 Nguyen Thanh Tung 987987987 Nguyen Manh Hung Nhập môn Cơ sở dữ liệu - Khoa CNTT 30... hợp, so sánh tập hợp và truy vấn lồng Hàm kết hợp và gom nhóm Một số kiểu truy vấn khác Cập nhật dữ liệu Khung nhìn (view) Chỉ mục (index) Nhập môn Cơ sở dữ liệu - Khoa CNTT 23 Truy vấn dữ liệu Là ngôn ngữ rút trích dữ liệu thỏa một số điều kiện nào đó Dựa trên Phép toán ĐSQH - + Một số bổ sung Cho phép 1 bảng có nhiều dòng trùng nhau Bảng là bag ≠ quan hệ là set Nhập môn Cơ sở dữ liệu - Khoa CNTT... CREATE TABLE NHANVIEN ( HONV VARCHAR(10) CONSTRAINT NV_HONV_NN NOT NULL, TENDEM VARCHAR(20) NOT NULL, TENNV VARCHAR(10) NOT NULL, MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY, NS DATETIME, DCHI VARCHAR (50 ), GT CHAR(3) CONSTRAINT NV_GT_CHK CHECK (GT IN (‘Nam’, ‘Nu’)), LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (1000000), MA_NQL CHAR(9), PHG INT ) Nhập môn Cơ sở dữ liệu - Khoa CNTT 14 Ví dụ - Đặt tên cho... PRIMARY KEY (MA_NVIEN, SODA), CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN) REFERENCES NHANVIEN(MANV), CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA) REFERENCES DEAN(MADA) ) Nhập môn Cơ sở dữ liệu - Khoa CNTT 15 Lệnh sửa bảng Được dùng để - Thay đổi cấu trúc bảng Thay đổi RBTV Thêm cột Xóa cột Mở rộng cột ALTER TABLE ADD COLUMN [] ALTER TABLE DROP... môn Cơ sở dữ liệu - Khoa CNTT 17 Ví dụ - Thay đổi cấu trúc bảng ALTER TABLE NHANVIEN ADD NGHENGHIEP CHAR(20) ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP ALTER TABLE NHANVIEN ALTER COLUMN NGHENGHIEP CHAR (50 ) Nhập môn Cơ sở dữ liệu - Khoa CNTT 18 Ví dụ - Thay đổi RBTV CREATE TABLE PHONGBAN ( TENPB VARCHAR(20), MAPHG INT NOT NULL, TRPHG CHAR(9), NG_NHANCHUC DATETIME ) ALTER TABLE PHONGBAN ADD CONSTRAINT... Cơ sở dữ liệu - Khoa CNTT 11 Ví dụ - RBTV CREATE TABLE NHANVIEN ( HONV VARCHAR(10) NOT NULL, TENDEM VARCHAR(20) NOT NULL, TENNV VARCHAR(10) NOT NULL, MANV CHAR(9) PRIMARY KEY, NS DATETIME, DCHI VARCHAR (50 ), GT CHAR(3) CHECK (GT IN (‘Nam’, ‘Nu’)), LUONG INT DEFAULT (10000), MA_NQL CHAR(9), PHG INT ) Nhập môn Cơ sở dữ liệu - Khoa CNTT 12 Ví dụ - RBTV CREATE TABLE PHONGBAN ( TENPB VARCHAR(20) UNIQUE, MAPHG... Cơ sở dữ liệu - Khoa CNTT 34 Mệnh đề WHERE (tt) Độ ưu tiên SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE (TENPHG=‘Nghien cuu’ OR TENPHG=‘Quan ly’) AND PHG=MAPHG Nhập môn Cơ sở dữ liệu - Khoa CNTT 35 Mệnh đề WHERE (tt) BETWEEN SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG>20000 AND LUONG ... PHG =5 MANV HONV TENDEM TENNV NS DCHI GT LUONG MA_NQL PHG 3334 455 55 Nguyen Thanh Tung 12/08/1 955 638 NVC Q5 Nam 40000 8886 655 55 987987987 Nguyen Manh Hung 09/ 15/ 1962 Ba Ria VT Nam 38000 3334 455 55. .. mệnh đề WHERE SELECT MANV, MAPHG FROM NHANVIEN, PHONGBAN WHERE TRUE MANV MAPHG 3334 455 55 3334 455 55 3334 455 55 987987987 987987987 987987987 … … Nhập môn Cơ sở liệu - Khoa CNTT 44 Mệnh đề FROM... NHANVIEN WHERE NGSINH BETWEEN ‘1 955 -12-08’ AND ‘1966-07-19’ ‘1 955 -12-08’ YYYY-MM-DD ’17:30:00’ ’12/08/1 955 ’ MM/DD/YYYY ’ 05: 30 PM’ HH:MI:SS ‘December 8, 1 955 ’ ‘1 955 -12-08 17:30:00’ Nhập môn Cơ sở