Tải bản đầy đủ (.pdf) (21 trang)

Nhập môn cơ sở dữ liệu Phần 3: Ngôn ngữ truy vấn có cấu trúc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (423.89 KB, 21 trang )

Tháng 6 năm 2003

Structured Query Language
SQL
Ngôn ngữ truy vấn có cấu trúc

1

Biên soạn: ThS.Phan Võ Minh Thắng


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Nhắc lại
• Các phép toán tác trên đại số quan hệ









Select
Project
Rename
Union, Intersection, Set difference, Cartesian product
Join & Natural Join


Division
Aggregate functions
Outer Joins & Outer Union

2


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Nhắc lại (tt)
• Select
– σ<điều kiện chọn>(R)

• Project
– π<danh sách thuộc tính>(R)

• Rename
– ρ(B1,B2,..Bn)(R)
– ρS(B1,B2,..Bn)(R)
– R(B1,B2…,Bn)

• Các phép toán về lý
thuyết tập hợp






R∪S
R∩S
R-S
RXS

• Join
–R

<điều kiện kết>S

Vấn đề: Làm sao để thực hiện được các phép
toán này ??

Filter ?!!! ĐSQH ?!!! Cách nào khác ?!!!

3


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

SQL và các phép toán quan hệ
• Các phép toán trên đại số quan hệ
– Rất là công thức
– Hơi thiêng về mặt kỹ thuật, phải chỉ rõ ràng thứ tự của
các thao tác.VD: Lấy họ tên của các sinh viên ở Thủ Đức

• SQL
– Tập trung vào phần trả lời kết quả là gì

– Thứ tự/Tối ưu hóa của câu truy vấn được giao phó cho
Hệ quản trị CSDL
– Cho phép tạo ra các lược đồ quan hệ, cập nhật và truy
vấn thông tin.

• Tương ứng giữa các thuật ngữ
– Quan hệ (Relation)
– Bộ
(Tupe)
– Thuộc tính (Attribute)

Bảng (table)
Dòng (row)
Cột (column)

4


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Lưu ý trước khi bắt đầu
• SQL người Việt hay đọc là S-Q-L
• SQL là một tập các câu lệnh.
• SQL chuyên để truy vấn thông tin. Nó có
thể được dùng để định nghĩa và tính toán
dữ liệu trong CSDL quan hệ
• SQL phải chạy thông qua một server
(engine), chứ không thể độc lập như ngôn

ngữ lập trình
5


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Một môi trường sử dụng SQL điển hình

6


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Các ngôn ngữ giao tiếp với CSDL
• Ngôn ngữ mô tả dữ liệu (Data Definition
Language - DDL): tạo các đối tượng trong CSDL
quan hệ
– Alter Database/Table/View
– Create Database/Index/Rule/Schema/Table/View
– Drop Database/Index/Rule/Schema/Table/View

• Ngôn ngữ thao tác dữ liệu (Data Manipulation
Language - DML): lấy và cập nhật thông tin
trong CSDL.
– Select/Update/Insert/Delete/Truncate Table
– Begin/Save/ Transaction / Close / Commit / Rollback

– Begin Distributed Tracsaction…
7


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Các ngôn ngữ giao tiếp với CSDL (tt)
• Ngôn ngữ điều khiển dữ liệu (Data Control
Language - DCL)
– Điều khiển quyền hạn
• Deny ; Grant ; Revoke

– Dự phòng và phục hồi
• Backup/Dump ; Load/Restore

– Các vấn đề khác

Mở rộng

• Go ; Kill ; Use ; ShutDown ; Reconfigure ;…

− Lập trình và Điều khiển luồng

▪ Create/Alter/Drop Procedure/Trigger/Function
▪ Begin … End ; If … else ; Print ; RaisError
▪ Declare/Set @localvariable; Declare/Set … Cursor
▪ Break/Continue/Return/Goto/Fetch/Waitfor….


8


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

DDL,DML,DCL, và qui trình phát triển CSDL

9


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Sơ lược lịch sử phát triển
• Trong những năm 1975-1976, IBM lần đầu tiên đưa ra
hệ quản trị CSDL kiểu quan hệ mang tên SYSTEM-R với
ngôn ngữ giao tiếp CSDL là SEQUEL (Structured
English QUEry Language), đó một ngôn ngữ con để
thao tác với CSDL.
• Năm 1976 ngôn ngữ SEQUEL được cải tiến thành
SEQUEL2.
• Những năm 1978-1979 SEQUEL2 được cải tiến và đổi
tên thành Structured Query Language - SQL và cuối
năm 1979 hệ quản trị CSDL được cải tiến thành
SYSTEM-R*.
10



Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Sơ lược lịch sử phát triển
• 1986 Viện Tiêu Chuẩn Quốc Gia Mỹ (American
National Standards Institute - ANSI) đã công nhận và
chuẩn hóa ngôn ngữ SQL, và sau đó Tổ chức Tiêu
chuẩn Thế giới (International Standards Organization ISO) cũng đã công nhận ngôn ngữ này.

• SQL standards:






SQL-86 (about 100 pages);
SQL-89 (about 120 pages);
SQL-92 (about 600 pages) – aka SQL2;
SQL-99 (about 2200 pages) – aka SQL3;
SQL4 (probable future standard).
11


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng


Các ngôn ngữ SQL mở rộng
• SQL là ngôn ngữ được chuẩn hóa mở
– Oracle mở rộng SQL bằng PL/SQL (và Java)
– Access mở rộng SQL bằng Visual Basic
– SQL Server mở rộng SQL bằng Transact-SQL (T-SQL)

• PL/SQL là phần mở rộng ngôn ngữ thủ tục độc
quyền của tập đoàn Oracle. Kết hợp khả năng
tính toán của SQL với khả năng xữ lý dữ liệu của
ngôn ngữ lập trình thủ tục
• Transact-SQL: Microsoft bổ sung, mở rộng SQL
thêm một số từ khóa điều khiển luồng (flowcontrol) để đáp ứng cho nhu cầu viết StoredProcedure và Trigger
12


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Thỏa thuận một số qui ước
về cú pháp
• Các từ khóa (KeyWords), các hàm (Functions), tên
bảng (quan hệ - Table Names) của các câu lệnh được
viết bằng chữ in hoa (UPPERCASE).
• Các tên thuộc tính (Column Names) của các bảng
được viết đậm. Những tên thuộc tính có dấu tiếng Việt
hay có khoảng trắng được viết trong dấu ngoặc vuông
( [ ] ) theo ký pháp của SQL-Server.
• Các biến cú pháp (Syntax Variables), các thành phần
ngôn ngữ mà người sử dụng phải điền cụ thể vào khi

viết lệnh, sẽ được viết bằng chữ thường (lowercase),
trong cặp dấu ( < > ) và nghiêng.

13


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Thỏa thuận một số qui ước
về cú pháp
• Các thành phần tùy chọn (Optional), tức là có thể có
hoặc không được viết trong cặp dấu ngoặc vuông đậm
nét ([ ]).
• Việc lựa chọn một trong các khả năng được thể hiện
bởi dấu xổ đứng đậm (|).
• Thành phần bắt buộc phải chọn trong danh sách được
viết trong cặp dấu móc đậm nét ({ }).
• Giá trị mặc định (Default Value) được viết với dấu gạch
chân (Underline).
• Lệnh SQL có thể được viết trên nhiều dòng và kết thúc
lệnh bởi dấu chấm phảy. Tuy nhiên từ khóa, tên hàm,
tên thuộc tính, tên bảng, tên đối tượng (Objects) thì
không được phép viết tách xuống hàng *

14


Structured Query Language - SQL


Biên soạn: ThS.Phan Võ Minh Thắng

Viết các câu lệnh SQL
• Kết thúc câu lệnh
– Dùng dấu chấm phẩy (;) để kết thúc một câu lệnh
SQL.Nếu chỉ có một câu lệnh thì không cần dùng dấu
chấm phẩy.
– SQL Server không bắt buộc phải dùng dấu (;) phân
cách giữa các câu lệnh

• Chú thích
– Chú thích một khối (trên nhiều dòng liên tiếp) thì đóng
nội dung chú thích bằng /* và */
– Chú thích phần ở cuối dòng thì dùng 2 dấu gạch
ngang liên tục –

• SQL không phân biệt chữ in chữ thường

15


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

SQL Database Definition
• Data Definition Language (DDL)
– Các lệnh CREATE chính:
• CREATE DATABASE – định nghĩa một CSDL

• CREATE SCHEMA – định nghĩa một phần của CSDL
được sở hữu bởi một người nào đó
• CREATE TABLE – định nghĩa bảng và các cột của nó
• CREATE VIEW – định nghĩa một bảng luận lý từ một
hay nhiều view

– Các lệnh CREATE khác: CHARACTER SET,
COLLATION, TRANSLATION, ASSERTION,
DOMAIN
16


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Các kiểu dữ liệu dùng trong T-SQL
• Kiểu chuỗi
– CHAR(n) – chuỗi ký tự có độ dài cố định - n ký tự
(n từ 1 đến 8000). Nếu không chỉ định n thì Ù n=1
– NCHAR(n) – chuỗi ký tự Unicode có độ dài cố định
(n từ 1 đến 4000). Nếu không chỉ định n thì Ù n=1
– VARCHAR(n) – chuỗi ký tự có độ dài thay đổi được
nhưng tối đa là n ký tự. (n từ 1 đến 8000)
– NVARCHAR(n) – chuỗi ký tự Unicode có độ dài thay
đổi được nhưng tối đa là n ký tự. (n từ 1 đến 4000)
– TEXT – chuỗi ký tự có độ dài thay đổi được. Kích
thước có thể lên đến 2.147.438.647 byte
– NTEXT – chuỗi ký tự Unicode có độ dài thay đổi
được. Kích thước có thể lên đến 1.073.741.823 ký tự

CHAR Ù CHARACTER

VAR Ù VARYING

N Ù NATIONAL

17


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Các kiểu dữ liệu dùng trong T-SQL
• Kiểu số
– DEC(p,s) hoặc NUMERIC(p,s) – số thập phân có p ký số và
s ký số phía sau dấu phân cách thập phân. (p từ 1 tới 38).
Dec(p) Ù Dec(p,0)
Dec Ù Dec (18,0)
– TINYINT – số nguyên 1 byte không dấu (từ 0 đến 255)
– SMALLINT – số nguyên 2 byte (từ -32768 đến 32.767)
– INT hoặc INTEGER – số nguyên 4 byte
– BIGINT – số nguyên 8 byte (kiễu dữ liệu mới)
– FLOAT(p) – số chấm động. p là số lượng bite trong phần
định trị (p từ 1 tới 53). Nếu không chỉ định p thì Ù p=53.
p từ 1 đến 24 -> 4 byte. p từ 25 đến 53 -> 8 byte
– REAL Ù FLOAT(24)
18
– DOUBLE PRECISION Ù FLOAT



Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Các kiểu dữ liệu dùng trong T-SQL
• Kiểu ngày/thời gian
– SMALLDATETIME - ngày và giờ có độ dài 4 byte
(1/1/1900 – 6/6/2079)
– DATETIME – ngày và giờ có độ dài 8 byte
(1/1/1753 – 31/12/9999)

• Kiểu tiền tệ
– SMALLMONEY – giá trị thập phân có kích thước 4 byte với
4 số lẻ phần thập phân (-214.748,3648 tới 214.748,3647)
– MONEY - giá trị thập phân có kích thước 8 byte với 4 số lẻ
phần thập phân
(-922.337.203.685.477,5808 tới 922.337.203.685.477,5807)
19


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Các kiểu dữ liệu dùng trong T-SQL
• Các kiểu dữ liệu về Bit, Binary và Image
– BIT – 1 bit. Chỉ nhận giá trị 0 hoặc 1
– BINARY(n) – một dãy nhị phân cố định chiều dài. (n từ 1 tớ
8000 byte). Không chỉ định n Ù n=1

– VARBINARY(n) - một dãy nhị phân chiều dài thay đổi được.
(n từ 1 tớ 8000 byte). Không chỉ định n Ù n=1
– IMAGE - một dãy nhị phân có chiều dài lên đến
2.147.483.647 byte

• Các kiểu dữ liệu mới trong SQL Server 2000
– BigInt – số nguyên 8 byte
– SQL_Variant – Có thể được dùng để lưu tất cả các kiểu dữ
liệu khác
– Table – ứng dụng có thể lưu kết quả tạm thời ra một bảng 20


Structured Query Language - SQL

Biên soạn: ThS.Phan Võ Minh Thắng

Tạo Cơ sở Dữ liệu
CREATE DATABASE <Tên CSDL>
[ ON PRIMARY
( NAME
= <Tên tham chiếu file>
FILENAME
= <Đường dẫn + *.mdf>
SIZE
= <+Number> KB|MB|GB|TB
MAXSIZE
= Unlimited | <+Number> KB|MB|GB|TB
FILEGROWTH = <+Number> KB|MB|GB|TB ),

LOG ON

(…
*.ldf …)
]
File đầu tiên *.mdf là primary file chứa các bảng hệ thống của CSDL và các thông
tin khởi đầu. Các file chỉ định tiếp theo *.ndf chứa thông tin trong các bảng người
dùng và các đối tượng khác của CSDL

21



×