mysql - 테이블 - primary key란




컬럼 이름으로 사용되는 예약어를 어떻게 피할 수 있습니까? MySQL/테이블 만들기 (2)

백틱 문자 (`)를 사용해야합니다. 예 :

create table if not exists misc_info (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`key` TEXT UNIQUE NOT NULL,
value TEXT NOT NULL)ENGINE=INNODB;

.NET의 클래스에서 테이블을 생성하고 있는데 클래스에 예약 된 MySQL 키워드 인 필드 이름 key 가있을 수 있습니다. create table 문에서 어떻게 그것을 이스케이프합니까? (참고 : 아래의 다른 문제는 색인 된 / 고유 한 텍스트가 고정 된 크기 여야 함)

create table if not exists misc_info (
id INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
key TEXT UNIQUE NOT NULL,
value TEXT NOT NULL)ENGINE=INNODB;

서로 다른 SQL 서버 간의 이식성에 관심이 있다면 ANSI SQL 쿼리를 사용해야합니다. ANSI SQL의 문자열 이스케이프는 큰 따옴표 ( ")를 사용하여 수행됩니다. 불행히도이 이스케이프 방법은 ANSI 호환 모드로 설정되어 있지 않으면 MySQL에 이식 할 수 없습니다.

필자는 항상 MySQL 서버를 --sql-mode = 'ANSI'인수로 시작합니다. 두 가지 방법을 모두 사용할 수 있기 때문입니다. MySQL 서버에서 실행되지 않을 쿼리를 작성하고 있다면, 다음과 같이 할 수 있습니다.

  • 모든 SQL 쿼리를 ANSI SQL로 작성하십시오.
  • 다음 MySQL 특정 쿼리에 포함 시키십시오 :

    SET @[email protected]@SQL_MODE;
    SET SESSION SQL_MODE='ANSI';
    -- ANSI SQL queries
    SET SESSION [email protected]_SQL_MODE;
    

이 방법은 유일한 MySQL 관련 쿼리는 .sql 스크립트의 시작과 끝 부분에 있습니다. 다른 서버를 위해 이들을 선적해야한다면이 3 개의 쿼리 만 제거하면됩니다. 보다 편리하게 위의 모드 설정 조회를 포함하는 script_mysql.sql 스크립트 URL을 작성하고 script_ansi.sql 스크립트를 작성하고 모드를 재설정하는 스크립트를 작성할 수 있습니다.





escaping