신입개발자 기술면접 #3 - Oracle DB

데이터베이스 용어정리

1. 데이터베이스

- 어느 한 조직에서 업무처리를 위해 다수의 응용시스템 혹은 다수의 사용자들이 공용으로 사용하기 위해 저장된 운영 데이터의 집합.


2. 데이터베이스 언어

- 정의어(DDL : Data Definition Language) : 데이터베이스 구조를 정의,수정,삭제하는 언어. (create, alter, drop)

- 조작어(DML : Data Manipulation Language) : 데이터베이스 내의 자료 검색, 삽입, 갱신, 삭제를 위한 언어. (select, delete, update, insert)

- 제어어(DCL : Data Control Language) : 데이터에 대해 무결성 유지, 병행 수행 제어, 보호와 관리를 위한 언어.(commit, rollback, grant, revoke)


3. 스키마(Schema) 

- 데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술 정의한 것을 말한다.


4. 무결성

- 개체 무결성 : 기본키는 NULL값이 올 수 없으며, 중복될 수 없다.

- 참조 무결성 : 외래키는 NULL값이 올 수 있으며, 부모 테이블의 기본키에 종속되어야 한다.

- 도메인 무결성, 고유(Unique)무결성, NULL 무결성, 키 무결성이 있다.


5.

- 하나이상의 테이블로부터 유도되어 만들어진 가상테이블, 실제로 기억공간을 차지하지 않으며 논리적 독립성을 제공하고 데이터 접근 제어로부터 보안성을 향상시킴

- 정의된 기본 테이블이 삭제되면 뷰도 자동적으로 제거된다.

- 한번 정의된 뷰는 변경할 수 없으며, 삭제한 후 다시 생성해야 한다.(replace)

- 검색은 일반 테이블과 동일한 방식으로 한다.

- 뷰에 대한 삽입, 삭제, 갱신에 대한 제약이 따른다. 컬럼에 기본키가 포함되어 있지 않으면 삽입, 갱신, 삭제가 되지 않는다.


6. 인덱스 생성시 고려할 사항

- 테이블의 전체 데이터 중 적은 양을 조회할 때 사용한다.

- 테이블에 데이터가 적을수록 인덱스의 효율은 떨어진다.

- 데이터의 유일성이 높을수록, 데이터의 범위가 넓을수록 인덱스의 효율은 올라간다.

- NULL이 적은 컬럼이 인덱스 효율이 좋다.

- 결합 인덱스의 경우 자주 사용되는 컬럼을 앞쪽에 배치한다.



데이터 베이스 질문들


1. SELECT문은 무엇입니까?

- Select문은 사용자들이 데이터베이스 내 테이블에서 값들을 선택할 수 있도록 합니다. 데이터베이스 테이블에서 어떤 값들을 선택하는 가는 SQL질의 내 다양한 조건에 달려있습니다.


2. 전체 이름이 아닌 이름의 일부로 값을 비교할 수 있는 방법은 무엇입니까?(like 절)

- SELECT * FROM people WHERE name LIKE ‘%na%’; 이렇게 하면 name에 문자열 na를 포함하는 name레코드들을 가진 레코드셋을 반환합니다.


3. Insert문은 무엇입니까?

- 데이터베이스에 정보를 삽입하는 문입니다.


4. 데이터베이스에서 레코드는 어떻게 삭제합니까?(DELETE문)

- DELETE문은 데이터베이스에서 레코드 또는 특정 컬럼의 값을 삭제합니다.


5. 테이블에서 어떻게 중복이 없는(별개) 항목을 얻을 수 있습니까?(distinct)

- DISTINCT에 대해서 설명을 하자면 중복된 결과를 제거하고 하나만 원하고자 할 때 쓰이는 문법이다. 데이터베이스 테이블에 특정 값에 a,a,b,c가 있으면 a,b,c만 나오게 할 수 있다.


6. 어떤 순서로 정렬된 결과를 얻는 방법은 무엇입니까?(order by)

- 프로그램에서 ORDER BY 키워드를 사용하여 정렬하고 정렬된 결과를 반환하여 정렬을 수행하는 수고를 덜 수 있습니다. 키워드는 ORDER BY 렬에 사용됩니다. ORDER BY를 이용함으로써 오름차순으로 정렬되고 ‘DESC’값을 주게 되면 내림차순이 된다.


7. 테이블의 전체 레코드 수를 어떻게 얻을 수 있습니까?

- 예를 들어 SELECT COUNT(*) FROM employees WHERE age > 40 에서 처럼 count키워드를 사용하게 되면 카운트(수)를 얻을 수 있습니다.


8. GROUP BY는 무엇입니까?

- GROUP BY 키워드는 집계함수(SUM같은)가 호출되 때마다 모든 컬럼 값들의 합계를 반환하기 때문에 SQL에 추가되었습니다. GROUP BY기능 없이 컬럼 값들의 개별 그룹마다 합계를 구하는 것은 불가능합니다.


9. 테이블을 드롭(DROP)하는 것과 자르는 것(Truncate), 그리고 테이블 내 모든 레코드를 삭제(Delete)하는 것의 차이점은 무엇입니까?

- DELETE TABLE은 로그되는 작업이기 때문에 삭제되는 각 행은 트랜잭션 로그에 기록되고 이것은 작업을 느리게 합니다. TRUCATE TABLE 역시 테이블 내 행들을 삭제하지만 삭제되는 각 행을 기록하지 않고 대신 테이블의 데이터베이스 할당 해제를 기록하여 작업이 빠릅니다. TRUNCATE TABLE는 롤백할 수 없습니다.

- DELETE 명령어는 데이터는 지워지지만 테이블 용량은 줄어들지 않는다. 원하는 데이터만 지울 수 있다. 삭제 후 RollBack 가능하다.

- TRUNCATE 명령어는 용량이 줄어들고, 인덱스 등도 모두 삭제된다. 테이블은 삭제하지는 않고 데이터만 삭제한다. 한꺼번에 다 지워야 한다. 삭제후 절대 되돌릴 수 없다.

- DROP 명령어는 테이블 전체를 삭제,공간, 객체를 삭제한다. 삭제 후 절대 되돌릴 수 없다.


10. Where 절과 Having절의 다른 점은 무엇입니까?

- Having절은 그룹함수의 그룹의 조건으로 사용되고, where 절은 select할 데이터에 조건을 주는 역할입니다.


11.기본키(Primary Key)와 유일키(Unique Key)의 차이점은 무엇입니까?

-  기본키는 널을 허용하지 않지만 유일키는 모든 컬럼 중 유일하게 하나에 대한 NULL을 허용합니다. 그래서 unique키는 개체하나하나를 구분할 기본키가 될 수 없다.


12. 쿼리 순서

- SELECT -> FROM -> WHERE -> GROUP BY -> ORDER BY



댓글

Designed by JB FACTORY