I_Giới thiệu chung về SQL
1>.SQL là gì?
-SQL là viết tắt của Structure Query Language,nó là một công cụ quản lý dữ liệu đợc sử
dụng phổ biến ở nhiều lĩnh vực .Hầu hết các ngôn ngữ bậc cao đều có trình hỗ trợ SQL nh
Visual BASic,Oracle,Visual C...
Trong Oracle tất cả các chơng trình và ngời sử dụng phải sử dụng SQL để truy nhập vào dữ
liệu trong CSDL của Oracle. Các chơng trình ứng dụng và các công cụ Oracle cho phép ng-
ời sử dụng truy nhập tới CSDL mà không cần sử dụng trực tiếp SQL. Nhng những ứng
dụng đó khi chạy phải sử dụng SQL.
2>.Lịch sử phát triển:
-SQL đợc phát triển từ ngôn ngữ SEQUEL2 bởi IBM theo mô hình Codd tại trung tâm
nghiên cứu của IBM ở California ,vào những năm 70 cho hệ thống QTCSDL lớn.
-Đầu tiên SQL đợc sử dụng trong các ngôn ngữ quản lý CSDL và chạy trên các máy đơn lẻ.
Song do sự phát triển nhanh chóng của nhu cầu xây dựng những CSDL lớn theo mô hình
khách chủ( trong mô hình này toàn bộ CSDL đợc tập trung trên máy chủ (Server)). Mọi
thao tác xử lý dữ liệu đợc thực hiện trên máy chủ bằng các lệnh SQL máy trạm chỉ dùng để
cập nhập hoặc lấy thông tin từ máy chủ). Ngày nay trong các ngôn ngữ lập trình bậc cao
đều có sự trợ giúp của SQL. Nhất là trong lĩnh vực phát triển của Internet ngôn ngữ SQL
càng đóng vai trò quan trọng hơn. Nó đợc sử dụng để nhanh chóng tạo các trang Web
động..
SQL đã đợc viện tiêu chuẩn quốc gia Mỹ (ANSI)và tổ chức tiêu chuẩn quốc tế (ISO) chấp
nhận nh một ngôn ngữ chuẩn cho CSDL quan hệ .Nhng cho đến nay chuẩn này cha đa ra
đủ 100%.Nên các SQL nhúng trong các ngôn ngữ lập trình khác nhau đã đợc bổ xung mở
rộng cho SQL chuẩn cho phù hợp với các ứng dụng của mình.Do vậy có sự khác nhau rõ
ràng giã các SQL.
3>.Đặc điểm của SQL và đối t ợng làm việc:
a>Đặc điểm:
-SQL là ngôn ngữ tựa tiếng Anh.
-SQL là ngôn ngữ phi thủ tục,Nó không yêu cầu ta cách thức truy nhập CSDL nh thế nào
Tất cả các thông báo của SQL đều rất dễ sử dụng và ít khả năng mắc lỗi .
-SQL cung cấp tập lệnh phong phú cho các công việc hỏi đáp DL
trúc dữ liệu nào của các quan hệ nh bảng ,VIEW,INDEX..
-Tập lệnh GRANT,REVOKE:Hai lệnh này đợc sử dụng để cho phép quyền truy nhập hay
không cho phép quyền truy nhập tới CSDL của Oracle và cấu trúc bên trong nó.
Trong phần giới thiệu các tập lệnh này ta dùng ba bảng quan hệ sau làm ví dụ minh hoạ:
R1(Nhân viên) (#NV,Ho_tên,Nsinh,nghề nghiệp,Đìa chỉ,lơng)
R2(Liên kết) (#NV,#MP)
R3(phong) (#Mp,Tên_phong,tel)
1>Lệnh SELECT:
*Mệnh đề SELECT tơng ứng với toán tử project(phép chiếu ) của đại số quan hệ.Nó đợc
dùng để tạo danh sách các thuộc tính mà ta mong muốn.Khối lệnh SELECT gồm có ba
mệnh đề chính:
+SELECT:xác định nội dung của các cột cấn đa ra.
+FROM:danh sách các quan hệ đợc quét qua
+WHERE:ứng với một khẳng định lựa chọn của đạI số quan hệ.Nó là một khẳng
định liên quan đến các thuộc tính của quan hệ xuất hiện trong mệnh đề FROM:
-Một hỏi đáp cuả SELECT thờng có dạng:
SELECT [distinct]*/A1..An FROM r1..rm
[WHERE p];
Trong đó :
Ai là các thuộc tính
rj là các quan hệ (có thể là các TABLEs,VIEWs..)Ta có thể dùng các bí danh cho các Ai,rj.
p:là đIều kiện ràng buộc.
ở đây WHERE có thể có hoặc không.
Dùng *để chỉ tất cả các thuộc tính của các quan hệ đợc chọn
-Hỏi đáp này tong đơng với biểu diễn sau trong quan hệ:
A1..An[S p(r1..rm)]
-Để loại bỏ các bộ giá trị (các hàng) trùng nhau ta thêm từ khoá Distinct vào sau SELECT
(trớc đây SQL thêm từ khoá unique).
-Trong khẳng định p:ta có thể dùng các liên từ logic and,or,not khi kết hợp nhiều điều kiện
VD1:Để hiện các thông tin về một nhân viên nào đó
dãy ký tự bất kỳ:
SELECT *FROM R1 WHERE hoten=_OA%;
+Toán tử Is Null (not is Null):kiểm tra cho các giá trị rỗng (không rỗng);
VD:Đa ra tất cả những nhân viên mà đã cập nhật địa chỉ
SELECT *FROM R1 WHERE Dia_chi Not Is Null;
-Các hàm hay đợc sử dụng trong mệnh đề SELECT:
+AVG:tính giá trị trung bình của một hoặc nhiều trờng bỏ qua các giá trị rỗng.
VD:tính lơng TB của cơ quan:
SELECT AVG(lơng) FROM R1;
+Count:đợc dùng để đếm các bộ (hàng)
VD:ĐIểm tổng số bản ghi từ R1 có long>500.000
SELECT count(*) FROM R1 WHERE lơng>500.000
+Hàm Max:tìm giá trị lớn nhất của biểu thức:
VD:tìm ngời có lơng lớn nhát trong R1 có địa chỉ ở Hà Tây
SELECT Max(lơng) FROM R1 WHERE địa_chỉ=Hà_tây;
+Hàm Min:tìm giá trị nhỏ nhất của biểu thức:
VD:tìm ngời có lơng nhỏ nhát trong R1 có địa chỉ ở Hà Tây
SELECT Min(lơng) FROM R1 WHERE địa_chỉ=Hà_tây;
+Hàm Sum:tính tổng giá trị bỏ qua giá trị rỗng.
VD:Tính tổng lơngcủa cơ quan
SELECT Sum(lơng) FROM R1;
-NgoàI 3 mệnh đề chính trên ta còn có thể :
+Tìm kiếm theo nhóm nhờ mệnh đề GROUP BYđợc sử dụngđể phân chia các bộ thành các
nhóm nhỏ .
VD:Đa ra danh sách các nhân viên theo nhóm địa chỉ
SELECT *FROM R1 Group by Đia_chỉ;
3
Thờng đi với mệnh đề Group by là mệnh đề Having by sử dụng để chỉ ra những hạn chế
của các nhóm đợc hiển thị.Chú ý rằng mệnh đề Having by chỉ đi với Group by và điều kiện
của nó chỉ tác động đến từng nhóm bản ghi đợc chỉ ra ở mệnh đề Group by chứ không tác
Cú pháp:
DELETE FROM R[WHERE P]
những bộ nào thoả mãn đk P thì mới bị huỷ bỏ khỏi quan hệ R
VD: DELETE FROM R1 WHERE ng_sinh>01-01-1935;
Xoá bỏ tất cả các nhân viên ta dùng lệnh
DELETE FROM R1;
Chú ý:lệnh DELETE chỉ thao tác với 1 quan hệ.Muốn huỷ các bộ từ nhiều quan hệ ta dùng
DELETE cho mỗi quan hệ.Lệnh DELETE chỉ đánh dấu các bản ghi chứ cha thực sự xoá
hẳn ,ta có thể khôi phục lại đợc .Để xoá hẳn ta dung lệnh COMMIT ,khi đã ra lệnh này ta
không thể khôi phục lại đợc nữa .Khi cha ra lệnh COMMIT ta có thể khôi phục lại bằng
cách dùng lệnh ROLLBACK.
3>Nhóm lệnh CREATE,ALTER,DROP:
a>Lệnh CREATE
Lệnh này dùng để tạo ra các quan hệ nh TABLE,VIEW,INDEX
*CREATE TABLE
4
-Bảng là một cấu trúc cơ bản để cất giữ trong hệ thống quan hệ.Có khuôn dạng hai chiều
gồm có các cột và hàng.Nólà yếu tố cơ bản cho các thao tác khác nhau.Có thể nói việc tạo
bảng là bớc đầu tiên quan trọng nhất để thiết lập CSDL.
-Cú pháp của lệnh này:
CREATE TABLE table-name(colom_name type(size)..)
Khi tạo ra bảng chúng ta phải chỉ ra kiểu dữ liệu của cột và mỗi cột chỉ có thể có môt kiểu
dữ liêụ duy nhất.Khi tạo bảng ta có thể đa ra các ràng buộc
Các ràng buộc của các trờng có thể là : primary key,foreign ket ,unique,not null ...
VD:tạo bảng nhân viên
CREATE TABLE NHAN_VIEN (#NV varchar(4) constraint NV_Primary
key,ho_tên Varchar(25),Ng_sinh date,chứcvụ varchar(20),đia_chỉ varchar(30).lơng
number(7));
trong VD trên ta tạo ra một ràng buộc là #NV đợc định nghĩa là primary key
-Ta cũng có thể tạo ra bảng mới với cấu trúc và dữ liệu từ 1 bảng khác.
CREATE VIEW NV_phong AS SELECT hotên,tênphong FROM R1,R2,R3
WHERE (R1.#NV=R2.#NV)and (R2.#MP=R3.#MP) with check option;
*CREATE INDEX
Bảng chỉ số là một đối tợng đặc biệt đợc tạo ra để cung cấp cho việc truy nhập tới
bảng trong CSDL một cách nhanh chóng
5