Nền tảng cơ sở dữ liệu
Mục tiêu: Làm quen với SQL Server, tạo cơ sở dữ liệu, tạo bảng, thiết lập các ràng buộc toàn vẹn và thực hiện các thao tác thêm, sửa, xóa dữ liệu.
01 · TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU
Cơ sở dữ liệu là gì?
Trong thực tế, CSDL được sử dụng ở rất nhiều lĩnh vực:
Ví dụ
Một trường đại học có thể cần quản lý:
Nếu có hàng chục nghìn sinh viên, việc lưu trữ bằng các file rời rạc sẽ khó quản lý. CSDL giúp tổ chức dữ liệu thành các bảng có quan hệ với nhau:
LOP (1) ➜ SINHVIEN (N): Một LOP có nhiều SINHVIEN - SINHVIEN giữ khóa ngoại MaLop tham chiếu đến LOP.
DATABASE: QuanLySinhVien
| LOP (1) - Bảng cha |
|---|
| MaLop |
| TenLop |
| SINHVIEN (N) - Bảng con |
|---|
| MaSV |
| HoTen |
| NgaySinh |
MaLop (FK) |
MaLop), SINHVIEN là bảng con (giữ khóa ngoại MaLop tham chiếu đến LOP) - Một Lớp có nhiều Sinh viên (1-N), không phải ngược lại.Hệ quản trị cơ sở dữ liệu (DBMS)
Một số DBMS phổ biến:
CSDL và DBMS kết hợp với nhau tạo thành một hệ cơ sở dữ liệu hoàn chỉnh: Người dùng/lập trình viên gửi truy vấn thông qua chương trình ứng dụng, DBMS tiếp nhận và xử lý truy vấn đó rồi truy xuất dữ liệu tương ứng từ CSDL trả về.
02 · SQL SERVER MANAGEMENT STUDIO
Cài đặt SQL Server & SSMS
Trước buổi thực hành, cần chuẩn bị sẵn 2 thành phần trên máy tính cá nhân: SQL Server (bộ máy CSDL) và SQL Server Management Studio - SSMS (công cụ giao diện để kết nối, viết truy vấn và quản lý SQL Server). SQL Server không có sẵn giao diện làm việc, nên bắt buộc phải cài thêm SSMS mới thao tác được.
Giới thiệu Microsoft SQL Server
SQL Server là hệ quản trị CSDL quan hệ (RDBMS) do Microsoft phát triển, ra đời từ năm 1989 và liên tục được cập nhật đến nay:
MỘT SỐ MỐC PHIÊN BẢN CHÍNH
| Phiên bản | Năm ra mắt | Tính năng đặc trưng |
|---|---|---|
| SQL Server 1.0 | 1989 | Phiên bản đầu tiên (Microsoft hợp tác với Sybase), các tính năng CSDL quan hệ cơ bản |
| SQL Server 6.5 | 1996 | Phiên bản Windows NT đầu tiên hoàn toàn do Microsoft tự phát triển |
| SQL Server 7.0 | 1998 | Viết lại toàn bộ storage engine, cải tiến giao diện quản trị |
| SQL Server 2000 | 2000 | Hỗ trợ XML, cải thiện hiệu suất và bảo mật |
| SQL Server 2005 | 2005 | Ra mắt SQL Server Management Studio (SSMS), tích hợp .NET CLR, Reporting Services |
| SQL Server 2008 | 2008 | Nén dữ liệu (Data Compression), quản trị theo chính sách (Policy-Based Management) |
| SQL Server 2012 | 2012 | AlwaysOn Availability Groups, Columnstore Index |
| SQL Server 2016 | 2016 | Always Encrypted, hỗ trợ JSON, tích hợp ngôn ngữ R |
| SQL Server 2017 | 2017 | Lần đầu chạy được trên Linux, tích hợp Python |
| SQL Server 2019 | 2019 | Big Data Clusters, tích hợp AI, cải thiện tốc độ khôi phục CSDL |
| SQL Server 2022 | 2022 | Tích hợp sâu với Azure - phiên bản dùng trong môn học này |
| SQL Server 2025 | 2025 | Tích hợp AI ngay trong SQL Server (vector search, T-SQL gọi mô hình AI), phiên bản mới nhất hiện nay |
SQL Server 2025 là phiên bản mới nhất, nhưng môn học vẫn dùng SQL Server 2022 để đảm bảo tính ổn định và đồng bộ thao tác giữa các sinh viên trong lớp.
CÁC ẤN BẢN (EDITION)
Mỗi phiên bản SQL Server còn được đóng gói thành nhiều ấn bản khác nhau, phục vụ các nhu cầu và ngân sách khác nhau:
| Ấn bản | Mô tả | Chi phí |
|---|---|---|
| Enterprise | Đầy đủ tính năng cao cấp nhất (bảo mật, hiệu năng, phân tích dữ liệu quy mô lớn) - Dùng cho doanh nghiệp/tổ chức lớn | Trả phí, rất cao |
| Standard | Các tính năng cốt lõi, đủ dùng cho doanh nghiệp vừa và nhỏ | Trả phí |
| Web | Tối ưu cho việc lưu trữ website, chỉ cung cấp qua các nhà cung cấp dịch vụ hosting | Trả phí (thấp) |
| Developer | Đầy đủ tính năng y hệt bản Enterprise, nhưng chỉ được cấp phép dùng để học tập/phát triển/kiểm thử - Không được dùng cho hệ thống thực tế đang vận hành | Miễn phí |
| Express | Phiên bản rút gọn, giới hạn dung lượng CSDL (tối đa 10GB) và tài nguyên CPU/RAM sử dụng - Phù hợp ứng dụng nhỏ | Miễn phí |
Cài đặt SQL Server 2022 (Developer Edition)
- Tải bộ cài từ trang chủ Microsoft, chọn Download Media để tải file cài đặt về máy trước, thay vì cài trực tiếp qua mạng.
- Chạy file
SQLServer2022-DEV-x64-ENU.exe, vào mục Installation, chọn bản Developer để cài. - Đồng ý điều khoản license. Có thể bỏ chọn mục tự động kiểm tra cập nhật nếu không cần.
- Ở bước chọn tính năng (Feature Selection), chỉ cần tick Database Engine Services là đủ dùng cho môn học này.
- Instance ID giữ nguyên mặc định
MSSQLSERVER. - Ở bước xác thực (Database Engine Configuration), giữ nguyên mặc định Windows Authentication Mode và bấm Next - Không cần đổi sang Mixed Mode hay đặt mật khẩu
sacho việc thực hành cá nhân. - Đợi cài đặt hoàn tất, kiểm tra các thành phần đã cài thành công rồi bấm Close.
Cài đặt SQL Server Management Studio (SSMS)
- Tải bộ cài SSMS từ trang chủ Microsoft (tìm "Download SQL Server Management Studio").
- Chạy file
SSMS-Setup-ENU.exe, bấm Install. - Đợi vài phút để cài đặt hoàn tất, bấm Close khi xong.
Sau khi cài đặt, giao diện SSMS thường được sử dụng để:
- Kết nối đến SQL Server
- Tạo Database
- Tạo Table
- Viết và thực thi câu lệnh SQL
- Xem dữ liệu
- Quản lý các đối tượng trong Database
Quy trình cơ bản
Ví dụ câu lệnh đầu tiên
SELECT 'Hello SQL Server';Kết quả:
03 · KIỂU DỮ LIỆU TRONG SQL
Kiểu dữ liệu trong SQL
Kiểu số nguyên
| Kiểu | Dung lượng | Phạm vi giá trị |
|---|---|---|
TINYINT | 1 byte | 0 ➜ 255 |
SMALLINT | 2 byte | -32.768 ➜ 32.767 |
INT | 4 byte | ≈ -2,1 tỷ ➜ 2,1 tỷ |
BIGINT | 8 byte | Phạm vi rất lớn |
SO SÁNH DUNG LƯỢNG (TỈ LỆ THEO BYTE)
TINYINT1 byteSMALLINT2 byteINT4 byteBIGINT8 byteMaSV INT
SoLuong INT
Tuoi TINYINTTuoi (0–150) nên dùng TINYINT thay vì INT.Kiểu Boolean - BIT
BIT lưu giá trị đúng/sai, thường dùng cho các cột dạng "có/không":
DaTotNghiep BITGiá trị lưu trữ: 1 (true), 0 (false) hoặc NULL (chưa xác định).
Kiểu số thực
| Kiểu | Mô tả | Dùng khi |
|---|---|---|
DECIMAL(p,s) / NUMERIC(p,s) | Số thập phân chính xác tuyệt đối - p là tổng số chữ số, s là số chữ số sau dấu phẩy | Điểm số, số lượng, đơn giá - Cần kết quả chính xác |
FLOAT | Số thực dấu phẩy động, độ chính xác gần đúng, phạm vi giá trị rất lớn | Tính toán khoa học, không đòi hỏi chính xác tuyệt đối |
REAL | Tương tự FLOAT nhưng độ chính xác và dung lượng thấp hơn | Số liệu gần đúng, ít quan trọng độ chính xác |
MONEY | Kiểu tiền tệ chuyên dụng, chính xác đến 4 chữ số thập phân | Giá trị tiền có biên độ lớn |
SMALLMONEY | Tương tự MONEY nhưng phạm vi giá trị nhỏ hơn | Giá trị tiền có biên độ nhỏ |
DECIMAL(p,s) cho phép xác định số chữ số tổng cộng (p) và số chữ số sau dấu phẩy (s). Ví dụ:
DiemTB DECIMAL(4,2)Có thể lưu: 8.50, 9.25, 10.00
MONEY và SMALLMONEY dùng riêng cho giá trị tiền tệ, chính xác hơn FLOAT/REAL khi tính toán:
DonGia MONEYDECIMAL(p,s) hoặc MONEY vì cho kết quả chính xác. FLOAT/REAL là số gần đúng, dễ sai lệch khi tính toán nhiều lần.Kiểu chuỗi
CHAR(n) - Chuỗi có độ dài cố định (luôn chiếm đủ n ký tự, phần dư được đệm khoảng trắng):
MaSV CHAR(8)Ví dụ giá trị: "23520001"
VARCHAR(n) - Chuỗi có độ dài thay đổi (chỉ chiếm dung lượng đúng bằng số ký tự thực tế):
Email VARCHAR(100)NCHAR và NVARCHAR - Tương tự CHAR/VARCHAR nhưng lưu chuỗi Unicode, phù hợp khi lưu tiếng Việt có dấu:
HoTen NVARCHAR(50)
DiaChi NVARCHAR(200)Khi dữ liệu văn bản rất dài (không xác định trước độ dài, ví dụ mô tả sản phẩm), dùng VARCHAR(MAX) hoặc NVARCHAR(MAX) thay vì khai báo số cố định.
So sánh nhanh - Chọn kiểu chuỗi nào?
| Kiểu | Độ dài | Unicode (tiếng Việt) | Dùng khi |
|---|---|---|---|
CHAR(n) | Cố định | Không | Mã có độ dài luôn giống nhau (VD: Mã SV 8 ký tự) |
VARCHAR(n) | Thay đổi | Không | Chuỗi tiếng Anh/số, độ dài không cố định |
NCHAR(n) | Cố định | Có | Mã tiếng Việt có độ dài luôn giống nhau |
NVARCHAR(n) | Thay đổi | Có | Họ tên, địa chỉ, mô tả tiếng Việt - dùng phổ biến nhất |
NVARCHAR và chuỗi Unicode với tiền tố N khi nhập giá trị.INSERT INTO SinhVien
VALUES (1, N'Nguyễn Văn An', 'HTTT2022.1');Kiểu ngày giờ
| Kiểu | Lưu | Ví dụ giá trị |
|---|---|---|
DATE | Chỉ ngày | '2004-05-20' |
TIME | Chỉ giờ | '14:30:00' |
DATETIME | Ngày + giờ | '2004-05-20 14:30:00' |
SMALLDATETIME | Ngày + giờ (ít chính xác hơn) | '2004-05-20 14:30:00' |
DATETIME2 | Ngày + giờ (chính xác cao, khuyến nghị dùng thay DATETIME ở hệ thống mới) | '2004-05-20 14:30:00.123' |
NgaySinh DATE
NgayLap DATETIME'yyyy-mm-dd'. Ví dụ '2004-05-20' là ngày 20 tháng 5 năm 2004.Có thể đổi định dạng nhập bằng lệnh SET DATEFORMAT. Ví dụ, để nhập theo thứ tự ngày-tháng-năm 'dd-mm-yyyy':
SET DATEFORMAT dmy;
INSERT INTO SinhVien (MaSV, HoTen, NgaySinh, Lop)
VALUES (104, N'Phạm Thị Dung', '20-05-2004', N'HTTT2022.1');Lệnh SET DATEFORMAT chỉ ảnh hưởng đến phiên làm việc (session) hiện tại trong SSMS, không thay đổi vĩnh viễn cấu hình Database.
04 · DATABASE - CƠ SỞ DỮ LIỆU
Database
Tạo Database
Cú pháp:
CREATE DATABASE <Tên Database>;Ví dụ:
CREATE DATABASE QuanLySinhVien;Chọn Database để làm việc
Sau khi tạo Database, sử dụng USE:
USE QuanLySinhVien;Từ thời điểm này, các câu lệnh tiếp theo sẽ được thực hiện trên Database QuanLySinhVien. Cần kiểm tra Database đang được chọn trong SSMS trước khi thao tác.
Xóa Database
DROP DATABASE QuanLySinhVien;05 · TABLE - BẢNG DỮ LIỆU
Table
Một Table bao gồm Column (thuộc tính của dữ liệu) và Row (một bản ghi). Table là tập hợp các bản ghi có cùng cấu trúc. Ví dụ:
SINHVIEN
| MaSV | HoTen | NgaySinh |
|---|---|---|
| 1 | Nguyễn Văn An | 2004-05-20 |
| 2 | Trần Thị Bình | 2004-08-15 |
| 3 | Lê Văn Cường | 2004-11-02 |
SQL sử dụng một số thuật ngữ riêng, tương ứng với các thuật ngữ trong lý thuyết CSDL quan hệ:
| Thuật ngữ SQL | Thuật ngữ CSDL |
|---|---|
| Bảng (Table) | Quan hệ (Relation) |
| Cột (Column) | Thuộc tính (Attribute) |
| Dòng dữ liệu (Row) | Bộ giá trị (Tuple) |
Để định nghĩa một bảng trong SQL, cần xác định: Tên bảng, các cột, kiểu dữ liệu của từng cột và các ràng buộc toàn vẹn (RBTV) trên nó.
Tạo Table
Cú pháp cơ bản:
CREATE TABLE <Tên Table>
(
<Tên cột 1> <Kiểu dữ liệu>,
<Tên cột 2> <Kiểu dữ liệu>,
...
);Ví dụ:
CREATE TABLE SinhVien
(
MaSV INT,
HoTen NVARCHAR(50),
NgaySinh DATE,
Lop NVARCHAR(20)
);KIỂM TRA NHANH
Câu lệnh nào dùng để tạo một Table?
Xóa Table
DROP TABLE SinhVien;ALTER TABLE
ALTER TABLE dùng để thay đổi cấu trúc của Table sau khi đã tạo.
Thêm cột
ALTER TABLE SinhVien
ADD Email NVARCHAR(100);Xóa cột
ALTER TABLE SinhVien
DROP COLUMN Email;Thay đổi kiểu dữ liệu
ALTER TABLE SinhVien
ALTER COLUMN NgaySinh DATE;06 · RÀNG BUỘC TOÀN VẸN - CONSTRAINTS
Constraints
Phân loại ràng buộc toàn vẹn
Ràng buộc toàn vẹn trong SQL Server được chia làm 2 loại chính:
| Loại | Mô tả |
|---|---|
| Ràng buộc đơn giản Simple constraints | Dùng từ khóa CONSTRAINT để mô tả trực tiếp trong CREATE TABLE/ALTER TABLE - Áp dụng cho hầu hết các quy tắc toàn vẹn thông thường. |
| Ràng buộc phức tạp Complex constraints | Dùng TRIGGER để xử lý các quy tắc toàn vẹn phức tạp hơn mà CONSTRAINT không hỗ trợ được (ví dụ ràng buộc liên quan đến nhiều bảng, nhiều dòng dữ liệu). |
Tuần 1 chỉ tập trung vào các ràng buộc đơn giản dưới đây - TRIGGER sẽ được học ở các tuần sau. Bấm vào tên để đi thẳng đến phần tương ứng:
PRIMARY KEY
Khóa chính dùng để xác định duy nhất một bản ghi trong Table.
CREATE TABLE SinhVien
(
MaSV INT PRIMARY KEY,
HoTen NVARCHAR(50),
NgaySinh DATE
);Khi đó không được phép có hai sinh viên cùng MaSV.
Khóa chính nhiều thuộc tính (Composite Primary Key)
Đôi khi khóa chính không chỉ có 1 cột mà là tổ hợp nhiều cột - Thường gặp ở các bảng "chi tiết" biểu diễn quan hệ N-N. Ví dụ bảng CTHD (chi tiết hóa đơn) không có cột mã riêng, mà dùng cặp (SOHD, MASP) để xác định duy nhất một dòng:
CREATE TABLE CTHD
(
SOHD INT,
MASP CHAR(4),
SL INT,
CONSTRAINT PK_CTHD PRIMARY KEY (SOHD, MASP)
);Đặt CONSTRAINT ở dòng cuối cùng là cách duy nhất để khai báo khóa chính gồm nhiều cột - Không thể viết PRIMARY KEY ngay sau từng cột riêng lẻ trong trường hợp này.
NOT NULL
NOT NULL yêu cầu cột phải có giá trị.
CREATE TABLE SinhVien
(
MaSV INT PRIMARY KEY,
HoTen NVARCHAR(50) NOT NULL,
NgaySinh DATE
);Câu lệnh sau sẽ không hợp lệ vì HoTen được khai báo NOT NULL:
INSERT INTO SinhVien
VALUES (1, NULL, '2004-05-20');UNIQUE
Đảm bảo giá trị trong cột không bị trùng.
CREATE TABLE SinhVien
(
MaSV INT PRIMARY KEY,
Email NVARCHAR(100) UNIQUE
);FOREIGN KEY
FOREIGN KEY dùng để tạo mối liên hệ giữa các bảng. Ví dụ có hai bảng:
LOP
| MaLop | TenLop |
|---|---|
| 1 | HTTT2022.1 |
| 2 | HTTT2022.2 |
SINHVIEN
| MaSV | MaLop |
|---|---|
| 101 | 1 |
| 102 | 1 |
| 103 | 2 |
SINHVIEN.MaLop (FK) ➜ LOP.MaLop (PK): Mỗi dòng SINHVIEN tham chiếu đến đúng 1 dòng LOP.
CREATE TABLE Lop
(
MaLop INT PRIMARY KEY,
TenLop NVARCHAR(50)
);
CREATE TABLE SinhVien
(
MaSV INT PRIMARY KEY,
HoTen NVARCHAR(50),
MaLop INT,
FOREIGN KEY (MaLop)
REFERENCES Lop(MaLop)
);Khi đó, câu lệnh sau sẽ bị từ chối nếu 999 không tồn tại trong Lop.MaLop:
INSERT INTO SinhVien
VALUES (101, N'Nguyễn Văn An', 999);Khóa ngoại phải được thiết lập ở Table chứa khóa ngoại.
CHECK
CHECK dùng để giới hạn dữ liệu phải thỏa một điều kiện. Ví dụ điểm sinh viên phải từ 0 đến 10:
CREATE TABLE KetQua
(
MaSV INT,
Diem DECIMAL(4,2),
CHECK (Diem >= 0 AND Diem <= 10)
);INSERT INTO KetQua
VALUES (101, 8.5);✓ Hợp lệ. Nhưng:
INSERT INTO KetQua
VALUES (102, 15);✗ Không hợp lệ.
DEFAULT
DEFAULT cung cấp giá trị mặc định nếu người dùng không nhập giá trị.
CREATE TABLE SinhVien
(
MaSV INT PRIMARY KEY,
HoTen NVARCHAR(50),
GioiTinh CHAR(1) DEFAULT 'M'
);Nếu:
INSERT INTO SinhVien(MaSV, HoTen)
VALUES (101, N'Nguyễn Văn An');thì SQL Server tự động đặt GioiTinh = 'M'.
Khai báo nhiều Constraint
Có thể kết hợp nhiều ràng buộc - Kiểu dữ liệu và ràng buộc luôn đi cùng nhau khi thiết kế Table:
CREATE TABLE SinhVien
(
MaSV INT PRIMARY KEY,
HoTen NVARCHAR(50) NOT NULL,
Email NVARCHAR(100) UNIQUE,
MaLop INT
FOREIGN KEY REFERENCES Lop(MaLop),
NgaySinh DATE
CHECK (NgaySinh >= '1900-01-01'),
GioiTinh CHAR(1)
DEFAULT 'M'
);07 · THAO TÁC DỮ LIỆU - DML
Data Manipulation Language
Trong Tuần 1, sinh viên làm quen với:
INSERT - Thêm dữ liệu
Cách 1: Không chỉ định tên cột
INSERT INTO SinhVien
VALUES (101, N'Nguyễn Văn An', '2004-05-20', N'HTTT2022.1');Cách 2: Chỉ định tên cột - nên ưu tiên cách này, vì câu lệnh rõ ràng hơn và ít phụ thuộc vào thứ tự cột.
INSERT INTO SinhVien
(
MaSV,
HoTen,
NgaySinh,
Lop
)
VALUES
(
101,
N'Nguyễn Văn An',
'2004-05-20',
N'HTTT2022.1'
);Có thể thêm nhiều bản ghi trong một câu lệnh:
INSERT INTO SinhVien
VALUES
(101, N'Nguyễn Văn An', '2004-05-20', N'HTTT2022.1'),
(102, N'Trần Thị Bình', '2004-08-15', N'HTTT2022.1'),
(103, N'Lê Văn Cường', '2004-11-02', N'HTTT2022.2');Sau đó kiểm tra:
SELECT *
FROM SinhVien;DELETE - Xóa dữ liệu
DELETE FROM <Tên bảng>
WHERE <Điều kiện>;Ví dụ - Chỉ sinh viên có MaSV = 101 bị xóa:
DELETE FROM SinhVien
WHERE MaSV = 101;WHERE -
DELETE FROM SinhVien;
➜ Tất cả các dòng trong bảng sẽ bị xóa.
UPDATE - Cập nhật dữ liệu
UPDATE <Tên bảng>
SET <Cột 1> = <Giá trị mới>
WHERE <Điều kiện>;UPDATE SinhVien
SET HoTen = N'Nguyễn Văn Nam'
WHERE MaSV = 101;Có thể cập nhật nhiều cột cùng lúc:
UPDATE SinhVien
SET
HoTen = N'Nguyễn Văn Nam',
Lop = N'HTTT2022.2'
WHERE MaSV = 101;SELECT INTO - Sao chép dữ liệu
SELECT INTO cho phép tạo một Table mới từ kết quả truy vấn.
SELECT *
INTO SinhVien_Backup
FROM SinhVien;Nếu chỉ muốn sao chép một phần dữ liệu, có thể lọc bằng WHERE kết hợp toán tử LIKE - Dùng để so khớp chuỗi theo một mẫu (pattern) với 2 ký tự đại diện:
| Ký tự | Ý nghĩa | Ví dụ |
|---|---|---|
_ | Đại diện cho đúng 1 ký tự | LIKE 'a__' - Chuỗi bắt đầu bằng "a", theo sau đúng 2 ký tự bất kỳ |
% | Đại diện cho 0, 1 hoặc nhiều ký tự | LIKE 'HTTT%' - Chuỗi bắt đầu bằng "HTTT", theo sau là bất kỳ đoạn nào |
SELECT *
INTO SinhVien_HTTT
FROM SinhVien
WHERE Lop LIKE 'HTTT%';Ví dụ tổng hợp - Quản lý sinh viên
Bước 1 - Tạo Database
CREATE DATABASE QuanLySinhVien;
GO
USE QuanLySinhVien;
GOBước 2 - Tạo bảng Lớp
CREATE TABLE Lop
(
MaLop INT PRIMARY KEY,
TenLop NVARCHAR(50) NOT NULL
);Bước 3 - Tạo bảng Sinh viên
CREATE TABLE SinhVien
(
MaSV INT PRIMARY KEY,
HoTen NVARCHAR(50) NOT NULL,
NgaySinh DATE,
MaLop INT,
CONSTRAINT FK_SinhVien_Lop
FOREIGN KEY (MaLop)
REFERENCES Lop(MaLop),
CONSTRAINT CK_SinhVien_NgaySinh
CHECK (NgaySinh >= '1900-01-01')
);Bước 4 - Thêm lớp
INSERT INTO Lop
VALUES
(1, N'HTTT2022.1'),
(2, N'HTTT2022.2');Bước 5 - Thêm sinh viên
INSERT INTO SinhVien
VALUES
(101, N'Nguyễn Văn An', '2004-05-20', 1),
(102, N'Trần Thị Bình', '2004-08-15', 1),
(103, N'Lê Văn Cường', '2004-11-02', 2);Bước 6 - Kiểm tra
SELECT *
FROM SinhVien;| MaSV | HoTen | NgaySinh | MaLop |
|---|---|---|---|
| 101 | Nguyễn Văn An | 2004-05-20 | 1 |
| 102 | Trần Thị Bình | 2004-08-15 | 1 |
| 103 | Lê Văn Cường | 2004-11-02 | 2 |
Bước 7 - Cập nhật
UPDATE SinhVien
SET HoTen = N'Nguyễn Văn Nam'
WHERE MaSV = 101;Bước 8 - Xóa
DELETE FROM SinhVien
WHERE MaSV = 103;08 · BÀI TẬP THỰC HÀNH VÀ HỎI ĐÁP
Thực hành tổng hợp
Trung tâm Thể dục Thể thao (TrungTam_TDTT)
Xem đề bài đầy đủ, file đính kèm và đáp án chi tiết (cần mã truy cập) của BTTH1.
Ví dụ minh họa thêm với cơ sở dữ liệu mẫu QuanLyBanHang để luyện lại toàn bộ nội dung DDL/Constraint của tuần này - Không thuộc bài nộp BTTH1.
PRACTICE LAB
Quản lý bán hàng
- Bài 1 - Tạo Database: Tạo Database
QuanLyBanHang - Bài 2 - Tạo bảng: KHACHHANG, NHANVIEN, SANPHAM, HOADON, CTHD
- Bài 3 - Thiết lập ràng buộc: Primary Key, Foreign Key, NOT NULL, UNIQUE, CHECK, DEFAULT
- Bài 4 - Thêm dữ liệu: Tối thiểu 5 khách hàng, 5 nhân viên, 10 sản phẩm, 10 hóa đơn
- Bài 5 - Thao tác dữ liệu: Thực hiện INSERT, UPDATE, DELETE, SELECT INTO
- Bài 6 - Kiểm tra ràng buộc: Thử nhập dữ liệu sai để quan sát SQL Server báo lỗi
Bài 6 - Ví dụ kiểm tra ràng buộc
Thử nhập dữ liệu sai để quan sát SQL Server báo lỗi:
INSERT INTO SinhVien
VALUES (101, N'Sinh viên trùng mã', '2004-01-01', 1);➜ Vi phạm PRIMARY KEY.
INSERT INTO SinhVien
VALUES (104, N'Sinh viên không có lớp', '2004-01-01', 999);➜ Vi phạm FOREIGN KEY.
INSERT INTO SinhVien
VALUES (105, N'Sinh viên lỗi ngày', '1800-01-01', 1);➜ Vi phạm CHECK.
09 · CHECKLIST CUỐI TUẦN 1
Tự kiểm tra kiến thức
Sau khi hoàn thành, sinh viên nên tự kiểm tra:
- Biết Database là gì
- Biết sử dụng SQL Server Management Studio
- Biết các kiểu dữ liệu cơ bản
- Biết CREATE DATABASE
- Biết USE DATABASE
- Biết CREATE TABLE
- Biết DROP TABLE
- Biết ALTER TABLE
- Hiểu PRIMARY KEY
- Hiểu FOREIGN KEY
- Hiểu UNIQUE
- Hiểu NOT NULL
- Hiểu CHECK
- Hiểu DEFAULT
- Biết INSERT
- Biết UPDATE
- Biết DELETE
- Biết SELECT INTO
- Biết kiểm tra dữ liệu sau khi thao tác
Kiến thức cốt lõi cần nhớ
Đây là phần nền tảng của toàn bộ IT004. Sang Tuần 2, sinh viên bắt đầu sử dụng dữ liệu đã tạo để thực hiện SELECT, toán tử, hàm, JOIN, phép toán tập hợp và Subquery.
