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
Trang 1Structured Query Language
SQL
Ngôn ngữ truy vấn có cấu trúc
Trang 2Nhắ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
Trang 3• Các phép toán về lý thuyết tập hợp
– R∪S– R∩S– R - S– RXS
Trang 4SQL 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ảng (table)
– Thuộc tính (Attribute) Cột (column)
Trang 5Lư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ó
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
Trang 6Một môi trường sử dụng SQL điển hình
Trang 7Cá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…
Trang 8• 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
• Go ; Kill ; Use ; ShutDown ; Reconfigure ;…
Các ngôn ngữ giao tiếp với CSDL (tt)
− 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…
− 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
Trang 9DDL,DML,DCL, và qui trình phát triển CSDL
Trang 10Sơ 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*.
Trang 11Sơ 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)
Trang 12Cá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
(flow-control) để đáp ứng cho nhu cầu viết
Stored-Procedure và Trigger
Trang 13Thỏ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
Trang 14• 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 *
về cú pháp
Trang 15Viế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 –
Trang 16SQL 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
Trang 17Các kiểu dữ liệu dùng trong T-SQL
– 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
Trang 18• 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)
– DOUBLE PRECISION Ù FLOAT
Trang 19Cá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
Trang 20• 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ớ
• 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
Trang 21Tạ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|TBMAXSIZE = Unlimited | <+Number> KB|MB|GB|TB FILEGROWTH = <+Number> KB|MB|GB|TB ),