복붙노트

[SQL] 간단한 SELECT 문은 "키워드 근처의 구문" "근처에서 사용하는 구문", "ORA-00906", "구문 오류에서 또는 근처"또는 실패

SQL

간단한 SELECT 문은 "키워드 근처의 구문" "근처에서 사용하는 구문", "ORA-00906", "구문 오류에서 또는 근처"또는 실패

나는 아주 간단한 SQL 문이

SELECT * FROM Table;

하지만, 내 쿼리 엔진은 구문 오류를 반환합니다. 왜?

오류 정보:

이것이 어떻게 가능한지? 나는 연결 문자열을 확인하고는 올바른 것입니다. 내 테이블 이름을 확인하고 또한 올바른 것입니다.

내가 잘못 뭐하는 거지?

해결법

  1. ==============================

    1.좋아, 표는 SQL의 모든 변종에 예약 된 키워드입니다.

    좋아, 표는 SQL의 모든 변종에 예약 된 키워드입니다.

    당신이 테이블 표를 호출 성명에서 사용하려면, 당신은 식별자입니다 당신의 SQL 엔진을 이야기해야합니다. 당신이 식별자 예선을 사용할 필요가이 작업을 수행합니다.

    (MS SQL 서버) TSQL을 위해 대괄호를 사용

    SELECT * FROM [Table];
    

    MySQL의 사용을위한`

    SELECT * FROM `Table`;
    

    오라클과 PostgreSQL 따옴표를 사용에 대한, 이러한 표준을 준수합니다.

    SELECT * FROM "Table";
    

    SQLite는 당신은 위의 중 하나를 사용할 수 있지만, 인용 부호가 바람직하다.

    식별자 예선은 동일하게 일어날 경우에도,이 식별자입니다 (객체의 이름입니다.) 엔진 키워드의 이름이 아닌 말한다. 당신의지도없이 쿼리 엔진 혼란과 오류를보고, 또는 더 나쁜, 예상치 못한 뭔가를 할 수 있습니다.

    식별자 예선을 사용하면 식별자 키워드없는 경우에도, 좋습니다. 그들은 더 살 종류를 포함한 모든 파서에 대한 문을 정의합니다.

    키워드 후 오브젝트 이름 지정은 일반적으로 나쁜 관행으로 간주됩니다. 당신의 식별자 키워드와 같은을 피하려고한다 그래서. 예약 된 키워드가 테이블의 내용의 설명 인 경우는 드물다 각주를 참조하십시오.

    예를 들면 테이블은 테이블의 테이블이 아닙니다.

    문제와 조언이 테이블에 한정되지 않고, 식별자는 스키마,보기 inluding 모든 데이터베이스 개체 및 존재하는 많은 종류의, 표준 및 공급 업체 특정 필요합니다.

    좋은 연습의 또 다른 형태는 스키마 식별자 테이블 식별자를 접두사이며,이 쿼리 엔진 조금 도움이됩니다. 스키마 식별자를 포함하는 경우, 식별자는, 자격이 있어야한다

    (MS SQL 서버) TSQL을 위해 대괄호를 사용

    SELECT * FROM [dbo].[Table];
    

    MySQL의 사용을위한`

    SELECT * FROM `dbo`.`Table`;
    

    오라클, PostgreSQL을하고 SQLite는 따옴표를 사용에 대한

    SELECT * FROM "dbo"."Table";
    

    스키마는 키워드의 이름을 따서 명명되지 않은 경우에도, 같은 경우이어야한다.

    참고로, 도움말을 당신은 충돌을 피할 수 있습니다.

    SQL 예약 키워드의 목록입니다.

    MySQL의 예약 키워드의 목록입니다.

    오라클 예약 된 키워드의 목록입니다.

    SQLite는 예약 된 키워드의 목록입니다.

    PostgreSQL의 예약 된 키워드의 목록입니다.

    주목할만한 '잡았다의 "시스템을 설계 할 때 올 것 USER 및 오류를 포함한다.

    각주:

    의미 론적으로 올바른있을 수 있습니다 오브젝트 이름 reseved 단어를 사용하는 경우가 있습니다.

    가구 상점에 대한 정보 시스템의 고안 예를 생각해 보자. 이 시나리오에서는 테이블 (부엌, 정원, 식당, 약종상 등)의 테이블이 올바르지 수 있습니다. 그래서, 당신은 표가 올바른 식별자이었다 주장 할 수 있습니다.

    당신은 항상 식별자 예선을 사용하는 경우 화상을 입을 수 없습니다.

  2. ==============================

    2.당신은 SQL 서버를 사용하는 경우에는 표는 SQL Server의 키워드대로 괄호 []에 랩 테이블에 필요

    당신은 SQL 서버를 사용하는 경우에는 표는 SQL Server의 키워드대로 괄호 []에 랩 테이블에 필요

    SELECT * FROM [Table]
    
  3. from https://stackoverflow.com/questions/23833525/simple-select-statement-fails-with-syntax-to-use-near-ora-00906-syntax-er by cc-by-sa and MIT license