객체 이름 지정

객체 이름 지정 (Object Names)

SQLite에서 데이터베이스 객체(테이블, 인덱스, 트리거 또는 뷰)는 객체의 이름과 그것이 위치한 데이터베이스의 이름으로 식별돼요. 데이터베이스 객체는 메인 데이터베이스, temp 데이터베이스, 또는 부착된 데이터베이스 (attached database)에 위치할 수 있어요.

출처: Naming

본문

DROP TABLE, DROP INDEX, DROP VIEW, DROP TRIGGER, REINDEX, ALTER TABLE 및 많은 다른 명령의 문법은 사용자가 데이터베이스 객체를 이름만으로, 또는 이름과 데이터베이스 이름의 조합으로 지정하는 것을 허용해요. 객체 참조의 일부로 데이터베이스가 지정되지 않으면, SQLite는 일치하는 이름을 가진 객체를 메인, temp 및 모든 부착된 데이터베이스에서 검색해요. temp 데이터베이스가 먼저 검색되고, 그 다음 메인 데이터베이스, 그 다음 부착된 순서대로 모든 부착된 데이터베이스가 검색돼요. 참조는 먼저 찾은 일치 항목으로 해석돼요. 예를 들어:

     /* Add a table named 't1' to the temp, main and an attached database */
     ATTACH 'file.db' AS aux;
     CREATE TABLE t1(x, y);
     CREATE TEMP TABLE t1(x, y);
     CREATE TABLE aux.t1(x, y);

     DROP TABLE t1;         /* Drop table in temp database */
     DROP TABLE t1;         /* Drop table in main database */
     DROP TABLE t1;         /* Drop table in aux database */

객체 참조의 일부로 스키마 이름이 지정되면, 그 이름은 "main", "temp", 또는 부착된 데이터베이스의 스키마 이름이어야 해요. 다른 SQL 식별자와 마찬가지로 스키마 이름은 대소문자를 구분하지 않아요. 스키마 이름이 지정되면, 해당 이름을 가진 객체를 위해 그 스키마 하나만 검색돼요.

대부분의 객체 참조는 특정 유형의 객체로만 해석될 수 있어요 (예를 들어 DROP TABLE 문의 일부인 참조는 테이블 객체로만 해석될 수 있고, 인덱스, 트리거 또는 뷰로는 해석될 수 없어요). 하지만 일부 맥락에서는 (예: REINDEX) 객체 참조가 한 가지 이상의 객체 유형으로 해석될 수 있어요. 이름을 가진 객체를 데이터베이스 스키마에서 검색할 때, 참조의 맥락에서 사용될 수 없는 유형의 객체는 항상 무시돼요.

더 알아보기 (Learn more)