Mã định danh trong MySQL là gì?

Cơ sở dữ liệu, bảng, chỉ mục, cột, bí danh, dạng xem, quy trình được lưu trữ, trình kích hoạt, sự kiện, biến, phân vùng, không gian bảng, điểm lưu trữ, nhãn, người dùng, vai trò, được gọi chung là số nhận dạng và có các quy tắc đặt tên nhất định

Định danh có thể được trích dẫn bằng cách sử dụng ký tự backtick - `. Trích dẫn là tùy chọn đối với số nhận dạng không chứa ký tự đặc biệt hoặc đối với số nhận dạng không phải là từ dành riêng. Nếu cờ ANSI_QUOTES SQL_MODE được đặt, dấu ngoặc kép [

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
0] cũng có thể được sử dụng để trích dẫn định danh. Nếu cờ
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
1 được đặt, dấu ngoặc vuông [
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
2 và
SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
3] có thể được sử dụng để trích dẫn

Ngay cả khi sử dụng các từ dành riêng làm tên, các tên đủ điều kiện không cần phải trích dẫn. Ví dụ:

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
4 chỉ có một nghĩa có thể, vì vậy nó được phân tích cú pháp chính xác ngay cả khi không có dấu ngoặc kép

không trích dẫn

Các ký tự sau hợp lệ và cho phép các mã định danh không được trích dẫn

  • ASCII. [0-9,a-z,A-Z$_] [chữ số 0-9, chữ cái Latinh cơ bản, cả chữ thường và chữ hoa, ký hiệu đô la, dấu gạch dưới]
  • Mở rộng. U+0080. U+FFFF

trích dẫn

Các ký tự sau hợp lệ, nhưng số nhận dạng sử dụng chúng phải được trích dẫn

  • ASCII. U+0001. U+007F [Mặt phẳng đa ngôn ngữ cơ bản đầy đủ Unicode [BMP] ngoại trừ U+0000]
  • Mở rộng. U+0080. U+FFFF
  • Bản thân các trích dẫn định danh có thể được sử dụng như một phần của định danh, miễn là chúng được trích dẫn

Quy tắc khác

Có một số quy tắc khác cho định danh

  • Mã định danh được lưu trữ dưới dạng Unicode [UTF-8]
  • Định danh có thể hoặc không thể phân biệt chữ hoa chữ thường. Xem Mã định danh Phân biệt chữ hoa chữ thường
  • Tên cơ sở dữ liệu, bảng và cột không được kết thúc bằng ký tự khoảng trắng
  • Tên định danh có thể bắt đầu bằng một chữ số, nhưng không thể chỉ chứa các chữ số trừ khi được trích dẫn
  • Mã định danh bắt đầu bằng chữ số, theo sau là 'e', ​​có thể được phân tích cú pháp dưới dạng số dấu phẩy động và cần được trích dẫn
  • Số nhận dạng không được phép chứa ký tự ASCII NUL [U+0000] và các ký tự bổ sung [U+10000 trở lên]
  • Các tên như 5e6, 9e không bị cấm, nhưng chúng tôi khuyên bạn không nên sử dụng chúng vì chúng có thể dẫn đến sự mơ hồ trong một số ngữ cảnh nhất định, được coi là một số hoặc biểu thức
  • Biến người dùng không thể được sử dụng như một phần của mã định danh hoặc làm mã định danh trong câu lệnh SQL

trích dẫn nhân vật

Ký tự trích dẫn thông thường là ký tự đánh dấu ngược - `, nhưng nếu tùy chọn SQL_MODE ANSI_QUOTES được chỉ định, thì một trích dẫn kép thông thường -

SELECT test . t1 . i FROM t1;
+------+
| i    |
+------+
|   10 |
+------+
0 cũng có thể được sử dụng

Ký tự backtick có thể được sử dụng như một phần của mã định danh. Trong trường hợp đó, số nhận dạng cần được trích dẫn. Ký tự trích dẫn có thể là dấu gạch ngược, nhưng trong trường hợp đó, dấu gạch ngược trong tên phải được thoát bằng một dấu gạch ngược khác

Chiều dài tối đa

  • Cơ sở dữ liệu, bảng, cột, chỉ mục, ràng buộc, quy trình được lưu trữ, trình kích hoạt, sự kiện, dạng xem, không gian bảng, máy chủ và nhóm tệp nhật ký có độ dài tối đa là 64 ký tự
  • Nhãn câu lệnh ghép có độ dài tối đa là 16 ký tự
  • Bí danh có độ dài tối đa là 256 ký tự, ngoại trừ bí danh cột trong câu lệnh CREATE VIEW, được kiểm tra dựa trên độ dài cột tối đa là 64 ký tự [không phải độ dài bí danh tối đa là 256 ký tự]
  • Người dùng có độ dài tối đa là 80 ký tự
  • Vai trò có độ dài tối đa là 128 ký tự
  • Các ký tự nhiều byte không được tính thêm vào giới hạn ký tự

Nhiều định danh

MariaDB cho phép tên cột được sử dụng riêng nếu tham chiếu rõ ràng hoặc tên bảng được sử dụng cùng với tên cột hoặc cả ba tên cơ sở dữ liệu, tên bảng và tên cột. Dấu chấm được sử dụng để phân tách các mã định danh và dấu chấm có thể được bao quanh bởi khoảng trắng

Mã định danh chỉ đơn giản là tên của bí danh, cơ sở dữ liệu, bảng, cột hoặc chỉ mục. Đó là cách bạn xác định duy nhất đối tượng đó. Trước khi bạn có thể bắt đầu tạo cơ sở dữ liệu và bảng của riêng mình, chúng ta nên thảo luận về những mã định danh nào hợp lệ trong MySQL

Nói chung, số nhận dạng có thể chứa bất kỳ ký tự nào , với những ngoại lệ này

  • Chúng không được chứa ký tự trích dẫn, ASCII[0] và ASCII[255]

  • Tên cơ sở dữ liệu có thể chứa bất kỳ ký tự nào được cho phép trong tên thư mục, nhưng không chứa các ký tự có ý nghĩa đặc biệt trong tên thư mục [/, \, và. ] vì lý do rõ ràng

  • Tên bảng có thể chứa bất kỳ ký tự nào được cho phép trong tên tệp, ngoại trừ. và /

Tất cả các số nhận dạng ngoại trừ bí danh có thể dài tối đa 64 ký tự. Tên bí danh [được trình bày trong Chương 7, "Truy vấn nâng cao"] có thể dài tối đa 255 ký tự

Một quy tắc kỳ lạ về số nhận dạng trong MySQL là bạn có thể sử dụng các từ dành riêng làm số nhận dạng, miễn là chúng có dấu ngoặc kép xung quanh chúng. Ví dụ: bạn có thể có một bảng tên là TABLE. Tất nhiên, chỉ vì bạn có thể không có nghĩa là bạn nên làm, và đây là cách tốt nhất nên tránh. Ngay cả khi nó không làm bạn bối rối khi làm việc với hệ thống, nó có thể làm bối rối chương trình mysqldump, chương trình này thường được sử dụng để sao lưu

Có một danh sách ngắn các từ dành riêng mà MySQL sẽ cho phép bạn có số nhận dạng mà không cần trích dẫn. Điều này trái với tiêu chuẩn ANSI cho SQL, nhưng nó khá phổ biến trong sử dụng hàng ngày. Các ví dụ phổ biến nhất mà bạn sẽ thấy là NGÀY và DẤU THỜI GIAN được sử dụng làm tên cột

Các loại định danh khác nhau trong SQL là gì?

Có hai loại định danh SQL. bình thường và phân định. .
Mã định danh thông thường là một chữ cái viết hoa theo sau là 0 hoặc nhiều ký tự, mỗi ký tự là một chữ cái viết hoa, một chữ số hoặc ký tự gạch dưới. .
Mã định danh được phân tách là một chuỗi gồm một hoặc nhiều ký tự được đặt trong dấu ngoặc kép

Bộ định danh định danh là gì?

Các phiên bản định danh cho phép bạn lấy các tập hợp con cụ thể của dữ liệu dựa trên sự xuất hiện của một giá trị dữ liệu đã chỉ định [một vòng loại].

Ký 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

Độ dài tối đa của mã định danh trong SQL là bao nhiêu?

9. 2. 1 Giới hạn độ dài định danh

Chủ Đề