2012-04-26 28 views
10

Tôi có một câu hỏi ngắn về truy vấn mysql.Dấu ngoặc kép xung quanh bảng và cột trong truy vấn MySQL có thực sự cần thiết không?

Điều gì là chính xác?

SELECT * FROM Persons WHERE Year='1965' 

Hoặc

SELECT * FROM `Persons` WHERE `Year` = '1965' 

Đây có phải là một sự lựa chọn cá nhân hoặc là một cái gì đó này những gì thực sự xảy ra?

+0

Cảm ơn mọi câu trả lời và chỉnh sửa. Vì vậy, nếu tôi có thể chấp nhận một câu trả lời (nhưng tôi nên chấp nhận câu trả lời nào?) – JochemQuery

+0

Tôi có xu hướng không sử dụng backticks trừ khi tôi đặt tên một cái gì đó giống như "bảng" (nếu không sẽ gây ra lỗi). Nó làm cho trình dọn dẹp truy vấn. Ngoại lệ là khi bạn đang sử dụng tên bảng/cột được tạo động. – HappyTimeGopher

Trả lời

6

gì nếu bạn có một bảng tên table, hoặc một cột tên là where. Đây là những từ khóa dành riêng. Nếu bạn đã sử dụng những truy vấn đó trong truy vấn của mình mà không có dấu gạch chéo ngược, chúng sẽ tạo ra một truy vấn không hợp lệ (Tất nhiên, việc sử dụng các từ khóa dành riêng là thực hành không tốt).

SELECT something FROM table WHERE where = 1; 

vs

SELECT something FROM `table` WHERE `where` = 1; 
+1

Tất cả các câu trả lời đều khá tốt. Nhưng cái này là cái tốt nhất cho tôi! Cảm ơn. – JochemQuery

7

Cả hai đều đúng, nhưng giá trị thứ hai sẽ luôn được chấp nhận, ngay cả khi bạn sử dụng từ khóa hoặc chức năng như whileNOW() thường được xem là toán tử.

2

Cả hai phương pháp là chính xác, dấu nháy đơn chỉ bắt đầu và kết thúc của một chuỗi.

Vì vậy, nếu bạn ví dụ sử dụng bí danh cột có khoảng trắng như Birth year thì bạn sẽ cần phải sử dụng dấu ngoặc đơn như thế này;

... WHERE `Birth year` = `1965` 

Tuy nhiên, bạn không nên sử dụng nhiều hơn một từ trong bí danh.

Và như @Cody Caughlan cũng cho biết khi bạn sử dụng MySQL reserved words.

Các vấn đề liên quan