Câu trả lời:
Dấu ngoặc đơn được sử dụng để chỉ ra sự bắt đầu và kết thúc của một chuỗi trong SQL. Dấu ngoặc kép thường không được sử dụng trong SQL, nhưng có thể thay đổi từ cơ sở dữ liệu đến cơ sở dữ liệu.
Dính vào việc sử dụng dấu ngoặc đơn.
Dù sao đó cũng là mục đích sử dụng chính. Bạn có thể sử dụng các trích dẫn đơn cho một bí danh cột - nơi bạn muốn tên cột bạn tham chiếu trong mã ứng dụng của mình là một cái gì đó khác với những gì cột thực sự được gọi trong cơ sở dữ liệu. Ví dụ: PRODUCT.id
sẽ dễ đọc hơn product_id
, vì vậy bạn sử dụng một trong các cách sau:
SELECT PRODUCT.id AS product_id
SELECT PRODUCT.id 'product_id'
Hoặc là hoạt động trong Oracle, SQL Server, MySQL, nhưng tôi biết một số người đã nói rằng TOAD IDE dường như đưa ra một số đau buồn khi sử dụng phương pháp trích dẫn duy nhất.
Bạn phải sử dụng các trích dẫn đơn khi bí danh cột bao gồm một ký tự khoảng trắng, ví dụ product id
, nhưng không nên thực hiện cho một bí danh cột nhiều hơn một từ.
SELECT * FROM USERS 'Users'
không hoạt động trong SQL Server, nhưng SELECT * FROM USERS "Users"
không.
SELECT PRODUCT.id 'product_id'
sẽ không hoạt động trong Oracle. Trích dẫn duy nhất chỉ dành cho chữ nhân vật. Chúng không thể được sử dụng cho các mã định danh trong SQL (tiêu chuẩn) (mặc dù một số DBMS chỉ bỏ qua tiêu chuẩn SQL khi nói đến các định danh được trích dẫn)
Một quy tắc đơn giản để chúng ta nhớ sử dụng cái gì trong trường hợp này:
Trong MySQL và MariaDB, biểu tượng ` (backtick) giống như " biểu tượng. Bạn có thể sử dụng " khi bạn SQL_MODE
đã ANSI_QUOTES
bật.
Dấu ngoặc đơn phân định một hằng chuỗi hoặc hằng số ngày / thời gian.
Dấu ngoặc kép phân định định danh cho ví dụ tên bảng hoặc tên cột. Điều này thường chỉ cần thiết khi số nhận dạng của bạn không phù hợp với quy tắc cho số nhận dạng đơn giản.
Xem thêm:
Bạn có thể khiến MySQL sử dụng dấu ngoặc kép theo tiêu chuẩn ANSI:
SET GLOBAL SQL_MODE=ANSI_QUOTES
Bạn có thể khiến Microsoft SQL Server sử dụng dấu ngoặc kép theo tiêu chuẩn ANSI:
SET QUOTED_IDENTIFIER ON
Trong ANSI SQL, trích dẫn kép trích dẫn tên đối tượng (ví dụ: bảng) cho phép chúng chứa các ký tự không được phép khác hoặc giống như các từ dành riêng (thực sự tránh điều này).
Dấu ngoặc đơn là cho chuỗi.
Tuy nhiên, MySQL không biết gì về tiêu chuẩn (trừ khi SQL_MODE của nó bị thay đổi) và cho phép chúng được sử dụng thay thế cho các chuỗi.
Hơn nữa, Sybase và Microsoft cũng sử dụng dấu ngoặc vuông để trích dẫn định danh.
Vì vậy, đó là một nhà cung cấp cụ thể một chút.
Các cơ sở dữ liệu khác như Postgres và IBM thực sự tuân thủ tiêu chuẩn ansi :)
Sự khác biệt nằm ở cách sử dụng của họ. Các trích dẫn đơn chủ yếu được sử dụng để chỉ một chuỗi trong WHERE, HAVING và cả trong một số hàm SQL tích hợp như CONCAT, STRPOS, VỊ TRÍ, v.v.
Khi bạn muốn sử dụng một bí danh có khoảng trắng ở giữa thì bạn có thể sử dụng dấu ngoặc kép để chỉ bí danh đó.
Ví dụ
(select account_id,count(*) "count of" from orders group by 1)sub
Đây là một truy vấn con từ bảng đơn hàng có account_id là Khóa ngoại mà tôi đang tổng hợp để biết mỗi tài khoản được đặt bao nhiêu đơn hàng. Ở đây tôi đã đưa ra một cột bất kỳ tên ngẫu nhiên nào là "đếm" vì mục đích.
Bây giờ, hãy viết một truy vấn bên ngoài để hiển thị các hàng trong đó "số lượng" lớn hơn 20.
select "count of" from
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;
Bạn cũng có thể áp dụng trường hợp tương tự cho các biểu thức Bảng chung.