엔티티(Entity)

엔티티(Entity)란 데이터베이스의 구성요소 중 독립적으로 식별이 가능한 객체(Object)를 말합니다.

즉, 비즈니스 프로세스에서 관리해야 하는 정보(데이터)의 집합을 말하며, 개발자 입장에서는 데이터베이스에 저장하고 관리되어 지는 데이터들의 그룹으로 이해하시면 됩니다.

 

엔티티를 정의하는 행위가 데이터 모델링의 시작이며, 정의된 엔티티는 보다 상세하게 자신을 표현하기 위해 하위 요소로 속성(Attribute)을 갖습니다. 

 

업무 업무에 따른 엔티티(Entity)의 예
도서관 관리 회원, 대출, 도서,  
홈쇼핑 관리 회원, 주문, 상품, 주문상품, 상품가격, 배송지
학교 학생, 교사, 과목, 강의실, 출석, 

 

 

엔티티에 대한 다양한 정의들

  • Peter Chen (피터 첸)의 정의 (1976년) :  변별할 수 있는(distinguishable) 사물
    - 피터 첸은 엔티티-관계(ER) 모델의 창시자로 데이터베이스 모델링에서 '엔티티'를 데이터베이스에서 관리하고 싶은 유형별 개체나 개념적인 대상을 의미하며, 각각의 엔티티는 고유하게 식별될 수 있어야 한다고 봄.
  • C.J. Date (C.J. 데이트)의 정의 (1986년) : 데이터베이스 내에서 식별이 가능한 객체
    - C.J. Date는 관계형 데이터베이스 이론의 아버지라 불리며, 주로 관계형 데이터베이스 시스템과 데이터 무결성, 효율성에 중점을 두고 있으며,  그의 저서에서도 개념적 모델링과 엔티티-관계(ER) 모델의 중요성에 대해 다루고 있음.
  • James Martin (제임스 마틴)의 정의 (1989년) : 데이터를 저장하는 실체(real or abstract)
    - 제임스 마틴은 정보공학(Information Engineering) 분야의 대가로 '엔티티'라는 단어가 우리가 정보를 보관하려는 어떤 것이라고 봄. 예를 들면 고객, 공급자, 제품, 직원 같은 것들이 해당될 수 있지. 즉, 어떤 정보 시스템을 만들 때 정보의 기록 대상이 되는 모든 것을 엔티티로 간주.
  •  Thomas Bruce (토마스 브루스)의 정의(1992년) : 정보가 저장될 수 있는 사람, 장소, 물건, 사건 그리고 개념.  
    - 토마스 브루스는 데이터 모델링 분야에서 중요한 인물로, 특히 IDEF1X 모델링 표기법과 관련해서 많이 알려져 있음
    - 토마스 브루스는 우리가 정보를 모으고 싶어 하는 구체적이거나 추상적인 대상을 명사형으로 실제로 '사람(예: 고객)', '장소(예: 지점)', '물건(예: 제품)', '사건(예: 주문)', '개념(예: 과정)'처럼 데이터베이스에서 테이블로 만들 대상들을 엔티티라고 정의 

 

엔티티의 특징

  • 업무에서 필요하고, 쓰이며, 관리하고자 하는 정보여야 합니다.
  • 식별이 가능한 유일한 식별자가 있어야 합니다. 즉, 유니크한 식별자가 있어야 합니다.
  • 영속적으로 존재하는 2개 이상의 인트턴스를 가지고 있어야 합니다.
  • 하위요소로 반드시 속성을 가지고 있어야 합니다.
  • 엔티티는 다른 엔티티와 1개 이상의 관계를 가지고 있어야 합니다.

 

엔티티의 분류

엔티티의 종류는 엔티티가 발생하는 시점에 따라 기본 엔티티, 중심 엔티티, 행위엔티티 로 분류하고,

유형인지 무형인지에 따라 유형 엔티티, 개념 엔티티, 사건 엔티티로 분류 합니다. 

 

 

SQL 기본 문법 - 출력 순서(ORDER BY 절)

SELECT문을 사용하여 데이터를 조회할때 특정 컬럼을 기준으로 정렬하여 데이터를 출력해야 할 필요가 있을 때 ORDER BY 절을 사용합니다. ORDER BY절은 SELECT문 가장 마지막에 사용 되며, 여러 컬럼을 지정할 수도 있습니다.

SELECT 컬럼명1, 컬럼명2, ...
FROM 테이블명
WHERE 조건
ORDER BY 정렬하고자 하는 컬럼명 [ASC|DESC];

정렬기준에는 오름차순(ASC, Ascendung)과 내림차순(DESC, Descendung )가 있으며, 지정하지 않으면 오름차순(ASC)으로 정렬됩니다. 

 

1. EMP 테이블의 모든 정보를 SAL(급여) 기준으로 오름차순 정리

EMP 테이블의 구조 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

SELECT *
FROM EMP
ORDER BY SAL ASC;

이때 ASC는 생략해도 결과는 같습니다.

 

2. EMP 테이블의 모든 정보를 SAL(급여) 기준으로 내림차순 정리

ORDER BY 구문 뒤에 정렬 기준을 ASC 에서 DESC로만 변경해 주시면 원하는 결과를 얻으실 수 있습니다.

SELECT *
FROM EMP
ORDER BY SAL DESC;

 

3. EMP 테이블의 여러 컬럼의 정보를 기준으로 정렬

EMP 테이블의 모든 정보를 부서 번호(DEPTNO)를 오름차순으로 급여(SAL)는 내림차순으로 정렬해 봅시다.

SELECT *
FROM EMP
ORDER BY DEPTNO ASC, SAL DESC;

 

4. ORDER BY 절 사용시 주의 사항

SELECT 절을 통해 자료를 추출할때, ORDER BY절을 사용하는 것보다, 사용하지 않는 것이 출력 속도가 빠릅니다. 그 이유는 SELECT 문에서 결과 출력은, 먼저 출력할 자료들을 가져오고 그것을 정렬하는 작업을 진행한 후 출력하게 됨으로 정렬을 수행하지 않으면 그만큼 결과를 빠르게 출력해 볼 수 있습니다. 

자료 조회시 특정 컬럼으로 정렬이 필요한 경우, 조회 속도 향상을 위하여 자료를 저장하는 시점에서 정렬하여 저장하는 방법을 사용합니다.

'DataBase' 카테고리의 다른 글

[Oracle] SQL 기본 문법 - 선택 출력(WHERE 절)  (0) 2025.07.19
엔티티(Entity)  (2) 2025.07.18
컬럼 별칭 설정  (0) 2025.07.17
TABLE에 없는 컬럼 값 출력하기  (0) 2025.07.16
[Oracle] SQL 기본 문법 - DISTINCT  (0) 2025.07.15

컬럼 별칭 설정

 
'TABLE에 없는 컬럼 값 출력하기'에서 계산되어진 컬럼에 대해서 컬럼명이 'SAL*12+COMM'와 같이 출력됨을 보실 수 있습니다.
이렇게 수식이 그대로 보여지는 컬럼명을 변경해서 출력하고 싶을때 이름 대신 별칭(ALIAS)를 붙이는 방법이 있습니다.
 'SAL*12+COMM'대신 별칭 ANNSAL(Annual Salary, 연봉) 으로 출력을 변경하는 방법은 아래와 같습니다.

SELECT ENAME, SAL, COMM, SAL*12+COMM AS ANNSAL
FROM EMP;

'SAL*12+COMM AS ANNSAL '부분이 'SAL*12+COMM'대신 별칭 ANNSAL로 바꾸어 출력하게 하는 부분입니다.

 
위의 방법 이외에도 별칭을 지정하는 방법으로는 아래와 같은 것들이 있습니다.

SELECT ENAME, SAL, COMM, SAL*12+COMM ANNSAL
FROM EMP;
SELECT ENAME, SAL, COMM, SAL*12+COMM "ANNSAL"
FROM EMP;
SELECT ENAME, SAL, COMM, SAL*12+COMM AS "ANNSAL"
FROM EMP;

위의 3가지 방식 모두 출력되는 결과는 같습니다. 참고로 실무에서는 보통 가장 처음 소개한 방법을 많이 사용합니다.

TABLE에 없는 컬럼 값 출력하기

 

SELECT 절을 통해 테이블에 있는 데이터 이외에 연산결과 등을 출력 할 수 있습니다.

EMP 테이블에 있는 이름(ENAME), 월급여(SAL), 수당(COMM) 이외에 연수입총액을 같이 표현해 주고 싶다면 아래와 같이 조회 하시면 됩니다. 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

 

 SELECT ENAME, SAL, COMM, SAL*12+COMM
FROM EMP;

 

 

결과에서 주의 해서 보아야 할 부분은 COMM 값이 NULL인 경우 계산이 이루어 지지 않는다는 것입니다.

결과 9번행에서 처럼 COMM 값이 0인 경우에는 정상적으로 계산이 이루어 집니다.

 

 

'DataBase' 카테고리의 다른 글

[Oracle] SQL 기본 문법 - 출력 순서(ORDER BY 절)  (0) 2025.07.18
컬럼 별칭 설정  (0) 2025.07.17
[Oracle] SQL 기본 문법 - DISTINCT  (0) 2025.07.15
[Oracle] SQL 기본 문법 - SELECT  (0) 2025.07.14
[Oracle] DESCRIBE, DESC 구문  (0) 2025.07.13

SQL 기본 문법 - DISTINCT

DISTINCT는 SELECT로 조회시 중복을 제거합니다. 예제에 사용된 EMP 테이블의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

 

1. 특정열 하나에 대한 중복제거

SELECT DISTINCT DEPTNO
FROM EMP;

EMP 테이블의 DEPTNO 컬럼을 조회 하여 출력할때 같은 내용이 있으면 중복을 제거하고 출력 합니다.

 

 

2. 여러 열에대한 중복 제거

SELECT DISTINCT JOB, DEPTNO
FROM EMP;

EMP 테이블의 JOB 컬럼과 DEPTNO 컬럼의 값이 모두 같은 경우를 제외하고 출력합니다.

 

 

3. 중복을 제거하지 않고 출력(ALL)

SELECT ALL JOB, DEPTNO
FROM EMP;

EMP 테이블의 JOB 컬럼과 DEPTNO 컬럼의 모든 값을 출력합니다. 

 

 

'DataBase' 카테고리의 다른 글

컬럼 별칭 설정  (0) 2025.07.17
TABLE에 없는 컬럼 값 출력하기  (0) 2025.07.16
[Oracle] SQL 기본 문법 - SELECT  (0) 2025.07.14
[Oracle] DESCRIBE, DESC 구문  (0) 2025.07.13
SCOTT 계정 예제 Table ★★★  (1) 2025.07.12

[Oracle] SQL 기본 문법 - SELECT

Oracle의 SELECT 문법은 데이터베이스에서 원하는 데이터를 조회할 때 사용하는 SQL의 기본 구문입니다.

 

0. 기본 SELECT 문법

SELECT 컬럼명1, 컬럼명2, ...
FROM 테이블명
WHERE 조건
ORDER BY 컬럼명 [ASC|DESC];

 

조건에 따라 지정된 컬럼을 조회합니다. 모든 컬럼을 조회하려면 *를 사용합니다. 이때, SQL문에서 대문자와 소문자는 구분되지 않습니다. 다만 가독성을 위해 명령문은 대문자로 작성 및 명령어 단위에 따라 여러 줄로 나누고 코드 수준에 따라 들여쓰기 할 것을 권장합니다.

 

1. 전체 데이터를 조회

Table에 보관된 전체 Data를 조회 할 수 있습니다.

SELECT * FROM  emp;

위 예제는 emp 테이블에 전체 데이터를 조회하는 예제로 실행결과는 아래와 같습니다.

 

2. 행 단위로 조회(selection)

셀렉션(selection)은 원하는 데이터를 행 단위로 조회하는 방식입니다.

SELECT * FROM emp where deptno=10;

위 예제는 emp 테이블에 전체 데이터 중에서 ' deptno=10' 행만 조회하는 경우로 예제의 실행결과는 아래와 같습니다.

 

 

3. 열 단위로 조회(projection)

프로젝션 (projection)은 원하는 데이터를 열 단위로 조회하는 방식입니다.

SELECT empno, ename FROM emp;

위 예제는 emp 테이블에 전체 데이터 중에서 mpno, ename 두개의 열만 조회하는 경우로 예제의 실행결과는 아래와 같습니다.

 

4. 특정 행과 열을 함께 조회 (selection + projection)

셀렉션(selection)과 프로젝션(projection)을 함께 사용하여 원하는 데이터를 행과 열 단위로 조회하는 방식입니다.

SELECT empno, ename, deptno FROM emp WHERE deptno=10;

위 예제는 emp 테이블에 전체 데이터에 대하여  'deptno=10' 행 중에서 mpno, ename 두개의 열을 조회하는 경우로 예제의 실행결과는 아래와 같습니다.

 

 

5. 두개 이상의 테이블에서의 조회(JOIN)

조인(JOIN)은 2개 이상의 테이블을 연결하여 하나의 테이블인것 처럼 데이터를 조회하는 방식입니다.

SELECT *
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
ORDER BY EMPNO;

EMP, DEPT 두개의 테이블에 대하여, DEPTNO가 같은 것을 기준으로 두개의 테이블을 연결하여 하나의 테이블 처럼 보여 줍니다.

예제의 실행결과는 아래와 같습니다.

 

※ 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

 

Oracle DESCRIBE, DESC 구문

DESCRIBE(DESC) 명령어는 테이블 구조를 확인하기위한 명령어 입니다. 
이 명령어를 통해 테이블이 보유한 변수(variables, 또는 컬럼)가 어떤 것인지,  해당 변수의 데이터 유형과 NULL 허용 여부를 알게 해 줍니다.

 

1. 문법

describe 테이블이름;
desc 테이블이름;


 

2) emp 테이블의 구조 확인하기

describe emp;
desc emp;

 

위의 문장을 실행합니다. 이때, describe, desc 어느 쪽을 실행해도 결과는 같습니다.
실행 결과 화면은 아래와 같습니다.

emp 테이블이 보유한 컬럼의 이름, NULL 허용여부, 데이터 유형이 나타납니다.

예를 들어, emp Table은 EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO 컬럼으로 이루어져 있으며,
EMPNO 컬럼은 숫자 타입 4자리 유형으로 Null을 허용하지 않음을 알수 있습니다.

 

※ 예제로 사용된 TABLE의 정보는 'SCOTT 계정 예제 Table(emp, dept, salgrade)'을 참고하시면 됩니다.

 SCOTT 계정 예제 Table(emp, dept, salgrade)

SCOTT 계정의 예제 테이블 구조 및 데이터 입니다. 쿼리 작성 연습 등을 위해 계속 찾아 보게 되어 참고 용으로 등록해 두었습니다.

해당 테이블(emp, dept, salgrade)과 데이터는  'Do ti! 오라클로 배우는 SQL 입문' 서에서 제공된 것입니다.

 

emp TABLE(사원정보 테이블)

emp TABLE의 구조 및 데이터는 아래와 같습니다.

각 컬럼은 EMPNO - 사원번호  /  ENAME - 이름  /  JOB - 직책  /  MGR - 직속상환 사원번호  /  HIREDATE - 입사일  /  SAL - 급여  /  COMM  -  급여외 수당  /  DEPTNO - 부서 번호 의 의미를 갖습니다.

 

dept TABLE(회사 부서정보 테이블)

dept TABLE 의 구조 및 데이터는 아래와 같습니다.

각 컬럼은 DEPTNO - 사원번호  /  DNAME - 부서이름  /  LOC - 부서가 위치한 지역 의 의미를 갖습니다.

 

salgrade TABLE(사원 급여정보 테이블)

salgrade TABLE 의 구조 및 데이터는 아래와 같습니다.

각 컬럼은 GRADE - 급여등급  /  LOSAL - 급여 등급의 최소 급여액  /  HISAL - 급여 등급의 최대 급여액 의 의미를 갖습니다.

 

SQL Developer를 통한 SCOTT 접속

너무 기초적인 것이 아닐까 싶지만, 누군가에게는 도움이 되지 않을까 싶어 남겨 봅니다.

 

1. SQL Developer 실행

바탕화면이나, 작업표시줄에 등록하지 않으신 분들은 아래와 같은 방법으로 실행 파일을 찾으실 수 있습니다.

설치되어 있는 SQL Developer를 실행합니다. 

로딩을 거쳐 정상적으로 SQL Developer가 실행되면 아래와 같은 화면이 보여지게 됩니다.

 

 

2. SCOTT 접속 만들기

SQL Developer를 실행화면 왼쪽 메뉴 하단에 [+] 를 클릭하시거나, [+]  오른쪽 화살표 버튼을 클릭하고 [새 데이터베이스 접속] 메뉴를 선택하시면 '새로 만들기/데이터베이스 접속 선택' 창이 열립니다.

 

※ test 계정은 임의로 만들본 계정임으로 처음 SQL Developer를 실행 하신 분들은 아무정보가 없는 것이 정상입니다. 왜 나는 test가 안보이지 하는 고민은 하지 마시길...

 

 

'새로 만들기/데이터베이스 접속 선택' 창에 다음의 정보들을 설정합니다.

Name : testOracleSQL -- 임의로 지정하시면 됩니다.
사용자 이름(U) : scott
비밀번호(P) : tiger
비밀번호 저장(V) : 체크 -- 저 혼자만 사용하는 장비라 편의를 위해 체크 하였습니다.

 

접속정보를 모두 입력하셨다면 하단 버튼 중 [테스트(T)]를 클릭합니다.

하단에 상태 값이 '성공'으로 보여지면 SCOTT 계정 사용을 위한 준비가 완료된 것입니다.

 

 

3. SCOTT 접속 확인

SCOTT 계정으로 접속하여 예제 파일들의 사용이 가능한지 확인해 봅시다.

접속을 위해 [테스트(T)] 버튼 오른쪽에 있는 [접속(O)] 버튼을 클릭합니다.

왼쪽에 'testOracleSQL'이 보여지면 정상적으로 접속된 것입니다. 

이제 실습 데이터를 확인해 봅시다. 

 

워크시트 | 질의 작성기 부분에 'desc emp;'를 타이핑 합니다.

 

작성하신 명령어의 실행을 위해서 초록색 를 클릭합니다. 단축키 [Ctrl]+[Enter]로도 실행이 가능합니다.

실행이 완료되면 아래와 같은 화면을 확인하실 수 있습니다.

기본적인 셋팅은 끝났으니, 마음 것 TEST 해 봅시다.

 

Oracle Database에 접속하여 SCOTT 계정 설정하기

1.  접속하기

먼저 윈도우 '명령 프롬프트'를 실행합니다.

 

'명령 프롬프트' 화면에서 다음 명령어를 입력하여 오라클 데이터베이스 관리 계정으로 접속합니다.

sqlplus sys/oracle as sysdba

sys 계정은 오라클 데이터베이스에서 최고 권한을 가진 계정입니다. 실 업무에서는 데이터베이스 관리자(DBA, Database Administrator)를 제외하고는 사용할 일이 없는 계정입니다. 이 문서에서는 오라클에서 기본으로 제공하는 SCOTT 계정을 생성하고, 사용할 수 있는 상태로 만들기 위해 sys 계정으로 접속하였습니다. 아래와 같이 출력되면 정상적으로 접속에 성공한 것입니다.

 

 

2. SCOTT 계정 생성하기

0 합니다. 

'SQL 프롬프트' 화면에 다음의 명령어를 입력합니다.

ALTER SESSION SET "_oracle_script"=true;

아래와 같이 출력되면 명령어가 정상적으로 실행된 것입니다.

Oracle 21c 부터 적용되는 클라우드 환경용 게정명 앞에 c## 접두어를 사용하지 않고, 이전 버전에서 처럼 SCOTT 계정명을 그대로 사용하고자 옵션을 설정합니다.

 

create user scott
identified by tiger
default tablespace users quota unlimited on users;

계정 이름을 'scott'으로 접속비밀번호를 'tiger'로 지정합니다. 비밀번호는 대소문자를 구분함에 주의 하시기 바랍니다.

grant create session, create table to scott;

생성한 SCOTT계정에 접속 권한과 테이블 생성 권한을 부여합니다.

위 두 명령어가 정상적으로 실행되면 아래와 같은 결과를 확인하 실 수 있습니다.

 

 

3. SCOTT 계정으로 접속하여 실습 데이터 생성하기

아래의 명령어를 입력하여 생성한 SCOTT 계정으로 접속 합니다.

conn scott/tiger

conn 명령은 현재 접속한 계정에서 다른 계정으로 접속하겠다는 의미 입니다. 이 명령을 실행하면 접속 계정은 sys에서 scott으로 변경 됩니다.

 show user

정상적으로 변경이 되었는지 확인하고 싶으시면 'show user' 명령을 사용하시면 현재 접속한 계정명을 확인하실 수 있습니다.

위 두 명령어가 정상적으로 실행되면 아래와 같은 결과를 확인하 실 수 있습니다.

 

SCOTT 계정에서 사용할 실습 데이터를 생성하기 전에 실습 데이터의 날짜 형식을 맞추기 위해 아래 명령어를 이용해서 옵션값을 설정합니다.

ALTER SESSION SET "_oracle_script"=true;
ALTER SESSION SET nls_date_language='american';
ALTER SESSION SET nls_date_format='dd-MON-rr';

위 명령어들이 정상적으로 실행되면 아래와 같은 결과를 확인하 실 수 있습니다.

 

SCOTT 계정으로 실습할 데이터를 생성하기 위하여 ' doitoracle_scott.sql ' 파일을 실행합니다. 이 파일을 'SQL 프롬프트'에서 실행하기 위해서는 'SQL 프롬프트'에 @기호를 먼저 쓴후, 해당 파일의 전체 경로를 직접 입력하시면 됩니다. 

@C:\Users\User\Downloads\doitoracle_scott.sql

 

 

4. 실습데이터 확인하기

desc emp;
desc dept;
desc salgrade;

desc 명령어는 describe의 준말로, 테이블이 어떻게 구성되어 있는지 확인할때 사용하는 명령어 입니다.

위 명령어들이 정상적으로 실행되면 아래와 같은 결과를 확인하 실 수 있습니다.

 

이제 실습을 위한 데이터 생성작업이 완료 되었습니다.

 

※ 본 문서는 Oracle 실습을 위하여 'Do ti! 오라클로 배우는 SQL 입문' 서를 따라하면서 SCOTT 계정을 설정한 문서 입니다.

더 자세한 내용과 SAMPLE DATA는 해당 도서를 참고 하시기 바랍니다.

 

+ Recent posts