Ban chỉ ĐẠo công nghệ thông tin của cơ quan đẢng giáo trình thiết kế, XÂy dựng và quản trị CƠ SỞ DỮ liệu hà NỘI, 2004



tải về 1.04 Mb.
trang28/29
Chuyển đổi dữ liệu07.07.2016
Kích1.04 Mb.
1   ...   21   22   23   24   25   26   27   28   29

VII.TÓM TẮT


Cấu trúc lệnh SQL có thể được chia thành ba tập thủ tục: định nghĩa dữ liệu, quản lý dữ liệu, và thao tác (vấn tin) dữ liệu.

Định nghĩa dữ liệu

1. Tạo CSDL. SQL chuẩn sử dụng định nghĩa lược đồ:

CREATE SCHEMA AUTHORIZATION

Nhiều cài đặt SQL sử dụng

CREATE DATABASE

hoặc một số dạng gần gũi với lệnh này.

2. Tạo các bảng CSDL. Chuẩn SQL sử dụng cấu trúc lệnh

CREATE TABLE

Quản lý dữ liệu và vấn tin

INSERT được dùng để nhập dữ liệu vào trong bảng.

UPDATE được dùng để thay đổi (cập nhật) dữ liệu trong bảng.

DELETE được dùng để xoá các hàng bảng.

SELECT là cơ sở cho mọi câu vấn tin SQL.

Nhiều cài đặt SQL, chẳng hạn dBASE IV và ORACLE, yêu cầu một lệnh SQL phải được kết thúc với một dấu chấm phảy. Một số khác, bao gồm OS/2 Database Manager của IBM và XDB, không chấp nhận cách sử dụng với dấu chấm phảy như vậy. Đọc tài liệu tra cứu của phần mềm tương ứng để định rõ các cú pháp thích hợp.

Tóm tắt lệnh SQL dưới đây trình bày cách sử dụng các câu vấn tin SQL, với bảng ví dụ là STUDENT, chứa các thuộc tính S_NUM, S_NAME, S_DOB, S_STATE và S_GPA, S_NUM là khoá chính của bảng STUDENT.

 Tạo bảng STUDENT.

Dùng NOT NULL kết hợp với khoá chính để khẳng định toàn vẹn thực thể.

CREATE TABLE STUDENT ( S_NUM CHAR(8) NOT NULL,
S_NAME CHAR(25),
S_DOB DATE,
S_STATE CHAR(2),
S_GPA DECIMAL(4,2));

 Nhập dữ liệu vào bảng STUDENT.

INSERT INTO STUDENT
VALUES(‘23122456’, ‘Jane P. Genaldo’, ‘02/12/46’, ‘TN’, 3.67);

 Liệt kê tất cả các thuộc tính cho tất cả các hàng.

(Kí hiệu * là kí tự thay thế chỉ ra “tất cả các hàng.”)

SELECT *
FROM STUDENT;

 Liệt kê các thuộc tính đã chọn ứng với mọi hàng.

SELECT S_NAME, S_GPA


FROM STUDENT;

 Liệt kê các thuộc tính đã chọn ứng với sinh viên có tên là George W. Batmman.

SELECT S_NAME, S_GPA
FROM STUDENT
WHERE S_NAME = ‘George W. Batmman’;

 Lưu bảng.

COMMIT STUDENT;

 Sửa chữa.

UPDATE STUDENT
SET S_NAME = ‘Jane G. Bronner’, S_GPA = 3.76
WHERE S_NUM = ‘231234536’;

 Xoá hàng.

DELETE FROM STUDENT
WHERE S_NUM = ‘24112324’;

 Khôi phục nội dung bảng.

ROLLBACK;

 Sử dụng các toán tử toán học để hạn chế kết quả vấn tin. Các toán tử toán học bao gồm:

= Bằng

< Nhỏ hơn

> Lớn hơn



<= Nhỏ hơn hoặc bằng

>= Lớn hơn hoặc bằng



<> Không bằng

Các toán tử toán học có thể được dùng trên các xâu cũng như trên các số. So sánh xâu được thực hiện từ trái qua phải theo các giá trị mã ASCII. Do đó ‘AB’ < ‘BB’.

SELECT *
FROM STUDENT
WHERE S_GPA = 3.00;

 Sử dụng thuộc tính dữ liệu để hạn chế kết quả vấn tin.

SELECT *
FROM STUDENT
WHERE S_DOB < ‘01/01/40’;

(Một số cài đặt SQL không yêu cầu dùng các dấu đóng mở ngoặc để chặn các giá trị ngày; một số khác dùng dạng ngày mặc định ’01-JAN-40’; riêng dBASE IV yêu cầu dùng hàm STOD đẻ chuyển xâu ngày thành ngày Julian:

SELECT *
FROM STUDENT
WHERE S_DOB < CTOD(‘01/01/40’);)

 Sử dụng các toán tử lôgic để hạn chế các kết quả đưa ra.

Các toán tử lôgic bao gồm AND, OR, và NOT.

SELECT S_NAME, S_GPA


FROM STUDENT
WHERE S_DOB < ‘01/01/40’
AND S_GPA >= 3.00;

SELECT *
FROM STUDENT


WHERE S_STATE NOT ‘IN’;

 Xác định khoảng giá trị cho các thuộc tính trong vấn tin: BETWEEN.

SELECT *
FROM STUDENT
WHERE S_GPA BETWEEN 3.00 AND 3.50;

Một số cài đặt SQL không hỗ trợ BETWEEN. Một câu vấn tin tương tự có thể được tạo ra với các toán tử toán học:

SELECT *
FROM STUDENT
WHERE S_GPA >= 3.00
AND S_GPA <= 3.50;

 Kiểm tra điều kiện null.

SELECT *
FROM STUDENT
WHERE S_DOB IS NULL;

dBASE IV không hỗ trợ toán tử null. Để kiểm tra ngày null, dùng

SELECT *
FROM STUDENT
WHERE DTOC(S_DOB = ‘ / / ‘);

 Kiểm tra các giá trị trong một tập.

SELECT *
FROM STUDENT
WHERE S_NUM IN (‘22122454’, ‘21222456’, ‘2543667’);

liệt kê các hàng tương ứng với các số sinh viên 22122454 hoặc 21222456 hoặc 2543667.

 Kiểm tra sự tồn tại của các giá trị trong thuộc tính.

SELECT *
FROM STUDENT


WHERE S_NUM EXIST;

 Thay đổi cấu trúc bảng.

- Thay đổi đặc điểm thuộc tính.

ALTER TABLE STUDENT


MODIFY (S_GPA DEC(5,3));

Lưu ý: Kiểu dữ liệu không thể bị thay đổi trừ khi cột không có giá trị (rỗng).

- Thêm cột.

ALTER TABLE STUDENT
ADD (S_PHONE CHAR(8));

- Cập nhật nhiều cột.

ALTER TABLE STUDENT
ADD (S_PHONE CHAR(8)
S_HONOR CHAR(12));

 Cập nhật dữ liệu.

- Mục dữ liệu đơn.

UPDATE STUDENT


SET S_GPA = 2.79
WHERE S_NUM = ‘21332433’;

- Cập nhật phức tạp.

UPDATE STUDENT
SET S_HONOR = ‘President list’
WHERE S_GPA > 3.75;

Sao chép một phần bảng.


- Tạo cấu trúc bảng.

CREATE TABLE TEMP ( ST_NUMBER CHAR(8) NOT NULL,


ST_NAME CHAR(25));

- Sao chép các giá trị cột tương ứng vào bảng mới.

INSERT INTO TEMP(ST_NUMBER, ST_NAME)
SELECT S_NUM, S_NAME
FROM STUDENT;

- Xoá bảng khỏi CSDL.

DROP TABLE ;

- Nhạy cảm dạng chữ. SQL xem kí tự in hoa và in thườn là khác nhau. Do đó, ‘Smith’ và ‘SMITH’ sẽ được xem là các tên khác nhau. Một số cài đặt SQL (dBASE IV, ORACLE) hỗ trợ hàm UPPER cho phép chuyển chữ in thường thành chữ in hoa, qua đó cho phép tạo sự tương ứng trong mọi trường hợp.

SELECT *
FROM STUDENT
WHERE UPPER(S_NAME) = ‘JOHN D. SMITH’;

Tạo sự phù hợp cho các xâu bộ phận


Sử dụng các kí tự thay thế % và _.

SELECT *
FROM STUDENT


WHERE S_NAME LIKE ‘Smith%’;

SELECT *
FROM STUDENT


WHERE S_NAME LIKE ‘J__n_s’;

SELECT *
FROM STUDENT


WHERE S_NAME NOT LIKE ‘Smith%’;

Liệt kê theo thứ tự


Sử dụng ORDER BY DESC.

SELECT *
FROM STUDENT


ORDER BY S_NAME, S_GPA;

SELECT *
FROM STUDENT


ORDER BY S_NAME, S_GPA DESC;

Loại bỏ trùng lặp trong danh sách.


SELECT DíTINCT S_GPA
FROM STUDENT;

 Các hàm sô học SQL: COUNT, MIN, MAX, SUM.

SELECT COUNT(DISTINCT S_GPA)
FROM STUDENT;

đưa ra số các điểm trung bình GPA của các sinh viên khác nhau.

SELECT MAX(S_GPA)
FROM STUDENT;

đưa ra điểm GPA cao nhất.

SELECT AVG(S_GPA)
FROM STUDENT;

đưa ra điểm GPA trung bình...

SELECT SUM(S_GPA)
FROM STUDENT;

đưa ra tổng số điểm GPA của tất cả các sinh viên.

Tìm ra các thuộc tính kết hợp với các kết quả của các hàm số học này, dùng câu vấn tin lặp.

SELECT *
FROM STUDENT


WHERE S_GPA = (SELECT MAX(S_GPA)
FROM STUDENT);

Nhóm dữ liệu


SELECT S_GPA, S_STATE
FROM STUDENT
GROUP BY S_GPA;

 Tạo bảng ảo: VIEW


CREATE VIEW TEMP_2
SELECT S_NAME, S_GPA
FROM STUDENT
WHERE S_STATE = ‘TN’;

 Tạo chỉ mục SQL.

CREATE INDEX NUMDEX
ON STUDENT(S_NUM);

Nếu chỉ mục được dùng để giúp bạn tránh sử dụng giá trị trùng lặp, sử dụng điều kiện UNIQUE.

CREATE UNIQUE INDEX NUMDEX
ON STUDENT(S_NUM);

 Kết nối các bảng

Thao tác được thực hiện khi dữ liệu cần được lấy ra từ hai hay nhiều bảng khác nhau. Bảng dữ liệu nguồn phải được xác định. Giả sử tồn tại hai bảng PROD và VENDOR. Các thuộc tính của bảng PROD là P_NUM (khoá chính), P_DESCRIPT và V_CODE. Các thuộc tính của bảng VENDOR là V_CODE (khoá chính) và V_NAME. Danh sách chứa các thuộc tính P_DESCRIPT và V_NAME có thể nhận được bởi

SELECT PROD.P_DESCRIPT, VENDOR.V_NAME


FROM PROD.VENDOR
WHERE PROD.V_CODE = VENDOR.V_CODE;

Tất cả các lệnh SQL và các hàm nêu trên đều có thể được dùng kết hợp với các bảng kết nối.


1   ...   21   22   23   24   25   26   27   28   29


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2016
được sử dụng cho việc quản lý

    Quê hương