컬렉션, 상속, 컴포지션 컬렉션(Collection) 여러 개의 데이터 값을 하나의 속성에 저장할 수 있도록 하는 것은 관계형 데이터베이스의 확장 기능이다. 컬렉션의 각 요소는 서로 다른 데이터 타입이 될 수도 있고, 심지어 서로 다른 클래스(단, 가상 클래스 제외) 도메인으로 가질 수도 있다. CUBRID는 컬렉션 종류로서 다음과 같은 데이터 타입을 제공한다. 컬렉션 명 설명 타입 정의 입력 데이터 저장 데이터 SET 중복을 허용하지 않는 합집합 col_name SET VARCHAR(20) col_name SET (int, VARCHAR(20)) {'c','c','c','b','b', 'a'} {3,3,3,2,2,1,0,'c','c','c','b','b', 'a'} {'a','b','c'} {0,1,2..
인덱스(Index) 인덱스는 데이터베이스가 많은 데이터가 존재할 때 빠르게 특정 데이터를 접근할 수 있게 해주는 안내자의 역할을 하는 데이터베이스 객체이다. 데이터베이스가 구축된 시점부터 데이터는 지속적으로 늘어나게 되므로 인덱스는 시간이 지날수록 매우 중요한 요소가 된다. 간단하게 생각하면 알파벳 순서의 키워드와 페이지 번호를 기록하고 있어서 특정 키워드를 가지고 해당하는 챕터의 내용을 쉽게 찾을 수 있게 하는 책의 색인과 비슷하다고 생각할 수 있다. SQL문을 이용한 인덱스의 정의 및 관리 SQL의 CREATE TABLE문에서 PRIMARY KEY나 FOREIGN KEY 또는 UNIQUE로 명시한 컬럼에 대해서는 큐브리드가 자동으로 인덱스를 생성한다. 추가적으로 인덱스를 정의하려면 CREATE IND..
뷰(View) 뷰는 하나의 가상 테이블(virtual table)을 의미한다. 가상 테이블은 실제로 레코드를 갖지 않는 테이블이라는 뜻이다. 기존의 테이블의 레코드들은 데이터베이스에 물리적으로 저장되지만, 뷰는 기존의 테이블이나 또 다른 뷰에 대한 SELECT문의 형태로 정의된다. 뷰를 정의하는 SQL문의 구문은 다음과 같다. CREATE VIEW 뷰이름 [(칼럼들)] AS SELECT 문 [ WITH CHECK OPTION ] WITH CHECK OPTION은 뷰에 레코드를 삽입하거나 갱신할 때 뷰의 SELECT절 조건에 해당하는 데이터만 입력될 수 있도록 한다. SQL문을 이용한 뷰의 정의 및 관리
트리거(trigger) 데이터베이스의 CONSTRAINT만으로 표현할 수 없는 제약 조건들이 있다. 예를 들어, “올림픽 경기장의 좌석 수가 10만개가 넘을 수 없다”라는 제약 조건이 필요하다면 이러한 제약조건은 CONSTRAINT만으로 표현할 수 없다. 이 제약조건을 만족시키기 위해서는 데이터에 대한 갱신이 일어날 때마다 제약조건을 만족하는지 여부를 검사하여 만족하지 않으면 거절하는 방식을 이용할 수 있는데, 이럴 때 사용하는 것이 트리거이다. 트리거는 명시된 이벤트가 발생할 때마다 DBMS가 자동적으로 수행하는, 사용자가 정의하는 문이다. 트리거는 데이터베이스 무결성을 유지하기 위한 일반적이고 강력한 도구이다. 트리거는 테이블를 정의할 때 표현할 수 없는 비즈니스 규칙들에 대한 무결성 제약조건을 보장..
ROWNUM, LIMIT, CLICK COUNTER ROWNUM ROWNUM은 MySQL의 LIMIT 연산자와 같이 질의 결과로 생성될 각 레코드에 대한 순서를 나타내는 번호를 반환한다. 첫 번째 결과 레코드는 1, 두 번째 결과 레코드는 2를 가진다. 일반적으로 ROWNUM은 SELECT문의 WHERE절에 사용되며, ORDER BY 절을 포함한 SELECT문에서는 ORDERBY_NUM(), GROUP BY 절을 포함한 SELECT문에서는 GROUPBY_NUM()을 사용한다.
데이터 조회 ORDER BY절이 포함된 질의 질의 결과를 오름차순이나 내림차순으로 정렬(sorting)하는 경우가 흔히 있다. 사용자가 SELECT문에서 질의 결과의 순서를 명시하지 않으면 DBMS가 레코드들을 검색한 임의의 순서대로 사용자에게 제시된다. ORDER BY 절에서 하나 이상의 컬럼을 사용하여 검색 결과를 정렬할 수 있다. ORDER BY 절은 SELECT문에서 가장 마지막에 사용되는 절이다. ORDER BY 절의 디폴트 정렬 순서는 오름차순(ASC:ascending)이다. DESC를 지정하여 정렬 순서를 내림차순으로 지정할 수 있다. 널 값도 정렬 결과에 표시된다. 널 값은 오름차순에서 가장 앞에 나타나고, 내림차순에서는 가장 뒤에 나타난다. SELECT절에 명시한 컬럼들을 사용해서 정렬해..
데이터 갱신 데이터 삽입 기존의 테이블에 레코드를 삽입할 때 INSERT문을 사용한다. 참조되는 테이블에 레코드가 삽입되는 경우에는 참조 무결성 제약 조건이 위배되지 않으나 참조하는 테이블에 레코드가 삽입되는 경우에는 참조 무결성 제약 조건을 위배할 수 있으므로, 참조 무결성 제약 조건을 설정하지 않은 상태에서 참조하는 테이블에 레코드를 삽입할 때에는 주의가 필요하다. INSERT문은 테이블에 한 번에 한 레코드씩 삽입하는 것과 한 번에 여러 개의 레코드를 삽입할 수 있는 것으로 구분한다. 한 번에 한 레코드씩 삽입하는 INSERT문의 구문은 아래와 같다. INTO절에서 컬럼의 리스트는 생략할 수 있다. 생략한 경우에는 VALUES절의 값의 순서가 테이블 내의 컬럼의 순서와 일치해야 한다. INSERT ..