9. Phủ cực tiểu
3.1 Ngôn ngữ truy vấn dữ liệu SQL
Trong mục này trình bày ngôn ngữ dữ liệu (Structered Query Language), SQL là ngôn ngữ con dữ liệu đưọc xác nhận là rất mạnh , phổ dụng và lại dễ sử dụng . SQL là ngôn ngữ phi thủ tục, chuẩn mực và điển hình. Do vậy hiện nay rất nhiều sản phẩm phần mềm đều được cài đặt SQL như : Oracle, DB2,...
Trong phần này sẽ trình bày các khả năng của ngôn ngữ SQL. Phép toán cơ bản trong SQL là phép ánh xạ được miêu tả bằng khối lệnh SELECT - FROM - WHERE. Các mệnh đề của ngôn ngữ SQL sẽ được trình bày chi tiết bằng ví dụ.
Các thuật ngữ trong Cơ Sở Dữ Liệu quan hệ như quan hệ , thuộc tính , bộ,.... được thay thế bằng các thuật ngữ như : Bảng( Table), cột(colum), bản ghi(Record) hoặc hàng(Row) trong SQL.
Chúng ta sẽ xem các chức năng cơ bản của một hệ quản trị Cơ Sở Dữ Liệu như cung cấp ngôn ngữ định nghĩa dữ liệu (DDM), Ngôn ngữ thao tác dữ liệu(DML) , tìm kiếm và bảo vệ dữ liệu được thể hiện trong ngôn ngữ SQL như thế nào.
1. Định nghĩa dữ liệu
Trong SQL cho phép người sử dụng tạo các dữ liệu như Bảng(table), Khung nhìn(View), và các tập chỉ số(Index)
* Lệnh tạo bảng
Cú pháp: CREAT TABLE Ten_Bang(Atr1 Type [NOT NULL], Atr2 Type [NOT NULL],...)
Trong đó Ten_Bang: tên của table tạo ra; tên bảng là xâu ký tự bất kỳ không có ký hiệu trống và không trùng với từ khóa
Atr1, Atr2 : Tên các thuộc tính (Các cột của bảng)
Type: Kiểu dữ liệu cho thuộc tính. Một số loại dữ liệu thường dùng như:
integer: số nguyên từ -2 174 483 648 đến 2 174 483 648
Smallinteger: số nguyên từ - 32 768 đến 32 767
decimal(n,p) số thập phân với độ dài tối đa n kể cả p chữ số thập phân ( không tính dấu chấm thập phân). Từ khóa number trong SQL đưọc dùng trong dạng dữ liệu này.
float: số dấu phẩy động
char(n): xâu ký tự có độ dài cố định n, n≤ 255
varchar(n) xâu ký tự có độ dài biến đổi, độ dài xâu có thể từ 0 đến n và được xác định tại thời điểm đưa dữ liệu vào lưu trữ
date: dữ liệu dạng ngày tháng
chỉ thị NOT NULL để báo rằng giá trị của thuộc tính đó không được thiếu trong các bộ của quan hệ
Ngôn ngữ SQL Ví Dụ:
Tạo Cơ Sở Dữ Liệu gồm 3 bảng S(nhà cung cấp SUPPLIERS), P ( Sản phẩm PRODUCTS) và bảng SP (Cung cấp) như sau:
- Tạo bảng S:
CREATE TABLE S
( S# INTEGER NOT NULL,SNAME VARCHAR(8) NOT NULL,AGES INTEGER NOT NULL, CITY VARCHAR(30) NOT NULL)
Chú ý: NULL là giá trị ngầm định - Tạo bảng P:(Bảng sản phẩm) CREATE TABLE P
(P# INTEGER NOT NULL, PNAME VARCHAR(10) NOT NULL, WEIGHT INTEGER NOT NULL, COLOR VARCHAR(10) NOT NULL, CITY VARCHAR(30) NOTNULL) - Tạo bảng SP:
CREATE TABLE SP
(S# INTEGER NOT NULL, P# INTEGER NOT NULL, QTY INTEGER,SDATE DATE NOT NULL, PRICE DECIMAL(8,2)).
Vào dữ liệu :
Có ba cách để vào dữ liệu cho bảng như sau INSERT INTO S(S#,SNAME,AGES,CITY) VALUE(1,’Thanh Huong’, 30,’ TP Ho Chi Minh’) Nếu vị trí của các cột trong bảng cố định, ta có thể viết INSERT INTO S
VALUE(1,’Thanh Huong’, 30,’ TP Ho Chi Minh’)
Người vào dữ liệu có thể quên vị trí các cột, khi đó ta có thể biểu diễn như sau: INSERT INTO S(S#,AGES,CITY, SNAME)
VALUE(1, 30, ’ TP Ho Chi Minh’, ’Thanh Huong’)
2. Tìm Kiếm dữ liệu Trong SQL
Đây là chức năng cơ bản nhất của SQL, cho phép người sử dụng tìm kiếm các thông tin trên Cơ Sở Dữ Liệu với Câu lệnh SELECT...FROM....WHERE
Cú pháp:
SELECT [*| DISTINCT] Danh sách các cột đưa ra FROM Tên_Bảng/Tên_View
[WHERE biểu thức điều kiện] [GROUP BY Danh sách các cột] [HAVING biểu thức điều kiện] [ORDER BY Tên_cột [ASC/DESC]
Ngôn ngữ SQL 2.1 Tìm kiếm theo câu hỏi đơn giản
Tìm kiếm không điều kiện:
i. Cho biết danh sách các nhà cung cấp: SELECT *
FROM S
Dấu ‘*’ có nghĩa là chọn toàn bộ các cột trong bảng.
Để bảng kết quả sau khi thực hiện một mệnh đề SQL đúng là một quan hệ (Có nghĩa là không có các bộ trùng nhau) thì phải có từ khóa DISTINCT.
SELECT DISTINCT PNAME FROM SP
Tìm kiếm với điều kiện đơn giản
Tìm mã số của những nhà cung cấp đã cung cấp mặt hàng P2 SELECT S#
FROM SP WHERE P#=’P2’
Tìm kiếm có xử lý xâu ký tự
Xử lý xâu ký tự gần đúng còn gọi là phép tính “thông minh” trong trường hợp người sử dụng không nhớ rõ tên người hoặc địa danh ... ví dụ là Hoa hay Hoan khi đó ta có thể viết SELECT *
FROM S
WHERE SNAME LIKE ‘HOA%”
Trong SQL sử dụng ký hiệu ‘%’ là thay thế cho một xâu con bất kỳ, dấu phân cách ‘_’ để thay thế cho một ký tự.
A%B : Xâu ký tự băõt đầu bằng chữ A và kết thúc bằng chữ B %A Xâu ký tự bất kỳ kết thúc bằng chữ A
A_B : Xâu bao gồm 3 ký tự , ký tự thứ 2 là bất kỳ A_ : Xâu có hai ký tự, ký tự đầu là A
Xử lý ngày tháng
Tìm những mặt hàng bán trước ngày 94-04-24 10 ngày SELECT P# FROM SP WHERE ‘94-04-24’ - SDATE =10 Tìm kiếm sử dụng IN và BETWEEN Tìm những mặt hàng đã cung cấp có giá từ 1000 đến 2000 SELECT P# FROM SP
Ngôn ngữ SQL SELECT S#
FROM SP
WHERE P# IN (‘P1’,’P2’,’P3’)