반응형

Database 용어정리

 

1. Database

 다수의 사용자들이 공용으로 사용하기 위해 저장된 데이터의 집합

 

2. Database Language

  • 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값이 올 수 있으며, 부모 테이블의 기본키에 종속되어야 한다.
  • 도메인 무결성, 고유 무결성, null무결성, 키 무결성

5. View

  •  하나 이상의 테이블로부터 유도되어 만들어진 가상테이블, 실제로 기억공간을 차지하지 않으며 논리적 독립성을 제공하고 데이터 접근 제어로부터 보안성을 향상시킨다.
  • 정의된 기본 테이블이 삭제되면 뷰 또한 삭제된다.
  • 한번 정의된 뷰는 변경할 수 없으며, 삭제한 후 다시 생성해야 한다.(replace)
  • 검색은 일반 테이블과 동일한 방식으로 한다.
  • 뷰에 대한 삽입, 삭제, 갱신에 대한 제약이 따른다. 컬럼에 기본키가 포함되어 있지 않으면 삽입, 갱신, 삭제가 되지 않는다.

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

  • 테이블의 전체 데이터 중 적은 양을 조회할 때 사용한다.
  • 테이블에 데이터가 적을수록 인덱스의 효율은 떨어진다.
  • 데이터의 유일성이 높을수록, 데이터의 범위가 넓을수록 인덱스의 효율이 올라간다.
  • Null이 적은 컬럼이 인덱스 효율이 좋다.
  • 결합 인덱스의 경우 자주 사용되는 컬럼을 앞쪽에 배치한다.

Database Q/A

Q. SELECT문은 무엇입니까?

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

 

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

A. SELECT * FROM user WHERE name LIKE '%희%';  

(name에 문자열 희를 포함하는 name레코드들을 가진 레코드 셋을 반환합니다.)

 

Q. Insert문은 무엇입니까

A. Database에 정보를 삽입하는 문입니다.

EX) INSERT INTO 테이블명 (INSERT할 컬럼) VALUES (데이터);

 

Q. Database에서 레코드는 어떻게 삭제합니까? (DELETE문)

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

EX) DELETE FROM 테이블명 WHERE 조건

 

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

A. DISTINCT는 중복된 결과를 제거하고 하나만 원하고자 할 때 쓰이는 문법입니다. Database table에 특정 값 a,b,a,c가 있으면 a,b,c만 나오게 할 수 있습니다. 그러나 distinct를 사용시 temp tablespace에 임시로 저장하고 작업하는 방식이라 시스템에 부하를 줄 수 있다.

EX) SELECT DISTINCT 테이블명 WHERE 조건

 

Q. 특정 기준을 통하여 정렬된 결과를 얻는 방법은 무엇입니까? (ORDER BY)

A. 프로그램에서 ORDER BY 키워드를 사용하여 정렬하고 정렬된 결과를 반환하여 정렬을 수행할 수 있습니다.

ORDER BY만 하면(Default) 오름차순 정렬이되고 DESC 값을 주게 되면 내림차순 할 수 있습니다.

 

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

A. SELECT COUNT(*) FROM user WHERE age > 40 에서 count키워드를 사용하게 되면 카운트 수를 얻을 수 있습니다.

 

Q. GROUP BY는 무엇입니까?

A. GROUP BY는 집계함수로 컬럼의 데이터들을 그룹화하여 집계할 수 있습니다.

EX) SELECT 선택 FROM 테이블명 WHERE 조건 GROUP BY 그룹화할 콜럼

 

Q. 테이블을 DROP하는 것과 Truncate, 그리고 테이블 내 모든 레코드를 Delete하는 것의 차이점은 무엇입니까?

A.

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

2. DELETE TABLE은 로그되는 작업이기 때무넹 삭제되는 각 행은 트랜젝션 로그에 기록되고 이것은 작업을 느리게 합니다.

 

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

4. Truncate table역시 테이블 내 행들을 삭제하지만 삭제되는 각 행을 기록하지 않고 대신 테이블의 데이터베이스 할당 해제를 기록하여 작업이 빠릅니다. TRUNCATE TABLE은 롤백 할 수 없습니다.

 

5. DROP명령어는 테이블 전체를 삭제, 공간, 객체를 삭제합니다. 삭제 후 되돌릴 수 없습니다.

 

Q. WHERE절과 HAVING절의 다른 점은 무엇입니까?

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

 

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

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

 

Q. 쿼리 순서

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

 

참고사이트

https://sas-study.tistory.com/56

반응형

'2020 > 신입 개발자 면접 질문 모음' 카테고리의 다른 글

신입개발자 면접 질문 #JSP  (0) 2020.03.16
신입개발자 기술면접 #Spring framework  (0) 2020.03.16
iBatis 란  (0) 2020.03.15
DI 와 AOP의 대해 설명하시오.  (0) 2020.03.12
면접 질문 spring  (0) 2020.03.12
블로그 이미지

꽃꽂이하는개발자

,