Độ dài tối đa của tên bảng và tên cột trong Oracle là bao nhiêu?
Độ dài tối đa của tên bảng và tên cột trong Oracle là bao nhiêu?
Câu trả lời:
Trong Oracle 12.2 trở lên, độ dài tên đối tượng tối đa là 128 byte.
Trong Oracle 12.1 và dưới độ dài tên đối tượng tối đa là 30 byte.
Lưu ý kiểu dữ liệu và kích thước
>describe all_tab_columns
VIEW all_tab_columns
Name Null? Type
----------------------------------------- -------- ----------------------------
OWNER NOT NULL VARCHAR2(30)
TABLE_NAME NOT NULL VARCHAR2(30)
COLUMN_NAME NOT NULL VARCHAR2(30)
DATA_TYPE VARCHAR2(106)
DATA_TYPE_MOD VARCHAR2(3)
DATA_TYPE_OWNER VARCHAR2(30)
DATA_LENGTH NOT NULL NUMBER
DATA_PRECISION NUMBER
DATA_SCALE NUMBER
NULLABLE VARCHAR2(1)
COLUMN_ID NUMBER
DEFAULT_LENGTH NUMBER
DATA_DEFAULT LONG
NUM_DISTINCT NUMBER
LOW_VALUE RAW(32)
HIGH_VALUE RAW(32)
DENSITY NUMBER
NUM_NULLS NUMBER
NUM_BUCKETS NUMBER
LAST_ANALYZED DATE
SAMPLE_SIZE NUMBER
CHARACTER_SET_NAME VARCHAR2(44)
CHAR_COL_DECL_LENGTH NUMBER
GLOBAL_STATS VARCHAR2(3)
USER_STATS VARCHAR2(3)
AVG_COL_LEN NUMBER
CHAR_LENGTH NUMBER
CHAR_USED VARCHAR2(1)
V80_FMT_IMAGE VARCHAR2(3)
DATA_UPGRADED VARCHAR2(3)
HISTOGRAM VARCHAR2(15)
describe user_mview_logs
trả về LOG_TABLE VARCHAR2(128)
nhưng nếu bạn thử bất cứ thứ gì tiếp cận từ 30 ký tự trở lên cho tên nhật ký xem được cụ thể hóa, bạn sẽ nhận được một số kết quả khá khó hiểu.
MÔ TẢ all_tab_columns
sẽ hiển thị TABLE_NAME VARCHAR2 (30)
Lưu ý VARCHAR2 (30) có nghĩa là giới hạn 30 byte, không giới hạn 30 ký tự và do đó có thể khác nếu cơ sở dữ liệu của bạn được định cấu hình / thiết lập để sử dụng bộ ký tự đa dòng.
Mike
Đúng, nhưng miễn là bạn sử dụng các ký tự ASCII, ngay cả một bộ ký tự đa nhân vẫn sẽ giới hạn chính xác 30 ký tự ... vì vậy trừ khi bạn muốn đặt trái tim và mèo cười vào tên DB của bạn ...
30 char (byte, thực sự, như đã nêu).
Nhưng đừng tin tôi; Hãy thử điều này cho chính mình:
SQL> create table I23456789012345678901234567890 (my_id number);
Table created.
SQL> create table I234567890123456789012345678901(my_id number);
ERROR at line 1:
ORA-00972: identifier is too long
Đã cập nhật: như đã nêu ở trên, trong Oracle 12.2 trở lên, độ dài tên đối tượng tối đa hiện là 128 byte.
Các quy tắc đặt tên đối tượng lược đồ cũng có thể được sử dụng:
http://doad.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements008.htmlm#sthref723
Trong cơ sở dữ liệu 10g tôi đang xử lý, tôi biết tên bảng được tối đa 30 ký tự. Không thể cho bạn biết độ dài tên cột là gì (nhưng tôi biết nó> 30).
Tên đối tượng cơ sở dữ liệu Oracle có độ dài tối đa là 30 byte .
Quy tắc tên đối tượng: http://docs.oracle.com/database/121/SQLRF/sql_elements008.htm
Tôi đang làm việc trên Oracle 12c 12.1. Tuy nhiên, dường như không cho phép hơn 30 ký tự cho tên cột / bảng.
Đọc qua một trang orory có đề cập đến 30 byte. https://docs.oracle.com/database/121/SQLRF/sql_elements008.htmlm#QueryRF00223
Trong 12c mặc dù all_tab_columns nói VARCHAR2 (128) cho Table_Name, nhưng nó không cho phép nhiều hơn 30 byte tên.
Tìm thấy một bài viết khác về 12c R2, dường như cho phép điều này lên tới 128 ký tự. https://community.oracle.com/ideas/3338
Độ dài tối đa của tên bảng và cột là 128 byte hoặc 128 ký tự. Giới hạn này là để sử dụng người dùng cơ sở dữ liệu sybase. Tôi đã xác minh câu trả lời này kỹ lưỡng, để tôi tự tin đăng câu trả lời này.