Câu hỏi phỏng vấn SQL

Câu hỏi phỏng vấn SQL
1. Phân biệt inner join với left join

INNER JOIN: Kết quả trả về chỉ gồm những bản ghi thỏa mãn điều kiện nối hai bảng
LEFT JOIN: select tất cả bản ghi có trong bảng thứ nhất trong mệnh đề FROM, bất kể nó có match với bảng thứ hai hay không. Những bản ghi không match với bảng thứ hai nó sẽ để giá trị NULL

RIGHT JOIN:select tất cả những bản ghi có trong bảng thứ hai trong mệnh đề FROM, bất kể những bản ghi đó có match với bảng thứ nhất hay không

FULL OUTER JOIN: là sự kết hợp của LEFT OUTER JOIN và RIGHT OUTER JOIN. Kết quả trả về tất cả những bản ghi match hoặc không match giữa hai bảng

CROSS JOIN
Cái này chính là tích Đề các. Mỗi bản ghi trong bảng thứ nhất của mệnh đề FROM sẽ kết hợp (vô điều kiện) với các bản ghi trong bảng thứ ha

EQUI JOIN: chính là INNER JOIN cộng thêm điều kiện: nó select toàn bộ các trường có trong hai bảng tham gia nối.

NATURAL JOIN:giống EQUI JOIN cộng thêm điều kiện: nếu hai bảng có hai trường giống nhau thì nó chỉ lấy ra 1 trường.

2. index trong sql
Index (chỉ mục) thực chất là một dạng tương tự như phần mục lục của 1 cuốn sách
Trong SQL, nó đóng vai trò tăng tốc truy xuất
index trong CSDL có hai loại: Clustered Index và Non-Clustered Index
Clustered index: thường được tự tạo ra khi bảng có primary key, clustered index chính là unique index
Non-Clustered Index: foreign key là non-clustered index

Tham khảo:
http://sinhvienit.net/forum/clustered-index-va-non-clustered-index.41251.html
http://www.sqlviet.com/blog/index-giup-tang-hieu-nang-thuc-hien-nhu-the-nao

3. Phân biệt stored procedure ,function và trigger,view

1. Khung nhìn (view) có thể được xem như là một bảng “ảo” trong cơ sở dữ liệu có nội dung được định nghĩa thông qua một truy vấn (câu lệnh SELECT). Như vậy, một khung nhìn trông giống như một bảng với dữ liệu quan sát được là một tập bao gồm các dòng và các cột. Điểm khác biệt giữa khung nhìn và bảng là: khung nhìn không được xem là một cấu trúc lưu trữ dữ liệu tồn tại trong cơ sở dữ liệu. Thực chất dữ liệu quan sát được trong khung nhìn được lấy từ các bảng thông qua câu lệnh truy vấn dữ liệu.

2. Một thủ tục là một đối tượng trong cơ sở dữ liệu bao gồm một tập nhiều câu lệnh SQL được nhóm lại với nhau thành một nhóm (như tập tin BAT trong DOS vậy). Khi một thủ tục lưu trữ đã được định nghĩa, nó có thể được gọi thông qua tên thủ tục, nhận các tham số truyền vào, thực thi các câu lệnh SQL bên trong thủ tục và có thể trả về các giá trị sau khi thực hiện xong.
3. Một trigger là một đối tượng với nội dung là một tập các câu lệnh SQL (tương tự thủ tục). Mỗi một trigger gắn liền với một bảng nào đó trong CSDL và được tự động kích hoạt khi xảy ra những giao tác làm thay đổi dữ liệu trong bảng (INSERT, UPDATE, DELETE).

Điểm khác biệt giữa thủ tục lưu trữ và trigger là: các thủ tục lưu trữ được thực thi khi người sử dụng có lời gọi đến chúng còn các trigger lại được "gọi" tự động khi xảy ra những giao tác làm thay đổi dữ liệu trong các bảng

4. Function: giống như produre nhưng có kết quả trả về

4. Phân biệt JOIN and UNION

A Join: cho phép kết nối dữ liệu liên quan trong các bảng khác nhau
A Union: hợp dữ liệu của 2 bảng mà có các cột loại data giống nhau

5. Phân biệt UNION and UNION ALL
UNION và UNION ALL đều dùng để hợp hai tập bản ghi cùng cấu trúc, nhưng giữa hai mệnh đề có một khác biệt khá tinh tế: UNION loại bỏ các bản ghi trùng lặp trước khi trả lại kết quả, còn UNION ALL giữ lại tất cả các bản ghi từ hai tập ban đầu

6. WHERE clause and HAVING clause

where là câu lệnh dùng để đặt điều kiện lọc trên từng bộ.
Having cũng là câu lệnh đặt điều kiện nhưng là ở trên 1 nhóm xác định. thường là đi kèm với câu lệnh group by

7. How to select first 5 records from a table?

SELECT TOP 5 * FROM EMP

8. What is difference between DELETE and TRUNCATE commands?

DELETE luôn luôn chậm hơn TRUNCATE. Càng có nhiều bản ghi DELETE càng chậm, còn TRUNCATE thì không phụ thuộc vào lượng dữ liệu. DELETE có phạm vi ứng dụng rộng hơn; còn TRUNCATE chỉ dùng được mỗi một việc, nhưng nó lại làm rất nhanh

Tham khảo: http://www.sqlviet.com/blog/delete-va-truncate

*Viết vài câu SQL từ đơn giản tới phức tạp

No comments:

Post a Comment