데이터베이스와 DBMS(DataBase Management System)란?

  • 기업이 지속적으로 유지관리 해야 할 데이터의 집합(Database)
  • 방대한 양의 데이터를 편리하게 관리하고, 효율적으로 저장하고 검색할 수 있는 환경을 제공해주는 시스템 소프트웨어(DBMS)
무결성(Integrity)
  • 데이터베이스에 들어있는 값이 정확하다. 
  • 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성을 의미한다.
무결성 제약 조건

데이터베이스에 저장된 데이터의 정확성을 보장하기 위해

정확하지 않은 데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약조건을 의미

  1. NULL 무결성: 특정 속성 값이 NULL이 될 수 없도록 하는 규정
  2. UNIQUE 무결성: 특정 속성에 대해 각 튜플이 갖는 속성값들이 서로 달라야 한다.
  3. Domain 무결성: 특정 속성 값이 그 속성이 정의된 도메인에 속한 값이어야 한다.
    ex) 성별 속성에는 '남', '여' 두 가지 값만 들어가야 한다.
  4. Relation 무결성: 관계에 대한 적절성 여부를 지정한 규정
  5. 참조(Referential) 무결성: 외래키 값은 null이거나 참조 릴레이션의 기본키(PK)와 동일해야 한다는 규정
  6. 개체 무결성: 기본 릴레이션의 기본키(PK)를 구성하는 어떤 속성도 NULL일 수 없다는 규정

 


데이터의 검색

SQL 문장 작성법

  1. 대소문자를 구분하지 않는다.
  2. 한 줄 또는 여러 줄 입력 가능 (문장이 끝나면 세미콜론 ; 을 쓴다.)
  3. 하나의 명령어는 여러 줄에 나누거나 단축될 수 없다. ex) SELECT는 한줄에 작성해야 함
  4. 일반적으로 키워드는 대문자로 입력, 다른 모든 단어는 소문자로 입력(권장)

 

SQL 문장의 실행

  1. 마지막 절 끝에 ;을 기술하여 명령의 끝을 표시한다.
    ※ 버퍼 편집시 ; 대신 / 를 쓴다.
  2. 버퍼에서는 마지막 라인에 / 를 넣는다.

버퍼: 마지막 라인에 / 을 넣는다.

 

SELECT문(자료 조회) 형식

  1. SELECT 컬럼명1, 컬럼명2, ... FROM 테이블명
  2. SELECT * FROM 테이블명 (전체 컬럼을 모두 선택하려면 *을 입력하면 됨)
  3. 테이블명 뒤에 다음의 문장을 추가하면 더 자세한 자료를 추출할 수 있다.
    • WHERE: 검색하려는 자료에 조건을 주어 필요한 정보만을 뽑을 수 있다.
    • GROUP BY: 일정한 형식을 지닌 자료를 그룹화하는 경우에 사용한다.
    • BETWEEN: 얻은 결과에서 레코드 순번으로 필요한 자료만큼만 읽을 때 사용한다.
    • ORDER BY: 얻은 결과를 정렬할 때 사용한다. (ASC-오름차순, DESC-내림차순)
SELECT * FROM student;

실행 결과

SELECT no, name, tel FROM student;

실행 결과

 

산술 표현식

SELECT ename, job, sal, sal+300 FROM emp; --급여 인상(급여+300)

실행 결과

 

AS(alias)

별칭. 특정 컬럼명을 별칭으로 변경해 조회할 수 있다. (AS는 생략 가능)

  1. 컬럼 제목 이름을 변경한다.
  2. 컬럼 바로 뒤에 사용한다. 컬럼명과 별칭 사이에 AS를 넣기도 한다.
  3. 공백이나 특수문자 또는 대소문자를 구분하기 원하면 이중부호("")가 필요하다.
SELECT ename, job, sal, (sal+300)*2 AS salup FROM emp ORDER BY salup DESC;
--AS(alias): 별칭 => 생략 가능
SELECT ename, job, sal, (sal+300)*2 salup FROM emp ORDER BY salup DESC; --AS 생략

실행 결과

 

 

NULL값의 처리

NULL이란?

행의 특정 컬럼에 대해 데이터 값이 없을 경우 이를 NULL이라고 한다.

NULL값은 이용할 수 없거나 지정되지 않았거나, 알 수 없거나 또는 적용할 수 없는 값이다.
0(=숫자)이나 공백(=문자)과는 다르다.
컬럼이 생성될 때 NOT NULL로 지정되지 않았거나 PRIMARY KEY로 정의되지 않았다면

어떤 컬럼은 NULL값을 포함 할 수 있다.

 

NVL 함수 (Null VaLue)
NVL(컬럼명, ): NULL값을 으로 바꿈
  1. NVL 함수는 NULL 값을 다른 값으로 바꿀 때 사용하는 함수이다.
  2. 모든 데이터 타입에 적용 가능하다.
  3. 이 함수를 사용할 때는 전환되는 값의 자료형을 일치시켜야 한다.
SELECT ename, sal, comm, (sal*12+comm) "1년 연봉" FROM emp;
--NULL에다가 어떤 값을 사칙연산하면 결과가 NULL이 된다.
--comm: 보너스

1년 연봉에 null값이 들어간다.

 

SELECT ename, sal, comm, (sal*12+NVL(comm, 0)) "1년 연봉" FROM emp;
--NVL(comm, 0): comm에 있는 null값을 0으로 바꿔준다.

1년 연봉에 null값이 없어졌다.

 

 

NVL2 함수
NVL2(컬럼명, 값1, 값2): 컬럼값이 null이 아니면 값1을 반환, null이면 값2를 반환
  • 자바의 삼항 연산자와 비슷하다.
--사원 테이블에서 관리자(MGR)이 있는 경우는 1, 없으면 0을 사원명과 함께 출력하시오
SELECT ename, mgr, NVL2(mgr, 1, 0) AS "관리자 유무" FROM emp
ORDER BY "관리자 유무";

 

 

문자열 결합( || )

--문자열 결합 "SMITH IS A CLERK"
SELECT ename, job FROM emp;
SELECT ename || ' IS A ' || job AS "EMPLOYEES DETAIL" FROM emp;

 

 

DISTINCT - 중복행의 제거

  • 주로 하나의 컬럼에서 중복된 값을 제외하고 보여줄 때 사용한다.
  • SELECT DISTINCT 컬럼명 FROM 테이블
--DISTINCT: 중복행 제거
SELECT job FROM emp;
SELECT DISTINCT job FROM emp;

직업의 중복이 사라졌다.

 

--부서별로 담당하는 업무
SELECT deptno, job FROM emp ORDER BY deptno ASC;
SELECT DISTINCT deptno, job FROM emp ORDER BY deptno ASC;

 

  • DISTINCT라는 키워드는 항상 SELECT 바로 다음에서 기술한다.
  • DISTINCT뒤에 나타나는 컬럼들은 모두 DISTINCT의 영향을 받는다.
    (DISTINCT 바로 뒤의 한 칼럼에만 적용되는 것이 아니라 출력되는 행 전체가 영향을 받는다.)
  • DISTINCT뒤에 여러 개의 컬럼이 기술되면 나타나는 행은 컬럼의 조합들이 중복되지 않게 나타난다.
  • DISTINCT를 사용하면 나타나는 결과는 기본적으로 오름차순이다.

+ Recent posts