Categories

Subscribe Now

* You will receive the latest news and updates on your favorite celebrities!

Automation Series

Học SQL qua câu hỏi (Phần 3)
Database

Học SQL qua câu hỏi (Phần 3) 

21. Chúng ta có thể đổi tên một cột trong đầu ra của SQL query được không?

Có. Có thể dùng câu lệnh sau để làm việc này:

SELECT column_name AS new_name FROM table_name;
22. Thứ tự của các mệnh đề trong câu lệnh SQL SELECT như thế nào?

Thứ tự các mệnh đề SQL SELECT là: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY. Trong đó chỉ có điều khoản SELECT và FROM là bắt buộc phải có, các mệnh đề khác có thể có hoặc không.

23. Giả sử một bảng Student có hai cột, Name and Marks. Làm thế nào để có được tên và điểm của ba sinh viên top đầu

SELECT Name, Marks FROM Student s1 where 3 <= (SELECT COUNT(*) FROM Students s2 WHERE s1.marks = s2.marks)

24. SQL comments là gì?

Đôi khi bạn muốn ghi chú thích vào câu truy vấn SQL của bạn, để làm cho câu truy vấn ấy trở nên rõ ràng và dễ hiểu hơn, khi ấy bạn sử dụng SQL comment.

Khi câu truy vấn được thực thi thì trình biên dịch sẽ tự động bỏ qua những dòng có comment. Vì thế chương trình sẽ không có lỗi.

Có 2 cách để tạo SQL comments:

  • Sử dụng 2 dấu gạch ngang liên tiếp (–): đây là comment trên một dòng, tức chỉ có hiệu lực 1 trên dòng mà bạn đặt comment này, được tính từ sau 2 dấu gạch cho đến cuối dòng. Khi bạn đặt dấu comment vào dòng nào, thì ngay lập tức dòng đó sẽ bị chuyển thành màu xanh lá (green), đó là dấu hiệu để nhận biết dòng lệnh của bạn đã bị comment (và trình biên dịch sẽ bỏ qua dòng này, tính từ sau 2 dấu gạch)
-- text_of_comment  
  • Sử dụng cú pháp /*…*/: đây là comment dành cho một khối lệnh (có thể nhiều hơn một dòng). Trong dấu … là phần bạn muốn comment. Cũng tương tự như 2 dấu gạch, những dòng comment cũng sẽ chuyển sang màu xanh lá và trình biên dịch tự động bỏ qua trong lúc thực thi.
 /*
 text_of_comment 1
 text_of_comment 2
 text_of_comment 3
 ...
*/

25. Sự khác nhau giữa các câu lệnh TRUNCATE, DELETE và DROP?

  • Lệnh DELETE có tác dụng xóa một số hoặc tất cả các hàng từ một bảng dựa trên những điều kiện được chỉ định. Các bản ghi này cũng có thể được phục hồi lại (Roll back).
  • Lệnh TRUNCATE xóa toàn bộ các bản ghỉ từ bảng bằng cách phân chia lại bộ nhớ các trang. Xử lý này không thể được phục hồi.
  • Lệnh DROP xóa hoàn toàn một bảng từ cơ sở dữ liệu.

26. Các thuộc tính của một giao dịch là gì?

Nói chung các thuộc tính này được gọi là các thuộc tính ACID. Chúng bao gồm:

  • Atomicity – Tính nguyên tử
  • Consistency – Tính nhất quán
  • Isolation – Cô lập
  • Durability – Độ bền

27. ROWID được hiểu là gì?

Đó là một cột giả trong bảng CSDL, bao gồm 18 ký tự cho biết địa chỉ của mỗi dòng trong Cơ sở dữ liệu: Thông thường, ROWID xác định mỗi một row riêng biệt trong table (trừ trường hợp cluster table), ghi lại cách thức tổ chức dữ liệu và là cách truy cập dữ liệu nhanh nhất có thể. ROWID gồm block.row.file, trong đó:

  • block : chuỗi hệ hexa cho biết block chứa row
  • row : chuỗi hệ hexa cho biết row trong block
  • file : chuỗi hệ hexa cho biết database file chứa block
Ví dụ: 
0000000F.0000.0002 ==> Được hiểu là row đầu tiên trong block 15 của data file thứ hai.

28. Định nghĩa UNION, MINUS, UNION ALL, INTERSECT ?

  • UNION – UNION ALL Nếu bạn cần viết hai hay nhiều câu truy vấn SELECT khác nhau nhưng bạn muốn nó trả về một danh sách kết quả duy nhất thì bạn phải sử dụng toán tử UNION. Mệnh đề/Toán tử UNION kết hợp kết quả của các câu lệnh SELECT mà không trả về bất cứ bản sao nào của bản ghi (mỗi bản ghi là duy nhất) Để sử dụng UNION, cần tuân thủ nguyên tắc:

Số lượng colums trong tất cả các lệnh SELECT phải bằng nhau

Mỗi column tương ứng vị trí phải có cùng kiểu dữ liệu và độ dài Cú pháp cơ bản của mệnh đề UNION trong SQL như sau:

SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]

UNION/UNION ALL

SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]

Theo mặc định thì UNION sẽ loại bỏ các kết quả trùng lặp của các câu SELECT nên chúng ta có các lựa chọn sau:

    • Nếu chọn UNION DISTINCT thì nó sẽ loại bỏ các kết quả trùng.
    • Nếu chọn UNION ALL thì nó giữ lại các kết quả trùng.
    • Nếu không chọn gì thì mặc định nó sẽ lấy UNION DISTINCT
  • MINUS Toán tử MINUS chỉ tồn tại trong Hệ quản trị dữ liệu Oracle, trong SQL nó tương đương với toán tử EXCEPT. Toán tử này được sử dụng để kết hợp 2 câu lệnh SELECT, nó trả về tất cả các bản ghi chỉ thuộc vào bảng của câu truy vấn SELECT đầu tiên, những bản ghi giao nhau và những bản ghi của câu truy vấn SELECT thứ 2 thì không được lấy vào kết quả. Các qui tắc áp dụng cho toán tử UNION cũng áp dụng cho toán tử EXCEPT. MySQL không hỗ trợ toán tử EXCEPT.

Cú pháp cơ bản của EXCEPT trong SQL như sau:

SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]

MINUS/EXCEPT

SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]
  • INTERSECT Mệnh đề/Toán tử INTERSECT trong SQL được sử dụng để kết hợp hai lệnh SELECT, lấy ra nhữngbản ghi nào mà nó hiện diện ở trong cả 2 bảng (có trong bảng này và cũng có trong bảng kia) Các qui tắc áp dụng cho toán tử UNION cũng áp dụng cho toán tử INTERSECT. Trong MySQL không hỗ trợ toán tử INTERSECT. Cú pháp cơ bản của INTERSECT trong SQL như sau:
SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]

INTERSECT

SELECT cot1 [, cot2 ]
FROM bang1 [, bang2 ]
[WHERE dieu_kien]

29. Transaction là gì?

Transaction là đơn vị hoặc dãy công việc (operation) được thực hiện theo một thứ tự logic và hợp lý, có thể được thao tác bởi người dùng hoặc bởi một Database program. Đây là một tiến trình xử lý để thực hiện một chức năng theo ý muốn của người dùng, được xác định điểm đầu và điểm cuối, được chia nhỏ thành các operation độc lập, tiến trình được thực thi một cách tuần tự các operation đó, chúng chỉ có thể cùng nhau thành công, hoặc cùng nhau thất bại. Nếu việc thực thi một operation nào đó bị fail (hỏng) đồng nghĩa với việc dữ liệu phải rollback (trở lại) trạng thái ban đầu. Ví dụ, nếu bạn đang tạo một bản ghi hoặc cập nhật một bản ghi hoặc xóa một bản ghi từ một bảng, thì bạn đang thực hiện transaction trên bảng đó. Thực tế, bạn sẽ tập hợp nhiều truy vấn SQL vào trong một nhóm và sẽ thực thi tất cả truy vấn này cùng với nhau như là một phần của một transaction. Cú pháp khai báo một transaction:

BEGIN TRAN
   -- lệnh 1
   -- lệnh 2
   -- ...
COMMIT

30. UNIQUE và PRIMARY KEY constraints khác nhau như thế nào?

Cả 2 ràng buộc đều để ngăn chặn việc tồn tại những giá trị trùng nhau trong cùng một cột được quy định. Tuy nhiên có sự khác nhau như dưới đây: PRIMARY KEY:

  • Trong 1 bảng chỉ có duy nhất một và chỉ một khóa chính
  • Không thể chấp nhận giá trị NULL

UNIQUE:

  • Trong 1 bảng có thể không có, hoặc có (một hoặc nhiều) trường UNIQUE.
  • Có thể có giá trị NULL

Phần 4

Related posts

Leave a Reply

Required fields are marked *

error: Content is protected !!