2012-12-10 50 views
19

Có thể tạo bảng có tên cột chứa không gian không? Nếu vậy làm thế nào tôi có thể tạo và sử dụng nó?Tên cột bảng Oracle có không gian

+4

Có thể - đọc về "số nhận dạng được trích dẫn" trong hướng dẫn. Nhưng tôi sẽ ** mạnh mẽ khuyên bạn không nên làm điều đó. –

Trả lời

25

Có thể, nhưng không khuyến khích. Bạn cần phải kèm theo tên cột trong dấu ngoặc kép.

create table my_table ("MY COLUMN" number); 

Nhưng lưu ý các cảnh báo trong the documentation:

Note: Oracle không khuyên bạn sử dụng định danh tính cho tên đối tượng cơ sở dữ liệu . Các số nhận dạng được trích dẫn này được SQL * Plus chấp nhận, nhưng chúng có thể không hợp lệ khi sử dụng các công cụ khác quản lý cơ sở dữ liệu đối tượng.

Tên sẽ được trường hợp nhạy cảm, và bạn wil phải kèm theo tên trong dấu ngoặc kép mỗi khi bạn tham khảo nó:

select "MY COLUMN" from my_table; 

Vì vậy ... không, sẽ là lời khuyên của tôi ...

+2

+1 cho "không". –

2

Bạn có thể (xem the Oracle doc) nếu bạn trích dẫn những điều này một cách thích hợp. Tuy nhiên tôi nghi ngờ đây không phải là một ý tưởng tốt, vì bạn sẽ phải trích dẫn mọi thứ. Nói chung các tiêu chuẩn/quy ước đặt tên db (ví dụ: here hoặc here) ưu tiên sử dụng dấu gạch dưới (không yêu cầu trích dẫn) trên khoảng trắng.

0

Đây là nguyên tắc cột được định nghĩa cho oracle

Cột (đối với bảng)

  1. Tất cả các cột ở dạng {alias} _ {colname}. Ví dụ: prs_id, prs_name, prs_adr_id, adr_street_name. Điều này đảm bảo rằng cột tên là duy nhất trong một lược đồ, ngoại trừ các cột được chuẩn hóa từ một bảng khác, được điền bằng trình kích hoạt hoặc ứng dụng logic.
    1. Tất cả các cột đều ở dạng số ít. Nếu bạn nghĩ rằng bạn cần một tên cột trong số nhiều suy nghĩ hai lần cho dù đó là thiết kế đúng? Thông thường, nó có nghĩa là bạn đang bao gồm nhiều giá trị trong cùng một cột và rằng nên tránh .
    2. Tất cả các bảng có cột khóa chính thay thế dưới dạng {alias} _id, là cột đầu tiên trong bảng. Ví dụ: prs_id, mat_id, adr_id.

bạn luôn có thể có bí danh cho tên cột bu sử dụng ""

+0

Bạn có nguồn cho những điều trên không? –

+4

Những giao diện đó giống như quy ước đặt tên công ty hoặc dự án chứ không phải quy tắc 'Oracle'. Các quy tắc đặt tên đối tượng là [ở đây] (http://docs.oracle.com/cd/E11882_01/server.112/e10592/sql_elements008.htm). –

+0

Không cần tên cột là duy nhất trong lược đồ. Chỉ trong một bảng hoặc xem. –

4

Có, đó là có thể. Bạn chỉ cần chắc chắn để báo giá tên cột. Ví dụ:

CREATE TABLE Fubar ("Foo Bar" INT); 
INSERT INTO Fubar VALUES (1337); 
SELECT "Foo Bar" FROM SpaceMonster 

Mặc dù có thể, không có ý tưởng hay. Bạn có thể tiết kiệm cho mình khỏi rất nhiều đau đớn nếu chỉ thay thế tất cả các không gian bằng dấu gạch dưới.

+0

Trong trường hợp có dấu ngoặc kép bên ngoài, làm thế nào để bạn kèm theo tên trường sau đó? ví dụ: d2rq: sqlExpression "TO_CHAR (factCloverAsphere.Time Data Recorded, 'Dy Mon DD HH24: MI: SS YYYY')" – Angelina

0

Bạn đã sử dụng Google cho điều này chưa?Tôi đã làm - liên kết thứ 6 là this, trong đó tôi tìm thấy những điều sau đây:

create table employee (
    "First Name" varchar2(20), 
    "Last Name" varchar2(20), 
    Address varchar2(60), 
    Phone varchar2(15), 
    Salary number, 
    EmpID number, 
    DeptID number 
); 

... hoạt động tốt khi tôi thử nó trong 10g.

1

có thể bằng cách đặt tên cột giữa hai ví dụ " : "My columN", tên cột trở thành phân biệt chữ hoa chữ thường.

SELECT "my column" from table; --NOT OK 
SELECT "My columN" from table; --OK 
Các vấn đề liên quan