Tên cột MySQL có ký tự đặc biệt
MySQL có giao diện SQL rất phức tạp nhưng trực quan và dễ học. Chương này mô tả các lệnh, loại và chức năng khác nhau mà bạn sẽ cần biết để sử dụng MySQL hiệu quả và hiệu quả. Chương này cũng đóng vai trò là tài liệu tham khảo cho tất cả các chức năng có trong MySQL. Để sử dụng chương này một cách hiệu quả, bạn có thể thấy hữu ích khi tham khảo các mục lục khác nhau. Show
chữ. Cách viết chuỗi và sốPhần này mô tả các cách khác nhau để viết chuỗi và số trong MySQL. Nó cũng bao gồm các sắc thái khác nhau và "các vấn đề" mà bạn có thể gặp phải khi xử lý các kiểu cơ bản này trong MySQL Chuỗi là một chuỗi các ký tự, được bao quanh bởi các ký tự trích dẫn đơn (') hoặc trích dẫn kép (“) (chỉ trích dẫn đơn nếu bạn chạy ở chế độ ANSI). ví dụ 'a string' "another string" Trong một chuỗi, các chuỗi nhất định có ý nghĩa đặc biệt. Mỗi chuỗi này bắt đầu bằng dấu gạch chéo ngược ( mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+2), được gọi là ký tự thoát. MySQL nhận ra các chuỗi thoát sau \0 Ký tự ASCII 0 (NUL) \'Một ký tự nháy đơn (') \"Ký tự trích dẫn kép ( mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+3)\b Một ký tự xóa lùi \NMột ký tự dòng mới \ rMột ký tự xuống dòng \tMột ký tự tab \zASCII(26) (Control-Z). Ký tự này có thể được mã hóa để cho phép bạn khắc phục sự cố ASCII(26) là viết tắt của END-OF-FILE trên Windows. (ASCII(26) sẽ gây ra sự cố nếu bạn cố gắng sử dụng cơ sở dữ liệu mysql < tên tệp. ) \\Dấu gạch chéo ngược ( mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+2) ký tự\% Một ký tự mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+5. Điều này được sử dụng để tìm kiếm các trường hợp bằng chữ của mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+5 trong ngữ cảnh mà nếu không thì mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+5 sẽ được hiểu là ký tự đại diện. Nhìn thấy\_ Một ký tự mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+8. Điều này được sử dụng để tìm kiếm các trường hợp bằng chữ của mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+8 trong ngữ cảnh mà nếu không thì mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+8 sẽ được hiểu là ký tự đại diện. Nhìn thấy Lưu ý rằng nếu bạn sử dụng mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+01 hoặc mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+02 trong một số ngữ cảnh chuỗi, chúng sẽ trả về chuỗi mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+01 và mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+02 chứ không phải mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+5 và mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+8 Có một số cách để bao gồm các trích dẫn trong một chuỗi
Các câu lệnh CHỌN được hiển thị ở đây minh họa cách hoạt động của trích dẫn và thoát mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+ Nếu bạn muốn chèn dữ liệu nhị phân vào một cột chuỗi (chẳng hạn như BLOB), các ký tự sau phải được biểu thị bằng các chuỗi thoát NUL mã ASCII 0. Bạn nên biểu thị điều này bằng mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+08 (dấu gạch chéo ngược và ký tự ASCII mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+09)\ ASCII 92, dấu gạch chéo ngược. Thể hiện điều này bằng mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+00' ASCII 39, trích dẫn đơn. Đại diện cho điều này bởi mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+2‘" ASCII 34, trích dẫn kép. Đại diện cho điều này bởi mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+2“ Nếu bạn viết mã C, bạn có thể sử dụng hàm API C mysql_real_escape_string( ) để thoát các ký tự cho câu lệnh INSERT. Nhìn thấy. Trong Perl, bạn có thể sử dụng phương thức trích dẫn của gói DBI để chuyển đổi các ký tự đặc biệt thành các chuỗi thoát thích hợp. Nhìn thấy Bạn nên sử dụng hàm thoát trên bất kỳ chuỗi nào có thể chứa bất kỳ ký tự đặc biệt nào được liệt kê trước đó Ngoài ra, nhiều API MySQL cung cấp một số loại khả năng giữ chỗ cho phép bạn chèn các điểm đánh dấu đặc biệt vào chuỗi truy vấn, sau đó liên kết các giá trị dữ liệu với chúng khi bạn đưa ra truy vấn. Trong trường hợp này, API sẽ tự động thoát các ký tự đặc biệt trong các giá trị cho bạn Số nguyên được biểu diễn dưới dạng một dãy các chữ số. phao sử dụng. như một dấu tách thập phân. Một trong hai loại số có thể được đặt trước mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+03 để biểu thị giá trị âm Ví dụ về số nguyên hợp lệ mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+0 Ví dụ về số dấu phẩy động hợp lệ mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+0 Một số nguyên có thể được sử dụng trong ngữ cảnh dấu phẩy động; MySQL hỗ trợ các giá trị thập lục phân. Trong ngữ cảnh số, chúng hoạt động giống như một số nguyên (độ chính xác 64 bit). Trong bối cảnh chuỗi, chúng hoạt động giống như một chuỗi nhị phân trong đó mỗi cặp chữ số hex được chuyển đổi thành một ký tự mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+6 Cú pháp x'hexstring' (mới trong 4. 0) dựa trên ANSI SQL và cú pháp 0x dựa trên ODBC. Chuỗi thập lục phân thường được ODBC sử dụng để cung cấp giá trị cho các cột BLOB. Bạn có thể chuyển đổi một chuỗi hoặc một số thành hệ thập lục phân bằng hàm HEX() Giá trị NULL có nghĩa là “không có dữ liệu” và khác với các giá trị như 0 đối với kiểu số hoặc chuỗi rỗng đối với kiểu chuỗi. Nhìn thấy NULL có thể được đại diện bởi \N khi sử dụng định dạng nhập hoặc xuất tệp văn bản (LOAD DATA INFILE, SELECT. INTO OUTFILE). Nhìn thấy Cơ sở dữ liệu, bảng, chỉ mục, cột và tên bí danhTên cơ sở dữ liệu, bảng, chỉ mục, cột và bí danh đều tuân theo cùng một quy tắc trong MySQL. Bảng sau đây cho biết độ dài và ký tự được phép Lưu ý rằng các quy tắc đã thay đổi bắt đầu từ MySQL Phiên bản 3. 23. 6 khi chúng tôi giới thiệu trích dẫn số nhận dạng (cơ sở dữ liệu, bảng và tên cột) với '. " cũng sẽ hoạt động để trích dẫn số nhận dạng nếu bạn chạy ở chế độ ANSI. Nhìn thấy định danh chiều dài tối đa Ký tự được phép cơ sở dữ liệu 64 Bất kỳ ký tự nào được cho phép trong tên thư mục ngoại trừ mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+04 hoặc Cái bàn 64 Bất kỳ ký tự nào được cho phép trong tên tệp, ngoại trừ mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+04 hoặc Cột 64 Tất cả nhân vật bí danh 255 Tất cả nhân vật Lưu ý rằng ngoài điều này, bạn không thể có ASCII(0) hoặc ASCII(255) hoặc ký tự trích dẫn trong mã định danh Lưu ý rằng nếu mã định danh là một từ bị hạn chế hoặc chứa các ký tự đặc biệt, bạn phải luôn trích dẫn từ đó bằng ' khi sử dụng mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+9 Trong các phiên bản trước của MySQL, quy tắc đặt tên như sau
Bạn không nên sử dụng các tên như 1e vì biểu thức như 1e+1 không rõ ràng. Nó có thể được hiểu là biểu thức 1e + 1 hoặc là số 1e+1 Trong MySQL, bạn có thể tham chiếu đến một cột bằng bất kỳ biểu mẫu nào sau đây Tham chiếu cột Nghĩa col_name Cột col_name từ bất kỳ bảng nào được sử dụng trong truy vấn đều chứa cột có tên đó tbl_name. col_name Cột col_name từ bảng tbl_name của cơ sở dữ liệu hiện tại db_name. tbl_name. col_name Cột col_name từ bảng tbl_name của cơ sở dữ liệu db_name. Biểu mẫu này có sẵn trong Phiên bản MySQL 3. 22 hoặc muộn hơn `tên_cột` Một cột là một từ khóa hoặc chứa các ký tự đặc biệt Bạn không cần chỉ định tbl_name hoặc db_name. tbl_name tiền tố cho tham chiếu cột trong câu lệnh trừ khi tham chiếu đó không rõ ràng. Ví dụ: giả sử mỗi bảng t1 và t2 chứa một cột c và bạn truy xuất c trong câu lệnh SELECT sử dụng cả t1 và t2. Trong trường hợp này, c không rõ ràng vì nó không phải là duy nhất trong số các bảng được sử dụng trong câu lệnh, vì vậy bạn phải cho biết bạn muốn nói đến bảng nào bằng cách viết t1. c hoặc t2. c. Tương tự, nếu bạn đang truy xuất từ một bảng t trong cơ sở dữ liệu db1 và từ một bảng t trong cơ sở dữ liệu db2, bạn phải gọi các cột trong các bảng đó là db1. t. col_name và db2. t. col_name cú pháp. tbl_name có nghĩa là bảng tbl_name trong cơ sở dữ liệu hiện tại. Cú pháp này được chấp nhận để tương thích với ODBC vì một số chương trình ODBC có tiền tố tên bảng với một. nhân vật Phân biệt chữ hoa chữ thường trong tênTrong MySQL, cơ sở dữ liệu và bảng tương ứng với các thư mục và tệp trong các thư mục đó. Do đó, phân biệt chữ hoa chữ thường của hệ điều hành cơ bản xác định phân biệt chữ hoa chữ thường của tên cơ sở dữ liệu và bảng. Điều này có nghĩa là tên bảng và cơ sở dữ liệu không phân biệt chữ hoa chữ thường trong Windows và phân biệt chữ hoa chữ thường trong hầu hết các loại Unix (Mac OS X là một ngoại lệ). Nhìn thấy Ghi chú. mặc dù tên bảng và cơ sở dữ liệu không phân biệt chữ hoa chữ thường đối với Windows, nhưng bạn không nên tham chiếu đến một cơ sở dữ liệu hoặc bảng nhất định bằng cách sử dụng các chữ hoa chữ thường khác nhau trong cùng một truy vấn. Truy vấn sau đây sẽ không hoạt động vì nó đề cập đến một bảng dưới dạng my_table và MY_TABLE mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+2 Tên cột và bí danh cột không phân biệt chữ hoa chữ thường trong mọi trường hợp Bí danh trên bảng phân biệt chữ hoa chữ thường. Truy vấn sau đây sẽ không hoạt động vì nó đề cập đến bí danh vừa là a vừa là A mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+3 Nếu bạn gặp khó khăn trong việc ghi nhớ chữ cái cho tên bảng và cơ sở dữ liệu, hãy áp dụng quy ước nhất quán, chẳng hạn như luôn tạo cơ sở dữ liệu và bảng bằng cách sử dụng tên chữ thường Một cách để tránh vấn đề này là bắt đầu mysqld với -O Lower_case_table_names=1. Theo mặc định, tùy chọn này là 1 trên Windows và 0 trên Unix Nếu Lower_case_table_names là 1, MySQL sẽ chuyển đổi tất cả các tên bảng thành chữ thường khi lưu trữ và tra cứu. Lưu ý rằng nếu bạn thay đổi tùy chọn này, trước tiên bạn cần chuyển đổi tên bảng cũ thành chữ thường trước khi bắt đầu mysqld MySQL hỗ trợ các biến cụ thể theo luồng với cú pháp @variablename. Tên biến có thể bao gồm các ký tự chữ và số từ bộ ký tự hiện tại và cả mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+8, mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+07 và. . Bộ ký tự mặc định là ISO-8859-1 Latin1; . Nhìn thấy Các biến không cần phải được khởi tạo. Chúng chứa NULL theo mặc định và có thể lưu trữ giá trị số nguyên, thực hoặc chuỗi. Tất cả các biến cho một luồng sẽ tự động được giải phóng khi luồng thoát Bạn có thể đặt một biến bằng cú pháp SET mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+6 Bạn cũng có thể gán giá trị cho một biến trong các câu lệnh khác với SET. Tuy nhiên, trong trường hợp này toán tử gán là. = chứ không phải = vì = được dành riêng để so sánh trong các câu lệnh không phải SET mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+7 Biến người dùng có thể được sử dụng khi biểu thức được phép. Lưu ý rằng điều này hiện không bao gồm các ngữ cảnh trong đó một số được yêu cầu rõ ràng, chẳng hạn như trong mệnh đề GIỚI HẠN của câu lệnh CHỌN hoặc mệnh đề BỎ QUA số LINES của câu lệnh LOAD DATA Ghi chú. trong câu lệnh CHỌN, mỗi biểu thức chỉ được đánh giá khi nó được gửi tới máy khách. Điều này có nghĩa là trong mệnh đề HAVING, GROUP BY hoặc ORDER BY, bạn không thể tham chiếu đến một biểu thức liên quan đến các biến được đặt trong phần SELECT. Ví dụ: câu lệnh sau sẽ không hoạt động như mong đợi mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+0 Lý do là @aa sẽ không chứa giá trị của hàng hiện tại, nhưng giá trị của id cho hàng được chấp nhận trước đó Máy chủ MySQL hỗ trợ các kiểu nhận xét # đến cuối dòng, -- đến cuối dòng và /* trong dòng hoặc nhiều dòng */ mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+1 Lưu ý rằng kiểu nhận xét -- (dấu gạch ngang kép) yêu cầu bạn phải có ít nhất một khoảng trắng sau dấu gạch ngang thứ hai Mặc dù máy chủ hiểu cú pháp nhận xét vừa được mô tả, nhưng có một số hạn chế về cách máy khách mysql phân tích cú pháp /*. */ bình luận
Những hạn chế này áp dụng cả khi bạn chạy mysql một cách tương tác và khi bạn đặt các lệnh trong một tệp và yêu cầu mysql đọc đầu vào của nó từ tệp đó với mysql < some-file MySQL chỉ hỗ trợ kiểu nhận xét SQL mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+60 ANSI nếu dấu gạch ngang thứ hai được theo sau bởi khoảng trắng. Nhìn thấy MySQL có kén chọn các từ dành riêng không?Một vấn đề phổ biến bắt nguồn từ việc cố gắng tạo một bảng có tên cột sử dụng tên của kiểu dữ liệu hoặc hàm được tích hợp trong MySQL, chẳng hạn như DẤU THỜI GIAN hoặc NHÓM. Bạn được phép làm điều đó (ví dụ: ABS là tên cột được phép), nhưng khoảng trắng không được phép giữa tên hàm và phần tiếp theo sau mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello'; +-------+---------+-----------+--------+--------+ | hello | "hello" | ""hello"" | hel'lo | 'hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello"; +-------+---------+-----------+--------+--------+ | hello | 'hello' | ''hello'' | hel"lo | "hello | +-------+---------+-----------+--------+--------+ mysql> SELECT "This\nIs\nFour\nlines"; +--------------------+ | This Is Four lines | +--------------------+61 khi sử dụng các hàm có tên cũng là tên cột Các từ sau đây được bảo lưu rõ ràng trong MySQL. Hầu hết chúng đều bị ANSI SQL92 cấm dưới dạng tên cột và/hoặc tên bảng (ví dụ: NHÓM). Một số được dành riêng vì MySQL cần chúng và (hiện tại) đang sử dụng trình phân tích cú pháp yacc Từ Từ Từ CỘNG TẤT CẢ CÁC THAY ĐỔI PHÂN TÍCH VÀ BẰNG TĂNG DẦN AUTO_INCREMENT BDB BERKELEYDB Ở GIỮA LỚN nhị phân BÃI CẢ HAI QUA THÁC TRƯỜNG HỢP BIẾN ĐỔI CHAR NHÂN VẬT CỘT CỘT HẠN CHẾ TẠO RA THÁNH GIÁ NGAY HIỆN TẠI THỜI ĐIỂM HIỆN TẠI DẤU THỜI GIAN HIỆN TẠI CƠ SỞ DỮ LIỆU CƠ SỞ DỮ LIỆU DAY_HOUR DAY_MINUTE DAY_SECOND THÁNG MƯỜI HAI SỐ THẬP PHÂN MẶC ĐỊNH TRÌ HOÃN XÓA BỎ DESC MÔ TẢ RIÊNG BIỆT KHÁC BIỆT GẤP ĐÔI RƠI VÃI KHÁC GỬI KÈM THOÁT KHỎI TỒN TẠI GIẢI THÍCH LĨNH VỰC TRÔI NỔI VÌ NGOẠI QUỐC TỪ TOÀN VĂN CHỨC NĂNG KHOẢN TRỢ CẤP TẬP ĐOÀN ĐANG CÓ ƯU TIÊN CAO GIỜ_PHÚT HOUR_SECOND NẾU PHỚT LỜ TRONG MỤC LỤC TRONG TẬP TIN BÊN TRONG INNODB CHÈN INSERT_ID INT số nguyên THỜI GIAN VÀO TRONG LÀ THAM GIA CHÌA KHÓA phím GIẾT CHẾT LAST_INSERT_ID LÃNH ĐẠO TRÁI THÍCH GIỚI HẠN DÒNG TRỌNG TẢI KHÓA DÀI LONGBLOB VĂN BẢN DÀI ƯU TIÊN THẤP MASTER_SERVER_ID TRẬN ĐẤU VỪABLOB TRUNG BÌNH TRUNG BÌNH MIỀN TRUNG PHÚT_SECOND MRG_MYISAM TỰ NHIÊN KHÔNG PHẢI VÔ GIÁ TRỊ SỐ TRÊN TỐI ƯU HÓA TÙY CHỌN TÙY CHỌN HOẶC TRẬT TỰ BÊN NGOÀI NGOẠI TỆ MỘT PHẦN ĐỘ CHÍNH XÁC SƠ CẤP ĐẶC QUYỀN THỦ TỤC thanh lọc ĐỌC THỰC NGƯỜI GIỚI THIỆU ĐĂNG KÝ ĐỔI TÊN THAY THẾ YÊU CẦU HẠN CHẾ TRẢ LẠI THU HỒI ĐÚNG THÍCH LỰA CHỌN BỘ TRÌNH DIỄN NHỎ SONAME SQL_AUTO_IS_NULL SQL_BIG_RESULT SQL_BIG_SELECTS SQL_BIG_TABLES SQL_BUFFER_RESULT SQL_CALC_FOUND_ROWS SQL_LOG_BIN SQL_LOG_OFF SQL_LOG_UPDATE SQL_LOW_PRIORITY_UPDATES SQL_MAX_JOIN_SIZE SQL_QUOTE_SHOW_CREATE SQL_SAFE_UPDATES SQL_SELECT_LIMIT SQL_SLAVE_SKIP_COUNTER SQL_SMALL_RESULT SQL_WARNINGS SSL BẮT ĐẦU STRAIGHT_JOIN SỌC CÁI BÀN NHỮNG CÁI BÀN CHẤM DỨT SAU ĐÓ TINYBLOB TINYINT TINYTEXT ĐẾN THEO DÕI LIÊN HIỆP DUY NHẤT MỞ KHÓA CHƯA KÝ CẬP NHẬT CÁCH SỬ DỤNG SỬ DỤNG SỬ DỤNG GIÁ TRỊ BIẾN THÂN VARCHAR THAY ĐỔI KHI NÀO Ở ĐÂU VỚI VIẾT NĂM THÁNG ZEROFILL Các ký hiệu sau (từ bảng trước) không được ANSI SQL cho phép nhưng được MySQL cho phép dưới dạng tên cột/bảng. Điều này là do một số tên này là tên rất tự nhiên và rất nhiều người đã sử dụng chúng Làm cách nào để thêm các ký tự đặc biệt vào tên cột trong MySQL?@Echo Có - để làm điều này, hãy sử dụng dấu gạch ngược kép (``) thay vì dấu gạch ngược đơn (`) trong tên cột để thoát nó.
Làm cách nào để chọn cột có ký tự đặc biệt trong MySQL?MySQL - Cách đưa các ký tự đặc biệt vào truy vấn . \0 - Ký tự ASCII NUL (0x00) \' - Một ký tự nháy đơn ( ' ) \" - Ký tự trích dẫn kép ( " ) \b - Một ký tự xóa lùi \n - Ký tự xuống dòng (linefeed) \r - Ký tự xuống dòng \t - Một ký tự tab \Z - ASCII 26 (Control-Z) Những ký tự đặc biệt nào được phép trong tên cột?Tên có thể chứa (nhưng không được bắt đầu bằng) các ký tự đặc biệt sau. 0 đến 9, #, @ và $ . Các tên được chỉ định làm số nhận dạng được phân tách (trong dấu ngoặc kép) có thể chứa các ký tự đặc biệt bổ sung.
Những ký tự đặc biệt nào không được phép trong MySQL?1 câu trả lời . ASCII. [0-9,a-z,A-Z$_] (chữ cái Latinh cơ bản, chữ số 0-9, đô la, dấu gạch dưới) Mở rộng. U+0080. U+FFFF |