Chào mừng bạn đến với hướng dẫn này về SQL cho tester. Là một tester phần mềm, bạn được yêu cầu thực hiện kiểm tra cơ sở dữ liệu yêu cầu kiến ​​thức về các khái niệm cơ sở dữ liệu và SQL khác nhau. Ngoài ra, bạn được yêu cầu viết các truy vấn SQL để truy xuất, cập nhật và chèn dữ liệu vào cơ sở dữ liệu. Do đó, cũng giống như các nhà phát triển DBA và SQL, việc học kỹ năng này cũng quan trọng không kém đối với các chuyên gia kiểm thử phần mềm.

CƠ BẢN VỀ CƠ SỞ DỮ LIỆU

Cơ sở dữ liệu là gì?

Cơ sở dữ liệu là một tập hợp dữ liệu có tổ chức và có hệ thống được lưu trữ và truy cập vào/từ một hệ thống máy tính. Các tổ chức sử dụng cơ sở dữ liệu như một phương pháp để lưu trữ, quản lý và truy xuất thông tin trong thời gian thực.

DBMS – Hệ thống quản lý cơ sở dữ liệu

DBMS là một hệ thống phần mềm được thiết kế để duy trì và truy cập cơ sở dữ liệu. Nó cho phép người dùng truy cập, tạo, xóa và cập nhật dữ liệu trong cơ sở dữ liệu.

DBMS xác định các quy tắc để thao tác và xác thực dữ liệu này. Chúng ta sử dụng cơ sở dữ liệu khi có một lượng lớn dữ liệu, tính bảo mật của dữ liệu là quan trọng hoặc khi nhiều người dùng phải truy cập dữ liệu đồng thời.

RDBMS – Hệ thống quản lý cơ sở dữ liệu quan hệ

RDBMS là phiên bản nâng cao của DBMS cơ bản. Hệ thống quản lý cơ sở dữ liệu này sử dụng mô hình quan hệ cho cơ sở dữ liệu của nó, tức là RDBMS cho phép người dùng tạo cơ sở dữ liệu quan hệ. 

Cơ sở dữ liệu quan hệ là cơ sở dữ liệu cho phép người dùng lưu trữ dữ liệu liên quan dưới dạng nhiều bảng, được liên kết bằng cách thiết lập mối quan hệ giữa các bảng khác nhau, do đó cung cấp một cách hiệu quả để truy cập cơ sở dữ liệu.

Table

Cơ sở dữ liệu RDBMS sử dụng các bảng để lưu trữ dữ liệu. Bảng không là gì khác ngoài một tập hợp dữ liệu có liên quan đến nhau, ở dạng hàng và cột.

Row

Hàng đại diện cho một tập hợp các trường tạo bản ghi trong cơ sở dữ liệu.

Column

Trong cơ sở dữ liệu, một cột đại diện cho các giá trị cùng loại. Một cột còn được gọi là một thuộc tính.

NGUYÊN TẮC CƠ BẢN

SQL là gì?

SQL là viết tắt của Structured Query Language (Ngôn ngữ truy vấn có cấu trúc). Nó là một ngôn ngữ lập trình được sử dụng để yêu cầu thông tin từ cơ sở dữ liệu. SQL có thể được sử dụng để quản lý và chia sẻ dữ liệu trong hệ quản trị cơ sở dữ liệu quan hệ. Hơn nữa, người dùng có thể thực hiện các hành động như chèn, xóa, chọn, v.v. trên cơ sở dữ liệu.

Lập trình SQL được sử dụng rộng rãi vì sử dụng ngôn ngữ này, chúng ta có thể tạo, lưu trữ cũng như thao tác dữ liệu bên trong cơ sở dữ liệu. Hơn nữa, SQL có thể được nhúng trong các ngôn ngữ khác thông qua các thư viện và mô-đun SQL.

Kiểu dữ liệu

Loại dữ liệuMiêu tả
VARCHAR (kích thước)Dữ liệu ký tự có độ dài thay đổi
CHAR (kích thước)Dữ liệu ký tự có độ dài cố định
BINARY (kích thước)Chuỗi byte nhị phân
NUMBER (a, b)Dữ liệu số có độ dài thay đổi
DATEGiá trị ngày và giờ
LONGDữ liệu ký tự có độ dài thay đổi lên đến 2 gigabyte
CLOBDữ liệu ký tự lên đến 4 gigabyte
RAWDữ liệu nhị phân thô
BLOBDữ liệu nhị phân lên đến 4 gigabyte
BFILEDữ liệu nhị phân được lưu trữ được lưu trữ trong tệp bên ngoài lên đến 4 gigabyte
ROWIDHệ thống số cơ sở 64 cho địa chỉ duy nhất của một hàng cụ thể trong bảng

Toán tử

Toán tửMiêu tả
+Cộng giá trị của toán hạng
Trừ các giá trị của toán hạng
*Nhân các giá trị của toán hạng
/Chia giá trị của toán hạng
%Chia lấy dư các toán hạng

Toán tử so sánh

Trong bảng dưới đây, nếu điều kiện được thỏa mãn thì giá trị Boolean “True” được trả về.

Toán tửMiêu tả
=Xác định xem giá trị của các toán hạng có bằng nhau không.
! =Kiểm tra xem giá trị của các toán hạng có không bằng nhau không.
>Xác định xem toán hạng bên trái có lớn hơn toán hạng bên phải hay không.
<Kiểm tra xem toán hạng bên trái có nhỏ hơn toán hạng bên phải hay không.
> =Xác định xem toán hạng bên trái có lớn hơn hoặc bằng toán hạng bên phải hay không.
<=Kiểm tra xem toán hạng bên trái có nhỏ hơn hoặc bằng toán hạng bên phải hay không.
!>Xác định xem toán hạng bên phải không nhiều hơn toán hạng bên trái.
! <Kiểm tra nếu toán hạng bên trái không nhiều hơn toán hạng bên phải.

Toán tử logic

Toán tửMiêu tả
ORTrả về true nếu toán hạng là đúng. Ngược lại, nó trả về false nếu cả hai toán hạng đều sai.
ANDTrả về true nếu cả hai toán hạng đều đúng. Ngược lại, nó trả về false nếu một trong hai hoặc cả hai toán hạng đều sai
NOTTrả về true nếu điều kiện sai và trả về false nếu điều kiện đúng.

CÂU TRUY VẤN TRONG SQL

Truy vấn CREATE DATABASE

Truy vấn CREATE DATABASE được sử dụng để tạo một cơ sở dữ liệu SQL mới. Sau đây là cú pháp:

CREATE DATABASE tên_database;

Truy vấn CREATE DATABASE

Truy vấn DROP DATABASE được sử dụng để loại bỏ hoặc xóa cơ sở dữ liệu SQL hiện có. Cú pháp:

DROP DATABASE tên_database;

Truy vấn RENAME DATABASE

Truy vấn RENAME DATABASE được sử dụng để đổi tên cơ sở dữ liệu hiện có. Sau đây là cú pháp:

RENAME DATABASE tên_database_cũ TO tên_database_mới;

Truy vấn SELECT DATABASE

Truy vấn SELECT DATABASE được sử dụng để chọn tất cả các trường bên trong cơ sở dữ liệu hiện có. Cú pháp:

SELECT * FROM tên_database;

Tạo bảngCREATE TABLE

Truy vấn CREATE TABLE được sử dụng để tạo một bảng mới. Sau đây là cú pháp cho cách sử dụng bảng tạo SQL

CREATE TABLE <tên_bảng> (<Field><Kiểu dữ liệu><(Độ dài)><constraint>,..);

Xóa bảngDROP TABLE

Truy vấn DROP TABLE được sử dụng để loại bỏ một bảng hiện có. Cú pháp:

DROP TABLE <tên_bảng>;

Đổi tên bảngRENAME

Truy vấn RENAME được sử dụng để thay đổi tên của bảng hiện có. Sau đây là cú pháp:

RENAME tên_bảng_cũ TO tên_bảng_mới

Xóa tất các hàng và giữ nguyên cấu trúc – TRUNCATE

Truy vấn TRUNCATE TABLE được sử dụng để xóa tất cả các hàng(dòng) khỏi bảng, giữ nguyên cấu trúc của nó. Sau đây là cú pháp:

TRUNCATE TABLE <tên_bảng>;

SELECT * INTO

Truy vấn này được sử dụng để sao chép một bảng vào một bảng khác trong cùng một cơ sở dữ liệu. Cú pháp:

SELECT * INTO <bảng_mới> FROM <bảng_gốc>;

ALTER TABLE

Lệnh ALTER có thể được sử dụng để thực hiện các thao tác khác nhau trên cơ sở dữ liệu.

Đây là những truy vấn được liệt kê dưới đây:

Thêm một cột vào bảng

ALTER TABLE <tên_bảng> ADD <tên_field> <Kiểu dữ liệu> <(độ dài)>; 

ALTER TABLE department ADD dep_name varchar (20);

Sửa đổi các thuộc tính của dữ liệu trong một cột

ALTER TABLE <tên_bảng> MODIFY (<tên_cột> <kiểu_dữ_liệu_mới>); 

ALTER TABLE department MODIFY dep_name varchar (15);

Loại bỏ hoặc xóa một cột của bảng.

ALTER TABLE <tên_bảng> DROP COLUMN <tên_cột>; 

ALTER TABLE department DROP COLUMN address;

Đổi tên một cột

ALTER TABLE <tên_bảng> RENAME COLUMN <tên_cột_cũ> TO <tên_cột_mới>;

ALTER TABLE department RENAME COLUMN dep_id to department_id;

Xóa bảng

DROP TABLE <tên_bảng>; 

DROP TABLE department;

Xóa toàn bộ hàng trong bảng và giữ nguyên cấu trúc

TRUNCATE TABLE <tên_bảng> 

TRUNCATE TABLE department;

Đổi tên bảng

RENAME <tên_bảng_cũ> TO <tên_bảng_mới> 

RENAME dep_name TO department_name;

CONSTRAINT

ConstraintDescription
NOT NULLNó chỉ định rằng một cột phải có một số giá trị
UNIQUENó chỉ định rằng các cột phải có giá trị duy nhất
PRIMARY KEYNó chỉ định một cột hoặc một tập hợp các cột xác định duy nhất một hàng, nó không cho phép các giá trị rỗng
FOREIGN KEYNó là cột tham chiếu đến cột của bảng
CHECKNó chỉ định một điều kiện phải được thỏa mãn bởi tất cả các hàng trong bảng

INSERT

Các lệnh insert trong SQL được sử dụng để chèn dữ liệu vào cơ sở dữ liệu.

Điều này có thể đạt được bằng cách sau:

Chèn các giá trị do người dùng cung cấp

Điều này được sử dụng để chèn các giá trị nhất định do người dùng cung cấp vào bảng. Sau đây là cú pháp:

INSERT INTO <tên_bảng> VALUES ( giá_trị_1, giá_trị_2 …); 

INSERT INTO department VALUES(20, 'HR', 'DELHI');

Chèn các giá trị vào một cột cụ thể của bảng

Truy vấn này được sử dụng để chèn giá trị vào một số cột cụ thể bên trong bảng. Sau đây là cú pháp:

INSERT INTO <tên_bảng> (cột_1, cột_ 2, cột_ 3,..) VALUES (giá_trị_1, giá_trị_2, giá_trị_3,…..); 

INSERT INTO department (dept_id , dep_name) VALUES(20, 'finance'); 

TRUY VẤN SELECT

SELECT *

Câu lệnh SELECT trong SQL được sử dụng để chọn một số dữ liệu cụ thể từ các bảng trong cơ sở dữ liệu và hiển thị chúng cho người dùng. Sau đây là cú pháp để tìm tất cả các field:

SELECT * FROM tên_bảng;

SELECT DISTINCT

Truy vấn SQL này được sử dụng để chọn tất cả các giá trị duy nhất được lưu trữ trong bảng trong một cơ sở dữ liệu nhất định. Cú pháp:

SELECT DISTINCT tên_cột FROM tên_bảng;

SELECT COUNT

SELECT COUNT hiển thị số hàng trong bảng được chỉ định thỏa mãn điều kiện do người dùng đưa ra. Điều kiện cho một truy vấn có thể được chỉ định trong mệnh đề WHERE. Nó trả về 0 nếu không có hàng nào thỏa mãn điều kiện đã chỉ định.

SELECT COUNT (tên_cột) FROM tên_bảng WHERE điều_kiện;

SELECT COUNT (dep_sal) FROM department WHERE dep_sal>10000;

SELECT TOP

Truy vấn SELECT TOP được sử dụng để chọn số lượng bản ghi được chỉ định hàng đầu từ bảng.

SELECT TOP số_lượng_dòng FROM tên_bảng WHERE điều_kiện;

SELECT TOP 4 FROM department WHERE dep_sal>10000;

SELECT AS

Lệnh SELECT AS được sử dụng để thay đổi tên của cột hoặc bảng bằng bí danh. Tên đã cho này chỉ tồn tại trong khoảng thời gian truy vấn được thực thi.

SELECT tên_cột AS tên_cột_mới FROM tên_bảng;

SELECT dep_id AS department_id FROM department;

SELECT IN

Lệnh SELECT IN được sử dụng để chỉ định nhiều giá trị trong phần WHERE của truy vấn.

SELECT tên_cột FROM tên_bảng WHERE tên_cột IN (giá_trị_1, giá_trị_2, …);

SELECT dep_name FROM department WHERE dep_id IN (1020, 1044);

SELECT DATE

Truy vấn SELECT DATE được sử dụng để trả về ngày và giờ hiện tại của cơ sở dữ liệu, định dạng là YYYY-MM-DD hh:mm:ss.mmm

SELECT GETDATE();

SELECT SUM

Truy vấn SUM được sử dụng để trả về tổng của cột số được chỉ định.

SELECT SUM tên_cột FROM tên_bảng WHERE điều_kiện;

SELECT SUM dep_sal FROM department WHERE dep_sal>10000;

SELECT NULL

Truy vấn SELECT NULL được sử dụng để chọn tất cả các bản ghi có giá trị null.

SELECT tên_cột FROM tên_bảng WHERE điều_kiện IS NULL;

SELECT dep_sal FROM department WHERE dep_sal>10000 IS NULL;

MỆNH ĐỀ

WHERE

Mệnh đề WHERE được sử dụng để chỉ chọn những bản ghi thỏa mãn điều kiện đã chỉ định

SELECT tên_cột FROM tên_bảng WHERE điều_kiện;

SELECT dep_sal FROM department WHERE dep_sal>10000;

AND

AND là một toán tử được sử dụng để chọn các bản ghi trên nhiều điều kiện. Toán tử AND trả về giá trị nếu cả hai điều kiện được chỉ định đều ĐÚNG.

SELECT tên_cột FROM tên_bảng WHERE điều_kiện_1 AND điều_kiện_2…;

SELECT dep_sal FROM department WHERE dep_sal>10000 AND dep_name=HR;

OR

OR là một toán tử được sử dụng để chọn các bản ghi trên nhiều điều kiện. Toán tử OR trả về giá trị nếu một trong hai điều kiện được chỉ định là TRUE.

SELECT tên_cột FROM tên_bảng WHERE điều_kiện_1 OR điều_kiện_2…;

SELECT dep_sal FROM department WHERE dep_sal>10000 OR dep_name=HR;

GROUP BY

Truy vấn GROUP BY trong SQL được sử dụng để nhóm các hàng theo điều kiện được chỉ định hoặc tên cột được chỉ định. Truy vấn GROUP BY này thường được sử dụng với các hàm như MAX, IN, AVG, SUM, COUNT.

SELECT tên_cột FROM tên_bảng WHERE điều_kiện_1 GROUP BY tên_cột ;

SELECT COUNT(dep_sal) FROM department GROUP BY dep_name;

HAVING

Mệnh đề HAVING của SQL được sử dụng khi chúng ta muốn chỉ định điều kiện để lựa chọn các bản ghi có các hàm như MAX, IN, AVG, SUM, COUNT như với các hàm này thì mệnh đề WHERE không thể được sử dụng.

SELECT tên_cột FROM tên_bảng GROUP BY tên_cột HAVING điều_kiện;

SELECT COUNT (dep_id) FROM department GROUP BY dep_name HAVING dep_sal>10000;

ORDER BY

ORDER BY trong SQL được sử dụng để sắp xếp lựa chọn của chúng ta theo thứ tự tăng dần hoặc giảm dần.

SELECT tên_cột FROM tên_bảng ORDER BY tên_cột ASC/DESC;

ASC: tăng dần
DESC: giảm dần

SELECT dep_name FROM department ORDER BY dep_id ASC;

UPDATE

Lệnh UPDATE được sử dụng để thay đổi hoặc sửa đổi bất kỳ field/record hiện có nào trong bảng.

UPDATE tên_bảng SET tên_cột_1= val1, tên_cột_2 = val2… WHERE điều_kiện;

UPDATE department SET dep_name="travel" WHERE dep_id=1020;

DELETE

Lệnh DELETE được sử dụng để xóa bất kỳ field/record hiện có nào khỏi bảng.

DELETE FROM tên_bảng WHERE điều_kiện;

DELETE FROM department WHERE dep_name="Travel";

UNION

Toán tử UNION được sử dụng để kết hợp tập hợp dữ liệu kết quả của hai hoặc nhiều câu lệnh SELECT.

SELECT tên_cột FROM tên_bảng UNION SELECT tên_cột FROM tên_bảng_2;

SELECT dep_name FROM department UNION SELECT emp_name FROM employee;

INTERSECT

Toán tử INTERSECT trong SQL được sử dụng để trả về những giá trị chung cho cả hai tập dữ liệu. Toán tử này sẽ chỉ hoạt động nếu cả hai tập dữ liệu được giao nhau có kiểu dữ liệu tương tự.

SELECT tên_cột FROM tên_bảng_1 INTERSECT SELECT tên_cột FROM tên_bảng _2;

SELECT dep_name FROM department INTERSECT SELECT emp_dep FROM employee;

EXCEPT

Toán tử EXCEPT được sử dụng giữa hai câu lệnh SELECT. Toán tử này chọn những hàng có trong câu lệnh SELECT chứ không phải trong câu lệnh SELECT thứ hai.

SELECT tên_cột FROM tên_bảng EXCEPT SELECT tên_cột FROM tên_bảng ;

SELECT dep_name FROM department EXCEPT SELECT emp_dep FROM employee;

JOIN

Rất đơn giản, lệnh JOIN trong SQL được sử dụng để nối hoặc kết hợp các hàng hoặc toàn bộ bảng, trên cơ sở một cột chung giữa chúng.

Có nhiều kiểu nối khác nhau trong SQL như sau:

INNER JOIN

INNER JOIN trong SQL được sử dụng để kết hợp các bản ghi chung được chia sẻ bởi hai tập dữ liệu.

SELECT tên_cột FROM bảng_1
INNER JOIN bảng_2
ON bảng_1.tên_cột = bảng_2.tên_cột;

SELECT dep_name FROM department 
INNER JOIN employee 
ON department.dep_name = employee.emp_dep;

LEFT JOIN

LEFT JOIN trong SQL được sử dụng để kết hợp toàn bộ bản ghi từ bảng bên trái và các bản ghi chung của cả hai bảng.

SELECT tên_cột FROM bảng_1
LEFT JOIN bảng_2
ON bảng_1.tên_cột = bảng_2.tên_cột;

SELECT dep_name FROM department 
LEFT JOIN employee 
ON department.dep_name = employee.emp_dep;

RIGHT JOIN

RIGHT JOIN được sử dụng để kết hợp toàn bộ bản ghi từ bảng 2 (bên phải) và các bản ghi chung của cả hai bảng.

SELECT tên_cột FROM bảng_2
RIGHT JOIN bảng_1
ON bảng_2.tên_cột = bảng_1.tên_cột;

SELECT emp_name FROM employee 
RIGHT JOIN department 
ON department.dep_name = employee.emp_dep;

FULL OUTER JOIN

FULL OUTER JOIN được sử dụng để kết hợp tất cả các bản ghi từ cả hai bảng khi có một số bản ghi chung giữa các bảng.

SELECT tên_cột FROM bảng_1
FULL OUTER JOIN bảng_2
ON bảng_1.tên_cột = bảng_2.tên_cột;

SELECT dep_name FROM department 
FULL OUTER JOIN employee 
ON department.dep_name = employee.emp_dep;

TỰ JOIN

Tự JOIN được sử dụng để kết hợp một bảng với chính nó bằng cách tạo một bảng tạm thời của chính nó và nối nó với chính nó.

SELECT tên_cột FROM bảng_1 bảng_1_copy, bảng_2 bảng_2_copy WHERE điều_kiện;

CROSS JOIN

CROSS JOIN trong SQL được sử dụng để kết hợp hai bảng trong đó tập kết quả được tạo ra sẽ là tích của số hàng trong bảng đầu tiên và số hàng trong bảng thứ hai. Tập kết quả này thường được gọi là tích Descartes.

SELECT * FROM bảng_1 CROSS JOIN bảng_2;

SELECT * FROM department CROSS JOIN employee;

TRUY VẤN CON (SUBQUERY)

Truy vấn con trong SQL là một truy vấn được lồng trong một truy vấn khác. Các truy vấn con này được đặt trong các mệnh đề SQL như WHERE, HAVING, WITH, FROM, v.v.

Các truy vấn con được thực hiện đầu tiên và kết quả thu được sau khi thực hiện truy vấn này được sử dụng để thực thi truy vấn ngoài hoặc truy vấn chính.

SELECT tên_cột FROM bảng
WHERE điều_kiện
OPERATOR (SELECT tên_cột FROM bảng WHERE điều_kiện);

Trong cú pháp được đưa ra ở trên, truy vấn hiện diện bên trong mệnh đề WHERE được gọi là truy vấn con.

SELECT dep_name FROM department 
WHERE dep_name IN (SELECT dep_name FROM department WHERE dep_sal>1000);

Xem bài Tiếng Anh tại đây

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Copy link
Powered by Social Snap