programing

MS SQL Server에서 예약된 단어/키워드인 테이블 이름 만들기

minimums 2023. 6. 27. 22:02
반응형

MS SQL Server에서 예약된 단어/키워드인 테이블 이름 만들기

이미 키워드인 데이터베이스 테이블의 이름을 지정해도 됩니까?저의 경우, 사용자를 수용할 테이블의 이름을 지정하려고 합니다.User라는 이름을 붙였는데 SQL Server Management Studio에 분홍색으로 표시되어 있어서 기존의 System Table 또는 Keyword로 추정됩니다.당신의 조언에 감사합니다.

공식 예약 키워드 목록:예약된 키워드(Transact-SQL)

이 작업을 세 번 반복합니다.

하지 마세요, 저는 예약된 단어를 사용하지 않을 것입니다!

감사할 겁니다!

키워드와 동일한 이름으로 테이블을 만들 수 있습니다.테이블 이름을 "따옴표"로 묶으면 작동합니다.SQL Server의 기본 따옴표는 대괄호 []입니다.

CREATE TABLE [dbo].[user](
    [id] [bigint] NOT NULL,
    [name] [varchar](20) NOT NULL
) ON [PRIMARY]

네, 괜찮습니다.쿼리에서 SQL Server가 테이블을 참조하고 있음을 알 수 있도록 테이블 이름 주위에 [ 및 ]를 둘 수 있습니다.

CREATE TABLE [User] ...
SELECT * FROM [User]

[User]를 사용하여 이 작업을 수행할 수 있습니다.가능한 경우 키워드와 충돌하지 않는 테이블 이름을 사용하여 혼동과 버그를 방지합니다.

MS Query의 경우 Query에서 이중 따옴표가 완벽하게 작동합니다.

select T1."Reference"
from MyTable T1

문자열에는 '단일 따옴표'를 사용하고 열 이름에는 "이중 따옴표"를 사용합니다.

예:

INSERT INTO AccountMovement
("Date", Info)
VALUES
('2012/03/17', 'aa'),
('2012/03/17', 'bb'),
('2012/03/17', 'cc'),
('2012/03/17', 'dd')

저는 테이블 이름이 복수여야 한다고 말하는 캠프에 앉아 있습니다. 그래서 당신의 경우에는 Users가 될 것입니다.

저는 이 협약이 말이 되기 때문에 좋습니다.사용자 모음이 있으므로 테이블을 그렇게 부릅니다.사용자라는 개체를 채울 수 있는 개별 행을 추출하는 경우 추가 다운스트림.

관례에 따라 테이블 이름에 단수를 사용하도록 지시하는 경우 다음과 같은 다른 것을 사용합니다.회원, 고객 등

또한 RacerX의 답변을 보십시오!

앞에서 언급한 바와 같이 [브래킷] 이름을 사용해도 엄밀히 말하면 괜찮습니다.

언급했듯이, 당신은 이름을 인용해서 할 수 있습니다.물론, 당신이 그것을 언급할 때마다 당신은 또한 그것을 인용해야 할 것입니다 - 저를 믿으세요, 그것은 정말 빨리 낡아요.

별도로, SSMS 구문이 색상을 지정한다고 해서 반드시 예약된 단어라는 것을 의미하지는 않습니다.Sql은 그렇게 짜증날 수 있습니다.;)

테이블 및 열 이름(또는 일반적으로 더 나은 개체 이름)에 대한 기본 규칙:

예약된 단어와 같거나 유사한 단어를 사용하지 마십시오.A-Za-z0-9 및 밑줄만 사용하십시오.특히 공간을 사용하지 마세요.이스케이프가 필요 없는 이름만 사용하고 이스케이프를 영구 테스트로 사용하지 마십시오.

당신과 당신과 함께 일하거나 당신의 코드를 작업할 모든 사람들은 악화시킬 필요가 없습니다.

다른 모든 사람들이 말했듯이, 이것을 하지 마세요; 하지만, 저는 같은 처지에 있었습니다.저는 제 모든 테이블이 특이한 형태로 저장된다는 규칙을 가지고 있습니다.조직이 아닌 조직, 자산이 아닌 자산, 부품 카탈로그에는 많은 부품 등이 있습니다.

음, 저는 사용자 테이블이 있는데 그것을 뭐라고 부릅니까?저는 결국 그것[사용자]을 피하게 되었습니다.저는 지금 그 결정을 후회하고 있습니다. 왜냐하면 저는 항상 테이블에서 탈출하는 것을 잊고 있기 때문입니다. 하지만 저는 아직 더 나은 이름을 생각해내지 못했습니다. 회원이 유력한 후보입니다.

좋은 생각이 아닙니다 - 다양한 이유로

더 많은 이유 1) 예약된 이름과 충돌할 가능성이 있는 명백한 이유 2) 일반 이름을 사용할 때 2) 양식 필드 또는 아무 곳에서나 "사용자"라고 말하는 코드에서 글로벌 교체를 수행하려면 3) 코드에서 "사용자"를 사용하는 경우를 검색해야 한다면 - 어디로 가는지 알 수 있습니다(100만 줄 이상의 줄이 있습니다).코드, 그것은 우리를 죽일 것입니다).

우리가 한 일 1) 각 테이블 이름은 재무 데이터에 대한 개체 F_nnn에 대해 O_nnn과 같이 고유한 시작을 가집니다.opp_created for opportunity는 날짜에 생성되었고, SUSR_RID는 영업 기능 내의 사용자 ID를 참조하는 데 사용되었으며 OPUSR_RID는 사용자에 대한 운영 참조...와 같은 필드에도 동일하게 적용되었습니다.접두사 이외에는 O_FltAT가 아닌 O_FlightArivalTime과 같은 가능한 분명한 이름을 사용합니다.오늘날의 데이터베이스는 이름이 길면 성능이 저하되지 않습니다.이제 OF_FlightArivalTime을 Form 필드 이름으로 사용하면 연결을 쉽게 찾을 수 있지만 O_F...에 대한 전역 검색은 DB 필드, OF_F...에 대한 검색 중 하나만 찾을 수 있습니다.양식 필드와 _F... 둘 다.

언급URL : https://stackoverflow.com/questions/695578/creating-table-names-that-are-reserved-words-keywords-in-ms-sql-server

반응형