[ Virtual ]카람
Virtual column관계형 데이터베이스에서 가상 열은 다른 열 값 또는 다른 결정론적 식을 사용하여 값이 자동으로 계산되는 테이블 열입니다.가상 열은 SQL:2003에서 생성된 [1]열로 정의되며 MariaDB, SQL Server, Oracle, Postgre 등의 일부 DBMS에서만 구현됩니다.SQL, SQLite 및 Firebird(데이터베이스 서버)(COMPUT BY 구문).
실행
가상 열에는 다음 두 가지 유형이 있습니다.
- 가상 열
- 영속적인 열
가상 열 값은 SELECT 문에 의해 반환되는 등 필요할 때 즉시 계산됩니다.영구 열 값은 테이블에 행을 삽입할 때 계산되며 다른 모든 값과 동일하게 기록됩니다.다른 값이 변경되면 변경될 수 있습니다.가상 열과 영구 열 모두 장단점이 있습니다. 즉, 가상 열은 디스크의 공간을 사용하지 않지만 쿼리가 이를 참조할 때마다 계산해야 합니다. 영구 열은 CPU 시간이 필요하지 않지만 디스크 공간을 사용합니다.그러나 일부 DBMS는 하나의 열 유형만 지원하거나 둘 다 지원하지 않기 때문에 선택할 수 없는 경우가 있습니다.
IBM DB2
IBM DB2는 버전 8의 가상 열을 생성 [2]열로 지원합니다.
마리아DB
MariaDB는 MySQL 포크입니다.가상 열이 5.[3]2 트리에 추가되었습니다.
가상 열을 계산하는 데 사용할 수 있는 식에는 다음과 같은 제한이 있습니다.
- 결정론적인 게 분명해
- 상수 값을 반환할 수 없습니다.
- 사용자 정의 함수 또는 저장 프로시저를 사용할 수 없습니다.
- 다른 가상 열은 포함할 수 없습니다.
- 서브쿼리를 사용할 수 없습니다.
영구 열은 인덱스를 작성할 수 있으며 외부 키의 일부가 될 수 있지만 제약 조건 적용과 관련하여 몇 가지 작은 제한이 있습니다.
가상 열은 가상 열을 지원하는 스토리지 엔진을 사용하는 테이블에서만 사용할 수 있습니다.가상 열을 지원하는 스토리지 엔진은 다음과 같습니다.
MRG_MyISAM 테이블은 영속적인 컬럼을 포함하는 MyISAM 테이블을 기반으로 할 수 있지만 대응하는 MRG_MyISAM 열을 일반 컬럼으로 정의해야 합니다.
구문
CREATE TABLE 또는 ALTER TABLE 문을 사용하여 가상 열을 추가할 수 있습니다.가상 열을 정의하는 데 사용되는 구문은 다음과 같습니다.
< >유형> [생성된 항상] ~하듯이 ( < >표현> ) [가상 영속적] [독특한] [독특한 열쇠] [댓글 < >본문>]
- type은 열의 데이터 유형입니다.
- expression은 각 행에 대한 열 값을 반환하는 SQL 식입니다.
- text는 옵션 컬럼댓글입니다
MySQL
MySQL에서는 생성된 열로 알려진 가상 열을 MySQL 5.7에서 지원하기 시작했습니다.이후 버전에서는 사용에 대한 다양한 제한이 완화되었습니다.[4]
오라클
버전 11g 이후 Oracle은 가상 [5]열을 지원합니다.
SQL Server
Microsoft SQL Server는 가상 열을 지원하지만 이러한 열을 계산 [6]열이라고 합니다.
SQL Server는 영구 계산 열과 비영구 계산 열을 모두 지원합니다.
파이어버드
Firebird는 이전 버전인 InterBase가 가상 열을 지원하므로 항상 가상 열을 지원했습니다. 이를 계산 [7]열이라고 합니다.
Firebird는 영구 열이 아닌 가상 열을 지원하며 가상 열 식에 내장된 함수, 외부 함수 및 저장된 루틴을 호출하는 하위 선택을 허용합니다.
구문
가상 컬럼 작성은 테이블 작성 중에 실행할 수 있습니다.기존 테이블에 컬럼을 추가할 경우 가상 컬럼 정의에 사용되는 구문은 다음과 같습니다.
column_name [유형] 계산했다 타고 (표현)
또는 업계 표준
column_name [유형] 생성된 항상 ~하듯이 (표현)
포스트그레스Ql
버전 12 이후 PostgreSQL은 생성된 [8]열로 알려진 가상 열을 지원합니다.
SQLite
버전 3.31.0(2020-01-22) 이후 SQLite는 생성된 [9]열로 알려진 가상 열을 지원합니다.
메모들
- ^ SQL: 2003 공개 완료
- ^ SQL 레퍼런스 Volume 2 버전 8
- ^ 가상 열
- ^ "MySQL :: MySQL 5.7 Reference Manual :: 13.1.18.7 CREATE TABLE and Generated Columns".
- ^ https://www.oracle.com/technetwork/articles/sql/11g-schemamanagement-089869.html
- ^ "Computed Columns".
- ^ "TABLE".
- ^ "5.3. Generated Columns". 12 August 2021.
- ^ "Generated Columns".
외부 링크
- MariaDB 문서의 가상 컬럼.
- MariaDB 5.2: OpenLife.cc에서 가상 컬럼을 사용하는 이유는 무엇입니까?
- Oracle Database 11g Release 1의 가상 열
- SQL Server 2008의 계산된 열