Hướng dẫn which characters are not allowed in mysql? - ký tự nào không được phép trong mysql?

Tôi không thể tìm thấy bất cứ điều gì trên Google, có lẽ tôi không tìm kiếm đúng thuật ngữ. Nhưng có danh sách ký tự không được phép cho tên cột trong cơ sở dữ liệu MySQL không? Tôi đặc biệt quan tâm đến dấu hiệu $.$ sign.

Đã hỏi ngày 2 tháng 10 năm 2015 lúc 5:50Oct 2, 2015 at 5:50

Hướng dẫn which characters are not allowed in mysql? - ký tự nào không được phép trong mysql?

2

Trích xuất từ ​​tài liệu MySQL giả sử bạn đang sử dụng ít nhất MySQL 5.0 trở lên:

Các ký tự được phép trong các định danh chưa được trích dẫn:

  • ASCII: [0-9, A-Z, A-Z $ _] (chữ cái Latin cơ bản, chữ số 0-9, Dollar, Undercore)

  • Mở rộng: U+0080 .. U+FFFF

Các ký tự được phép trong các định danh được trích dẫn bao gồm toàn bộ mặt phẳng đa ngôn ngữ cơ bản (BMP), ngoại trừ U+0000:

  • ASCII: U+0001 .. U+007F

  • Mở rộng: U+0080 .. U+FFFF

TL;DR

Các ký tự được phép trong các định danh được trích dẫn bao gồm toàn bộ mặt phẳng đa ngôn ngữ cơ bản (BMP), ngoại trừ U+0000:

ASCII: U+0001 .. U+007FOct 2, 2015 at 5:55

Hướng dẫn which characters are not allowed in mysql? - ký tự nào không được phép trong mysql?

3

  • Các ký tự MySQL là gì?

  • Các loại char và varchar được khai báo với độ dài cho biết số lượng ký tự tối đa bạn muốn lưu trữ. Ví dụ, char (30) có thể giữ tới 30 ký tự. Độ dài của cột char được cố định theo chiều dài mà bạn khai báo khi bạn tạo bảng. Độ dài có thể là bất kỳ giá trị nào từ 0 đến 255.

    • Dấu gạch dưới có được phép trong MySQL không?

    • Bạn không thể đặt dấu gạch dưới tên bảng. Nếu bạn vẫn muốn tạo một bảng mới với dấu gạch dưới, hãy bao quanh nó bằng cách sử dụng backticks, không phải là trích dẫn đơn.

    • Những hạn chế của MySQL là gì?

    • 5 Hạn chế của MySQL với dữ liệu lớn.

  • Cung cấp dữ liệu nóng. ....


Các ký tự MySQL là gì?

MariaDB [(none)]> SHOW CREATE TABLE mysql.user\G
*************************** 1. row ***************************
       Table: user
Create Table: CREATE TABLE `user` (
  `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  `User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '',

Các loại char và varchar được khai báo với độ dài cho biết số lượng ký tự tối đa bạn muốn lưu trữ. Ví dụ, char (30) có thể giữ tới 30 ký tự. Độ dài của cột char được cố định theo chiều dài mà bạn khai báo khi bạn tạo bảng. Độ dài có thể là bất kỳ giá trị nào từ 0 đến 255.

Dấu gạch dưới có được phép trong MySQL không?

MariaDB [(none)]> CREATE USER 'a*b';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> CREATE USER 'a
    '> b';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> CREATE USER '💩';
ERROR 1470 (HY000): String '????' is too long for user name (should be no longer than 80)

MariaDB [(none)]> CREATE USER 'Robert\'); DROP TABLE Students;-- ';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> SELECT user FROM mysql.user;
+----------------------------------+
| user                             |
+----------------------------------+
| Robert'); DROP TABLE Students;-- |
| a
b                              |
| a*b                              |
| root                             |
| root                             |
| root                             |
| root                             |
+----------------------------------+
7 rows in set (0.000 sec)

Bạn không thể đặt dấu gạch dưới tên bảng. Nếu bạn vẫn muốn tạo một bảng mới với dấu gạch dưới, hãy bao quanh nó bằng cách sử dụng backticks, không phải là trích dẫn đơn.

Khi bạn xây dựng một ứng dụng hoạt động với các loại cơ sở dữ liệu khác nhau, bạn phải nhận thức và đối phó với nhiều sự khác biệt tinh tế giữa cơ sở dữ liệu. Nó không khác gì khi bạn viết một ứng dụng hoạt động với MySQL và Amazon Redshift.

Trong khi phát triển tích hợp.io đồng bộ hóa, chúng tôi gặp nhiều khác biệt như vậy. Trong bài viết này, chúng tôi muốn chia sẻ kinh nghiệm từ Trench của chúng tôi.

Thể hiện cột của bạn với tên cột được trích dẫn

Nếu bạn chỉ định tên cột không có báo giá trong truy vấn của bạn, tên cột của bạn có thể có một bộ ký tự rất hạn chế: bảng chữ cái ASCII, chữ số và một vài ký tự khác.

ALTER TABLE DROP COLUMN my_column;

Tuy nhiên, nếu bạn trích dẫn một tên cột, bạn có thể sử dụng nhiều ký tự hơn. Đặc biệt là trong MySQL, bạn thậm chí có thể sử dụng hầu hết mọi ký tự Unicode trong tên cột của mình. (Nếu đây là một thực hành tốt là một vấn đề khác

Mysql

ALTER TABLE my_table ADD COLUMN `Écoles; 学校\` TEXT; -- valid column name

Amazon Redshift

ALTER TABLE my_table ADD COLUMN “schools ()” TEXT; -- valid column name

Lưu ý rằng MySQL và Redshift sử dụng một ký tự khác làm ký tự trích dẫn.

Quay trở lại làm việc. Chúng tôi sẽ xử lý đường ống ETL của bạn.
We'll handle your ETL pipeline.

Trường hợp nhạy cảm hoặc trường hợp không nhạy cảm

Trường hợp quan trọng với MySQL. Bạn có thể tạo một cột như chính quyền địa phương. Mặt khác, tên cột của Amazon Redshift không nhạy cảm với trường hợp. Bạn có thể sử dụng các chữ cái trên trong truy vấn của bạn, nhưng chúng được chuyển đổi thành chữ thường.

Ký tự tên cột hợp lệ trong MySQL và Amazon Redshift

Bảng sau đây cho thấy sự khác biệt về các ký tự được hỗ trợ giữa MySQL và Redshift.

Nhân vậtMysql (chưa được chia sẻ)Redshift (chưa được trích dẫn)MySQL (trích dẫn)Redshift (trích dẫn)
Bảng chữ cái ASCIICó (trường hợp nhạy cảm)Có (trường hợp không nhạy cảm)Có (trường hợp nhạy cảm)Có (trường hợp không nhạy cảm)
Digit, Undercore (_), Dollar Sign ($) <Có (*1)Có (*2)VÂNGVÂNG
Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)VÂNGCác ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)VÂNGCác ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)
KHÔNGCác ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)KHÔNGVÂNG
Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)VÂNGVÂNG
Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)VÂNGCác ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)
KHÔNGCác ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)KHÔNGVÂNG
Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)KHÔNGVÂNG

Các ký tự không phải ASCII (Unicode mở rộng U+0080..u+FFFF)

KHÔNG

Không gian ( )

CÓ: 3)

!#%& Xông ()*+,-./:;?@[]^_ ~ ~

Dấu ngoặc kép (")

Có (*4)

Giọng mộ (`)


Có (*5)

Backslash (\)

Có (*6)

*1) Tên cột chỉ có chữ số không được phép trừ khi được trích dẫn.

*2) Tên cột có thể không bắt đầu bằng dấu hiệu chữ số hoặc đô la ($) trừ khi được trích dẫn.

*3) Không cho phép không gian dấu vết.

*4) Phải được trốn thoát bằng một trích dẫn kép khác (It can hold numbers, letters and special characters.

*5) Phải được thoát ra với một giọng mộ mộ khác (``)

*6) Phải được thoát khỏi một dấu gạch chéo ngược khác chỉ khi nó là nhân vật cuối cùng.. For example, CHAR(30) can hold up to 30 characters. The length of a CHAR column is fixed to the length that you declare when you create the table. The length can be any value from 0 to 255.

*7) MySQL 5.6 và Amazon Redshift kể từ ngày 1 tháng 6 năm 2015

Bạn không thể đặt dấu gạch dưới tên bảng.Nếu bạn vẫn muốn tạo một bảng mới với dấu gạch dưới, hãy bao quanh nó bằng cách sử dụng backticks, không phải là trích dẫn đơn.. If you still want to create a new table with underscore, surround it using backticks, not single quotes.

Những hạn chế của MySQL là gì?

5 Hạn chế của MySQL với dữ liệu lớn..
Cung cấp dữ liệu nóng.....
Đối phó với dữ liệu dễ biến động cao.....
Tránh giới hạn khả năng mở rộng MySQL.....
Cung cấp phân tích.....
Cung cấp năng lượng cho các tìm kiếm toàn văn ở quy mô ..