1. SELECT문의 기능 (사영:射影, 선택, 결합)

SELECT문은 관계형 데이터베이스에서 데이터를 조회하는 가장 기본적인 명령어이다. SELECT문의 주요 기능은 사영(Projection), 선택(Selection), 결합(Join) 세 가지로 나뉜다.

  • 사영(Projection): 테이블에서 필요한 열(Column)만 선택하여 조회하는 기능
    • SELECT column1, column2 FROM table_name;
    • 예제: SELECT name, age FROM employees; (이름과 나이만 조회)
  • 선택(Selection): 특정 조건을 만족하는 행(Row)만 조회하는 기능
    • SELECT * FROM table_name WHERE condition;
    • 예제: SELECT * FROM employees WHERE department = 'HR'; (HR 부서의 직원만 조회)
  • 결합(Join): 두 개 이상의 테이블을 연결하여 데이터를 조회하는 기능
    • SELECT * FROM table1, table2 WHERE table1.id = table2.id;
    • 예제: SELECT e.name, d.department_name FROM employees e, departments d WHERE e.department_id = d.department_id; (직원과 부서 정보 결합 조회)

2. SELECT문의 기본 구문

오라클 SQL의 SELECT문 기본 형식은 다음과 같다.

SELECT [DISTINCT] 컬럼명  
FROM 테이블명  
[WHERE 조건]  
[GROUP BY 그룹핑할 컬럼]  
[HAVING 그룹핑 조건]  
[ORDER BY 정렬할 컬럼];  

예제:

SELECT DISTINCT department_id  
FROM employees  
WHERE salary > 5000  
ORDER BY department_id DESC;

3. SQL문 작성 규칙

  • 오라클 SQL은 대소문자를 구별하지 않는다. (SELECT와 select는 동일)
  • SQL 문장은 ;(세미콜론)으로 끝나야 한다.
    • SQL*Plus, SQLcl 등에서는 ;이 필요하지만, 일부 툴에서는 없어도 실행됨
    • PL/SQL 블록에서는 /이 필요
    • 일반적인 SQL 문은 ;이 없어도 실행될 수 있지만, 여러 개의 SQL 문이 있을 경우 구분을 위해 필요함
  • 문자열 및 날짜 리터럴은 싱글쿼트('') 를 사용해야 한다. ('2024-01-01')
  • 별칭(Alias)을 사용할 때 공백이 포함되면 큰따옴표("") 로 감싸야 한다.

4. 산술 연산자

오라클 SQL에서 지원하는 기본적인 산술 연산자는 다음과 같다.

연산자 의미 예제

+ 덧셈 SELECT salary + 1000 FROM employees;
- 뺄셈 SELECT salary - 500 FROM employees;
* 곱셈 SELECT salary * 1.1 FROM employees;
/ 나눗셈 SELECT salary / 2 FROM employees;

5. NULL 값 처리

  • NULL 값이 포함된 산술 연산: NULL 값이 포함되면 연산 결과도 NULL이 된다.
    SELECT salary + NULL FROM employees; -- 결과: NULL
    
  • 문자열 연결 연산자(||)와 NULL: NULL 값이 포함되면 문자열로 처리된다.
    SELECT 'Employee: ' || name || ' (ID: ' || NULL || ')' FROM employees;
    -- 결과: 'Employee: John (ID: )'  
    

6. 연결 연산자

  • || (문자열 연결 연산자): 두 개 이상의 문자열을 연결할 때 사용
    SELECT first_name || ' ' || last_name AS full_name FROM employees;
    
  • 결과 예시: John Doe, Jane Smith

7. 리터럴

  • 오라클 SQL에서 리터럴(literal) 은 숫자, 문자열, 날짜 등의 고정된 값 을 의미한다.
  • 문자 리터럴 및 날짜 리터럴: 싱글 쿼트(')로 감싼다.
    SELECT 'Hello, World' FROM dual;  
    SELECT TO_DATE('2024-02-09', 'YYYY-MM-DD') FROM dual;
    

열(Column) 이름 규칙

  • 열 이름은 기본적으로 대문자로 표시되며, SQL 실행 시 별칭을 지정하지 않으면 자동으로 대문자로 변환된다.
  • 숫자 데이터는 오른쪽 정렬되며, 문자와 날짜 데이터는 왼쪽 정렬된다.

인용부호(" vs q 대체 인용 부호)

  • 큰따옴표("): 열 이름 또는 별칭에 공백이나 특수문자가 포함될 경우 사용
    SELECT "Employee Name" FROM employees;
    
  • 대체 인용 부호 q: 문자열 내에 '(싱글쿼트)를 포함해야 할 때 사용
    SELECT q'[I'm a Developer]' FROM dual;
    -- 결과: I'm a Developer
    

8. DISTINCT 키워드

  • DISTINCT는 중복을 제거하고 유일한 값만 출력할 때 사용
    SELECT DISTINCT department_id FROM employees;
    

DISTINCT vs UNIQUE 차이점

  • DISTINCT는 조회 시 중복 제거, UNIQUE는 제약 조건으로 사용됨.
    -- DISTINCT 사용 예제 (중복 제거)
    SELECT DISTINCT job_id FROM employees;
    
    -- UNIQUE 사용 예제 (제약 조건)
    CREATE TABLE test_table (
        id NUMBER UNIQUE,  -- 중복 허용 안 함
        name VARCHAR2(50)
    );
    

9. iSQL*Plus

iSQL*Plus란?

  • 오라클에서 제공하는 SQL 실행 도구 중 하나
  • 웹 기반 인터페이스로 SQL 문을 실행하고 결과를 볼 수 있음

인터페이스 구성 화면

  • SQL 입력 창, 실행 결과 창, 명령 버튼 등이 포함됨

스크립트 로드

  • @ 또는 START 명령어를 사용하여 SQL 스크립트를 실행 가능 
  • @C:\sql_scripts\query.sql;

이력 페이지

  • 실행했던 SQL 문장의 기록을 관리하여 다시 실행 가능

iSQL*Plus
iSQL*Plus

 

관계형 데이터베이스

1. 관계형 데이터베이스의 데이터 격납 형식

  • 테이블(Table): 데이터를 행(Row)과 열(Column)로 저장하는 기본 단위
  • 레코드(Record): 테이블의 한 행, 하나의 데이터 항목을 의미
  • 필드(Field): 테이블의 한 열, 속성을 나타냄
  • 키(Key): 데이터를 고유하게 식별하기 위한 값 (기본키, 외래키 등)
  • 인덱스(Index): 검색 성능을 향상시키기 위해 사용되는 데이터 구조

2. 관계형 데이터베이스의 특징

  • 데이터 무결성(Integrity): 데이터의 정확성과 일관성을 유지
  • 데이터 독립성(Independence): 논리적 구조와 물리적 구조가 독립적으로 관리됨
  • 데이터 중복 최소화(Minimal Redundancy): 동일한 데이터를 여러 곳에 저장하지 않음
  • 데이터 일관성(Consistency): 트랜잭션 수행 후에도 데이터가 일관성을 유지
  • 데이터 보안(Security): 접근 권한을 통해 데이터 보호

3. E-R 모델의 주요 컴포넌트

  • 엔터티(Entity): 데이터를 저장하는 기본 단위 (예: 학생, 수강 과목)
  • 속성(Attribute): 엔터티가 가지는 특성 (예: 학생의 이름, 학번)
  • 관계(Relationship): 두 개 이상의 엔터티 간의 연관 (예: 학생과 강의의 수강 관계)

4. SQL의 분류

  • DML(Data Manipulation Language, 데이터 조작 언어): 데이터를 조회, 삽입, 수정, 삭제
    • SELECT, INSERT, UPDATE, DELETE
  • DDL(Data Definition Language, 데이터 정의 언어): 데이터 구조를 정의
    • CREATE, ALTER, DROP, TRUNCATE
  • DCL(Data Control Language, 데이터 제어 언어): 데이터 접근 권한 제어
    • GRANT, REVOKE
  • TCL(Transaction Control Language, 트랜잭션 제어 언어): 트랜잭션 관리
    • COMMIT, ROLLBACK, SAVEPOINT

5. 관계형 모델의 구성요소

  • 릴레이션(Relation): 테이블 형태로 데이터 저장
  • 튜플(Tuple): 테이블의 한 행 (레코드)
  • 애트리뷰트(Attribute): 테이블의 한 열 (필드)
  • 도메인(Domain): 애트리뷰트가 가질 수 있는 값의 범위
  • 키(Key): 데이터를 식별하는 속성 (기본키, 후보키, 외래키 등)

6. 오라클 인스턴스와 오라클 서버

  • 오라클 서버(Oracle Server): 데이터베이스를 관리하는 시스템
  • 오라클 인스턴스(Oracle Instance): 데이터베이스를 운영하는 메모리와 프로세스 집합
    • SGA(System Global Area): 데이터 캐싱 및 SQL 실행을 위한 공유 메모리
    • 백그라운드 프로세스: 데이터베이스를 운영하는 데 필요한 프로세스 집합

7. SQL의 정의

  • SQL(Structured Query Language, 구조화된 질의 언어)
    • 관계형 데이터베이스에서 데이터를 관리하기 위한 언어
    • 데이터를 저장, 수정, 삭제, 검색하는 기능 제공
    • ANSI 표준을 따르지만 DBMS별 차이가 존재

 

+ Recent posts