Download as pdf or txt
Download as pdf or txt
You are on page 1of 49

TRƯỜNG ĐẠI HỌC KINH TẾ

KHOA THỐNG KÊ –TIN HỌC

CHƯƠNG 4 (P1).
NGÔN NGỮ ĐỊNH NGHĨA,
THAO TÁC DỮ LIỆU SQL

Giảng viên:
TS. Nguyễn Thị Uyên Nhi
nhintu@due.edu.vn
n
NỘI DUNG CHƯƠNG

01 TỔNG QUAN VỀ SQL

02 NGÔN NGỮ ĐỊNH NGHĨA DỮ LIỆU

03 NGÔN NGỮ THAO TÁC DỮ LIỆU

04 CÁC TOÁN TỬ TRONG SQL

05 CÁC HÀM HỆ THỐNG TRONG SQL

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 2


TỔNG QUAN VỀ SQL
▪ SQL (Structured Query Language - ngôn ngữ truy vấn mang tính cấu trúc) là
một loại ngôn ngữ máy tính phổ biến để tạo, sửa, và lấy dữ liệu từ một hệ quản
trị cơ sở dữ liệu quan hệ.
▪ Tiêu chuẩn SQL đã trải qua một số phiên bản:
Năm Tên Tên khác Chú giải
Được công bố đầu tiên bởi ANSI. Được phê
1986 SQL-86 SQL-87
chuẩn bởi ISO năm 1987.
1989 SQL-89 Thay đổi nhỏ.
1992 SQL-92 SQL2 Thay đổi lớn.
1999 SQL:1999 SQL3
2003 SQL:2003

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 3


TỔNG QUAN VỀ SQL
▪ Ngôn ngữ SQL gồm:
Nhóm lệnh Lệnh Chú giải
Ngôn ngữ định nghĩa dữ liệu CREATE, ALTER, Là những lệnh dùng để tạo ra, thay đổi hoặc
DDL (Data Definition Language) DROP xóa bỏ cấu trúc dữ liệu (bảng)
Ngôn ngữ thao tác dữ liệu INSERT, UPDATE, Là những lệnh dùng để thay đổi dữ liệu có
DML (Data Manipulation Language) DELETE trong các bảng của cơ sở dữ liệu
Ngôn ngữ truy vấn dữ liệu Đây là lệnh phổ dụng nhất. Dùng để lấy dữ liệu
SELECT
DQL (Data Query Language) trong cơ sở dữ liệu.
COMMIT,
Kiểm soát giao dịch Dùng để quản lý các giao dịch trong cơ sở dữ
ROLLBACK, SAVE
Transaction Control liệu.
POINT
Ngôn ngữ kiểm soát dữ liệu Cấp quyền hoặc hủy quyền của người dùng
GRANT, REVOLE
DCL (Data Control Language) trên đối tượng của cơ sở dữ liệu.

▪ Khi viết lệnh SQL, KHÔNG phân biệt chữ HOA, chữ thường trong cú pháp và tên
bảng.
Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 4
TỔNG QUAN VỀ SQL

▪ Các kiểu dữ liệu của SQL


✓Là tập các giá trị nguyên tố gắn liền với một thuộc tính
✓Các kiểu dữ liệu cơ bản

Loại Kiểu dữ liệu


Chữ CHAR, NCHAR, VARCHAR, NVARCHAR
Số NUMERIC, FLOAT, INT
Thời gian DATE, TIME, DATETIME
Các loại khác LONG, CLOB, ROWID, …

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 5


TỔNG QUAN VỀ SQL

▪ Kiểu chuỗi
CÚ PHÁP KÍCH THƯỚC DIỄN GIẢI
• kich_thuoc là số kí tự lưu trữ.
• Độ dài cố định.
•Chứa kí tự ASCII.
CHAR(kich_thuoc) Tối đa 8000 kí tự.
•Nếu nhập vào chuỗi có độ dài nhỏ hơn độ dài đã khai báo thì SQL
Server tự động thêm dấu cách phía đuôi chuỗi để đảm bảo độ dài luôn
luôn cố định. Nếu độ dài chuỗi lớn hơn giá trị n, SQL Server sẽ báo lỗi.
NCHAR(kich_thuoc) Tối đa 4000 kí tự. • Giống Char nhưng có kí tự Unicode.
• Độ dài tùy biến.
• Nếu chỉ định là toi_da thì tối đa là 2GB.
VARCHAR(kich_thuoc) Tối đa 8000 kí tự
•Không có độ dài mặc định, chính vì vậy, nếu không khai báo độ dài thì
hoặc VARCHAR(toi_da) hoặc theo số tối đa.
SQL Server sẽ báo lỗi
• Chứa kí tự ASCII.
NVARCHAR(kich_thuoc) Tối đa 4000 kí tự
• Giống Varchar nhưng có kí tự Unicode.
hoặc NVARCHAR(toi_da) hoặc theo số tối đa.

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 6


TỔNG QUAN VỀ SQL

▪ Kiểu số
CÚ PHÁP KÍCH THƯỚC DIỄN GIẢI
BIT số nguyên 0, 1 hoặc NULL
TINYINT từ 0 đến 255
SMALLINT từ -32768 đến 32767
INT -2,147,483,648 đến 2,147,483,647
từ -9,223,372,036,854,775,808 đến
BIGINT
9,223,372,036,854,775,807
số dấu phẩy động n mặc định là 53 nếu không được n là số lượng của số bit lưu trữ trong một
FLOAT(n)
chỉ định cụ thể. kí hiệu hóa học.
- m mặc định là 18 nếu không được chỉ định cụ
m là tổng số lượng các số còn d là số
DECIMAL(m,d) thể.
lượng các số nằm sau dấu phẩy.
- d mặc định là 0 nếu không được chỉ định cụ thể.
•m mặc định là 18 nếu không được chỉ định cụ thể. m là tổng số lượng các số còn d là số
NUMERIC(m,d)
•d mặc định là 0 nếu không được chỉ định cụ thể. lượng các số nằm sau dấu phẩy.

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 7


TỔNG QUAN VỀ SQL
▪ Kiểu ngày tháng, thời gian
CÚ PHÁP KÍCH THƯỚC DIỄN GIẢI
DATE giá trị từ '0001-01-01' đến '9999-12-31. hiển thị dưới dạng ‘YYYY-MM-DD’
•Ngày lấy từ '1753-01-01 00:00:00' to '9999-12-31
hiển thị dưới dạng ‘YYYY-MM-DD
DATETIME 23:59:59'.
hh:mm:ss[.mmm]
•Giờ lấy từ '00:00:00' to '23:59:59:997'
DATETIME2(chính xác •giá trị lấy từ '0001-01-01' đến '9999-12-31'. hiển thị dưới dạng 'YYYY-MM-DD
tới số thập phân của giây) •Thời gian lấy từ '00:00:00' đến '23:59:59:9999999'. hh:mm:ss[.số giây thập phân]'
•giá trị lấy từ '1900-01-01' đến '2079-06-06'. hiển thị dưới dạng 'YYYY-MM-DD
SMALLDATETIME
•Thời gian lấy từ '00:00:00' đến '23:59:59'. hh:mm:ss
•giá trị lấy từ '00:00:00.0000000' đến
hiển thị dưới dạng 'YYYY-MM-DD
TIME '23:59:59.9999999'.
hh:mm:ss[.nnnnnnn]'
•Ngày lấy từ '0001-01-01' đến '9999-12-31'.

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 8


NGÔN NGỮ ĐỊNH NGHĨA
DỮ LIỆU
1. Định nghĩa CSDL
2. Định nghĩa Bảng

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 9


ĐỊNH NGHĨA CƠ SỞ DỮ LIỆU
▪ Một DATABASE gồm nhiều bảng (TABLE), mỗi bảng được xác định bằng một
tên, bảng chứa dữ liệu có cấu trúc và các ràng buộc (CONSTRAINT). Ngoài ra,
Database còn có khung nhìn (VIEW), các thủ tục/ hàm….
▪ DATABASE của SQL Server được lưu trữ dưới 3 loại tập tin:
✓Tập tin dữ liệu (Data-file): gồm 1 tập tin lưu trữ dữ liệu chính (*.mdf) chứa các dữ liệu
khởi đầu và các tập tin dữ liệu thứ cấp (*.ndf) chứa dữ liệu phát sinh hoặc không lưu hết
trong tập tin lưu trữ chính.
✓Tập tin nhật ký thao tác (*.ldf) chứa thông tin giao tác, thường dùng để khôi phục
Database nếu xảy ra sự cố.
▪ Mỗi CSDL (trong MS SQL Server) có tên duy nhất
✓Sau khi chạy, đọc thông báo thành công hay thất bại trong cửa sổ Message.
✓Dựa vào thông báo lỗi để biết được nguyên nhân lỗi.
✓Sau khi chạy lệnh tạo CSDL, nhớ refresh Database
Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 10
ĐỊNH NGHĨA CƠ SỞ DỮ LIỆU
▪ TẠO CSDL
✓Tạo CSDL bằng giao diện GUI
✓Tạo CSDL bằng lệnh
• Tạo CSDL đơn giản không tham số
CREATE DATABASE <NAME>
• Tạo CSDL chỉ định đường dẫn nơi chứa CSDL:
CREATE DATABASE <NAME>
ON (
NAME = ‘Name_Data',
FILENAME = ‘D:\Name_Data.mdf',
SIZE = size [ KB | MB | GB | TB ],
MAXSIZE = max_size [ KB | MB | GB | TB ],
FILEGROWTH = growth_increment [ KB | MB | GB | TB ])
LOG ON (
NAME = ‘Name_Log',
FILENAME = ‘D:\Name_Log.ldf',
SIZE = size [ KB | MB | GB | TB ],
MAXSIZE = max_size [ KB | MB | GB | TB ],
FILEGROWTH = growth_increment [ KB | MB | GB | TB ])

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 11


ĐỊNH NGHĨA CƠ SỞ DỮ LIỆU
▪ Ví dụ: Tạo cơ sở dữ liệu quản lý sinh viên
▪ Cách 1:
CREATE DATABASE QLSV
Cách 2:
CREATE DATABASE QLSV
ON (
NAME = ‘QLSV_Data',
FILENAME = 'D:\QLSV_Data.mdf',
SIZE = 10MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 5MB)
LOG ON (
NAME = ‘QLSV_Log',
FILENAME = 'D:\QLSV_Log.ldf',
SIZE = 5MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 2MB)
Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 12
ĐỊNH NGHĨA CƠ SỞ DỮ LIỆU
▪ CHỈNH SỬA CSDL
✓Chỉnh sửa CSDL bằng giao diện GUI
✓Chỉnh sửa CSDL bằng lệnh
• Lệnh ALTER DATABASE dùng để sửa CSDL (sửa tên, điều chỉnh trạng thái, thay đổi đường dẫn lưu
file vật lý…) trong Microsoft SQL Server.
• Cú pháp:
ALTER DATABASE Tên_CSDL_cũ
MODIFY NAME = Tên_CSDL_mới
• Ví dụ:
ALTER DATABASE QLSV
MODIFY NAME = QLSV_NEW

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 13


ĐỊNH NGHĨA CƠ SỞ DỮ LIỆU
▪ XÓA CSDL
✓Xóa CSDL bằng giao diện GUI
✓Xóa CSDL bằng lệnh
• Lệnh DROP DATABASE dùng để xóa CSDL trong Microsoft SQL Server.
• Cú pháp:
DROP DATABASE Tên_CSDL
• Ví dụ:
DROP DATABASE QLSV

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 14


ĐỊNH NGHĨA BẢNG
▪ Bảng có cấu trúc gồm các cột (column) và các dòng (row).
▪ Trong CSDL bảng phải có khoá chính (primary key).
▪ Bảng dùng để lưu trữ dữ liệu, các thông tin của một đối tượng trong thực tế.
▪ Các bảng thường liên hệ với nhau bằng các mối quan hệ (Khóa ngoại).
▪ Tạo bảng cho CSDL nào, phải sử dụng CSDL bằng lệnh: USE <Tên CSDL>
▪ Quy tắc đặt tên bảng:
✓Không quá 50 ký tự
✓Tên bảng bắt đầu bằng chữ cái
✓Tên bảng/cột không dùng những cụm từ đã có sẵn trong SQL Server (ví dụ: NUMERIC)
✓Tên cột phải duy nhất trong bảng

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 15


ĐỊNH NGHĨA BẢNG: TẠO BẢNG
▪ Để định nghĩa một bảng
✓Tên bảng
✓Các thuộc tính
• Tên thuộc tính
• Kiểu dữ liệu
• Các ràng buộc toàn vẹn (RBTV) trên thuộc tính
▪ Cú pháp:
CREATE TABLE <Tên_bảng> (
<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>],
<Tên_cột> <Kiểu_dữ_liệu> [<RBTV>],

[<RBTV>]
)

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 16


ĐỊNH NGHĨA BẢNG: TẠO BẢNG
▪ Ví dụ: Tạo bảng TAIKHOAN không có RBTV
create table KHOA
(
MAKHOA char(10),
TENKHOA nvarchar(50),
NgayTL date
)

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 17


ĐỊNH NGHĨA BẢNG: TẠO BẢNG
▪ Các RBTV:
✓NOT NULL
✓UNIQUE (Khóa chỉ định)
✓DEFAULT
✓PRIMARY KEY
✓FOREIGN KEY / REFERENCES
✓CHECK
▪ Đặt tên cho RBTV
CONSTRAINT <Ten_RBTV> <RBTV>

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 18


ĐỊNH NGHĨA BẢNG: TẠO BẢNG
▪ Các RBTV:
✓NOT NULL: Là ràng buộc không cho phép cột chứa giá trị NULL (để trống).
✓Ví dụ:
create table KHOA
(
MAKHOA char(10),
TENKHOA nvarchar(50),
NgayTL date not null
)
→ Giá trị tại cột NGAYTL không được để trống

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 19


ĐỊNH NGHĨA BẢNG: TẠO BẢNG
▪ Các RBTV:
✓UNIQUE (Khóa chỉ định): Ràng buộc này quy định giá trị của một cột (hoặc một số cột)
phải là duy nhất (không cho phép giá trị trùng lặp).
✓Ví dụ:
create table KHOA create table KHOA
( (
MAKHOA char(10), MAKHOA char(10),
TENKHOA nvarchar(50) unique, TENKHOA nvarchar(50),
NgayTL date not null NgayTL date not null,
) constraint UNQ_TENKHOA unique(TENKHOA)
)

→ Trong bảng KHOA, TENKHOA là duy nhất, không được trùng lặp

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 20


ĐỊNH NGHĨA BẢNG: TẠO BẢNG
▪ Các RBTV:
✓DEFAULT: Ràng buộc DEFAULT được sử dụng để thiết lập một giá trị mặc định cho một
cột. Giá trị mặc định (DEFAULT) sẽ được thêm vào tất cả các bản ghi mới, nếu không có
giá trị khác được chỉ định.
✓Ví dụ:
create table KHOA
(
MAKHOA char(10),
TENKHOA nvarchar(50) unique,
NgayTL date default '01-01-2020'
)

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 21


ĐỊNH NGHĨA BẢNG: TẠO BẢNG
▪ Các RBTV:
✓PRIMARY KEY: Cũng đưa ra ràng buộc về tính duy nhất của giá trị trong cột giống như
UNIQUE nhưng cao cấp hơn. Mỗi bảng chỉ có một khóa chính. Khóa chính được tạo
thành từ một hoặc một số cột. Những cột đóng vai trò làm khóa chính không được phép
chứa giá trị NULL.
✓Ví dụ:
create table KHOA create table KHOA
( (
MAKHOA char(10) primary key, MAKHOA char(10) primary key,
TENKHOA nvarchar(50) unique, TENKHOA nvarchar(50) unique,
NgayTL date default '01-01-2020' NgayTL date default '01-01-2020’,
) primary key (MAKHOA)
)

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 22


ĐỊNH NGHĨA BẢNG: TẠO BẢNG
▪ Các RBTV:
✓FOREIGN KEY / REFERENCES: Chỉ ra mối ràng buộc tham chiếu giữa bảng này với
bảng khác
✓Ví dụ: CREATE TABLE SINHVIEN
(
MASV char(12) primary key, TENSV nvarchar(50),
Ngsinh date, MAKHOA char(10),
foreign key (MAKHOA) references KHOA(MAKHOA)
)

CREATE TABLE SINHVIEN


(
MASV char(12) primary key, TENSV nvarchar(50),
Ngsinh date,
MAKHOA char(10) foreign key references KHOA(MAKHOA)
)

→ Bảng SINHVIEN liên kết với bảng KHOA thông qua khóa ngoại MAKHOA
Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 23
ĐỊNH NGHĨA BẢNG: TẠO BẢNG
▪ Các RBTV:
✓CHECK: Ràng buộc này dùng để kiểm tra miền giá trị của một cột xác định
✓Ví dụ:
CREATE TABLE SINHVIEN
(
MASV char(12) primary key, TENSV nvarchar(50),
Ngsinh date, MAKHOA char(10),
foreign key (MAKHOA) references KHOA(MAKHOA) ,
CONSTRAINT ck_D check(Ngsinh < Getdate())
)

✓Trong ví dụ trên:
• Ngsinh phải diễn ra trước Ngay hiện tại.
• ck_D là tên ràng buộc do người dùng tự đặt.

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 24


ĐỊNH NGHĨA BẢNG: SỬA BẢNG
▪ Lệnh ALTER TABLE dùng để sửa cấu trúc bảng trong CSDL
▪ Cú pháp:
✓Thêm cột
ALTER TABLE Tên_bảng ADD Tên_cột Kiểu_dữ_liệu
Ví dụ: ALTER TABLE SINHVIEN ADD GIOITINH bit
✓ Thay đổi kiểu dữ liệu của cột
ALTER TABLE Tên_bảng ALTER COLUMN Tên_cột Kiểu_dữ_liệu
Ví dụ: ALTER TABLE SINHVIEN ALTER COLUMN TENSV nvarchar(100)
✓Xóa cột
ALTER TABLE Tên_bảng DROP COLUMN Tên_cột

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 25


ĐỊNH NGHĨA BẢNG: SỬA BẢNG
✓Thêm ràng buộc
ALTER TABLE Tên_bảng ADD CONSTRAINT tên_ràng_buộc loại_ràng_buộc

Ví dụ:
ALTER TABLE SINHVIEN ADD
CONSTRAINT ck_D CHECK((Ngsinh < Getdate())),
CONSTRAINT FK_TK FOREIGN KEY (MAKHOA) REFERENCES KHOA (MAKHOA)
✓Xóa ràng buộc
ALTER TABLE Tên_bảng DROP CONSTRAINT tên_ràng_buộc

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 26


ĐỊNH NGHĨA BẢNG: XÓA BẢNG
▪ Lệnh DROP TABLE dùng để xóa bảng trong CSDL (xóa cả dữ liệu và cấu trúc
bảng).
▪ Cú pháp:
DROP TABLE Tên_bảng
▪ Một số chú ý:
✓Khi DROP TABLE thì xóa cấu trúc và toàn bộ dữ liệu của bảng.
✓Khi Xóa Bảng cần xóa các tham chiếu khóa ngoại đến bảng trước

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 27


NGÔN NGỮ THAO TÁC
DỮ LIỆU
1. Thêm Dữ liệu
2. Sửa Dữ liệu
3. Xóa Dữ liệu

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 28


THÊM DỮ LIỆU VÀO BẢNG
▪ Lệnh INSERT dùng để thêm mới dữ liệu vào bảng
▪ Cần lưu ý thứ tự nhập vào Bảng.
▪ Cú pháp:
✓Thêm giá trị cho tất cả các cột trong bảng:
INSERT INTO table_name(Col1,Col2,Col3,.......)
VALUES (Val1, Val2,Val3,.....),
(Val11, Val21,Val31,.....)…
• Khi thêm cần đảm bảo thứ tự val1, val2, ... phải tương ứng với col1, col2, … (cấu trúc mặc định khi tạo
bảng)
✓Thêm giá trị cho các cột tùy chọn trong bảng:
INSERT INTO Tên_bảng (col1, col2, …) VALUES (val1, val2, …)
▪ Lưu ý khi nhập dữ liệu:
✓Từ khóa INTO có hoặc không đều không gây ảnh hưởng đến cấu trúc lệnh.
✓Dữ liệu nhập liệu cần được lưu tuần tự tương ứng thứ tự column đã chọ

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 29


THÊM DỮ LIỆU VÀO BẢNG
▪ Mỗi column được gán một kiểu dữ liệu riêng. Vì vậy, quá trình nhập liệu cũng
cần tuân thủ nguyên tắc để dữ liệu nhập vào không bị lỗi.
Kiểu dữ liệu Dữ liệu nhập vào
Dữ liệu nhập vào nằm trong dấu ngoặc đơn ‘’. Nếu DL rỗng thì không điền thêm ký tự nào
char(n)/ giữa dấu ‘’.
varchar(n) Ví dụ: MaSV char(10)
→ ‘120342343'
Tương tự char/varchar nhưng có thể sử dụng tiếng việt bằng cách thêm tiền tố N
nchar(n)/
Ví dụ: Hoten nvarchar(50)
nvarchar(n)
→ N'Nguyễn Văn Long'
Giá trị mặc định là 0/0.0, giá trị nhập vào thuộc kiểu số nguyên.
Ví dụ: Soluong int
int / float → 189
Diem float
→ 8.75

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 30


THÊM DỮ LIỆU VÀO BẢNG
▪ Mỗi column được gán một kiểu dữ liệu riêng. Vì vậy, quá trình nhập liệu cũng
cần tuân thủ nguyên tắc để dữ liệu nhập vào không bị lỗi.
Kiểu dữ liệu Dữ liệu nhập vào
Giá trị mặc định là NULL (rỗng). Chỉ nhập được giá trị 0 hoặc 1 (TRUE or FALSE)
bit Ví dụ: Gioitinh bit
→ 1 --Nam
Giá trị mặc định là NULL (rỗng), giá trị nhập vào thuộc kiểu số thực
money Ví dụ: LUONG money
→ 9500000
Giá trị mặc định là lệnh GETDATE() để lấy ngày của hệ thống, giá trị nhập vào theo caaud
trúc ‘yyyy-mm-dd’ hoặc ‘yyyy-mm-dd HH:MI:SS’ .
Date/datetime
Ví dụ: ngaysinh date
‘1985-03-20'

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 31


THÊM DỮ LIỆU VÀO BẢNG
▪ Ví dụ:
INSERT SINHVIEN (MASV, TENSV, Sodienthoai, Diachi, Ngaysinh, Gioitinh, Makhoa) VALUES
('191577439',N'Nguyễn Thu Mai','0937778790',N'Hòa Vang, Đà Nẵng','1995-05-09',0,'TKTH'),
('174308463',N'Phan Trọng Nghĩa','0764342520',N'Ba Đình, Hà Nội','2000-12-27’,1,'TMDT')

▪ Lấy giá trị từ bảng khác để thêm mới cho bảng


INSERT INTO Tên_bảng (cột1, cột2, …)
SELECT cotx, coty, …
FROM … WHERE …

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 32


CẬP NHẬT DỮ LIỆU
▪ Lệnh UPDATE dùng để cập nhật dữ liệu hiện có trong bảng.
▪ Có thể sửa nhiều dòng tại một thời điểm.
▪ Cú pháp:
UPDATE Tên_bảng
SET Col 1 = Val 1, Col 2 = Val 2,..., Col n = Val n
WHERE Điều_kiện
▪ Ví dụ:
UPDATE SINHVIEN
SET Gioitinh=1
WHERE MASV='191577439'

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 33


XÓA DỮ LIỆU
▪ Xóa từng bản ghi (row) dùng lệnh DELETE
▪ Nếu dòng cần xóa có chứa dữ liệu mà khóa ngoại của bảng được tham chiếu đến,
SQL báo lỗi, cần xóa ràng buộc khóa ngoại đó.
▪ Cú pháp:
DELETE Tên_bảng
WHERE Điều_kiện
--Hoặc (có thể thêm FROM):
DELETE FROM Tên_bảng
WHERE Điều_kiện
▪ Ví dụ: xóa những sinh viên có tên bằt đầu bằng chữ T
DELETE SINHVIEN WHERE TenSV LIKE 'T%'

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 34


XÓA DỮ LIỆU
▪ Xóa toàn bộ dữ liệu trong bảng dùng lệnh TRUNCATE, sẽ tốc độ thực hiện
nhanh hơn.
▪ Nếu trong bảng có cột số tăng tự động (IDENTITY) thì giá trị sẽ được khởi tạo
lại từ đầu.
▪ Ngay cả khi không chứa dữ liệu, TRUNCATE vẫn báo lỗi nếu xóa bảng có tham
chiếu Khóa ngoại của bảng khác.
▪ Cú pháp:
TRUNCATE TABLE Tên_bảng

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 35


CÁC TOÁN TỬ TRONG
SQL
1. TOÁN TỬ TOÁN HỌC VÀ SO SÁNH
2. TOÁN TỬ LIÊN QUAN ĐẾN CHUỖI
3. TOÁN TỬ KIỂM TRA DỮ LIỆU
4. PHÉP TOÁN LOGIC

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 36


TOÁN TỬ TOÁN HỌC VÀ SO SÁNH
▪ Các phép toán học bao gồm: +, -, *, /
▪ Phép ghép chuỗi: ‘+’
✓Ví dụ: ‘Nguyễn’ + ‘˽’+ ‘An’ → Nguyễn An
▪ Các phép so sánh:
Toán tử Ý nghĩa
= Bằng
> Lớn hơn
>= Lơn hơn hoặc bằng
< Nhỏ hơn
<= Nhỏ hơn hoặc bằng
<> Không bằng

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 37


TOÁN TỬ LIÊN QUAN ĐẾN CHUỖI
Toán tử Mô Tả Cú pháp
Lấy ra các dòng nằm trong phạm vi giữa 2
BETWEEN … AND BETWEEN Giá_trị_1 AND Giá_trị_2
giá trị
• Toán tử LIKE/NOT LIKE dùng để so
sánh một giá trị với các giá trị tương tự. Cột_x LIKE Biểu_thức
LIKE/NOT LIKE
• % đại diện cho không hoặc nhiều ký tự. Cột_x NOT LIKE Biểu_thức
• _ đại diện cho 1 ký tự

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 38


TOÁN TỬ KIỂM TRA DỮ LIỆU
Toán tử Mô Tả Cú pháp
• Toán tử IN/NOT IN dùng để lấy/không
lấy các giá trị có trong biểu thức. Biểu_thức IN/NOT IN(Giá_trị_1,
IN/NOT IN
• Kiểm tra giá trị nằm/không nằm trong Giá_trị_2,… Giá_trị_n)
biểu thức.
• Toán tử IS NULL lấy ra các dòng có
giá trị là NULL. Cột_n IS NULL
IS NULL
• IS NOT NULL lấy ra các dòng có giá Cột_n IS NOT NULL
trị khác NULL.

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 39


TOÁN TỬ LOGIC
Toán tử Mô Tả Cú pháp
TRUE nếu tất cả các biểu thức điều kiện Biểu_thức_điều_kiện_1 AND
AND trong toán tử AND đều TRUE Biểu_thức_điều_kiện_2 AND
Biểu_thức_điều_kiện_3
TRUE nếu một trong các biểu thức điều Biểu_thức_điều_kiện_1 OR
OR kiện trong toán tử OR là TRUE Biểu_thức_điều_kiện_2 OR
Biểu_thức_điều_kiện_3
Toán tử NOT: TRUE nếu theo sau là giá • NOT Biểu_thức_điều_kiện
NOT trị FALSE • Tên_cột NOT IN(Gía_trị_1,
Gía_trị_2...)

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 40


CÁC HÀM HỆ THỐNG
TRONG SQL
1. Hàm xử lý chuỗi
2. Hàm xử lý thời gian
3. Hàm toán học
4. Hàm luận lý
5. Hàm nhóm dữ liệu

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 41


Hàm xử lý chuỗi
Hàm Mô Tả Cú pháp
• Hàm UPPER/LOWER chuyển đổi tất cả các
chữ cái trong biểu thức chuỗi thành chữ hoa/
thường. UPPER (Biểu_thức_chuỗi)
UPPER/LOWER
• Nếu biểu thức chuỗi có các ký tự không phải LOWER (Biểu_thức_chuỗi)
chữ cái (vd số hoặc các ký tự đặc biệt) thì
chúng không bị ảnh hưởng bởi hàm này.
• Hàm LEFT/RIGHT dùng để trích xuất một số
LEFT(Chuỗi_nguồn, Số_ký_tự)
LEFT/ RIGHT ký tự từ chuỗi nguồn, bắt đầu từ bên trái/phải.
RIGHT(Chuỗi_nguồn, Số_ký_tự)
• Nếu chuỗi nguồn là NULL thì trả về NULL.
Dùng để trích xuất một số ký tự từ chuỗi nguồn,
SUBSTRING SUBSTRING(Chuỗi_nguồn, Vị_trí, Số_ký_tự)
bắt đầu từ vị trí chỉ định (từ trái qua phải)
• Dùng để nối hai hay nhiều chuỗi thành một
CONCAT chuỗi duy nhất. CONCAT(Chuỗi_1, Chuỗi_2,… Chuỗi_n)
• Nếu chuỗi NULL thì kết quả trống.

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 42


Hàm xử lý chuỗi
Hàm Mô Tả Cú pháp
• Hàm LEN dùng để đếm số ký tự trong biểu
thức.
LEN • Không đếm các khoảng trắng ở cuối. LEN(Biểu_thức)
• Không đếm biểu thức chỉ có khoảng trắng.
• Trả về NULL nếu biểu thức là NULL.
• Hàm DATALENGTH dùng để đếm số ký tự
trong biểu thức.
DATALENGTH • Đếm luôn các khoảng trắng ở cuối. DATALENGTH(Biểu_thức)
• Đếm luôn biểu thức chỉ có khoảng trắng.
• Trả về NULL nếu biểu thức là NULL.
• Hàm REPLACE dùng để thay thế chuỗi ký tự
này thành chuỗi ký tự khác.
REPLACE(Biểu_thức, Chuỗi_tìm,
REPLACE • Không phân biệt chữ thường, chữ hoa.
Chuỗi_thay_thế)
• Trả về NULL nếu biểu thức là NULL.
• Nếu không có thì trả về đúng biểu thức đó.

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 43


Hàm xử lý thời gian
Hàm Mô Tả Cú pháp
• Hàm GETDATE trả về định dạng ‘YYYY-
MM-DD hh:mm:ss.mmm’ năm, tháng, ngày,
GETDATE GETDATE()
giờ, phút, giây tại thời điểm hiện hành của
máy chủ CSDL.
• Hàm DAY trả về một số nguyên (từ 1 đến 31)
DAY là ngày trong tháng của biểu thức thời gian DAY(Thời_gian)
truyền vào
• Hàm MONTH trả về một số nguyên (từ 1 đến
MONTH 12) là tháng trong năm của biểu thức thời MONTH(Thời_gian)
gian truyền vào
• Hàm YEAR trả về một số nguyên (từ 1 đến
YEAR 9999) là năm của biểu thức thời gian truyền YEAR(Thời_gian)
vào

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 44


Hàm xử lý thời gian
▪ DATEDIFF: TÍNH KHOẢNG CÁCH HAI NGÀY/THÁNG/NĂM VỚI NHAU
✓Datadiff (interval, start_time, end_time)
✓→interval: YEAR/MONTH/DAY/HOUR
✓Ví dụ: DATEDIFF(YEAR,'2023-08-21', GETDATE())
▪ DATEPART: TỔNG QUÁT CỦA DAY, MONTH, YEAR
✓Datepart (interval, datetime)
✓Ví dụ: DATEPART(HOUR,GETDATE())
▪ DATEADD: THÊM SỐ LƯỢNG NGÀY/THÁNG/NĂM
✓Dateadd (interval, increment int, datetime)
✓Ví dụ: DATEADD(DAY,15,GETDATE())
▪ ISDATE: KIỂM TRA KIỂU NGÀY

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 45


Hàm toán học
▪ ABS(x): Trị tuyệt đối của x
▪ SQRT(x): Căn bậc hai của x
▪ SQUARE(x): bình phương của x
▪ POWER(y,x): y mũ x
▪ LOG(x): Logarit tự nhiên của x
▪ EXP(x): Hàm mũ cơ số e của x
▪ SIGN(x): Lấy dấu của số x ( -1:x<0, 0: x=0, +1: x>0)
▪ ROUND (x,n): Làm tròn tới n số lẻ
▪ CEILING(x): Số nguyên nhỏ nhất nhưng lớn hơn x
▪ FLOOR(x): Số nguyên lớn nhất nhưng nhỏ hơn x
▪ ...và các hàm lượng giác: SIN, COS, TAN, ASIN, ACOS, ATAN...

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 46


Hàm luận lý
▪ Hàm Chọn lựa IFF: Trả về True nếu biểu thức luận lý là đúng, trả về False nếu
biểu thức luận lý là sai
▪ IIF(Biểu_thức_luận_lý, True, False)
▪ Ví dụ:
• IIF(1>2, 'Đúng', 'Sai’)
• IIF(DIEM>=8.5,'A',IIF(DIEM>=7,'B',IIF(DIEM>=6,'C',IIF(DIEM>=4,'D','F'))))

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 47


Hàm nhóm dữ liệu
▪ AVG: Tính giá trị trung bình
▪ COUNT: Đếm số dòng
✓COUNT(*) trả về số dòng có trong bảng.
✓COUNT(biểu_thức) trả về số dòng khác NULL của biểu_thức.
▪ MAX: Lấy giá trị lớn nhất
▪ MIN: Lấy giá trị nhỏ nhất
▪ SUM: Hàm tính tổng

Cơ sở dữ liệu| TS. Nguyễn Thị Uyên Nhi 48


THANK YOU

You might also like