JavaRush /Blog Java /Random-VI /Phỏng vấn nhà phát triển: phân tích các câu hỏi về cơ sở ...

Phỏng vấn nhà phát triển: phân tích các câu hỏi về cơ sở dữ liệu

Xuất bản trong nhóm
Chào mọi người! Tất cả chúng ta ở đây đều hướng tới một mục tiêu - trở thành Nhà phát triển Java . Có lẽ giai đoạn quan trọng nhất trên con đường trở thành một chuyên gia là cuộc phỏng vấn kỹ thuật. Theo quy định, người phỏng vấn sẽ đi qua các chủ đề chính, đặt một số câu hỏi. Trong bài viết này, chúng ta sẽ nói về một chủ đề quan trọng như vậy - cơ sở dữ liệu . Chúng ta hãy xem những câu hỏi thường gặp nhất và cố gắng trả lời chúng mà không đi sâu vào tài liệu, vì trong trường hợp này, khối lượng của cuốn sách sẽ không đủ cho chúng ta! Vì vậy, chúng ta hãy đi.Phỏng vấn nhà phát triển: phân tích câu hỏi cơ sở dữ liệu - 1

1. Cơ sở dữ liệu là gì? Chúng được chia thành những loại nào?

DBMS có nghĩa là gì?

Phỏng vấn nhà phát triển: phân tích câu hỏi cơ sở dữ liệu - 2Cơ sở dữ liệu (DB) là một cấu trúc có tổ chức được thiết kế để lưu trữ, thay đổi và xử lý thông tin liên quan đến nhau, chủ yếu là khối lượng lớn. Nói cách khác, cơ sở dữ liệu là nơi lưu trữ dữ liệu có cấu trúc. Ví dụ như một cuốn danh bạ điện thoại.

Các loại cơ sở dữ liệu

  1. Cơ sở dữ liệu quan hệ là tập hợp dữ liệu có mối quan hệ được xác định trước giữa chúng. Dữ liệu được lưu trữ dưới dạng tập hợp các bảng bao gồm các cột và hàng. Bảng lưu trữ thông tin về các đối tượng được biểu diễn trong cơ sở dữ liệu. Mỗi cột trong bảng lưu trữ một kiểu dữ liệu cụ thể và mỗi ô lưu trữ một giá trị thuộc tính.
  2. Các hệ thống phi quan hệ (NoSQL) là các hệ thống được thiết kế cho các mô hình dữ liệu cụ thể với các lược đồ linh hoạt. Nói cách khác, đây là những cơ sở dữ liệu lưu trữ dữ liệu không ở dạng sơ đồ bảng, hàng và cột mà ở các định dạng khác.
Bạn có thể đọc thêm về cơ sở dữ liệu phi quan hệ trong bài viết này: Hướng dẫn về NoSQL dành cho nhà phát triển . Hệ thống quản lý cơ sở dữ liệu (DBMS) là một bộ phần mềm mà người dùng có thể tạo cơ sở dữ liệu (DB) và thực hiện các thao tác khác nhau trên chúng: bổ sung, cập nhật, xóa, chọn, v.v. DBMS đảm bảo tính an toàn, toàn vẹn, bảo mật của dữ liệu lưu trữ và cho phép bạn cấp quyền truy cập vào quản trị cơ sở dữ liệu. Ví dụ: MySql là một DBMS cung cấp quyền truy cập vào cơ sở dữ liệu quan hệ hoặc MongoDB cho cơ sở dữ liệu không quan hệ.

2. Bình thường hóa là gì? Dạng chuẩn hóa? Có bao nhiêu hình thức bình thường hóa? Kể tên ba người đầu tiên.

Chuẩn hóa là quá trình tổ chức và cấu trúc dữ liệu trong cơ sở dữ liệu, mang lại tính linh hoạt cao hơn cho cơ sở dữ liệu bằng cách loại bỏ sự dư thừa và không nhất quán của các phụ thuộc. Dạng chuẩn là một thuộc tính của bảng, được xem xét trong bối cảnh chuẩn hóa, đặc trưng cho bảng về tính đơn giản và tính chính xác của cấu trúc. Dạng chuẩn được định nghĩa là một tập hợp các yêu cầu mà một bảng phải đáp ứng. Tổng cộng có sáu dạng thông thường, nhưng trong thực tế không sử dụng nhiều hơn ba dạng đầu tiên:
  1. Dạng bình thường đầu tiên:
    • Tất cả các thuộc tính đều đơn giản (nghĩa là nguyên tử và không thể phân chia);
    • Tất cả dữ liệu đều là vô hướng (nghĩa là dương);
    • Không có hàng trùng lặp (đối với điều này, khóa chính được tạo cho mỗi hàng).
  2. Dạng bình thường thứ hai:
    • Các điều kiện của dạng chuẩn thứ nhất được đáp ứng;
    • Mỗi thuộc tính không khóa đều tham chiếu đến một khóa chính.
  3. Dạng chuẩn thứ ba:
    • Các điều kiện của nhóm bình thường thứ hai được đáp ứng;
    • Các trường không khóa độc lập với các trường không khóa khác: chúng chỉ có thể được liên kết với khóa chính.

3. Không chuẩn hóa

Không chuẩn hóa là việc cố tình giảm bớt hoặc vi phạm các hình thức chuẩn hóa cơ sở dữ liệu, thường là để tăng tốc độ đọc từ cơ sở dữ liệu bằng cách thêm dữ liệu dư thừa. Nói chung, đây là một quá trình ngược lại với quá trình bình thường hóa. Điều này xảy ra vì lý thuyết về dạng chuẩn không phải lúc nào cũng có thể áp dụng được trong thực tế. Ví dụ, các giá trị phi nguyên tử không phải lúc nào cũng “xấu”: thậm chí đôi khi còn ngược lại. Trong một số trường hợp, các kết nối bổ sung là cần thiết khi thực hiện các truy vấn, đặc biệt khi xử lý một lượng lớn thông tin. Điều này cuối cùng có thể cải thiện hiệu suất. Cơ sở dữ liệu dành cho phân tích thường không được chuẩn hóa để tăng tốc độ thực hiện truy vấn. Ví dụ: bạn sẽ thường xuyên lấy mẫu một số dữ liệu cho các báo cáo trong đó các cột không có khóa sẽ liên quan với nhau. Bạn cố tình loại bỏ hình thức chuẩn hóa thứ ba và kết hợp mọi thứ trong một bảng để dễ lấy mẫu - để bạn không phải thực hiện các truy vấn bổ sung cho các bảng khác.

4. Chỉ số

Chỉ mục là một tập hợp các giá trị được sắp xếp được liên kết với một bảng hoặc dạng xem với một cột cụ thể giúp tăng tốc độ truy xuất dữ liệu. Tức là đây là một loại chỉ mục: giống như bảng chữ cái trong danh bạ điện thoại, giúp chúng ta khi tìm kiếm theo họ. Nếu sử dụng đúng cách, tính năng này có thể cải thiện đáng kể hiệu suất khi làm việc với cơ sở dữ liệu lớn. Hoặc bạn có thể giảm nó xuống rất nhiều. Để tăng tốc độ tìm kiếm, các khóa này được lưu trữ trong cấu trúc cây cân bằng để thực hiện tìm kiếm. Theo quy định, chỉ mục cần được nhập vào các trường được tìm kiếm thường xuyên nhất. Bạn nên nghĩ đến việc tạo chỉ mục không sớm hơn khi bạn có ít nhất 10 nghìn bản ghi. Nếu không, bạn sẽ không thấy kết quả đáng chú ý vì tối ưu hóa sớm là TỘI . Và bạn hỏi làm thế nào một chỉ mục có thể ảnh hưởng đến hiệu suất hệ thống? Khi dữ liệu mới được chèn vào hoặc dữ liệu cũ bị xóa, cấu trúc cây cân bằng sẽ được tính toán lại. Trên thực tế, càng nhiều dữ liệu và chỉ mục thì càng cần đếm nhiều cây. Hãy tưởng tượng tình huống: bạn có khoảng 20.000 bản ghi và 7 chỉ mục trên bảng này. Tức là khi chèn dữ liệu bạn cần tính toán lại 7 cây, mỗi cây có 20.000 bản ghi. Nói đúng ra, việc sử dụng chỉ mục cho các bảng mà dữ liệu sẽ được thêm/xóa thường xuyên hoàn toàn không được khuyến khích. Cuối cùng, tôi muốn lưu ý rằng chỉ mục cho các cột mà giá trị thường được tìm thấy nullsẽ không hiệu quả bằng, vì vậy việc thêm chúng vào các cột như vậy là không đáng.

Sự khác biệt giữa các chỉ mục được nhóm và không được nhóm trong SQL là gì?

Phân cụm:

  • Cung cấp thứ tự vật lý cho trường được chọn;
  • Nếu một bảng có chỉ mục được nhóm thì nó được gọi là được nhóm;
  • Không cần nhiều hơn một chỉ mục cho mỗi bảng;
  • Trong MySQL, chỉ mục được nhóm không được người dùng chỉ định rõ ràng, vì nếu bạn không xác định KHÓA CHÍNH trên bảng của mình, MySQL sẽ tìm chỉ mục đầu tiên UNIQUEtrong đó tất cả các cột khóa NOT NULLvà InnoDB sử dụng nó làm chỉ mục được nhóm.

Không phân cụm:

  • Có thể có tới 999 chỉ mục không được phân loại trên một bảng;
  • Chứa con trỏ tới các hàng có dữ liệu thực trong bảng;
  • Không cung cấp trật tự vật lý;
  • Đối với các chỉ mục không được nhóm, có các bảng riêng biệt với dữ liệu được sắp xếp, cụ thể là một bảng cho một cột chứa chỉ mục, do đó, khi yêu cầu dữ liệu không thuộc một trường nhất định, trước tiên truy vấn sẽ được thực hiện trên trường trong bảng này và chỉ sau đó truy vấn bổ sung đối với một hàng trong bảng gốc.
Tạo một chỉ mục không được nhóm:
CREATE INDEX index_name ON table_name(column_name)

6. Chỉ số tổng hợp là gì?

Chỉ mục tổng hợp - được xây dựng bằng cách gửi đến nhiều cột cùng một lúc. Nói cách khác, nó là một chỉ mục phức tạp bao gồm nhiều cột. Các chỉ mục như vậy được sử dụng khi có nhiều cột xuất hiện trong một truy vấn. Tạo chỉ mục tổng hợp:
CREATE INDEX index_name ON table_name(first_column_name, second_column_name, third_column_name)
Thông thường, các chỉ mục này được sử dụng khi dữ liệu trong nhiều cột có liên quan về mặt logic.

7. Chỉ số bao phủ là gì? Chỉ số duy nhất?

Chỉ mục bao phủ là chỉ mục đủ để trả lời một truy vấn mà không cần truy cập vào bảng. Sử dụng chỉ mục này, bạn có thể lấy toàn bộ hàng dữ liệu, nhưng trên thực tế, điều này đơn giản là không cần thiết. Vì bạn không cần phải truy cập trực tiếp vào bảng nguồn và có thể trả lời chỉ bằng cách sử dụng chỉ mục nên việc sử dụng các chỉ mục bao phủ sẽ nhanh hơn một chút. Đồng thời, đừng quên rằng càng có nhiều cột thì bản thân chỉ mục càng trở nên cồng kềnh và chậm chạp. Vì vậy bạn không nên lạm dụng điều này. Ở trên chúng ta đã nói về các chỉ mục được nhóm và không được nhóm, có thể là duy nhất . Điều này có nghĩa là không có hai trường nào có cùng giá trị cho khóa chỉ mục. Nếu không, chỉ mục sẽ không phải là duy nhất vì một số hàng có thể chứa cùng một giá trị. Một ví dụ về việc tạo một chỉ mục không được nhóm duy nhất:
CREATE UNIQUE INDEX index_name ON table_name(column_name)

8. Khóa chính là gì

Khóa chính là một trường trong bảng xác định từng hàng trong bảng cơ sở dữ liệu. Chỉ có thể có một trường như vậy trong một bảng và tất cả các giá trị phải là duy nhất. Không nhắc nhở bạn về bất cứ điều gì? Phỏng vấn nhà phát triển: phân tích câu hỏi cơ sở dữ liệu - 3Xét cho cùng, khóa chính không gì khác hơn là một chỉ mục được nhóm, duy nhất . Theo quy định, khóa chính được tạo khi tạo bảng:
CREATE TABLE table_name(
column_name int PRIMARY KEY,..)
Một hạn chế sẽ được tự động thêm vào cột này - NOT NULL. Bạn cũng có thể đặt khóa cho bảng đã được tạo:
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
Nếu khóa chính được thêm theo cách được mô tả ở trên thì giá trị của các trường được chỉ định làm khóa chính ( column_name) sẽ được kiểm tra để đảm bảo chúng không chứa giá trị null (một ràng buộc cũng sẽ được thêm vào - NOT NULL).

Khóa ngoại là gì?

Khóa ngoại là thuộc tính được tạo để cung cấp mối quan hệ giữa các bảng. Thông thường, khóa ngoại được đặt trên các cột trong bảng phụ và trỏ đến một trong các cột của bảng chính. Có thể được chỉ định như khi tạo bảng:
CREATE TABLE table_name{
column_name int,..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) }
Vì vậy sau khi tạo bảng:
ALTER TABLE table_name
ADD FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name));
Bạn có thể đặt hành vi của khóa ngoại khi thao tác với trường mà nó đề cập đến. Thao tác có thể có ON DELETEcác loại sau ON UPDATE: Các tùy chọn hành vi có thể có:
  • CASCADE— với thuộc tính này, các hàng trong bảng phụ thuộc sẽ tự động bị xóa hoặc thay đổi khi các hàng liên quan bị xóa hoặc thay đổi trong bảng chính;
  • SET NULL— với thuộc tính này, khi một hàng liên quan bị xóa hoặc cập nhật khỏi bảng chính, giá trị NULLcho cột khóa ngoại sẽ được đặt;
  • NO ACTION— từ chối các nỗ lực xóa hoặc thay đổi các hàng trong bảng chính nếu có các hàng liên quan trong bảng phụ thuộc;
  • RESTRICT- tương đương với NO ACTION;
  • SET DEFAULT- với thuộc tính này, khi một hàng liên quan bị xóa hoặc cập nhật khỏi bảng chính, giá trị mặc định (nếu có) cho cột khóa ngoại sẽ được đặt.
Ví dụ sử dụng:
CREATE TABLE table_name{
column_name int,..
FOREIGN KEY(column_name) REFERENCES another_table_name(another_table_column_name) ON UPDATE CASCADE ON DELETE CASCADE }
ON DELETENếu hành vi cho và không được đặt rõ ràng ON UPDATEthì hành vi đó sẽ được đặt thành RESTRICT.

10. Các kiểu kết nối giữa các bảng (Join)

Kết nối giữa các bảng được cung cấp dựa trên dữ liệu chung (các trường). Điều này xảy ra bằng cách sử dụng một toán tử JOIN, một thao tác khớp các hàng từ bảng này với các hàng trong bảng khác. Việc ánh xạ được thực hiện sao cho các cột của cả hai bảng liền kề nhau, mặc dù chúng có thể được lấy từ các bảng riêng biệt. Và nếu chúng ta có các trường chung cho ba bảng, chúng ta có thể hiển thị dữ liệu của chúng dưới dạng một bảng chung. Tuy nhiên, cần lưu ý rằng càng ít bảng được nối thì truy vấn sẽ chạy càng nhanh. Vì vậy, các loại JOIN:
  • INNER JOIN- kết nối chỉ hiển thị những dữ liệu từ bảng đầu tiên tương ứng với một số dữ liệu từ bảng thứ hai. Phần còn lại đi xuống.Phỏng vấn nhà phát triển: phân tích câu hỏi cơ sở dữ liệu - 4
  • LEFT JOIN- kết nối hiển thị tất cả dữ liệu từ bảng đầu tiên và dữ liệu tương ứng từ bảng thứ hai, nếu có. Nếu không có dữ liệu tương ứng, các trường dữ liệu từ bảng thứ hai sẽ trống.Phỏng vấn nhà phát triển: phân tích câu hỏi cơ sở dữ liệu - 5
  • RIGHT JOIN- kết nối hiển thị tất cả dữ liệu từ bảng thứ hai và dữ liệu tương ứng từ bảng đầu tiên, nếu có. Nếu không có dữ liệu tương ứng, các trường cho dữ liệu từ bảng đầu tiên sẽ trống.Phỏng vấn nhà phát triển: phân tích câu hỏi cơ sở dữ liệu - 6
  • FULL JOIN- một kết nối hiển thị tất cả dữ liệu từ bảng thứ nhất và thứ hai. Nếu không có dữ liệu liên quan trong bảng khác thì các trường cho dữ liệu đó sẽ trống.Phỏng vấn nhà phát triển: phân tích câu hỏi cơ sở dữ liệu - 7
  • CROSS JOIN- một phép nối chéo trong đó mỗi hàng của bảng đầu tiên được nối với mỗi hàng của bảng thứ hai (mỗi hàng với nhau). Nghĩa là, nếu hai bảng mỗi bảng có 3 hàng thì sau lần nối này chúng ta sẽ nhận được kết quả là 9 hàng.Phỏng vấn nhà phát triển: phân tích câu hỏi cơ sở dữ liệu - 8
Ví dụ Join(inner):
SELECT *
FROM first_table
INNER JOIN second_table ON first_table.some_column = second_table.some_column

11. Thuộc tính ACID trong cơ sở dữ liệu là gì?

A - Tính nguyên tử , đảm bảo rằng không có giao dịch nào được cam kết một phần với hệ thống. Hoặc tất cả các hoạt động phụ của nó đều được thực hiện hoặc không. Ví dụ: chuyển tiền từ ngân hàng sang tài khoản khác bao gồm hai thao tác:
  1. Chuyển tiền vào tài khoản ngân hàng.
  2. Chuyển tiền từ tài khoản ngân hàng đến một tài khoản cụ thể.
Nhưng bất cứ điều gì có thể xảy ra. Ví dụ: họ sẽ đến ngân hàng và sau đó sẽ xảy ra một số lỗi và thao tác thứ hai sẽ không được hoàn thành. Hoặc ngược lại: chỉ thực hiện thao tác thứ 2. Do đó, những hành động này được thực hiện trong một giao dịch và kết quả là tất cả hoặc không có gì. C - Tính nhất quán : Mỗi giao dịch thành công luôn chỉ ghi lại các kết quả có thể giải quyết được. Điều này đảm bảo rằng tất cả các hạn chế đều được đáp ứng (ví dụ: NOT NULL), nếu không giao dịch sẽ bị khôi phục. Và - sự cô lập : trong quá trình thực hiện một giao dịch, các giao dịch song song sẽ không ảnh hưởng đến kết quả của nó. Điều này cung cấp cho chúng tôi khả năng ẩn trạng thái chưa cuối cùng của dữ liệu với mọi người. Trên thực tế, đây là lý do tại sao các giao dịch không thành công không thể phá vỡ bất cứ điều gì. Thấp hơn một chút chúng ta sẽ làm quen với các mức cô lập giao dịch. D - Độ bền : Nếu một giao dịch được hoàn thành, thì bạn có thể chắc chắn rằng những thay đổi mà nó thực hiện sẽ không bị hủy do một số lỗi.

12. Mức độ cô lập giao dịch

Mỗi mức độ cô lập cho phép/ngăn cấm một số hành động (cơ hội) nhất định:
  • đọc ảo - trong cùng một giao dịch, cùng một yêu cầu dữ liệu sẽ cho các kết quả khác nhau, xảy ra do việc thêm dữ liệu bởi một giao dịch (song song) khác.
  • đọc không lặp lại - trong cùng một giao dịch, cùng một yêu cầu dữ liệu cho các kết quả khác nhau, xảy ra do thay đổi hoặc xóa dữ liệu bởi một giao dịch (song song) khác.
  • đọc "bẩn" - đọc dữ liệu được thêm hoặc thay đổi bởi một giao dịch mà sau đó sẽ không được khôi phục;
  • mất cập nhật - khi các giao dịch khác nhau thay đổi cùng một khối dữ liệu cùng một lúc, tất cả các thay đổi ngoại trừ thay đổi cuối cùng đều bị mất (tương tự như “điều kiện đua” trong đa luồng).
Để thuận tiện, chúng tôi xem xét các mức cách ly và khả năng của chúng trong bảng:
Mức độ cách nhiệt Đọc ma Đọc không lặp lại đọc “bẩn” mất bản cập nhật
Có thể tuần tự hóa + + + +
REPEATABLE_READ - + + +
READ_COMMITTED - - + +
READ_UNCOMMITTED - - - +

13. SQL SQL là gì?

SQL SQL là một trong những phương pháp hack một trang web, bản chất của nó là chèn một số mã SQL vào dữ liệu thông qua GETtruy vấn POSThoặc Cookie. Nếu một trang web thực hiện việc tiêm nhiễm như vậy, nó có thể giành được quyền truy cập vào cơ sở dữ liệu và hack ứng dụng. Ví dụ, chúng ta biết tên của một số biến. Hãy nói column_namevới type boolean. Nếu hệ thống dễ bị tiêm nhiễm, chúng ta có thể thêm OR column_name=truerồi ghi mọi thứ chúng ta cần từ cơ sở dữ liệu. ORsẽ tạo một điều kiện OR và biểu thức của chúng ta sau nó sẽ luôn là true, điều này sẽ đưa chúng ta đi xa hơn. Một cuộc tấn công vào một trang web như SQL SQL có thể xảy ra do việc xử lý dữ liệu đến được sử dụng trong các truy vấn SQL không đúng cách. Khi kết nối với cơ sở dữ liệu bằng JDBC , bạn sử dụng nhiều tệp Statements. Để tăng tính bảo mật, cần phải sử dụng PreparedStatementthay vì thông thường Statement, vì khi sử dụng, Statementcác chuỗi truy vấn và giá trị chỉ được thêm vào với nhau, giúp cho việc tiêm có thể thực hiện được. Đổi lại, có PreparedStatementmột mẫu yêu cầu cụ thể và dữ liệu được chèn vào đó với dấu ngoặc kép được phản ánh. Kết quả là, việc chèn SQL sẽ chỉ được coi là biểu diễn chuỗi của một số trường. Để bảo vệ khỏi việc tiêm SQL, bạn có thể sử dụng các kiểm tra dựa trên biểu thức chính quy (bạn có thể đọc thêm về biểu thức chính quy trong bài viết này ). Phỏng vấn nhà phát triển: phân tích câu hỏi cơ sở dữ liệu - 9Một tùy chọn khác là đặt giới hạn về số lượng ký tự của các tham số đến: ví dụ: nếu bạn nhận được một số không quá 9999, thì giới hạn bốn ký tự đến sẽ được thực hiện. Nó sẽ làm giảm nguy cơ bị hack bằng cách sử dụng SQL SQL. Bạn có thể tìm hiểu thêm về bảo mật trong Java từ bài viết “Bảo mật trong Java: các phương pháp hay nhất” .

14. Thủ tục lưu trữ là gì? Chức năng được lưu trữ? Cò súng?

Các thủ tục lưu trữ trong SQL là một thực thể trong cơ sở dữ liệu, là một tập hợp các lệnh SQL được biên dịch một lần và được lưu trữ trên máy chủ. Nói một cách dễ hiểu, đây là một dạng tương tự của các phương thức trong Java. Các thủ tục được lưu trữ có thể thực hiện các hành động trên dữ liệu, cả truy vấn thông thường và một số hành động không có sẵn cho các truy vấn thông thường. Thủ tục là một thực thể SQL được tạo một lần và sau đó được gọi bằng cách truyền các đối số. Ưu điểm của phương pháp này là các hướng dẫn này có thể được sử dụng lại nhiều lần. Các thủ tục lưu trữ cải thiện hiệu suất, nâng cao khả năng lập trình và hỗ trợ các tính năng bảo mật dữ liệu. Hãy xem xét việc tạo một thủ tục:
CREATE PROCEDURE procedure_name (first_param some_type, second_param some_type..)
 begin
……...
 end
Gọi thủ tục:
CALL procedure_name (first_param, second_param…..);
Hàm được lưu trữ là một loại thủ tục được lưu trữ. Sự khác biệt giữa một hàm là nó luôn chỉ trả về một giá trị duy nhất, trong khi một thủ tục luôn trả về một tập hợp các giá trị. Các thủ tục được lưu trữ không thể được trộn lẫn với SQL thông thường, trong khi một hàm được lưu trữ thì có thể - và đây là lợi thế của nó. Mặt khác, các hàm được lưu trữ có nhiều hạn chế hơn các thủ tục. Tạo một chức năng được lưu trữ:
CREATE FUNCTION function_name (first_param, second_param…..)
RETURNS some_type
 begin
……...
RETURN some_value;
end
Gọi một hàm được lưu trữ:
SELECT function_name(first_param, second_param…..);
Trình kích hoạt là một loại thủ tục lưu trữ khác không được người dùng gọi trực tiếp nhưng được kích hoạt khi dữ liệu được sửa đổi. Nghĩa là, quy trình này được kích hoạt khi đáp ứng một số điều kiện nhất định, chẳng hạn như, INSERThoặc DELETE, hoặc UPDATEdữ liệu trong một cột nhất định của một bảng nhất định. Thời điểm kích hoạt trình kích hoạt được xác định bằng cách sử dụng từ khóa BEFORE(trình kích hoạt kích hoạt trước sự kiện liên quan) hoặc AFTER(sau sự kiện).
CREATE TRIGGER trigger_name
ON table_name
AFTER INSERT
 begin
……...
 end

15. Luyện tập

Dù vậy, câu hỏi SQL phổ biến nhất trong cuộc phỏng vấn sẽ là thực hành - giải quyết vấn đề. Chẳng ích gì khi cố gắng đoán xem bạn sẽ gặp những nhiệm vụ nào, bởi vì mọi thứ đều phụ thuộc vào sự tinh tế trong trí tưởng tượng của người đối diện. Do đó, tùy chọn hoạt động duy nhất là cải thiện các truy vấn SQL có độ phức tạp khác nhau. sql-ex.ru có thể phục vụ như một nguồn tài nguyên để thực hành các nhiệm vụ khác nhau . Sau khi hoàn thành 20 nhiệm vụ đầu tiên, người đối thoại sẽ khá khó khăn để khiến bạn sợ hãi bằng bất kỳ nhiệm vụ SQL nào. Phỏng vấn nhà phát triển: phân tích câu hỏi cơ sở dữ liệu - 11Đó là tất cả cho ngày hôm nay: Tôi hy vọng rằng sau khi đọc bài viết này, các câu hỏi về cơ sở dữ liệu sẽ không gây ra bất kỳ khó khăn hay vấn đề gì. Cảm ơn bạn đã quan tâm và hẹn gặp lại!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION