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

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

3.So sánh TRUNCATE với DELETE ?

* Cơ bản:
- TRUNCATE là câu DDL, vì vậy, chịu sự chi phối các đặc điểm của câu DDL.
- DELETE là câu DML, vì vậy, chịu sự chi phối các đặc điểm của câu DML.

*Nâng cao:
- TRUNCATE:
+ bản chất là DROP và Re-CREATE Segment
+ Reset HWM
+ Ko làm "fire" các DML trigger.
+ ...

- DELETE:
+ Có thể chỉ định miền dữ liệu cần xóa.
+ Cần COMMIT/ROLLBACK.
+ Có thể Flashback data/ Row version/ ...
+ Làm "fire" DML Trigger.

4.So sánh PROCEDURE và FUNCTION ?

* Cơ bản:
- Giống: điều sử dụng ngôn ngữ PL/SQL.
- Function có RETURN giá trị, Procedure thì không có từ khóa RETURN.

*Nâng cao:
- Function có gọi thực thi từ câu lệnh SQL (có một số giới hạn...), còn Procedure thì không.
- Function thường sử dụng để trong các thao tác tính toán.
- Procedure thường sử dụng để thực thi các "Business logic".
- Procedure có thể return giá trị thông qua biết kiểu OUT.
View có chứa data ko ? Khi update table thì data của view tương ứng có update theo ko ?

5.Trong Oracle, nếu View bình thường thì không chứa data, chỉ chứa một query trỏ vào data thôi. Còn view chứa data là mview.

Khi update table thì data của view tương ứng sẽ update theo, nếu view đó là simple view.

Nếu là complex view thì phải nằm ngoài các trường hợp sau: Chứa UNION, UNION ALL, ROWNUM, Group fucntion.

6.SCHEMA là gì ? So sánh SCHEMA và USER ?

Schema trong Oracle khác với SQL Server, có thể nói quan hệ giữa Schema và User trong Oracle là 1-1. Schema bao gồm các đối tượng logic (table, fn, sp, index...) của một user. Schema và User có trùng tên với nhau.
7. 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ề
8. 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
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

9. 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
 

0 Comment "Câu hỏi phỏng vấn SQL - Oracle"

Post a Comment