Hướng dẫn tự học SQL cơ bản cho người mới bắt đầu

ngày 09-08-2023

SQL, viết tắt của "Structured Query Language", là một ngôn ngữ truy vấn được thiết kế đặc biệt để quản lý và truy xuất dữ liệu từ cơ sở dữ liệu quan hệ. Được phát triển lần đầu tiên vào những năm 1970 bởi IBM, SQL đã trở thành tiêu chuẩn công nghiệp cho cơ sở dữ liệu quan hệ, được sự ủng hộ và sử dụng rộng rãi bởi hầu hết các hệ thống cơ sở dữ liệu như MySQL, PostgreSQL, Oracle, Microsoft SQL Server…
SQL cho phép người dùng thực hiện nhiều nhiệm vụ quan trọng, bao gồm các thao tác tạo mới, sửa đổi, xóa và truy vấn dữ liệu. Ngoài ra, SQL cũng hỗ trợ các thao tác phức tạp như kết nối nhiều bảng dữ liệu, lọc và sắp xếp dữ liệu, thống kê, tính toán và phân tích dữ liệu.

SQL – Kỹ năng cần thiết cho mọi người

Bất kể bạn là lập trình viên, người quản lý cơ sở dữ liệu, nhà phân tích dữ liệu, chuyên viên khoa học dữ liệu hay là nhà lãnh đạo, sở hữu kỹ năng SQL sẽ mang lại nhiều lợi ích cho bản thân và tổ chức của bạn.
1. Hiểu Dữ Liệu: Dữ liệu là một phần quan trọng của bất kỳ doanh nghiệp hoặc tổ chức nào. Biết SQL giúp bạn nắm bắt được cấu trúc và mối liên hệ giữa dữ liệu, từ đó giúp bạn có cái nhìn chính xác hơn về dữ liệu đang làm việc.
2. Linh Hoạt: SQL được hỗ trợ bởi hầu hết các hệ thống cơ sở dữ liệu quan hệ, từ các hệ quản trị cơ sở dữ liệu nhỏ gọn, ít tính năng như MySQL, PostgreSQL, đến các hệ thống quản trị CSDL lớn, chuyên nghiệp như Microsoft SQL Server, Oracle, DB2….
3. Chủ động hơn: Thay vì phải chờ đợi bộ phận IT trích xuất dữ liệu, bạn có thể tự truy vấn lấy dữ liệu một cách nhanh chóng và chủ động thực hiện các phân tích dữ liệu theo yêu cầu.
4. Phát triển Kỹ Năng Phân Tích: Việc hiểu và sử dụng SQL giúp nâng cao khả năng phân tích và giải quyết vấn đề, giúp bạn tiếp cận vấn đề một cách hệ thống, logic và chặt chẽ hơn.
5. Quyết Định Dựa Trên Dữ Liệu hiệu quả hơn: Biết SQL giúp bạn có cơ sở vững chắc hơn khi đưa ra quyết định dựa trên dữ liệu, bạn hiểu rõ về dữ liệu và những kết quả phân tích mình có được.
6. Nhiều cơ hội Phát Triển Sự Nghiệp: Với sự phổ biến của dữ liệu trong các tổ chức, có thêm kỹ năng SQL sẽ giúp bạn mở rộng cơ hội nghề nghiệp và tăng giá trị cho bản thân hơn. Đặc biệt trong thời đại số hóa hiện nay, dữ liệu đóng vai trò quan trọng, SQL giúp bạn trở thành một nhân viên giá trị trong mắt các nhà tuyển dụng.
7. Dễ học: SQL là một ngôn ngữ truy vấn khá đơn giản và dễ học. Bạn có thể bắt đầu học truy vấn dữ liệu SQL chỉ sau một thời gian ngắn.
Môi trường thực hành lập trình SQL cơ bản 

Môi trường thực hành lập trình SQL cơ bản 

Để làm việc với SQL, có nhiều môi trường và công cụ hỗ trợ khác nhau. Trong bài viết này để thuận tiện cho việc thực hành, chúng ta sẽ thực hiện trên trang web sqliteonline.com
 
 
Đây là trang web trực tuyến dành cho việc tạo, chỉnh sửa và thực thi truy vấn SQL trên môi trường mô phỏng cơ sở dữ liệu quan hệ (SQLite, PostgreSQL, MSSQL,…) mà không cần cài đặt phần mềm trên máy tính cá nhân.

Hướng dẫn cách tạo dữ liệu để thực hành các truy vấn SQL cơ bản

Trên sqliteonline.com, bạn chọn môi trường muốn thao tác, rồi nhấn vào Click to connect
 
 
Sau đó bạn dán đoạn lệnh tạo cấu trúc 2 bảng Khoa và Sinhvien vào, rồi nhấn Run để thực thi
Bước 1: Viết câu lệnh SQL tạo cấu trúc 2 bảng
-- Tạo bảng Khoa
CREATE TABLE Khoa (
    MaKhoa VARCHAR(10) PRIMARY KEY,
    TenKhoa VARCHAR(255) NOT NULL
);
 
-- Tạo bảng SinhVien
CREATE TABLE SinhVien (
    MaSinhVien INT PRIMARY KEY,
    Ten VARCHAR(255) NOT NULL,
    NgaySinh DATE,
    DiaChi VARCHAR(255),
    MaKhoa VARCHAR(10),
    FOREIGN KEY (MaKhoa) REFERENCES Khoa(MaKhoa)
);
 
Bước 2: Viết câu lệnh SQL để phát sinh dữ liệu cho 20 sinh viên trong 3 khoa
Để phát sinh dữ liệu cho 20 sinh viên trong 3 khoa, trước hết chúng ta sẽ tạo dữ liệu cho 3 khoa, sau đó tạo dữ liệu cho 20 sinh viên.
Bạn tạo mới một file lệnh bằng cách nhấn vào (+) bên góc phải màn hình
Sau đó bạn dán đoạn lệnh phát sinh dữ liệu cho 2 bảng Khoa và Sinhvien vào, rồi nhấn Run để thực thi.
Phát sinh dữ liệu cho 3 khoa:
-- Thêm dữ liệu cho bảng Khoa
INSERT INTO Khoa (MaKhoa, TenKhoa) VALUES 
('K1', 'Khoa Toan'),
('K2', 'Khoa Ly'),
('K3', 'Khoa Hoa');
 
-- Thêm dữ liệu cho bảng SinhVien
INSERT INTO SinhVien (MaSinhVien, Ten, NgaySinh, DiaChi, MaKhoa) VALUES 
(1, 'Nguyen Van A', '2000-11-15', '123 Hai Ba Trung, TP.HCM', 'K1'),
(2, 'Le Thi B', '2001-05-20', '456 Le Duan, TP.HCM', 'K1'),
(3, 'Tran Van C', '2002-01-10', '789 Tran Hung Dao, Ha Noi', 'K1'),
(4, 'Pham Thi D', '2001-09-05', '101 Ba Trieu, Da Nang', 'K1'),
(5, 'Vo Van E', '2002-04-17', '202 Nguyen Du, TP.HCM', 'K1'),
(6, 'Bui Thi F', '2000-12-25', '303 Ly Thuong Kiet, TP.HCM', 'K1'),
(7, 'Hoang Van G', '2001-07-13', '404 Tran Phu, Ha Noi', 'K2'),
(8, 'Nguyen Thi H', '2002-02-19', '505 Tran Binh Trong, TP.HCM', 'K2'),
(9, 'Le Van I', '2001-06-30', '606 Hoang Van Thu, TP.HCM', 'K2'),
(10, 'Tran Thi J', '2000-03-08', '707 Nguyen Trai, Da Nang', 'K2'),
(11, 'Pham Van K', '2001-10-24', '808 Tran Cao Van, TP.HCM', 'K2'),
(12, 'Vo Thi L', '2002-08-12', '909 Le Lai, TP.HCM', 'K2'),
(13, 'Bui Van M', '2001-11-11', '110 Nguyen Chi Thanh, Ha Noi', 'K3'),
(14, 'Hoang Thi N', '2000-05-21', '111 Hang Bai, Ha Noi', 'K3'),
(15, 'Nguyen Van O', '2001-03-15', '212 Hang Ma, Ha Noi', 'K3'),
(16, 'Le Thi P', '2002-07-18', '313 Hang Bong, Ha Noi', 'K3'),
(17, 'Tran Van Q', '2000-12-03', '414 Hang Dao, Ha Noi', 'K3'),
(18, 'Pham Thi R', '2001-09-09', '515 Pho Hue, Ha Noi', 'K3'),
(19, 'Vo Van S', '2002-06-27', '616 Tran Nhan Tong, Ha Noi', 'K3'),
(20, 'Bui Van T', '2001-02-02', '717 Le Thanh Tong, Ha Noi', 'K3');
 
Vậy là chúng ta đã có 2 bảng dữ liệu, lúc này chúng ta có thể thực hiện các lệnh SQL cơ bản như trong phần hướng dẫn sau.

LỆNH SELECT – FROM – WHERE

SELECT ... FROM: Đây là câu lệnh cơ bản nhất để truy vấn dữ liệu từ một bảng.
SELECT [Danh sách cột]  FROM Tên bảng
Ví dụ:
Để lấy tất cả các cột từ bảng "SinhVien", thực hiện câu lệnh
SELECT * 
FROM SinhVien;
Kết quả của câu lệnh là:
 
Để lấy chỉ hai cột, "Ten" và "NgaySinh", từ bảng "SinhVien", chúng ta thực hiện câu lệnh
SELECT Ten,NgaySinh 
FROM SinhVien
Kết quả là:
 
WHERE: Phần này giúp bạn lọc ra những hàng cụ thể từ bảng dựa trên một hoặc nhiều điều kiện.
SELECT [Danh sách cột] FROM Tên bảng WHERE [Điều kiện]
Ví dụ:
Để lấy thông tin của sinh viên có tên là "Nguyen Van A", thực hiện câu lệnh
SELECT  *
FROM SinhVien 
WHERE Ten= "Nguyen Van A"
Kết quả hiện thị thông tin sinh viên “Nguyen Van A”

LỆNH ORDER BY

Lệnh ORDER BY dùng để sắp xếp kết quả truy vấn theo một hoặc nhiều cột.
SELECT [Danh sách cột] FROM Tên bảng ORDER BY [Tên cột] [ASC/DESC]

Trong đó

  • ASC là sắp xếp tăng dần 
  • DESC là sắp xếp giảm dần
Ví dụ:
Để lấy tất cả thông tin của sinh viên và sắp xếp theo tên (từ A đến Z):
SELECT ∗ 
FROM SinhVien 
ORDER BY Ten ASC
 
Để lấy tất cả thông tin của sinh viên và sắp xếp theo ngày sinh (sắp xếp giảm dần):
SELECT ∗
FROM SinhVien
ORDER BY NgaySinh DESC
 
Kết hợp tất cả lại, bạn có thể tạo ra một câu lệnh phức tạp hơn. Ví dụ, để lấy thông tin của sinh viên sinh sau ngày 01-01-2000 và sắp xếp theo Tên thứ tự A->Z
SELECT ∗ 
FROM SinhVien 
WHERE NgaySinh>′01−01−2000′ 
ORDER BY Ten ASC
.
 

LỆNH JOIN - GROUP BY – HAVING

Để kết hợp thông tin từ cả hai bảng Sinh viên và Khoa với cột chung là MaKhoa, chúng ta có thể sử dụng câu lệnh JOIN:
SELECT SinhVien.*, Khoa.TenKhoa
FROM SinhVien
JOIN Khoa ON SinhVien.MaKhoa = Khoa.MaKhoa;
Trong câu lệnh trên, chúng ta sử dụng mệnh đề JOIN để kết nối hai bảng dựa trên điều kiện (SinhVien.MaKhoa = Khoa.MaKhoa).
 
Chúng ta muốn biết số lượng sinh viên trong mỗi khoa, sử dụng lệnh GROUP BY
SELECT Khoa.TenKhoa, 
COUNT(SinhVien.MaSinhVien) as SoSinhVien
FROM SinhVien
JOIN Khoa ON SinhVien.MaKhoa = Khoa.MaKhoa
GROUP BY Khoa.TenKhoa;
 
Chúng ta muốn lọc ra những khoa có ít hơn 8 sinh viên, chúng ta có thể sử dụng HAVING:
SELECT Khoa.TenKhoa, 
COUNT(SinhVien.MaSinhVien) as SoSinhVien
FROM SinhVien
JOIN Khoa ON SinhVien.MaKhoa = Khoa.MaKhoa
GROUP BY Khoa.TenKhoa
HAVING COUNT(SinhVien.MaSinhVien) < 8;
Trong ví dụ trên, GROUP BY giúp tổng hợp dữ liệu theo TenKhoa, trong khi HAVING giúp lọc kết quả sau khi đã được tổng hợp.
 
Bài tập tổng kết các nội dung tự học lập trình SQL cơ bản
Dựa trên hai bảng "SinhVien" và "Khoa", dưới đây là 10 yêu cầu bài tập SQL cho người mới bắt đầu:
1. Lấy tất cả thông tin từ bảng "SinhVien".
2. Lấy tất cả thông tin từ bảng "Khoa".
3. Lấy tên và ngày sinh của tất cả sinh viên từ bảng "SinhVien".
4. Lấy thông tin của sinh viên có tên là "Nguyen Van A".
5. Lấy thông tin của các sinh viên sinh sau ngày 01-01-2000.
6. Lấy tên sinh viên và tên khoa mà sinh viên đó thuộc về.
7. Lấy danh sách sinh viên và sắp xếp theo tên từ A đến Z.
8. Lấy danh sách sinh viên và sắp xếp theo ngày sinh từ mới nhất đến cũ nhất.
9. Đếm số lượng sinh viên trong mỗi khoa.
10. Liệt kê các khoa có ít hơn 2 sinh viên.
11. Lấy tên sinh viên và tên khoa mà sinh viên đó thuộc về, đổi tên cột kết quả thành "HoTen" và "KhoaHoc".
12. Lấy thông tin sinh viên có tên là "Nguyen Van A" hoặc "Le Thi B".
13. Lấy thông tin sinh viên thuộc khoa K1 và sinh sau ngày 01-01-2000.
14. Lấy số lượng khoa có trong cơ sở dữ liệu.
 
Gợi ý bài giải 
 
SELECT * FROM SinhVien;
 
SELECT * FROM Khoa;
 
SELECT Ten, NgaySinh FROM SinhVien;
 
SELECT * FROM SinhVien WHERE Ten = 'Nguyen Van A';
 
SELECT * FROM SinhVien WHERE NgaySinh > '2000-01-01';
 
SELECT SinhVien.Ten, Khoa.TenKhoa 
FROM SinhVien 
JOIN Khoa ON SinhVien.MaKhoa = Khoa.MaKhoa;
 
SELECT * FROM SinhVien ORDER BY Ten ASC;
 
SELECT * FROM SinhVien ORDER BY NgaySinh DESC;
 
SELECT Khoa.TenKhoa, COUNT(SinhVien.MaSinhVien) as SoSinhVien 
FROM SinhVien 
JOIN Khoa ON SinhVien.MaKhoa = Khoa.MaKhoa 
GROUP BY Khoa.TenKhoa;
 
SELECT Khoa.TenKhoa, COUNT(SinhVien.MaSinhVien) as SoSinhVien 
FROM SinhVien 
JOIN Khoa ON SinhVien.MaKhoa = Khoa.MaKhoa 
GROUP BY Khoa.TenKhoa 
HAVING COUNT(SinhVien.MaSinhVien) < 2;
 
SELECT SinhVien.Ten AS HoTen, Khoa.TenKhoa AS KhoaHoc 
FROM SinhVien 
JOIN Khoa ON SinhVien.MaKhoa = Khoa.MaKhoa;
 
SELECT * FROM SinhVien WHERE Ten = 'Nguyen Van A' OR Ten = 'Le Thi B';
 
SELECT * FROM SinhVien WHERE MaKhoa = 'K1' AND NgaySinh > '2000-01-01';
 
SELECT COUNT(*) AS SoKhoa FROM Khoa;

Kết luận

SQL không chỉ phổ biến trong cộng đồng phát triển phần mềm, mà còn là một công cụ quan trọng trong ngành khoa học dữ liệu và phân tích dữ liệu do khả năng mạnh mẽ trong việc xử lý dữ liệu lớn.
SQL, hay Ngôn ngữ Truy vấn Cơ sở Dữ liệu, là một trong những kỹ năng không thể thiếu trong lĩnh vực lập trình và khoa học dữ liệu. SQL dùng để truy vấn, cập nhật và quản lý dữ liệu trong cơ sở dữ liệu quan hệ, SQL giúp các nhà phát triển và nhà phân tích dữ liệu tiếp cận và tương tác với dữ liệu một cách hiệu quả. Từ việc truy xuất dữ liệu cơ bản cho đến việc thực hiện các phân tích phức tạp, SQL đều có thể đáp ứng.
Cho dù bạn là người mới trong lĩnh vực IT hay một chuyên gia dày dạn kinh nghiệm, việc nắm vững SQL luôn mang lại lợi ích to lớn. Đối với bất kỳ ai muốn theo đuổi sự nghiệp trong lĩnh vực dữ liệu, SQL chắc chắn là một kỹ năng cần thiết trong thế giới số hóa ngày nay.
 
ai
Trung Tâm Tin Học
ai
Trung Tâm Tin Học
Chào mừng bạn đến với Trung Tâm Tin Học.
Bạn đang cần hỗ trợ thông tin gì ạ? Hãy Chat ngay với chúng tôi nhé.