Khi bạn học SQL, hãy để ý những lỗi viết mã phổ biến này. Bạn đã viết một số mã SQL và bạn đã sẵn sàng truy vấn cơ sở dữ liệu của mình. Bạn nhập mã và … không có dữ liệu nào được trả lại. Thay vào đó, bạn nhận được một thông báo lỗi. Đừng tuyệt vọng! Lỗi mã hóa phổ biến trong bất kỳ ngôn ngữ lập trình nào và SQL không phải là ngoại lệ.

Bạn đang xem : từ lỗi cú pháp sql

Bạn đã viết một số mã SQL và bạn đã sẵn sàng truy vấn cơ sở dữ liệu của mình.

Bạn nhập mã và…. không có dữ liệu nào được trả lại. Thay vào đó, bạn nhận được một thông báo lỗi.

Đừng tuyệt vọng! Lỗi mã hóa là điều phổ biến trong bất kỳ ngôn ngữ lập trình nào và SQL không phải là ngoại lệ. Trong bài đăng này, chúng ta sẽ thảo luận về năm lỗi cú pháp SQL phổ biến mọi người thường mắc phải khi viết mã.

Xem Ngôn ngữ của bạn (và Cú pháp)

Lỗi SQL phổ biến nhất là lỗi cú pháp . Cú pháp nghĩa là gì? Về cơ bản, nó có nghĩa là một tập hợp các từ và lệnh. Nếu bạn sử dụng cú pháp không phù hợp, cơ sở dữ liệu sẽ không biết bạn đang cố nói gì.

Để hiểu cách hoạt động của cú pháp, chúng ta có thể nghĩ đến một ngôn ngữ nói. Hãy tưởng tượng bạn đang nói với một người “Nice dof” khi bạn muốn nói “Nice dog”. Người đó không biết “dof” nghĩa là gì. Vì vậy, khi bạn yêu cầu cơ sở dữ liệu của mình tìm một TABEL thay vì một BẢNG, cơ sở dữ liệu không biết nó cần phải làm gì.

Mọi người có xu hướng mắc các loại lỗi cú pháp giống nhau, vì vậy các lỗi của họ thường rất dễ phát hiện và rất giống nhau. Sau khi bạn đọc bài viết này, bạn sẽ có thể nhớ và tránh (hoặc sửa) những lỗi cú pháp SQL phổ biến này. Biết những lỗi nào cần tìm là rất quan trọng đối với các lập trình viên SQL mới làm quen, đặc biệt là từ rất sớm. Các lập trình viên mới có xu hướng mắc nhiều lỗi hơn và dành nhiều thời gian hơn để tìm kiếm chúng.

Các loại lỗi cú pháp trong SQL mà chúng ta sẽ xem xét là:

  1. Lệnh viết sai chính tả
  2. Quên Dấu ngoặc và Trích dẫn
  3. Chỉ định một Thứ tự Tuyên bố Không hợp lệ
  4. Bỏ qua Bí danh Bảng
  5. Sử dụng tên phân biệt chữ hoa chữ thường

Sẵn sàng? Hãy bắt đầu.

Lỗi cú pháp 1: Lệnh sai chính tả

Đây là lỗi cú pháp SQL phổ biến nhất giữa các nhà phát triển mới và có kinh nghiệm. Hãy xem nó trông như thế nào. Kiểm tra câu lệnh SELECT đơn giản bên dưới và xem liệu bạn có thể phát hiện ra sự cố không:

LỰA CHỌN *
MẪU món ăn
WHERE NAME = 'Salad tôm';

Nếu bạn chạy truy vấn này, bạn sẽ gặp lỗi:

 Lỗi cú pháp trong câu lệnh SQL "SELECT * FORM [*] món WHERE NAME = 'Prawn Salad';";
Câu lệnh SQL: SELECT * MẪU món ăn WHERE NAME = 'Salad tôm'; [42000-176] 

Mỗi phiên bản cơ sở dữ liệu sẽ cho bạn biết từ hoặc cụm từ chính xác mà nó không hiểu, mặc dù thông báo lỗi có thể hơi khác một chút.

Có gì sai ở đây? Bạn viết sai chính tả FROM dưới dạng FORM. Các lỗi chính tả thường gặp trong các từ khóa (như CHỌN, TỪ VÀ Ở ĐÂU) hoặc trong tên bảng và cột.

Các lỗi chính tả SQL phổ biến nhất là do:

  • “Những ngón tay mũm mĩm” nơi bạn đánh một chữ cái ở gần chữ cái bên phải: SELEVT hoặc FTOM hoặc WJIRE
  • “Đánh máy liều lĩnh” trong đó bạn gõ đúng các chữ cái không đúng thứ tự: SELETC hoặc FORM hoặc WHEER
See also  Theo dõi DTDC - www dtdc com theo dõi

Giải pháp:

Sử dụng trình soạn thảo SQL có đánh dấu cú pháp: các từ khóa SELECT WHERE sẽ được đánh dấu, nhưng FORM sai chính tả sẽ không được đánh dấu.

Nếu bạn đang học với các khóa học SQL tương tác trong LearnSQL.com >, trình soạn thảo mã đặt mọi từ khóa câu lệnh SELECT bằng màu tím nhạt. Nếu từ khóa có màu đen, giống như với bất kỳ đối số nào khác, bạn biết rằng có lỗi cú pháp SQL. (Trong ví dụ của chúng tôi, FORM là màu đen).

Vì vậy, nếu chúng tôi sửa lại tuyên bố của mình, chúng tôi nhận được:

LỰA CHỌN *
TỪ món ăn
WHERE NAME = 'Salad tôm'

Từ khóa hiện có đúng màu và câu lệnh thực thi mà không có lỗi.

Lỗi cú pháp 2: Quên dấu ngoặc và dấu ngoặc kép

Dấu ngoặc nhọn nhóm các thao tác lại với nhau và hướng dẫn thứ tự thực hiện. Trong SQL (và trong tất cả các ngôn ngữ lập trình tôi sử dụng), thứ tự hoạt động sau…

LỰA CHỌN *
TỪ nghệ sĩ
WHERE first_name = 'Vincent' và last_name = 'Monet' hoặc last_name = 'Da Vinci';

… không giống như:

LỰA CHỌN *
TỪ nghệ sĩ
WHERE first_name = 'Vincent' và (last_name = 'Monet' hoặc last_name = 'Da Vinci');

Bạn có thể tìm ra lý do tại sao không?

Một lỗi cú pháp SQL rất phổ biến là quên dấu đóng ngoặc. Vì vậy, nếu chúng ta nhìn vào tuyên bố sai lầm này:

LỰA CHỌN *
TỪ nghệ sĩ
WHERE first_name = 'Vincent' và (last_name = 'Monet' hoặc last_name = 'Da Vinci';

Chúng tôi nhận được mã lỗi cú pháp với vị trí của lỗi (ký tự thứ 102 từ đầu):

 LỖI: lỗi cú pháp tại hoặc gần ";" Chức vụ: 102 

Hãy nhớ rằng: dấu ngoặc luôn đi theo cặp .

Điều này cũng đúng với dấu nháy đơn (‘‘) hoặc dấu nháy kép (””). Không có tình huống nào trong SQL mà chúng ta sẽ tìm thấy một câu trích dẫn (hoặc một câu trích dẫn đơn hoặc một câu trích dẫn kép) mà không có đối tác của nó. Giá trị văn bản cột có thể chứa một dấu ngoặc kép (ví dụ: exp.last_name = "O'Reilly" ) và trong những trường hợp này, chúng ta phải kết hợp hai loại dấu ngoặc kép hoặc sử dụng ký tự thoát. (Trong SQL, sử dụng các ký tự thoát chỉ có nghĩa là đặt một trích dẫn khác gần ký tự bạn muốn hủy kích hoạt – ví dụ: exp.last_name = 'O'’Reilly. )

Giải pháp:

Thực hành, thực hành, thực hành. Viết thêm mã SQL sẽ cung cấp cho bạn kinh nghiệm cần thiết để tránh những lỗi cú pháp này. Và hãy nhớ rằng mọi người thường quên dấu ngoặc nhọn đóng hoặc dấu ngoặc kép. Họ hiếm khi bỏ qua phần mở đầu. Nếu bạn đang gặp sự cố, hãy xem kỹ tất cả các dấu câu kết thúc của bạn!

Lỗi cú pháp 3: Thứ tự báo cáo không hợp lệ

Khi viết câu lệnh SELECT, hãy nhớ rằng cần có thứ tự từ khóa được xác định trước để câu lệnh thực thi đúng cách. Không có sự chậm trễ nào ở đây.

Hãy xem một ví dụ về câu lệnh được sắp xếp đúng thứ tự:

CHỌN tên
TỪ món ăn
WHERE name = 'Salad tôm'
NHÓM THEO tên
HAVING count (*) = 1
ĐẶT HÀNG THEO tên;

Không có phím tắt nào ở đây; bạn chỉ cần nhớ thứ tự từ khóa chính xác cho câu lệnh SELECT:

  • SELECT xác định các tên và chức năng của cột
  • FROM chỉ định tên bảng hoặc các tên (và điều kiện THAM GIA nếu bạn đang sử dụng nhiều bảng)
  • WHERE xác định các câu lệnh lọc
  • GROUP BY hiển thị cách nhóm các cột
  • HAVING lọc các giá trị được nhóm
  • ORDER BY đặt thứ tự hiển thị kết quả
See also  Cách bật hoặc tắt dịch tự động trong Google Chrome - cách kích hoạt tính năng tự động dịch trong google chrome

Bạn không thể viết từ khóa WHERE trước FROM và bạn không thể đặt HAVING trước GROUP BY < / mã>. Tuyên bố sẽ không hợp lệ.

Hãy xem điều gì sẽ xảy ra khi bạn kết hợp thứ tự sao kê. Trong trường hợp này, chúng tôi sẽ sử dụng lỗi cú pháp SQL phổ biến khi đặt ORDER BY trước GROUP BY :

CHỌN tên
TỪ món ăn
WHERE name = 'Salad tôm'
ĐẶT HÀNG THEO tên
NHÓM THEO tên
HAVING count (*) = 1

Thông báo lỗi mà chúng tôi thấy khá đáng sợ!

 Lỗi cú pháp trong câu lệnh SQL "CHỌN tên TỪ món ăn WHERE name = 'Salad tôm'
ĐẶT HÀNG THEO tên NHÓM [*] THEO tên CÓ count (*) = 1; "; Câu lệnh SQL:
CHỌN tên TỪ món ăn WHERE name = 'Salad tôm' ĐẶT HÀNG THEO tên NHÓM THEO
tên HAVING count (*) = 1; [42000-176] 

Giải pháp:

Đừng nản lòng! Bạn có thể thấy rằng tất cả các từ khóa đều được đánh dấu chính xác và tất cả các trích dẫn và dấu ngoặc vuông đều được đóng lại. Vì vậy, bây giờ bạn nên kiểm tra thứ tự sao kê. Khi bạn mới bắt đầu nghiên cứu SQL, tôi khuyên bạn nên sử dụng danh sách kiểm tra đơn đặt hàng SELECT . Nếu bạn gặp sự cố, hãy tham khảo danh sách của bạn để biết thứ tự chính xác.

Lỗi cú pháp 4: Bỏ qua bí danh bảng

Khi kết hợp các bảng, tạo bí danh bảng là một thực tiễn phổ biến. Các bí danh này phân biệt giữa các cột có cùng tên trên các bảng; do đó cơ sở dữ liệu sẽ biết giá trị cột nào cần trả về. Điều này không bắt buộc khi chúng tôi tham gia các bảng khác nhau, vì chúng tôi có thể sử dụng tên bảng đầy đủ. Nhưng nó là bắt buộc nếu chúng ta tham gia một bảng để chính nó .

Giả sử chúng ta đang viết một câu lệnh SQL để tìm vị trí hiện tại của triển lãm và vị trí của năm trước:

LỰA CHỌN *
TỪ triển lãm
    THAM GIA triển lãm ON (id = before_id);

Cơ sở dữ liệu sẽ trả về lỗi:

 Tên cột không rõ ràng "id"; Câu lệnh SQL: CHỌN * TỪ triển lãm Tham gia triển lãm ON (id = before_id); [90059-176] 

Lưu ý: Bất cứ khi nào bạn gặp "tên cột không rõ ràng" trong thông báo lỗi của mình, bạn chắc chắn cần bí danh bảng.

Câu lệnh đúng (với bí danh) sẽ là:

CHỌN ví dụ: *, exp.name
TỪ triển lãm
    THAM GIA triển lãm ON (ex.id = exp.previous_id);

Giải pháp:

Thực hành sử dụng bí danh bảng cho các câu lệnh SELECT một bảng. Sử dụng bí danh thường xuyên - chúng làm cho SQL của bạn dễ đọc hơn.

Lỗi cú pháp 5: Sử dụng tên phân biệt chữ hoa chữ thường

Lỗi cú pháp SQL này chỉ xảy ra khi bạn cần viết tên không chuẩn cho bảng hoặc đối tượng cơ sở dữ liệu.

Giả sử bạn cần có một bảng có tên LargeClient và vì lý do nào đó, bạn thêm một bảng khác có tên LARGECLIENT . Như bạn đã biết, tên đối tượng trong cơ sở dữ liệu thường không phân biệt chữ hoa chữ thường. Vì vậy, khi bạn viết một truy vấn cho bảng LargeClient , cơ sở dữ liệu sẽ thực sự truy vấn LARGECLIENT .

Để tránh lỗi cú pháp này, bạn phải đặt dấu ngoặc kép xung quanh tên bảng. Ví dụ:

CHỌN * TỪ
"LargeClient"
 WHERE cust_name = 'Mijona';

Khi tạo bảng, bạn sẽ cần sử dụng dấu ngoặc kép nếu:

  • Bảng sẽ có tên phân biệt chữ hoa chữ thường.
  • Tên bảng sẽ chứa các ký tự đặc biệt. Điều này bao gồm việc sử dụng một khoảng trống, chẳng hạn như “Khách hàng lớn”.

Giải pháp:

Tránh sử dụng những tên này nếu bạn có thể. Nếu không, hãy nhớ dấu ngoặc kép của bạn!

Mọi người đều mắc lỗi cú pháp SQL

Đó là năm lỗi cú pháp phổ biến nhất trong mã SQL . Bạn có thể sẽ hiểu chúng nhiều lần khi học ngôn ngữ này. Hãy nhớ rằng, mọi người đều mắc lỗi viết mã. Trên thực tế, việc mắc lỗi là một phần bình thường và có thể dự đoán được trong quá trình phát triển phần mềm.

Vì vậy, đừng nản lòng. Khi bạn mắc lỗi trong tương lai, hãy cố gắng phân tích mã của bạn theo cách có cấu trúc. Với phân tích có cấu trúc, bạn có thể tìm và sửa lỗi cú pháp của mình nhanh hơn.

Nếu bạn muốn tìm hiểu về một số lỗi cú pháp khác mà tôi không đưa vào đây, vui lòng cho tôi biết. Trong một bài viết sắp tới, chúng ta sẽ xem xét các lỗi không phải cú pháp. Những dữ liệu này trả về hoặc sửa đổi và do đó nguy hiểm hơn nhiều. Đăng ký blog của chúng tôi để bạn sẽ không bỏ lỡ!


Xem thêm những thông tin liên quan đến chủ đề khỏi lỗi cú pháp sql

SQL Syntax Error Near '*

  • Tác giả: VCompetency Tech
  • Ngày đăng: 2020-03-14
  • Đánh giá: 4 ⭐ ( 4117 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: SQL Syntax Error Near '* , SQL Server Syntax Error Near '*

Lệnh DELETE trong SQL, cú pháp và cách sử dụng

  • Tác giả: thuthuat.taimienphi.vn
  • Đánh giá: 5 ⭐ ( 4267 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lenh DETELE trong SQL, Lệnh DELETE trong SQL, cú pháp và cách sử dụng

Khắc phục: Thông báo lỗi "Không đúng cú pháp gần 'bắt'" khi bạn chạy lệnh Transact-SQL SQL Server 2012

  • Tác giả: support.microsoft.com
  • Đánh giá: 4 ⭐ ( 2152 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Khắc phục sự cố mà bạn nhận được thông báo lỗi "Không đúng cú pháp gần 'bắt'" SQL Server 2012. Sự cố này xảy ra khi bạn chạy câu lệnh Transact-SQL có một điều kiện IF.

Thiết kế web theo yêu cầu tại Hồ Chí Minh

  • Tác giả: aithietke.com
  • Đánh giá: 5 ⭐ ( 8229 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Lỗi cú pháp sql

  • Tác giả: vi.svetisavaflemington.org
  • Đánh giá: 3 ⭐ ( 6456 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Đôi khi trong nhật ký lỗi của tôi, tôi có lỗi này: Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MySQL của bạn để biết cú pháp phù hợp để sử dụng gần '' tại dòng 1 ...

Tìm mùi mã bằng cách sử dụng SQL Prompt: Cú pháp nối kiểu cũ (ST001)

  • Tác giả: helpex.vn
  • Đánh giá: 4 ⭐ ( 1146 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: SQL Prompt triển khai quy tắc phân tích mã tĩnh, ST001 , quy tắc này sẽ tự động kiểm tra mã trong quá trình phát triển và kiểm tra các sự cố xuất hiện của cú pháp JOIN chuẩn ANSI. Kiểu…

Lệnh DELETE trong SQL Server

  • Tác giả: quantrimang.com
  • Đánh giá: 3 ⭐ ( 7880 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Lệnh DELETE trong SQL Server (Transact-SQL) được dùng để xóa một hoặc nhiều bản ghi từ một bảng trong SQL Server.

Xem thêm các bài viết khác thuộc chuyên mục: WordPress