Trong thế giới gia tăng số hóa, dữ liệu lớn và điện toán đám mây ngày nay, quản lý dữ liệu là một trong những kỹ năng quan trọng nhất mà một kỹ sư phần mềm có thể có. Vì vậy, một trong những công cụ cơ sở dữ liệu mạnh mẽ nhất là SQL.
SQL (Ngôn ngữ truy vấn có cấu trúc) là ngôn ngữ lập trình tiêu chuẩn được sử dụng để thao tác với các đối tượng cấu trúc dữ liệu. Chúng hoạt động dựa trên dữ liệu được chứa trong hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS). Một số RDBMS nổi tiếng là MySQL và PostgreSQL.
Trong hướng dẫn này, bạn tìm hiểu về các tập hợp con của ngôn ngữ SQL và cách sử dụng một số lệnh SQL cơ bản, như SELECT
, INSERT
, UPDATE
và DELETE
.
Các tập con của SQL
Danh sách dưới đây bao gồm các tập hợp con ngôn ngữ khác nhau của các lệnh SQL khác nhau. Mỗi tập hợp con có chức năng và mục đích riêng.
- Ngôn ngữ Định nghĩa Dữ liệu (DDL):Điều này cho phép bạn tạo, xóa và cập nhật các định nghĩa lược đồ cơ sở dữ liệu (cụ thể là bảng và chỉ mục) mà không thực sự thao tác dữ liệu trong các bảng cơ sở dữ liệu.
- Ngôn ngữ Truy vấn Dữ liệu (DQL):DQL được sử dụng để truy xuất dữ liệu từ cơ sở dữ liệu bằng cách sử dụng
SELECT
tuyên bố. - Ngôn ngữ Thao tác Dữ liệu (DML):Ngôn ngữ con này cho phép thao tác dữ liệu trong cơ sở dữ liệu bằng cách sử dụng
INSERT
,UPDATE
vàDELETE
tuyên bố.
Hướng dẫn này sử dụng cơ sở dữ liệu mẫu cho một trường học để minh họa thêm các lệnh SQL cho mỗi tập hợp con được liệt kê ở trên. Cơ sở dữ liệu của trường có một số bảng, dành cho sinh viên, khóa học, điểm số, v.v. Định nghĩa của Student
bảng chứa các cột cho SSNumber
của sinh viên , Firstname
và Lastname
và định nghĩa của CourseTaken
bảng chứa các cột cho SSNumber
, CourseId
, NumericGrade
và YearTaken
.
Ví dụ giả sử rằng có ba học sinh trong trường, mỗi học sinh đã hoàn thành hai khóa học. Dữ liệu mẫu được hiển thị trong bảng dưới đây:
SSNumber | LastName | FirstName | CourseId | NumericGrade | YearTaken |
---|---|---|---|---|---|
111111111 | Smith | John | CSC101 | 98 | 2021 |
111111111 | Smith | John | ENG101 | 95 | 2022 |
222222222 | Jones | Mary | CSC101 | 100 | 2022 |
222222222 | Jones | Mary | EEE101 | 75 | 2022 |
333333333 | Hansen | Robert | POL101 | 92 | 2021 |
333333333 | Hansen | Robert | SOC103 | 84 | 2022 |
Tạo, thay đổi và thả bảng bằng lệnh SQL
Từ dòng lệnh, hãy sử dụng CREATE TABLE
theo sau là tên của bảng và dữ liệu bảng. Lệnh dưới đây tạo Student
bảng.
CREATE TABLE Student (
SSNumber CHAR(9) NOT NULL,
LastName VARCHAR(30) NOT NULL,
FirstName VARCHAR(20) NOT NULL
);
Dấu ngoặc đơn bao quanh dữ liệu bảng, bắt đầu bằng một cột gắn nhãn dữ liệu của mỗi hàng. Cột tiếp theo cho biết kiểu dữ liệu mà hàng này giữ. CHAR
cho biết kiểu dữ liệu chuỗi có độ dài cố định và VARCHAR
cho biết kiểu dữ liệu chuỗi có độ dài thay đổi. Trong cột cuối cùng, NOT NULL
thuộc tính đảm bảo rằng bản ghi không thể được thêm vào bảng nếu bất kỳ NOT NULL
nào các cột không có dữ liệu được liên kết với chúng.
Lưu ý CREATE TABLE
câu lệnh được phân tách bằng dấu chấm phẩy ở cuối (;), mặc dù có thể một số hệ thống cơ sở dữ liệu quan hệ thương mại có thể không yêu cầu dấu phân cách đó.
Lưu ý Trừ khi được đề cập khác, tất cả các lệnh cơ sở dữ liệu được trình bày trong hướng dẫn này hoạt động tốt trên cả MySQL và PostgreSQL .
Để tạo CourseTaken
bảng, thực hiện lệnh sau:
CREATE TABLE CourseTaken (
SSNumber CHAR(9) NOT NULL,
CourseId CHAR(6) NOT NULL,
NumericGrade INT NOT NULL
);
YearTaken
cố ý không được đưa vào cột CourseTaken
bảng để chứng minh việc sử dụng ALTER TABLE
yêu cầu. Để thêm YearTaken
trong cột CourseTaken
bảng, bạn không cần bỏ CourseTaken
bảng hoàn toàn. Thay vào đó, bạn có thể sử dụng DDL ALTER TABLE
yêu cầu. Lệnh sau thay đổi CourseTaken
bảng bằng cách thêm cột bị thiếu vào bảng.
ALTER TABLE CourseTaken
ADD (YearTaken INT NOT NULL);
Lệnh trên tuân theo cú pháp tương tự như trước. Nó yêu cầu tên bảng cũng như ba đối số:tên hàng, kiểu dữ liệu hàng và NOT NULL
thuộc tính. Nếu bạn muốn xóa CourseTaken
toàn bộ bảng, hãy phát hành DDL DROP TABLE
theo sau là tên bảng.
DROP TABLE CourseTaken;
Thận trọng Việc thả một bảng sẽ xóa tất cả dữ liệu trong bảng.
Cách chèn dữ liệu vào bảng trong SQL
Để chèn dữ liệu vào bảng, hãy sử dụng INSERT INTO
của SQL tuyên bố. Để gọi lệnh này, hãy cung cấp tên bảng và danh sách tên hàng (trong ngoặc đơn) mà bạn muốn chèn dữ liệu vào. Tiếp theo là VALUES
từ khóa và các giá trị thực tế (trong ngoặc đơn) mà bạn muốn chèn. Các giá trị được chèn vào các hàng theo thứ tự mà chúng được gọi.
Lưu ý
- Các lệnh SQL có thể được chia thành các dòng. Phần cuối của lệnh SQL được phân tách bằng dấu chấm phẩy (
;
).- Dữ liệu ký tự được phân tách bằng dấu nháy đơn mở và đóng (
‘
), trong khi dữ liệu số thì không.
INSERT
sau lệnh chèn ba hàng vào Student
bàn. Các lệnh này sử dụng nhiều INSERT
tuyên bố.
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('111111111', 'Smith', 'John');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('222222222', 'Jones', 'Mary');
INSERT INTO Student (SSNumber, LastName, FirstName) VALUES
('333333333', 'Hansen', 'Robert');
Tương tự, bạn cũng có thể chèn nhiều hàng vào bảng trong một truy vấn SQL như hình dưới đây:
INSERT INTO CourseTaken
(SSNumber, CourseId, NumericGrade, YearTaken)
VALUES
('111111111', 'CSC101', 98, 2021),
('111111111', 'ENG101', 95, 2022),
('222222222', 'CSC101', 100, 2022);
Lưu ýBạn có thể sử dụng
INSERT INTO
lệnh tương tự trong PostgreSQL để thêm hàng vào bảng. Đảm bảo các giá trị khớp với thứ tự của các cột trong định nghĩa bảng.INSERT INTO student VALUES ('111111111', 'Smith', 'John');
Xóa dữ liệu khỏi bảng
Để xóa dữ liệu khỏi bảng, hãy sử dụng DELETE FROM
trong SQL tuyên bố. Sử dụng WHERE
để chỉ định điều kiện và nếu có nhiều hơn một điều kiện, hãy sử dụng AND
mệnh đề cùng với WHERE
.
Ví dụ:lệnh sau sẽ xóa một bản ghi khỏi CourseTaken
bảng có SSNumber 333333333
và CourseId POL101
.
Thận trọng Nếu bạn bỏ qua WHERE
, tất cả các bản ghi trong bảng đều bị xóa.
DELETE FROM CourseTaken WHERE SSNumber = '333333333' AND CourseId = 'POL101';
Lệnh SQL để cập nhật dữ liệu trong bảng
Để cập nhật bản ghi hiện có trong bảng, hãy sử dụng UPDATE
của SQL yêu cầu. SET
mệnh đề được sử dụng để đặt (cập nhật) một giá trị mới cho một cột cụ thể và WHERE
mệnh đề được sử dụng để cập nhật các hàng đã chọn.
Ví dụ:lệnh sau cập nhật NumericGrade
cột của CourseTaken
bảng cho các bản ghi có SSNumber 222222222
và CourseId EEE101
.
UPDATE CourseTaken
SET NumericGrade = 95
WHERE SSNumber = '222222222' AND CourseId = 'EEE101';
Lệnh SQL để truy xuất dữ liệu từ bảng
Sức mạnh thực sự của hệ thống cơ sở dữ liệu quan hệ là ở khả năng truy xuất thông tin trong lược đồ nhiều bảng, thông qua SQL SELECT
và khả năng nối các bảng thông qua các khóa chung. Mặc dù hướng dẫn giới thiệu này không kiểm tra việc tạo các khóa và chỉ mục bằng cách sử dụng các khóa đó, nhưng nó sử dụng SSNumber
cột của mỗi bảng như một phương tiện (chìa khóa) để liên hệ (hoặc nối) các bảng để tạo ra thông tin. Các ví dụ sau cung cấp các trường hợp sử dụng khác nhau của việc sử dụng SELECT
trong SQL lệnh từ dòng lệnh.
Ví dụ 1: Để lấy danh sách tất cả học sinh trong trường.
SELECT * from Student;
Đầu ra:
+-----------+----------+-----------+
| SSNumber | LastName | FirstName |
+-----------+----------+-----------+
| 111111111 | Smith | John |
| 222222222 | Jones | Mary |
| 333333333 | Hansen | Robert |
+-----------+----------+-----------+
Ví dụ 2: Để tìm nạp danh sách tất cả sinh viên và khóa học họ đã tham gia.
SELECT Student.SSNumber, Student.LastName,
Student.FirstName, CourseTaken.CourseId
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber;
Đầu ra:
+-----------+----------+-----------+----------+
| SSNumber | LastName | FirstName | CourseId |
+-----------+----------+-----------+----------+
| 111111111 | Smith | John | CSC101 |
| 111111111 | Smith | John | ENG101 |
| 222222222 | Jones | Mary | CSC101 |
+-----------+----------+-----------+----------+
Lưu ý Trong lệnh trên, hai bảng,Student
vàCourseTaken
được tham gia để truy xuất thông tin cần thiết. Tên cột trongSELECT
vàWHERE
các mệnh đề được đặt trước tên bảng của chúng cho rõ ràng. Tuy nhiên, trong trường hợp củaSSNumber
, chúng tôi bắt buộc phải chỉ định tiền tố tên bảng thích hợp, vì cả hai bảng đều dùng chung tên cột.FROM
mệnh đề chỉ ra các bảng đang được sử dụng trong truy vấn này.
Ví dụ 3: Truy xuất danh sách sinh viên bằng CourseId CSC101
và năm họ tham gia khóa học này.
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.YearTaken
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.CourseId = 'CSC101';
Đầu ra:
+----------+-----------+----------+-----------+
| LastName | FirstName | CourseId | YearTaken |
+----------+-----------+----------+-----------+
| Smith | John | CSC101 | 2021 |
| Jones | Mary | CSC101 | 2022 |
+----------+-----------+----------+-----------+
Ví dụ 4: Truy xuất danh sách tên sinh viên, các khóa học đã thực hiện và điểm đã nhận được, đối với những người có điểm khóa học trên 90
.
SELECT Student.LastName, Student.FirstName,
CourseTaken.CourseId, CourseTaken.NumericGrade
FROM Student, CourseTaken
WHERE Student.SSNumber = CourseTaken.SSNumber
AND CourseTaken.NumericGrade > 90;
Đầu ra:
+----------+-----------+----------+--------------+
| LastName | FirstName | CourseId | NumericGrade |
+----------+-----------+----------+--------------+
| Smith | John | ENG101 | 95 |
| Smith | John | CSC101 | 98 |
| Jones | Mary | CSC101 | 100 |
+----------+-----------+----------+--------------+
Lưu ý AND
mệnh đề trong lệnh trên cho phép bạn lọc kết quả bằng một bài kiểm tra điểm có điều kiện.
Kết luận
Hướng dẫn về các lệnh SQL này là tài liệu sơ lược mở đầu về cách tạo các lược đồ cơ sở dữ liệu và thao tác với dữ liệu trong các cơ sở dữ liệu đó. Mặc dù các khái niệm được giới thiệu ở đây chỉ đơn thuần là sơ lược về cách sử dụng của các hệ thống cơ sở dữ liệu quan hệ, nhưng đây là điểm khởi đầu tốt cho các lệnh và khái niệm cơ bản và thiết yếu.