220629 TIL

Yeoni·2022년 6월 29일
0

국비교육TIL

목록 보기
21/41

국비교육 21일차 Oracle : Oracle 기초

1. 관계형 데이터베이스(Relation DataBase)

  • 관계형 데이터베이스(RDB) 는 데이터(정보)를 열(Column, Field) 과 행(Row, Record, Tuple)으로 이루어진 테이블(Table, Entity, 개체) 형태로 저장하는 데이터베이스이다.
    * 컬럼명은 추후에 Java에서 필드로 사용

2. 관계형 데이터베이스 관리 시스템(Relation DataBase Management System)

  • 관계형 데이터베이스 관리 시스템(RDBMS)은 RDB를 관리, 운영, 개발을 해주는 소프트웨어를 말한다. 이러한 RDBMS의 종류로는 ORACLE, Mysql, MSSQL Server, DB2 등이 있다.

3. hr 계정을 이용한 기본 명령어 써보기

1) 현재 오라클 서버에 접속되어진 사용자(지금은 hr)가 만든(소유의) 테이블(Table) 목록을 조회

select * from tab;
/*
    ------------------------------
    TNAME              TABTYPE
    ------------------------------
    COUNTRIES	        TABLE
    DEPARTMENTS     	TABLE
    EMPLOYEES	        TABLE
    EMP_DETAILS_VIEW	VIEW    (VIEW는 TABLE은 아니지만 select되어진 결과물을 마치 TABLE 처럼 보는 것)
    JOBS	            TABLE
    JOB_HISTORY     	TABLE
    LOCATIONS	        TABLE
    REGIONS	            TABLE
*/

2) 대소문자의 구분

select *
from DEPARTMENTS;

SELECT *
From DEPARTMENTS;

select DEPARTMENT_ID, DEPARTMENT_NAME
from DEPARTMENTS;
  • fromselect는 명령어인데, sql 명령어는 대소문자를 구분하지 않는다. (하지만 명령어는 대체로 소문자 사용)
  • DEPARTMENTS는 테이블명인데, 테이블명도 대소문자를 구분하지 않는다.
  • DEPARTMENT_ID, DEPARTMENT_NAME 은 컬럼명인데 컬럼명은 대소문자를 구분하지 않는다. (하지만 테이블명과 컬럼명은 대체로 대문자 사용)
select *    -- *은 모든 컬럼을 뜻한다. 
from departments 
where department_name = 'Sales'
  • departments 테이블에서 department_name 항목의 이름이 'Sales'와 일치하는 행만 찾아서 모든 결과를 보여라.
    - 80 Sales 145 2500
  • 데이터 값은 대소문자를 구분한다.

3) hr 테이블 둘러보기

  • DEPARTMENTS 테이블의 컬럼(colunm, field)의 정보
select *
from DEPARTMENTS;  

describe DEPARTMENTS;   
-- 또는
desc DEPARTMENTS;

/*
        이름              널?       유형         
    --------------- -------- ------------   
    DEPARTMENT_ID   NOT NULL NUMBER(4)    
    DEPARTMENT_NAME NOT NULL VARCHAR2(30) 
    MANAGER_ID               NUMBER(6)    
    LOCATION_ID              NUMBER(4)    
    
    이름(컬럼명)
    DEPARTMENT_ID   (부서번호)
    DEPARTMENT_NAME (부서명)
    MANAGER_ID      (부서장의 사원번호)
    LOCATION_ID     (부서위치ID)
    
    널?
    NOT NULL ==> NOT NULL은 반드시 데이터를 입력해야한다.     
    "필수입력사항 예 : 아이디, 비밀번호, 성명"
    아무것도 없음 ==> NULL을 허용한다는 뜻으로 데이터 값이 들어와도 괜찮고 
    데이터 값이 안들어와도 괜찮다는 뜻이다.     
    "선택사항 예 : 집전화번호"

    유형(데이터 타입)
    NUMBER(4)   ==> 숫자타입 -9999 ~ 9999
    NUMBER(6)   ==> 숫자타입 -999999 ~ 999999
    NUMBER(6,2) ==> 숫자타입 -9999.99 ~ 9999.99        
     -- 전체가 6자리인데 소수부가 2자리
    NUMBER      ==> 숫자타입 자리수에 제한이 없다.
    
    VARCHAR2(30) ==> 문자열타입 최대 30byte까지 입력 가능
    VARCHAR2(6)  ==> 문자열타입 최대 6byte까지 입력 가능   
                                'superman'  8byte이므로 입력 불가
                                'hong'      4byte이므로 입력 가능
                                
                     인코딩이 MS949 일 때 한글 1글자는 2byte 이므로 
                     '슈퍼맨'은 6byte이다. 
                     인코딩이 UTF-8 일 때 한글 1글자는 3byte 이므로 
                     '슈퍼맨'은 9byte이다. 
   
    NVARCHAR2(6)  ==> 문자열타입 최대 6글자까지 입력 가능   
                                'superman'      8글자이므로 입력 불가
                                'hong'          4글자이므로 입력 가능
                                'hongkd'        6글자이므로 입력 가능
                                '슈퍼맨'         3글자이므로 입력 가능
                                '골든리트리버'    6글자이므로 입력 가능
    
    DATE ==> 날짜타입                        
*/
select *
from EMPLOYEES;     -- "사원" 테이블

desc  EMPLOYEES;
/*
    이름              널?       유형           
    --------------- -------- ------------ 
    DEPARTMENT_ID   NOT NULL NUMBER(4)    
    DEPARTMENT_NAME NOT NULL VARCHAR2(30) 
    MANAGER_ID               NUMBER(6)    
    LOCATION_ID              NUMBER(4)    
    이름              널?       유형           
    --------------- -------- ------------ 
    DEPARTMENT_ID   NOT NULL NUMBER(4)    
    DEPARTMENT_NAME NOT NULL VARCHAR2(30) 
    MANAGER_ID               NUMBER(6)    
    LOCATION_ID              NUMBER(4)    
    이름                           널?             유형           
    --------------                --------        ------------ 
    EMPLOYEE_ID     (사원번호)      NOT NULL         NUMBER(6)    
    FIRST_NAME      (이름)                          VARCHAR2(20) 
    LAST_NAME       (성)           NOT NULL         VARCHAR2(25) 
    EMAIL           (이메일)        NOT NULL         VARCHAR2(25) 
    PHONE_NUMBER    (연락처)                         VARCHAR2(20) 
    HIRE_DATE       (입사일자)      NOT NULL          DATE         
    JOB_ID          (직종ID)       NOT NULL          VARCHAR2(10) 
    SALARY          (기본급여)                        NUMBER(8,2)  
    COMMISSION_PCT  (커미션[수당])                    NUMBER(2,2)  
    MANAGER_ID      (직속 상관[사수]의 사원번호)        NUMBER(6)    
    DEPARTMENT_ID   (해당 사원이 근무하는 부서번호)      NUMBER(4)    
*/

select *
from LOCATIONS;     -- 부서의 위치정보를 알려주는 테이블

select *
from COUNTRIES;     -- 국가 정보를 알려주는 테이블

select *
from REGIONS;       -- 대륙 정보를 알려주는 테이블 
profile
이런 저런 기록들

0개의 댓글