Top 16 SQL Interview Questions & Answers
- PhongPX
- Oct 12, 2020
- 6 min read
Hôm nay mình sẽ làm top 16 câu hỏi và đáp án khi đi phỏng vấn có liên quan đến SQL.
Câu 1, DBMS là gì ?
DBMS là chữ viết tắt cho Database Management System, hay còn có thể hiểu sang tiếng việt là hệ thống quản lý cơ sở dữ liệu. Vậy quản lý cơ sở dữ liệu ở đây là nó làm những công việc gì ? Những công việc mà hệ thống này làm bao gồm khởi tạo cơ sở dữ liệu, bảo trì, duy trì hoạt động cho cơ sở dữ liệu đó, đồng thời cho phép người dùng có thể sử dụng được các tài nguyên của cơ sở dữ liệu đó.
Câu 2, RDBMS là gì ?
RDBMS viết tắt cho Relationall Database Management System. Nó có nội dung tương tự DBMS ở trên nhưng ở hệ thống quản trị cơ sở dữ liệu này thì dữ liệu được lưu trong các Table, các trường của dữ liệu tương ứng với các cột trong Table. Và điều đặc biệt là mỗi Table thì lại có mối quan hệ với nhau (Relational) thông qua các khóa (Key).
Đại diện tiêu biểu cho hệ thống như vậy chính là SQL Server.
Câu 3, SQL là gì ?
SQL là viết tắt cho Structure Query Language, dịch sang tiếng việt là "Ngôn ngữ truy vấn có cấu trúc". SQL được sử dụng để giao tiếp với cơ sở dữ liệu.
Giao tiếp với cơ sở dữ liệu ở đây bao gồm những công việc như phục hồi, cập nhật, thêm, xóa, sửa và quan trọng nhất là lấy được dữ liệu từ cơ sở dữ liệu.
Câu 4: Database là gì ?
Database là mô hình dữ liệu được tổ chức để có thể truy cập, lưu trữ, quản lý dữ liệu. Một database thì luôn có cấu trúc để có thể tổ chức lưu trữ dữ liệu.
Câu 5, Tables là gì, Field là gì ?
Ví dụ:
Table: Employee.
Field: Emp ID, Emp Name, Date of Birth.
Data: 201456, David, 11/15/1960.
Câu 6: Primary Key là gì ?
Primary key còn được gọi là khóa chính, nó chính là 1 Filed trong Table, thể hiện xác định giá trị cho 1 dòng dữ liệu trong table. Primary Key thì không thể mang giá trị bằng NULL.
Câu 7, Unique Key là gì ?
Uniique Key hay còn được gọi là khóa duy nhất, mục đích của nó là đảm bảo không có 2 hàng trong bảng có cùng một giá trị tại cột được đặt làm khóa Unique.
Ví dụ: mỗi sinh viên được cấp tài khoản Email của trường nhưng không thể tồn tại 2 sinh viên có chung một Email được, do đó khi thiết kế DB ta cho trường Email là Unique Key.
Chú ý: Unique cho phép lưu giá trị Null nhưng chỉ lưu duy nhất được 1 lần.
Tổng thể thì ta kết luận được rằng: Primary Key là một dạng đặc biệt của Unique Key.
CREATE TABLE Student (
studentid int not null primary key,
studentname nvarchar(30),
dateofbirth date,
email varchar(50) UNIQUE
);
Câu 8: Foreign Key là gì ?
Foreign key hay còn được gọi là khóa ngoại. Khóa ngoại trên 1 Table sẽ chính là khóa chính trên một Table khác, dựa vào điều này ta có thể xác định được mối liên hệ giữa 2 Table trên.
Câu 9: Join là gì ?
Join hay còn gọi là phép kết. Phép kết nhằm mục đích để có thể truy vấn dữ liệu dựa trên mối liên hệ giữa các bảng, mối liên hệ đó được xác định dựa vào khóa chính, khóa ngoại từ trước.
Vậy câu hỏi là chúng ta có thể Join 2 Tables mà không cần khóa chính và khóa ngoại được không ?
Câu trả lời là được, không có một nguyên tắc nào bắt phải tạo khóa thì mới Join 2 bảng được, khi Join ta chỉ cần xác định được cột nào ở bảng 1 có "cùng giá trị" với cột nào ở bảng 2, sau đó thực hiện truy vấn bình thường.
Tuy nhiên, việc tạo khóa (khóa chính, khóa ngoại) là một việc vô cùng quan trọng trong thiết kế cơ sở dữ liệu. Trong khi khóa chính là trường giúp ta xác định được dòng dữ liệu nào cần lấy, khóa ngoại nhằm ngăn chặn những câu lệnh Update hay Delete "bất thường" hay không mong muốn.
Câu 10, Các loại Join và giải thích từng loại
Có 4 loại Join phụ thuộc vào mục đích truy vấn dữ liệu và mối liên hệ giữa các Tables.
Inner Join:
Kết quả từ Inner join trong SQL là tập hợp dữ liệu trong đó giá trị dùng để join hai table với nhau đều có ở cả hai bảng, nghĩa là kết quả là GIAO của hai tập hợp dữ liệu.Các bản ghi chỉ xuất hiện ở một trong hai bảng sẽ bị loại.
Left Join:
Lấy toàn bộ các dòng dữ liệu ở table bên trái và với những dòng dữ liệu tương ứng ở bảng bên phải CÓ giá trị ở bảng bên trái, nếu không có dữ liệu tương ứng bảng bên phải sẽ trả về kết quả null.
Right Join:
Ngược lại so với LEFT JOIN, lấy toàn bộ các dòng dữ liệu ở table bên phải và với những dòng dữ liệu tương ứng ở bảng bên trái CÓ giá trị ở bảng bên phải, nếu không có dữ liệu tương ứng bảng bên trái sẽ trả về kết quả null.
Full Join:
Kết quả gồm tất cả các bản ghi của cả hai bảng. Với các bản ghi chỉ xuất hiện trong một bảng thì các cột dữ liệu từ bảng kia được điền giá trị NULL.
Câu 11, View là gì ?
View là 1 bảng ảo (Virtual Table), được tạo thành từ data của 1 bảng hoặc nhiều bảng, tùy thuộc vào mối liên hệ giữa các bảng. Khi tạo một View thì nó tốn ít bộ nhớ hơn là việc tạo một Table.
Câu 12, Relationship là gì và giải thích các loại Relationship ?
Database Relationship được hiểu là mối liên hệ giữa các tables trong một cơ sở dữ liệu. Có tất cả 4 loại Relationship đó là:
Quan hệ một - một
Quan hệ một - nhiều
Quan hệ nhiều - nhiều
Quan hệ Self Reference
Trong đó:
Quan hệ một - một (One - One):
Ví dụ ta có một quan hệ giữ bảng customers và bảng addresses. Nếu mỗi address có thể thuộc một và chỉ một customer thì quan hệ này gọi là quan hệ một – một.
Quan hệ một - nhiều (One - Many):
Đây là loại quan hệ rất hay được sử dụng trong thiết kế database.
customer có thể tạo một hoặc nhiều orders.
orders có thể chứa nhiều items.
mỗi item có thế chứa description, name, price và một số các thông tin khác nữa.
Quan hệ nhiều - nhiều (Many - Many):
Ví dụ chúng ta có bảng hóa đơn, và bảng sản phẩm. Mỗi hóa đơn thì có nhiều sản phẩm, 1 sản phẩm cũng có thể thuộc nhiều hóa đơn, đó chính là mối quan hệ nhiều nhiều. Và khi đó để thể hiện mối quan hệ nhiều nhiều thì ta cần có một bảng trung gian ở giữa gọi là bảng Chi tiết hóa đơn để miêu tả mối quan hệ này.
Quan hệ Self - Reference:
Đây là quan hệ mà một bảng cần một quan hệ với chính nó. VD. khách hàng có thể tham chiếu với các customers khác nữa.
Câu 13 : Stored Procedure là gì ?
Stored Procedure được hiểu như là một Function mà trong đó chứa các câu lệnh SQL thao tác với cơ sở dữ liệu. Stored Procedure được thực hiện bất cứ khi nào hoặc bất cứ đâu nó được gọi.
Câu 14, Trigger là gì ?
Trigger là một đoạn code chương trình tự động thực hiện khi có một sự kiện xảy ra trong table hoặc view trên database. Trigger giúp duy trì sự ổn định, cân bằng và tính đúng đắn cho cơ sở dữ liệu.
Ví dụ: Khi thêm mới một hàng dữ liệu 1 học sinh trên bảng Student thì các bảng Exam, Score cũng được thêm mới dữ liệu liên quan đến sinh viên đó. Việc cài đặt trigger sẽ đảm bảo việc đó được thực hiện khi thao tác trên cơ sở dữ liệu.
Câu 15, Sự khác nhau giữa câu lệnh Delete và Truncate. Delete được sử dụng để xóa các rows trong table, điều kiện xóa được thể hiện sau mệnh đề Where. Dữ liệu sau khi Delete thì có thể Restored lại được.
Truncate lại được sử dụng để xóa toàn bộ dữ liệu của table. Dữ liệu sau khi Truncate thì không thể Restore lại được. Vì xóa toàn bộ dữ liệu của bảng nên nếu bảng có khóa ngoại thì không thể Truncate được. Truncate thì sẽ luôn thực thi nhanh hơn Delete.
Câu 16, Contraint là gì ?
Contraint là những từ khóa nhằm xác định loại dữ liệu (khác với kiểu dữ liệu) bao gồm những từ khóa sau:
NOT NULL.
CHECK.
DEFAULT.
UNIQUE.
PRIMARY KEY.
FOREIGN KEY.
Comments