You are on page 1of 45

Chương 2

Ngôn ngữ truy vấn có cấu trúc

1
Nội dung

1. Giới thiệu.
2. Ngôn ngữ T-SQL.
3. Ngôn ngữ thao tác dữ liệu
4. Ngôn ngữ định nghĩa dữ liệu

2
Giới thiệu ngôn ngữ truy vấn có cấu trúc
 Structured Query Language – SQL
 Tạo cơ sở dữ liệu
 Thao tác trên dữ liệu: lưu trữ dữ liệu, sửa hoặc xóa dữ
liệu
 Được ANSI (American National Standards Institute –
Viện Tiêu Chuẩn Quốc Gia Hoa Kỳ) và ISO
(International Organization for Standardization – tổ
chức chuẩn hoác quốc tế) chuẩn hóa.
 Hầu hết các hệ quản trị cơ sở dữ liệu quan hện sử
dụng (PL/SQL – Oracle, MS SQL Server, …)
3
Giới thiệu ngôn ngữ truy vấn có cấu trúc
 Có 4 nhóm lệnh SQL
 Truy vấn dữ liệu (Data Query Language - DQL): các
lệnh lựa chọn để lấy thông tin mà không làm thay đổi
dữ liệu trong các bảng (select) .
 Định nghĩa dữ liệu (Data Definition Language - DDL):
Các lệnh tạp hoặc thay đổi các bảng dữ liệu (create,
drop, alter, …)
 Thao tác dữ liệu (Data Manipulation language - DML):
các lệnh làm thay đổi dữ liệu trong các bảng (insert,
delete, update, …).
 Điều khiển dữ liệu (Data Control Language - DCL):
quản lý quyền truy cập dữ liệu (grant, revoke, …).
4
Giới thiệu ngôn ngữ truy vấn có cấu trúc
 Tên ban đầu là SEQUEL (Structured English Query
Language) bời IBM năm 1982.
 Năm 1986: ANSI công bố chuẩn SQL-86
 Năm 1987: ISO phê chuẩn SQL-87
 Đặc điểm của SQL:
 Không phân biệt chữ hoa và chữ thường

5
Ngôn ngữ T-SQL
 Transact-SQL – T-SQL.
 Là một hệ mở rộng của SQL được Microsoft sử dụng.

 Hoạt động tốt nhất với Microsoft SQL Server

 Mang lại khả năng kiểm soát cao cho người lập trình.

 T-SQL có một số tính năng không có sẵn trong SQL,

như các phần tử lập trình thủ tục và một biến cục bộ
để cung cấp khả năng kiểm soát linh hoạt hơn về cách
ứng dụng chạy.
 T-SQL cho phép chèn nhiều hàng vào một bảng bằng

cách sử dụng câu lệnh BULK INSERT.

6
Ngôn ngữ T-SQL
 Biến trong T-SQL.
 Biến cục bộ:

 Được sử dụng để

lưu trữ tạo thời


 @local_variable: tên

biến – bắt đầu bằng


dấu @
 Data_type: kiểu dữ

liệu

7
Ngôn ngữ T-SQL
 Biến trong T-SQL.
 Biến toàn cục:

 Được định nghĩa và xử lý bởi hệ thống

 Bắt đầu bằng 2 dấu @

 Có thể truy vấn giá trị của biến này bằng lệnh select.

 Ghi chú trong T-SQL:


 Ghi chú một dòng: dung hai dấu trừ: “--”
 Ghi chú một đoạn: /*…*/

8
Ngôn ngữ T-SQL
 Kiểu dữ liệu trong T-SQL.

9
Ngôn ngữ T-SQL
 Kiểu dữ liệu trong T-SQL.

10
Ngôn ngữ T-SQL
 Kiểu dữ liệu trong T-SQL.

11
Ngôn ngữ T-SQL
 Kiểu dữ liệu trong T-SQL.

12
Ngôn ngữ T-SQL
 Các hàm xử lý số trong T-SQL:
 SUM: Trả về tổng của tất cả các giá trị của các dòng

dữ liệu được tìm thấy.


 Ví dụ:

SELECT SUM(NoOfStudentsEnrolled) AS ‘Enrolled Students’


FROM Batch
WHERE CourseCode=1
13
Ngôn ngữ T-SQL
 Các hàm xử lý số trong T-SQL:
 AVG: Trả về trị trung bình của tất cả các giá trị của các dòng

dữ liệu được tìm thấy.


 Cú pháp:

 ALL: là giá trị mặc định, có tác dụng với tất cả các giá trị.
 DISTINCT: Cho biết AVG chỉ làm việc với một giá trị duy
nhất của trường được chỉ ra, bất kể các giá trị này xuất hiện
bao nhiêu lần.
 Biểu thức: có thể là bất kỳ biểu thức SQL Server nào,
thường là tên trường dữ liệu.
 Ví dụ: SELECT AVG(Amount) AS ‘Average Amount’
FROM Invoice; 14
Ngôn ngữ T-SQL
 Các hàm xử lý số trong T-SQL:
 COUNT: Đếm tất cả các giá trị khác NULL của các dòng dữ

liệu được tìm thấy.

 Cú pháp:

 Ví dụ: SELECT COUNT(CourseCode) AS ‘Total Course’


FROM Course;

15
Ngôn ngữ T-SQL
 Các hàm xử lý số trong T-SQL:
 MAX: trả về giá trị lớn nhất trong biểu thức. Có thể
được dùng với các kiểu dữ liệu số, chuỗi, và ngày
tháng.
 Cú pháp:

 Ví dụ: SELECT MAX(Amount) AS ‘Maximum Invoice’


FROM Invoice;

16
Ngôn ngữ T-SQL
 Các hàm xử lý số trong T-SQL:
 MIN: trả về giá trị nhỏ nhất trong biểu thức. Hàm này có
thể được dùng với các trường số, chuỗi và ngày tháng.
 Cú pháp:

 Ví dụ: SELECT MIN(Amount) AS ‘Minimum Invoice’


FROM Invoice;

17
Ngôn ngữ T-SQL
 Các hàm xử lý chuỗi trong T-SQL:
 UPPER(chuỗi): chuyển đổi chuỗi sang kiểu chữ hoa
 LOWER(chuỗi): chuyển đổi chuỗi sang kiểu chữ thường
 LEN(chuỗi): trả về chiều dài của chuỗi;
 LTRIM(chuỗi): loại bỏ khoảng trắng bên trái của chuỗi.
 RTRIM(chuỗi): loại bỏ khoảng trắng bên phải của chuỗi
 LEFT(chuỗi, n): trả về chuỗi bên trái tính từ đầu cho
đến vị trí thứ n.
 RIGHT(chuỗi, n): trả về chuỗi bên phải tính từ cuối cho
đến vị trí thứ n.

18
Ngôn ngữ T-SQL
 Các hàm toán học trong T-SQL:
 SQUARE(số): trả về bình phương của một biểu thức
 SQRT(số): trả về căn bậc hai của một biểu thức
 ROUND(số): trả về số làm tròn của một biểu thức;
 Các hàm về thời gian trong T-SQL:
 GETDATE(): trả về ngày tháng năm của hệ thống
 DATEPART(): trả về một phần giá trị của một chuỗi
dạng ngày tháng đầy đủ.
 DATEDIFF(): trả về số ngày trong khỏang thời gian
giữa ngày.
 DAY(): trả về ngày thứ mấy trong tháng
 … 19
Ngôn ngữ T-SQL
 Các hàm chuyển đổi trong T-SQL:
 CAST(số): trả về giá trị có kiểu dữ liệu theo định nghĩa
 Ví dụ: Print cast(getDate() as varchar(11))
 CONVERT(số): chuyển đổi giá trị có kiểu dữ liệu này
sang kiểu dữ liệu khác nếu cho phép.
 Ví dụ: Print convert(int, ‘12’)

20
Ngôn ngữ T-SQL
 Các toán tử trong T-SQL:

 Các toán tử luận lý: AND, OR NOT


21
Ngôn ngữ T-SQL
 Các toán tử đại diện trong câu lệnh T-SQL:

22
Ngôn ngữ thao tác dữ liệu
 Câu lệnh INSERT: thêm dữ liệu mới vào một bảng
 Cú pháp:
INSERT [INTO] <table_name> VALUES <values>
 Ví dụ:
INSERT INTO jobs VALUES (‘Graphics Artist’, 25, 100)
 Thêm dữ liệu từ một bảng vào một bảng khác
 Cú pháp:
INSERT <table_name> SELECT <column list>
FROM <tablename2>
 Ví dụ:
INSERT author_details SELECT authors.au_id,
authors.au_lname
FROM authors 23
Ngôn ngữ thao tác dữ liệu
 Câu lệnh UPDATE: cập nhật dữ liệu trong một bảng
 Cú pháp:

 <table_name> là tên của bảng nơi mà mẫu tin được


cập nhật.
 <value> xác định các giá trị mới cho các cột được thay

đổi.
 Ví dụ:
UPDATE titles SET price=price+(25/100*price)
WHERE title_id=’TC7777’ 24
Ngôn ngữ thao tác dữ liệu
 Câu lệnh DELETE: xoá một hàng từ một bảng
 Cú pháp:
DELETE FROM <table_name> [WHERE <search_condition>]
 <table_name> là tên của bảng chứa mẫu tin muốn
xoá.
 WHERE được sử dụng để xác định điều kiện.

 Ví dụ:
DELETE FROM pub_info WHERE pub_id=9999

25
Ngôn ngữ thao tác dữ liệu
 Câu lệnh SELECT: chọn dữ liệu từ các bảng
 Cú pháp:
SELECT <columnname(s)> FROM <tablename>;
 <columnname(s)> là các cột, là thành phần kế tiếp
trong câu query.
 FROM phải là từ kế tiếp trong câu query của chúng ta.

 <tablename> là tên bảng mà chúng ta đang truy lục

 Ví dụ 1:
SELECT hosv, tensv
FROM sinhvien

26
Ngôn ngữ thao tác dữ liệu
 Câu lệnh SELECT: chọn dữ liệu từ các bảng
 Ví dụ 2:
SELECT hosv, tensv
FROM sinhvien WHERE masv=”ltt200603”;
 Mệnh đề WHERE: xác định một điều kiện
 Ví dụ 3:
SELECT masv, hosv, tensv
FROM sinhvien
GROUP BY masv;
 Mệnh đề GROUP BY: được sử dụng khi kết quả của query
phải được nhóm dựa trên điều kiện
27
Ngôn ngữ thao tác dữ liệu
 Câu lệnh SELECT: chọn dữ liệu từ các bảng
 Ví dụ 4:
SELECT * FROM sinhvien
WHERE masv=”ltt200603”
ORDER BY hosv;
 Mệnh đề ORDER BY: sắp xếp các hàng theo thứ tự

28
Ngôn ngữ định nghĩa dữ liệu
 Câu lệnh tạo database – CREATE DATABASE:
 Cú pháp:

29
Ngôn ngữ định nghĩa dữ liệu
 Câu lệnh tạo bảng – CREATE TABLE:
 Cú pháp:

 Ví dụ:

 Tạo khóa chính:

30
Ngôn ngữ định nghĩa dữ liệu
 Câu lệnh tạo bảng – CREATE TABLE:
 Tạo khóa ngoại:

 Tạo ràng buộc Default:

31
Ngôn ngữ định nghĩa dữ liệu
 Câu lệnh tạo bảng – CREATE TABLE:
 Tạo ràng buộc duy nhất:

32
Ngôn ngữ định nghĩa dữ liệu
 Câu lệnh sửa bảng – ALTER TABLE:
 Cú pháp:

 Ví dụ 1: Thêm cột DIACHI vào bảng SINHVIEN


ALTER TABLE SINHVIEN
ADD DIACHI varchar(20) NULL
 Ví dụ 2: Xóa cột DIACHI trong bảng SINHVIEN
ALTER TABLE SINHVIEN
DROP COLUMN DIACHI
33
Ngôn ngữ định nghĩa dữ liệu
 Câu lệnh sửa bảng – ALTER TABLE:
 Ví dụ 3: Tạo primary key cho cột trong bảng đã tồn tại
ALTER TABLE SINHVIEN
ADD CONSTRAINT PK_MSSV
PRIMARY KEY (MSSV)
 Ví dụ 4: Tạo ràng buộc khóa ngoại trong bảng đã tồn
tại
ALTER table SINHVIEN
ADD constraint FK_MALOP
foreign key (MALOP) references LOP(MALOP)

34
Ngôn ngữ định nghĩa dữ liệu
 Câu lệnh xóa bảng – DROP TABLE:
 Cú pháp:

 Ví dụ 1:
DROP TABLE Employee

35
Index – View

 Index:
 Một chỉ mục trên một thuộc tính A của bảng T sẽ giúp tăng tốc
quá trình tìm kiếm các giá trị cố định trên thuộc tính A
 Khi ta khai báo khóa chính hay UNIQUE trên một hoặc nhiều
thuộc tính thì HQTCSDL tự động tạo chỉ mục trên các thuộc tính
đó
 Khi lựa chọn chỉ mục cần xem xét tính cân bằng của các yếu tố
 Hai yếu tố quan trọng cần xem xét
- Tạo chỉ mục trên một thuộc tính giúp tăng tốc quá trình truy
vấn có liên quan đến thuộc tính đó (tìm kiếm, phép kết, ,,,)
- Việc tạo chỉ mục sẽ khiến các thao tác thêm, sửa, xóa phức
tạp và tốn nhiều thời gian hơn.

36
Index – View

 Index:
 Tạo chỉ mục

CREATE INDEX <Tên_index>


ON <Tên_bảng> (Cột1 [ASC|DESC], ..., n)

Ví dụ
CREATE INDEX ID_PHG ON NHANVIEN (PHG)

CREATE INDEX ID_PHANCONG


ON PHANCONG (SODA, MA_NVIEN DESC)

37
Index – View

 Index:
 Xoá chỉ mục

DROP INDEX <Tên_index> ON <Tên_bảng>

Ví dụ
DROP INDEX ID_PHG ON NHANVIEN
DROP INDEX ID_PHANCONG ON PHANCONG

38
Index – View

 View:
 Là một đối tượng đặc biệt trong SQL, có một số đặc điểm:
- View là bảng ảo (không tồn tại vật lý)
- View được định nghĩa thông qua truy vấn
- View được truy vấn như một bảng bình thường
- Một số view cho phép thay đổi dữ liệu ngược vào bảng vật

 Sử dụng view nhằm:
- Tập trung trên dữ liệu mà người sử dụng quan tâm
- Giới hạn số lượng cột, dòng
- Dấu tên cột đối với người dùng
- Dễ dàng bảo mật, phân quyền

39
Index – View

 View:
 Tạo View
CREATE VIEW <Tên_view> [(Cột1 [,,,,)] AS <Câu
truy vấn>

 Ví dụ
CREATE VIEW DS_NHANVIEN_DEAN ([Họ và tên],[Tên đề án], [Thời gian])
AS
SELECT HONV+ ‘ ’+ TENLOT+‘ ’ + TENNV, TENDA , THOIGIAN
FROM NHANVIEN A, PHANCONG B, DEAN C
WHERE MANV=MA_NVIEN AND SODA=MADA

40
Index – View

 View:
Ví dụ
CREATE VIEW DS_NHANVIEN_DEAN AS
SELECT HONV+ ‘ ’+ TENLOT+‘ ’ + TENNV AS [Họ và tên],
TENDA AS [Tên đề án], THOIGIAN AS [Thời gian]
FROM NHANVIEN A, PHANCONG B, DEAN C
WHERE MANV=MA_NVIEN AND SODA=MADA

SELECT *
FROM DS_NHANVIEN_DEAN

41
Index – View

 View:
CREATE VIEW NV_P5 AS
SELECT MANV, HONV, TENLOT, TENNV
FROM NHANVIEN
WHERE PHG=5

CREATE VIEW TONGLNG_SLNV_PB AS


SELECT MAPHG, TENPHG, COUNT(*) AS SLNV, SUM(LUONG) AS TONGLNG
FROM NHANVIEN, PHONGBAN
WHERE PHG=MAPHG
GROUP BY MAPHG ,TENPHG

42
Index – View

 View:
 Có thể viết câu truy vấn dữ liệu từ khung nhìn và bảng

SELECT HONV, TENNV, TENDA, THOIGIAN


FROM NV_P5, PHANCONG, DEAN
WHERE MANV=MA_NVIEN AND SODA=MADA

43
Index – View

 View:
 Sửa view
ALTER VIEW <Tên_view> [(Cột1 [,,,,)]
AS <Câu_lệnh_Select>
 Ví dụ
ALTER VIEW DS_NHANVIEN_DEAN
AS
SELECT TOP (100) HONV+ ‘ ’+ TENLOT+‘ ’ + TENNV AS [Họ và tên],
TENDA AS [Tên đề án], THOIGIAN AS [Thời gian]
FROM NHANVIEN A, PHANCONG B, DEAN C
WHERE MANV=MA_NVIEN AND SODA=MADA
ORDER BY [Tên đề án]
44
Index – View

 View:
 Xóa view

DROP VIEW <Tên_view>

Ví dụ
DROP VIEW DS_NHANVIEN_DEAN

45

You might also like