Bên cạnh các sản phẩm của hãng IBM, cũng cần phải kể đến các hệ quản trị cơ sở dữ liệu nổi tiếng khác như ORACLE của Công ty Oracle, SQL Server của hãng Microsoft, SQLBase của hãng Sybas
Trang 1là SQL/DS trên nền hệ điều hành VM, DB2 trên nền hệ điều hành MVS, Hệ quản trị cơ sở dữ liệu mở rộng trên nền hệ điều hành IBM OS/2, Hệ quản trị cơ sở dữ liệu cho hệ thống IBM AS/400 Năm 1986, Viện tiêu chuẩn quốc gia Hoa kỳ (ANSI ư American National Standards Institute) và Tổ chức Tiêu chuẩn Quốc tế
(ISO ư International Standards Organization) đã thừa nhận SQL như là ngôn
ngữ chuẩn xử lý dữ liệu Ngôn ngữ chuẩn ANSI SQL tiếp tục được cập nhật vào
những năm 1989 và 1992 sau đó Hiện nay một phiên bản mới SQL3 đang được phát triển
SQL được cài đặt cho hệ thống máy tính lớn (mainframe) cũng như máy tính cá nhân Bên cạnh các sản phẩm của hãng IBM, cũng cần phải kể đến các hệ quản trị cơ sở dữ liệu nổi tiếng khác như ORACLE của Công ty Oracle, SQL Server của hãng Microsoft, SQLBase của hãng Sybase, Ingres của hãng Relational Technologies,
2 SQL là ngôn ngữ chuẩn cho các hệ quản trị cơ sở dữ liệu quan hệ
Hệ quản trị cơ sở dữ liệu quan hệ là hệ quản trị cơ sở dữ liệu xử lý dữ liệu
dạng tập hợp các bảng quan hệ, trong đó sự quan hệ giưa các bảng được biểu diễn bằng các giá trị chung trong các bảng liên quan
Để định hướng phát triển các hệ quản trị cơ sở dữ liệu quan hệ, ANSI và ISO
đã phê chuẩn ngôn ngữ truy vấn quan hệ chuẩn SQL được Uỷ ban Kỹ thuật cơ sở dữ liệu X3H2 đưa ra năm 1986
Mục đích của chuẩn SQL là
1 Xác định cú pháp và ngữ nghĩa của ngôn ngữ SQL định nghĩa và thao tác dữ liệu
2 Định nghĩa các cấu trúc dữ liệu và phép toán cơ bản để thiết kế, truy cập, lưu trữ, kiểm soát và bảo vệ cơ sở dữ liệu SQL
3 Cung cấp công cụ đảm bảo tính tương thích của cấu trúc dữ liệu và các modul ứng dụng giữa các hệ quản trị cơ sở dữ liệu
4 Xác định chuẩn tối thiểu (Mức 1) và chuẩn hoàn chỉnh (Mức 2), cho phép các cấp độ sử dụng SQL khác nhau trong các sản phẩm
5 Cung cấp chuẩn ban đầu, có thể chưa hoàn chỉnh, cho phép mở rộng các chức năng xử lý những vấn đề như sự toàn vẹn tham chiếu, giao thức
Trang 2chuyển đổi, các hàm người dùng, các toán tử nối ngoài phép đẳng nối, và các hệ thống ký tự quốc gia,
Một ngôn ngữ quan hệ chuẩn như SQL sẽ mang lại các lợi ích sau đây:
• Giảm thiểu chi phí đào tạo Các hệ quản trị cơ sở dữ liệu có chung ngôn ngữ
chuẩn SQL sẽ làm giảm chi phí chuyển đổi từ hệ này sang hệ khác
• Nâng cao hiệu năng công việc Các chuyên gia hệ thống thông tin với kiến
thức sâu sắc về SQL sẽ nhanh chóng nắm bắt các chương trình ứng dụng của các hệ quản trị cơ sở dữ liệu, vì họ đã quen thuộc với ngôn ngữ của các chương trình này
• Tính khả chuyển của các ứng dụng Các ứng dụng có thể dễ dàng sử dụng
trên các hệ thống khác nhau, nhưng cùng sử dụng SQL
• Tăng tuổi thọ của các ứng dụng Một ngôn ngữ chuẩn có xu hướng tồn tại
thời gian dài, điều đó làm giảm áp lực viết lại chương trình
• Làm giảm sự phụ thuộc vào nhà cung cấp Vì SQL là ngôn ngữ chung nên
người dùng dễ dàng sử dụng nhiều sản phẩm của các nhà cung ứng khác nhau, với giá cả cạnh tranh
• Khả năng giao tiếp giữa các hệ thống chéo các hệ quản trị cơ sở dữ liệu
quan hệ và các chương trình ứng dụng khác nhau có thể dễ dàng giao tiếp và hợp tác để xử lý dữ liệu và thực hiện chương trình người dùng
SQL là ngôn ngữ có cấu trúc Trong câu lệnh của SQL có một số mệnh đề
tuân theo những cú pháp riêng của nó Có 4 loại lệnh trong SQL:
- Các lệnh truy vấn dữ liệu (DML);
- Các lệnh định nghĩa dữ liệu (DDL);
- Các lệnh xử lý cập nhật dữ liệu (DML);
- Các lệnh kiểm soát dữ liệu
SQL thuộc loại ngôn ngữ thế hệ thứ tư (4GL) được nghiên cứu nhiều năm và trở thành tiêu chuẩn quốc tế về kiểm soát dữ liệu SQL kế thừa tính phi thủ tục
của 4GL : Xử lý đồng thời hàng loạt câu lệnh Người dùng chỉ cần nêu ra yêu cầu
về dữ liệu mà không cần biết máy tính xử lý bên trong như thế nào Người dùng
có thể truy xuất nhanh chóng với những CSDL lớn, yêu cầu những xử lý phức tạp tinh vi mà không cần lập trình
Sau đây chúng ta sẽ tìm hiểu các thành phần cơ bản của SQL
Trang 33 Các thành phần cơ bản của SQL
a Kiểu dữ liệu
SQL có các kiểu dữ liệu sau
• INTEGER : Kiểu số nguyên 2 byte -2 147 483 648 → 2 147 483 647
• SMALLINT : Kiểu số nguyên 1 byte - 32 768 → 32 767
• DECIMAL(n,d): Kiểu số thực độ dài n (kể cả dấu), số chữ số thập phân d
• FLOAT : Kiểu số thực khoa học
• CHAR(n) : Kiểu chuỗi ký tự độ dài n
• DATE : Kiểu ngày tháng (ngày/tháng/năm)
• LOGICAL : Kiểu lôgic, nhận giá trị true hoặc false
• VARCHAR(n) : Kiểu chuỗi ký tự độ dài thay đổi, tối đa n ký tự
• LONGVARCHAR : Kiểu chuỗi ký tự độ dài thay đổi (chứa dữ liệu như ghi
Giá trị NULL nghĩa là không xác định, chưa sử dụng được
Trường khoá không thể chấp nhận giá trị NULL
Tất cả các phép toán, ngoại trừ phép toán lô-gic, chứa thành phần có giá trị NULL đều cho kết quả NULL
Trang 54 Các quy ước biểu diễn câu lệnh SQL
Câu lệnh được cấu thành từ các thành phần: từ khoá, thành phần bắt buộc,
thành phần không bắt buộc, thành phần lựa chọn
• Từ khoá là từ dành riêng, có ý nghĩa nhất định trong ngôn ngữ, bắt buộc phải
có trong câu lệnh Không được dùng từ khoá cho mục đích khác, chẳng hạn như
đặt tên cho trường hay bảng
◊ Ví dụ: Trong lệnh
CREATE TABLE
từ CREATE và TABLE là từ khoá
• Thành phần bắt buộc là biểu thức bắt buộc phải có trong câu lệnh, thành
phần bắt buộc được đặt trong dấu ngoặc nhọn < >
◊ Ví dụ: Trong lệnh
CREATE TABLE <bảng>
thành phần bảng là bắt buộc
• Thành phần không bắt buộc là biểu thức không bắt buộc phải có trong câu
lệnh, thành phần không bắt buộc được đặt trong dấu ngoặc vuông [ ]
◊ Ví dụ: Trong lệnh
CREATE TABLE <bảng>
<thuộc tính> <kiểu> [(<kích thước>)] [NOT NULL],
thành phần (<kích thước>), NOT NULL là không bắt buộc
• Thành phần lựa chọn là các thành phần phân cách bởi dấu :
TP1 TP2 TPn Khi đó, nếu được chọn, thì chỉ một trong các thành phần trên được xuất hiện trong câu lệnh
Trang 6ii Ngôn ngữ định nghĩa dữ liệu
Cơ sở dữ liệu (CSDL) là mô hình thực thể phản ánh thế giới thực đ−ợc đề cập
đến, do đó nó là sự trìu t−ợng hoá thế giới thực Cụ thể hơn, CSDL là kho dữ liệu
có tổ chức để đáp ứng mục tiêu kỹ thuật hay quản lý Với ý nghĩa đó, CSDL chính là trái tim của hệ thống thông tin quản lý, là nguồn dữ liệu cho mọi hệ thông tin dựa trên máy tính Dữ liệu trong CSDL phải đ−ợc tổ chức chặt chẽ khoa học sao cho có thể truy cập, cập nhật dễ dàng và xử lý tổng hợp thống kê nhanh chóng Về bản chất CSDL là tập hợp các file dữ liệu (table) có quan hệ logic với nhau đảm bảo giảm thiểu sự d− thừa (chuẩn hoá) và thống nhất dữ liệu (toàn vẹn dữ liệu)
1 Các lệnh về bảng (table)
a Khởi tạo cấu trúc bảng
• Cú pháp
CREATE TABLE <Bảng>
(<thuộc tính 1> <kiểu dữ liệu> [NOT NULL] [DEFAULT <giá trị>],
<thuộc tính 2> <kiểu dữ liệu> [NOT NULL] [DEFAULT <giá trị>],
- Tạo cấu trúc bảng PHONG:
CREATE TABLE PHONG
(MaPhong CHAR(3) NOT NULL,
TenPhong CHAR(20))
- Tạo cấu trúc bảng NHANVIEN :
CREATE TABLE NHANVIEN
(Manv CHAR(4) NOT NULL,
Tennv CHAR(20) DEFAULT ‘Nguyễn Văn ‘ ,
GioiTinh CHAR(1) ,
DiaChi CHAR(30) DEFAULT ‘Đà nẵng’ ,
HSLuong DECIMAL(5,2),
MaPhong CHAR(3) NOT NULL )
Ghi chú: GioiTinh = '+' là nam, '−' là nữ
Trang 7b Các chức năng tăng cường sự toàn vẹn CSDL (Integrity Enhancement Feature)
• Thiết lập ràng buộc đơn thuộc tính:
CREATE TABLE <bảng>
( ,
<thuộc tính> <kiểu dữ liệu>
CONSTRAINT <tên ràng buộc> <CHECK <điều kiện>
UNIQUE PRIMARY KEY
REFERENCES <Bảng ngoại> [(<thuộc tính ngoại>)]
[ON DELETE SET <NULLDEFAULT <giá trị> >]
[ON UPDATE SET CASCADE]>,
)
Ràng buộc <tên ràng buộc> được khai báo cùng với thuộc tính Các ràng buộc
tuỳ chọn có ý nghĩa như sau:
- CHECK <điều kiện> : Kiểm tra <điều kiện> ràng buộc của thuộc tính
- UNIQUE : Thuộc tính khoá, có giá trị duy nhất
- PRIMARY KEY : Thuộc tính khoá chính, có giá trị duy nhất
- REFERENCES : Thuộc tính tham chiếu đến <bảng ngoại> Nếu thuộc tính được tham chiếu khác tên thì phải khai báo thành phần < thuộc tính ngoại>
ON DELETE SET <NULLDEFAULT <giá trị>>: Trường hợp hàng được tham chiếu trong <bảng ngoại> bị xoá thì giá trị thuộc tính được gán NULL hoặc giá trị mặc định khai báo sau DEFAULT
ON UPDATE SET CASCADE : Trường hợp <thuộc tính ngoại> của hàng
được tham chiếu trong <bảng ngoại> bị sửa thì giá trị thuộc tính được cập nhật theo
• Thiết lập ràng buộc đa thuộc tính
CREATE TABLE <bảng>
( ,
<thuộc tính cuối> <kiểu dữ liệu>,
CONSTRAINT <tên ràng buộc> <CHECK <điều kiện>
UNIQUE (<ds trường khoá>)
PRIMARY KEY (<ds trường khoá chính>)
FOREIGN KEY (<ds trường tham chiếu>) REFERENCES
<Bảng ngoại> [(<ds trường ngoại>)]
[ON DELETE SET <NULLDEFAULT <giá trị> >]
[ON UPDATE SET CASCADE]> )
Ràng buộc <tên ràng buộc> được khai báo độc lập, sau thuộc tính cuối cùng
Các ràng buộc tuỳ chọn có ý nghĩa như sau:
- CHECK <điều kiện> : Kiểm tra <điều kiện> ràng buộc liên thuộc tính
Trang 8- UNIQUE : Danh sách trường khoá, có giá trị duy nhất
- PRIMARY : Danh sách trường khoá chính, có giá trị duy nhất
- FOREIGN KEY (<ds trường tham chiếu>) REFERENCES : Danh sách trường tham chiếu đến <bảng ngoại> Nếu các trường được tham chiếu có tên khác thì phải khai báo thành phần <ds trường ngoại>
Thành phần ON DELETE và ON UPDATE có công dụng như ở lệnh trước
• Thiết lập ràng buộc liên bộ
CREATE ASSERTION <tên ràng buộc>
CHECK (<điều kiện ràng buộc liên bộ>)
Thiết lập ràng buộc toàn cục (assertion) <tên ràng buộc>
◊ Ví dụ
- Tạo cấu trúc bảng PHONG:
CREATE TABLE PHONG
(MaPhong CHAR(3) CONSTRAINT kcphong PRIMARY KEY,
TenPhong CHAR(20))
- Tạo cấu trúc bảng NHANVIEN :
CREATE TABLE NHANVIEN
(Manv CHAR(4) CONSTRAINT kcnhanvien PRIMARY KEY,
Tennv CHAR(20) DEFAULT ‘Nguyễn Văn ‘ ,
GioiTinh CHAR(1) CONSTRAINT gtgioitinh CHECK (GioiTinh IN (‘+’,’ư’,'0')),
NgaySinh DATE,
NgayLV DATE,
CMND CHAR(12) CONSTRAINT kcmnd UNIQUE,
DiaChi CHAR(30),
HSLuong DECIMAL(5,2) CONSTRAINT gthsluong CHECK
(HSLuong >=1 AND HSLuong <= 10), MaPhong CHAR(3) NOT NULL CONSTRAINT tcmaphong
REFERENCES PHONG,
CONSTRAINT rbNgay CHECK (NgaySinh < NgayLV))
- Tạo ràng buộc liên bộ tổng lương không vượt quá 1 000 000 000:
CREATE ASSERTION tongluong
CHECK (SELECT SUM(HSLuong*730000) FROM NHANVIEN <=
1 000 000 000)
◊ Ví dụ: Tạo lược đồ cơ sở dữ liệu quan hệ Khách-Hàng
- Tạo cấu trúc bảng KHACH(Ten, DiaChi, SoDu), trong đó khóa chính là số dư:
CREATE TABLE KHACH
(Ten CHAR(20) CONSTRAINT kckhach PRIMARY KEY,
DiaChi CHAR(20),
SoDu DECIMAL(10,0))
Trang 9- Tạo cấu trúc bảng HOPDONG(Sohd, TenKh, Hang, SoLuong):
CREATE TABLE HOPDONG
(Sohd CHAR(4) CONSTRAINT kchopdong PRIMARY KEY, TenKh CHAR(20) CONSTRAINT tcten REFERENCES
KHACH(Ten),
Hang CHAR(20),
SoLuong DECIMAL(8,0) CONSTRAINT gtsoluong CHECK (SoLuong>0))
- Tạo cấu trúc bảng CUNGUNG(Ten, DiaChi, Hang, DonGia):
CREATE TABLE CUNGUNG
CONSTRAINT kccungung PRIMARY KEY (Ten, Hang))
c Hiệu chỉnh cấu trúc dữ liệu
DROP [COLUMN] < thuộc tính >
• Thay đổi tính chất thuộc tính
ALTER TABLE < Bảng>
CHANGE COLUMN < thuộc tính > [<Kiểu dữ liệu>] [CONSTRAINT ]
Ghi chú Trong ORACLE: CHANGE thay bằng MODIFY; trong VISUAL
FOXPRO: CHANGE thay bằng ALTER
• Thay đổi tên thuộc tính
ALTER TABLE < Bảng>
RENAME COLUMN < thuộc tính cũ> TO <thuộc tính mới>
• Thêm ràng buộc đa thuộc tính
Trang 10ADD COLUMN NoiSinh CHAR(30) INIT = ‘Đà nẵng’
- Xoá thuộc tính DiaChi khỏi bảng NHANVIEN :
ALTER TABLE NHANVIEN
DROP COLUMN DiaChi
- Thay đổi kích thước của thuộc tính Tennv :
ALTER TABLE NHANVIEN
CHANGE COLUMN Tennv CHAR(30)
- Đổi tên thuộc tính Tennv thành HoTen:
ALTER TABLE NHANVIEN
RENAME COLUMN Tennv TO HoTen
- Xóa ràng buộc :
ALTER TABLE NHANVIEN
DROP CONSTRAINT kcnhanvien
ALTER TABLE NHANVIEN
DROP CONSTRAINT kcmnd
- Thêm ràng buộc:
ALTER TABLE NHANVIEN
ADD CONSTRAINT kcnhanvien PRIMARY KEY (CMND)
ALTER TABLE NHANVIEN
ADD CONSTRAINT kmanv UNIQUE (manv)
Trang 11DROP TABLE PHONG
e Tạo và xoá bí danh bảng
Bí danh thường là tên ngắn gọn của bảng, làm đơn giản câu lệnh
Tạo và xoá bí danh NV cho bảng NHANVIEN :
CREATE SYNONYM NV FOR NHANVIEN
DROP SYNOMYM NV
Trang 122 Các lệnh về chỉ mục (index)
Chỉ mục là một file riêng đi kèm với bảng CSDL quan hệ, dùng để tăng tốc độ
truy cập xử lý dữ liệu Chỉ mục có hai cột Cột thứ nhất chứa các giá trị của chỉ mục Cột thứ hai chứa các số hiệu bản ghi của giá trị khoá-chỉ mục tương ứng
khoá-Để tìm giá trị của khoá-chỉ mục, hệ thống sẽ tìm trên cột thứ nhất của chỉ mục, sau đó chiếu sang cột thứ 2 để xác định bản ghi tương ứng
• Khởi tạo chỉ mục
- Tạo chỉ mục CMMANV theo khoá Manv cho bảng NHANVIEN
CREATE INDEX CMMANV
DROP INDEX <Chỉ mục>
• Công dụng: Xoá chỉ mục <Chỉ mục>
◊ Ví dụ : Xoá chỉ mục CMHD
DROP INDEX CMHD
Trang 13VALUE (<danh s¸ch gi¸ trÞ>)
• C«ng dông : ChÌn b¶n ghi míi vµ ®iÒn gi¸ trÞ trong <danh s¸ch gi¸ trÞ> vµo c¸c
cét cña <B¶ng> theo tr×nh tù vËt lý (nÕu kh«ng cã <danh s¸ch thuéc tÝnh>) hoÆc theo thø tù c¸c cét trong <danh s¸ch thuéc tÝnh>
◊ VÝ dô
- ChÌn b¶n ghi vµo b¶ng KHACH(Ten, DiaChi, SoDu) :
INSERT INTO KHACH
VALUE ('KS S«ng Hµn', '20 B¹ch §»ng', 0)
- ChÌn b¶n ghi vµo b¶ng NHANVIEN chØ cã mét sè gi¸ trÞ :
INSERT INTO NHANVIEN
(Manv, Tennv, GioiTinh)
SET <thuéc tÝnh 1> = <biÓu thøc 1> [, ]
[WHERE <®iÒu kiÖn>]
• C«ng dông : CËp nhËt <B¶ng>, g¸n gi¸ trÞ <biÓu thøc 1> cho <thuéc tÝnh 1>,
cña b¶n ghi hiÖn hµnh
NÕu cã tuú chän WHERE <®iÒu kiÖn> th× phÐp cËp nhËt thùc hiÖn víi tÊt c¶ c¸c b¶n ghi tho¶ <®iÒu kiÖn>
Trang 14WHERE (Ten = 'Cty L−¬ng thùc') AND (Hang = '§−êng')
3 Xo¸ b¶n ghi
• Có ph¸p
DELETE FROM <B¶ng>
[WHERE <®iÒu kiÖn>]
• C«ng dông : Xo¸ b¶n ghi hiÖn hµnh cña <B¶ng>
NÕu cã tuú chän WHERE <®iÒu kiÖn> th× xo¸ tÊt c¶ c¸c b¶n ghi tho¶ <®iÒu kiÖn>
◊ VÝ dô
Cty C«ng nghÖ phÈm ng−ng b¸n cµ phª :
DELETE FROM CUNGUNG
WHERE (Ten = 'Cty C«ng nghÖ phÈm') AND (Hang = 'Cµ phª')
Trang 15iv Ngôn ngữ truy vấn dữ liệu
1 Phép toán cơ bản của SQL là mệnh đề truy vấn có điều kiện
• Cú pháp tổng quát
SELECT [DISTINCT] <biểu thức 1> [AS <tên 1>] [, ] | *
FROM <bảng 1> [<bí danh 1>] [, ]
[INTO <dbf đích>]
[WHERE <điều kiện nối > [AND | OR <điều kiện lọc>]]
[ORDER BY <biểu thức sắp xếp 1> [ASC | DESC] [, ]]
[GROUP BY <cột nhóm 1> [, ]
[HAVING <điều kiện nhóm>]]
[UNION | INTERSECT | MINUS
< câu truy vấn khác>]
• Các thành phần cơ bản của câu lệnh
+ Biểu thức sau SELECT có thể bao gồm :
- Danh sách các cột, kể cả các biểu thức chứa các cột, của các bảng hoặc khung nhìn khai báo sau FROM Các biểu thức ngăn cách nhau bằng dấu phảy (,)
và có thể đổi tên bằng tuỳ chọn AS <tên >
- * là ký tự đại diện tất cả các thuộc tính của bảng sau FROM
- Các hàm tính toán : COUNT, SUM, AVG, MIN, MAX
+ Biểu thức sau FROM gồm một hoặc danh sách các bảng quan hệ (có thể đặt
bí danh)
+ INTO <dbf đích>: Lưu bảng kết quả vào đĩa
+ Biểu thức sau WHERE bao gồm:
- Các thuộc tính của các bảng quan hệ sau FROM
- Các toán tử số học : + (cộng), ư (trừ) , * (nhân) , / (chia)
- Các toán tử so sánh, có thể so sánh với ANY (giá trị nào đó trong 1 tập hợp) hoặc ALL (tất cả giá trị trong 1 tập hợp)
- Các toán tử Boolean : AND (và), OR (hoặc), NOT (phủ định)
- Các toán tử tập hợp : UNION (hợp), INTERSECT (giao), MINUS (hiệu)
- Các quan hệ bao hàm : IN (∈), NOT IN (∉), CONTAINS (chứa), DOES NOT CONTAIN (không chứa)
- <biểu thức> BETWEEN < biểu thức 1> AND < biểu thức 2> : biểu diễn
điều kiện < biểu thức 1> ≤ <biểu thức> ≤ < biểu thức 2>
- <biểu thức> NOT BETWEEN < biểu thức 1> AND < biểu thức 2> : biểu diễn điều kiện <biểu thức> < < biểu thức 1> hoặc <biểu thức> > < biểu thức 2>
- <biểu thức ký tự> [NOT] LIKE <chuỗi ký tự> : biểu diễn điều kiện
<biểu thức ký tự> [không] giống <chuỗi ký tự>
Trong <chuỗi ký tự> có thể dùng dấu
% (dấu phần trăm) đại diện cho chuỗi ký tự bất kỳ
_ (dấu nối) đại diện cho một ký tự bất kỳ
- <trường> IS [NOT] NULL: biểu diễn điều kiện giá trị <trường> là [khác]
NULL
- Điều kiện tồn tại : EXISTS (tồn tại), NOT EXISTS (không tồn tại)
Trang 16- Câu vấn tin con kiểu SELECT FROM WHERE
- Tạo bảng kết quả gồm tất cả các cột và các bộ của bảng CUNGUNG(Ten,
DiaChi, Hang, DonGia)
SELECT *
FROM CUNGUNG
- Tạo bảng kết quả gồm 2 cột Hang, DonGia của bảng CUNGUNG
SELECT Hang, DonGia
- Có thể cho hiển thị giá trị hằng, chẳng hạn
SELECT “Mặt hàng”, Hang, “có đơn giá là”, DonGia