Chương 1.1 Lịch sử phát triển SQL (Structured Query Language, đọc là "sequel") là tập lệnh truy xuất CSDL quan hệ. Ngôn ngữ SQL được IBM sử dụng đầu tiên trong hệ quản trị CSDL System R vào giữa những năm 70, hệ ngôn ngữ SQL đầu tiên (SEQUEL2) được IBM công bố vào tháng 11 năm 1976. Năm 1979, tập đoàn ORACLE giới thiệu thương phẩm đầu tiên của SQL, SQL cũng được cài đặt trong các hệ quản trị CSDL như DB2 của IBM và SQL/DS. Ngày nay, SQL được sử dụng rộng rãi và đuợc xem là ngôn ngữ chuẩn để truy cập CSDL quan hệ.2 Chuẩn SQL Năm 1989, viện tiêu chuẩn quốc gia Hoa kỳ (ANSI) công nhận SQL là ngôn ngữ chuẩn để truy cập CSDL quan hệ trong văn bản ANSI SQL89.
Năm 1989, tổ chức tiêu chuẩn quốc tế (ISO) công nhận SQL ngôn ngữ chuẩn để truy cập CSDL quan hệ trong văn bản ISO 9075-1989. Tất cả các hệ quản trị CSDL lớn trên thế giới cho phép truy cập bằng SQL và hầu hết theo chuẩn ANSI.3 Đặc điểm của SQL - Ngôn ngữ gần với ngôn ngữ tự nhiên (tiếng Anh) - SQL là ngôn ngữ phi cấu trúc, tức là trong các lệnh của SQL người sử dụng CHỈ CẦN đưa ra yêu cầu hệ thống CÁI GÌ chứ không cần chỉ ra phải làm THẾ NÀO. - Ví dụ: Cho cấu trúc dữ liệu để quản lý học sinh như sau HOCSINH(MaHS, TenHS, ĐTB, Xeploai). Đưa ra TenHS, ĐTB của các học sinh có ĐTB>=8.
Pascal SQL Type Hocsinh=Record - Tạo bảng HOCSINH MaHS: String[5]; TenHS: String[30]; - Sử dụng lệnh SELECT ĐTB: Real; Xeploai: String[30]; Select TenHS, ĐTB End; From HOCSINH HS: Array[1.100] Of Hocsinh; Where ĐTB>=5. For i:=1 to n do If HS[i]. - Ngôn ngữ SQL được sử dụng rất rộng rãi trong các Hệ quản trị cơ sở dữ liệu. PHẦN II- NGÔN NGỮ SQL 5 - SQL được chia 2 loại: SQL (ngôn ngữ hỏi) và PL/SQL (ngôn ngữ lập trình) 1.4 Các loại lệnh của SQL Chia làm các nhóm chính: - Cho phép truy vấn cơ sở dữ liệu để đưa ra các thông tin cần thiết (SELECT).
- Các lệnh định nghĩa dữ liệu (DDL_ Data Definition Language): Tạo và thay đổi cấu trúc các đối tượng trong cơ sở dữ liệu (CREATE, ALTER…) - Các lệnh thực hiện trên dữ liệu (DML_ Data Manipulation Language): Cho phép thêm, sửa, xóa dữ liệu (INSERT, UPDATE, DELETE…). - Các lệnh điều khiển dữ liệu (DCL_Data Control Language): Cho phép gán hoặc huỷ các quyền truy cập dữ liệu (GRANT, REVOTE) 1.5 Bài tập Câu 1. Nêu đặc điểm của SQL. Nêu các loại lệnh của SQL.
PHẦN II- NGÔN NGỮ SQL 6 2 Chương 2. CÁC LỆNH ĐỊNH NGHĨA DỮ LIỆU (DDL) 2.1 Tạo một cơ sở dữ liệu Cú pháp: Create Database <Tên CSDL> Ví dụ: Tạo một cơ sở dữ liệu có tên là QLTV _ Quản lý thư viện Create Database QLTV; 2.2 Tạo một bảng 2.1 Cú pháp CREATE TABLE <Ten bang> (Tên_thuộc_tính1 Kiểu_tt1 [NOT NULL], Tên_thuộc_tính2 Kiểu_tt2 [NOT NULL], … Tên_thuộc_tínhn Kiểu_ttn [NOT NULL] [, CONSTRAINT mệnh đề ] ) Trong đó, mệnh đề CONSTRAINT cho phép ta khai báo các ràng buộc dữ liệu (chi tiết sẽ được trình bày ở phần sau). Ví dụ: Tạo bảng DOCGIA, có các thuộc tính: CREATE TABLE DOCGIA( MaDG Text(10) NOT NULL PRIMARY KEY, TenDG Text(30) NOT NULL, DiaChi Text(50) NOT NULL, Tuoi NUMBER) Bảng này sẽ được nhận một tên gọi và một cấu trúc (danh sách tên các thuộc tính và một vài đặc trưng). Khi mới được tạo, bảng chưa có dữ liệu, chỉ là một cấu trúc lôgic có thể tiếp nhận các dữ liệu.2 Tên của bảng Tên của bảng được xác định ngay sau lệnh CREATE TABLE.
Mỗi HQTCSDL có một quy tắc đặt tên riêng. Ví dụ : - Tên bảng phải bắt đầu bằng một chữ cái, có dưới 30 kí tự (chữ cái, chữ số, và dấu ‘_’). - Tên bảng phải khác tên gọi khác của bảng hay của khung nhìn và với tên gọi đã dành riêng của SQL. - Không phân biệt hoa, thường.
PHẦN II- NGÔN NGỮ SQL 7 2.3 Xác định các thuộc tính Trong lệnh tạo bảng ta phải xác định cấu trúc của bảng. Cần phải xác định mỗi thuộc tính của một định nghĩa kết thúc bằng dấu ‘,’ và gồm: - Tên thuộc tính - Loại dữ liệu và độ dài - Các ràng buộc có liên quan.3 Các loại dữ liệu Các loại dữ liệu được sử dụng còn tùy theo HQTCSDL.1 Các loại dữ liệu được sử dụng trong MS Access Kiểu dữ Miêu tả Kích cỡ liệu Text Sử dụng ký tự hoặc kết hợp giữa ký Khả năng lưu trữ tối đa tự và số, như địa chỉ, hoặc những số (FieldSize)là 255 ký tự. không yêu cầu tính toán, như số điện thoại, mã nước, mã vùng… Memo Sử dụng khi bạn cần lưu trữ một Khả năng lưu trữ tối đa là 65.536 lượng thông tin lớn, ví dụ như trường ký tự. thông tin ghi chú về một cán bộ.
Number Number: Sử dụng cho những dữ liệu Khả năng lưu trữ có thể là 1, 2, 4, 8 cần tính toán (loại trừ tính tiền, sử tuỳ thuộc bào kiểu dữ liệu ta chọn dụng Currency Type). (byte, integer, long integer, single, douple, decimal), riêng đối với kiểu dữ liệu ReplicationID (GUI) thi khả năng lưu trữ là 16 byte. Date/Time Lưu trữ thông tin về thời gian. Sử dụng 8 byte để lưu trữ.
Currency Sử dụng Currency cho các dữ liệu Khả năng lưu trữ là 8 byte. cần tính toán. Phần thập phân có thể có từ 1 đến 4 số. AutoNumber Đây là kiểu số tự động tăng với bước Sử dụng 4 byte để lưu trữ.
Nếu tăng là 1. Ta không thể cập nhật lại chọn kiểu dữ liệu là ReplicationID được trường này. thì khả năng lưu trữ có thể lên tới 16 byte. Yes/No Kiểu dữ liệu YES/NO chỉ chứa một Sử dụng 1 bite để lưu trữ.
trong 2 giá trị (Yes/No, True/False, On/ Off)Y OLE Object Đối tượng (như là một văn bản trong Sử dụng 1 GB để lưu trữ (tuỳ thuộc PHẦN II- NGÔN NGỮ SQL 8 Microsoft Word, dữ liệu đồ hoạ, âm vào dung lượng của đĩa). thanh, hoặc một kiểu dữ liệu nhị phân… ) Ngoài ra còn 2 loại dữ liệu khác như Hyperlink, Lookup Wizard. Đối với kiểu dữ liệu Number, ta còn có thể lựa chọ chi tiết: Kiểu dữ liệu Miêu tả Độ Kích cỡ chính xác thập phân Byte Lưu trữ số từ 0 đến 255 (không có phân số) Không 1 byte Decimal Lưu trữ tối đa 10^38-1 28 12bytes Integer Lưu trữ số từ -32,768 to 32,767 (không có Không 2 bytes phân số). Long Integer Lưu trữ số từ -2,147,483,648 tới None 4 bytes 2,147,483,647 (không có phân số).
Single Lưu trữ số từ -3.401298E- 7 4 bytes 45 cho giá trị âm và từ 1.402823E38 giá trị dương. Double Lưu trữ số từ -1.94065645841247E-324 cho giá trị âm và từ 4.79769313486231E308 giá trị dương.2 Các loại dữ liệu được sử dụng trong Oracle: 1. CHAR Kiểu CHAR dùng để khai báo một chuỗi có chiều dài cố định, khi khai báo biến hoặc cột kiểu CHAR với chiều dài chỉ định thì tất cả các mục tin của biến hay cột này đều có cùng chiều dài được chỉ định. Các mục tin ngắn hơn ORACLE sẽ tự động thêm vào các khoảng trống cho đủ chiều dài.
ORACLE không cho phép gán mục tin dài hơn chiều dài chỉ định đối với kiểu CHAR. Chiều dài tối đa cho phép của kiểu CHAR là 255 byte 2. VARCHAR2 Kiểu VARCHAR2 dùng để khai báo chuỗi ký tự với chiều dài thay đổi. Khi khai báo một biến hoặc cột kiểu VARCHAR2 phải chỉ ra chiều dài tối đa, các mục tin chứa trong biến hay cột kiểu VARCHAR2 có chiều dài thực sự là chiều dài của mục tin.
ORACLE không cho phép gán mục tin dài hơn chiều dài tối đa chỉ định đối với kiểu VARCHAR2. Chiều dài tối đa kiểu VARCHAR2 là 2000 byte PHẦN II- NGÔN NGỮ SQL 9 3. VARCHAR Hiện tại ORACLE xem kiểu VARCHAR2 và VARCHAR là như nhau, tuy nhiên ORACLE khuyên nên dùng VARCHAR2. ORACLE dự định trong tương lai dùng kiểu VARCHAR để chứa các chuỗi với chiều dài biến đổi, nhưng trong phép so sánh sẽ được chỉ định theo nhiều ngữ nghĩa khác nhau.
NUMBER Kiểu số của ORACLE dùng để chứa các mục tin dạng số dương, số âm, số với dấu chấm động. NUMBER(p, s) Trong đó: p: số chữ số trước dấu chấm thập phân (precision), p từ 1 đến 38 chữ số s: số các chữ số tính từ dấu chấm thập phân về bên phải (scale), s từ -84 đến 127 NUMBER(p) số có dấu chấm thập phân cố định với precision bằng p và scale bằng 0 NUMBER số với dấu chấm động với precision bằng 38. Nhớ rằng scale không được áp dụng cho số với dấu chấm động. Ví dụ sau cho thấy cách thức ORACLE lưu trữ dữ liệu kiểu số tùy theo cách định precision và scale khác nhau: Dữ liệu thực Kiểu Lưu trữ 7456123.89 NUMBER(6) Không hợp lệ 7456123.89 NUMBER(-7,2) Không hợp lệ 5.
FLOAT Dùng để khai báo kiểu số dấu chấm động, với độ chính xác thập phân 38 hay độ chính xác nhị phân là 126. PHẦN II- NGÔN NGỮ SQL 10 FLOAT(b) Khai báo kiểu dấu chấm động với độ chính xác nhị phân là b, b từ 1 đến 126. Có thể chuyển từ độ chính xác nhị phận sang độ chính xác thập phân bằng cách nhân độ chính xác nhị phân với 0. LONG Dùng để khai báo kiểu chuỗi ký tự với độ dài biến đổi, chiều dài tối đa của kiểu LONG là 2 gigabyte.
Kiểu LONG thường được dùng để chứa các văn bản. Có một số hạn chế khi dùng kiểu LONG: - Một table không thể chứa nhiều hơn một cột kiểu LONG. - Dữ liệu kiểu LONG không thể tham gia vào các ràng buộc toàn vẹn, ngoại trừ kiểm tra NULL và khác NULL. - Không thể index một cột kiểu LONG.
- Không thể truyền tham số kiểu LONG cho hàm hoặc thủ tục. - Các hàm không thể trả về dữ liệu kiểu LONG. - Trong câu lệnh SQL có truy cập các cột kiểu LONG, thì việc cập nhật hoặc khóa các bảng chỉ cho phép trong cùng một CSDL Ngoài ra, các cột kiểu LONG không được tham gia trong các thành phần sau của câu lệnh SQL: - Các mệnh đề WHERE, GROUP BY, ORDER BY, CONNECT BY hoặc với tác tử DISTINCT trong câu lệnh SELECT. - Các hàm sử dụng trong câu lệnh SQL như SUBSTR, INSTR.
- Trong danh sách lựa chọn của câu lệnh SELECT có sử dụng mệnh đề GROUP BY. - Trong danh sách lựa chọn của câu hỏi con, câu hỏi có sử dụng các toán tử tập hợp. - Trong danh sách lựa chọn của câu lệnh CREATE TABLE AS SELECT 7. DATE Dùng để chứa dữ liệu ngày và thời gian.
Mặc dù kiểu ngày và thời gian có thể được chứa trong kiểu CHAR và NUMBER. Với giá trị kiểu DATE, những thông tin được lưu trữ gồm thế kỷ, năm, tháng, ngày, giờ, phút, giây.