본문 바로가기
study/Oracle

[Oracle] 7. 1 ~ 6 요약, DDL(ALTER)

by 금이패런츠 2022. 3. 9.
728x90
반응형
-- select 컬럼명1, 컬럼명2, ... || *
-- from 테이블명
-- where [조건문] => 레코드 선택의 조건.
--                  where 구문이 없는 경우 모든 행을 선택
-- 컬럼에 사용되는 연산자
--       ||    : 연결연산자. 두개의 컬럼을 연결하여 하나의 컬럼으로 생성
--   산술연산자 : +, -, *, /
--       =     : 등가연산자. 두개의 값이 동일 true or fall
-- >, <, >=, <=: 관계연산자. 크거나, 작거나, 크거나같다, 작거나같다.

/*
컬럼이나 where 조건문에 산술연산이 가능.
연산자
  연결연산자 : ||
  산술연산자 : + - * /
  비교연산자 : =, >, <, >=, <=, !=
  SQL연산자 :
           컬럼명 between A and B
           컬럼명 in (값1,값2,...)
           컬럼명 not in (값1,값2,...)
           컬럼명 like, not like
              % : 임의의 문자 0개이상
              _ : 임의의 문자 1개
              
order by 구문 : 정렬. select 구문의 마지막에 기술
             acs : 오름차순 정렬. 생략 가능. 기본값 (default값).
            desc : 내림차순 정렬. 생각 불가.
집합연산자 : 두개의 select 구문 결과를 합해서 출력            
          union     : 정렬. 결과의 중복허용 안함. 합집합.
          union all : 두개의 결과를 물리적으로 연결
          
desc 테이블명 : table 구조 조회
selct 구문 형식
  select 컬럼명1,컬럼명2,... || *
  from 테이블명
  [where 조건문] : 생략 될 경우는 모든 레코드 조회함
  [group by 컬럼] : 컬럼으로 그룹화
  [having 그룹함수] : 그룹함수의 조건문
  [order by 컬럼|순서|별명] : 정렬(sort)
  
리터널로 컬럼 생성. ' '
컬럼의 alias(별명) :
              컬럼명 별명
              컬럼명 "별 명"
              컬럼명 as "별명"
distinct : 중복제거. 첫번째 컬럼에 한번만 사용 가능
where : 레코드 선택의 조건문
*/

/*
 함수 정리

   1. 문자함수
      initcap : 첫문자는 대문자. 나머지는 소문자로.
      upper   : 모든 문자를 대문자로 변환
      lower   : 모든 문자를 소문자로 변환
      length  : 문자열의 길이 
      lengthb : 문자열을 이루는 바이트 수
      substr  : 부분문자열.
                substr(컬럼|문자열,시작인덱스(1부터시작),[문자의 갯수])
      instr   : 주어진 문자의 위치 리턴
                instr('문자열'||컬럼명,'문자열',[시작인덱스],[번째])
      lpad, rpad : 왼쪽/오른쪽 문자 추가
                lpad(문자열||컬럼명, 전체길이, 채울문자)
      ltrim, rtrim : 왼쪽/오른쪽 문자(공백) 제거.
                ltrim(문자열||컬럼명,['제거할 문자'])
      trim : trim(문자열||컬럼명) : 양쪽의 공백 제거
      
   2. 숫자 관련 함수
      round : 반올림 함수
          round(숫자||컬럼,숫자) : 0인경우 정수로 표시
                                 1 인경우 소숫점이하 한자리만 표시
                                 -1 인경우 10자리까지만 표시
      trunc : 버림함수 
      ceil : 근사정수. 숫자보다큰 근사정수
        ceil(숫자||컬럼) : 
      floor : 근사정수. 숫자보다 작은 근사정수
      mod : 나머지 함수. mod(숫자1,숫자2) 숫자1 에서 숫자2로 나눈 나머지
      power : 제곱 power(3,3) : 3 * 3 * 3
      abs : 절대값.
      sign : 부호 리턴. 양수:1, 음수:-1, 영:0
  
   3. 날짜 관련 함수  
      sysdate : 현재일시
      months_between : 두날짜 사이의 개월수
      round : 날짜관련 반올림.
      trunc : 날짜관련 버림
      last_day : last_day(날짜). 날짜의 월의 마지막 날자 리턴

   4. 형변환함수
      to_char : 날짜=>문자열, 숫자=>문자열    패턴: 날짜인경우=>yyyy,mm,dd,hh .......
                                                숫자인경우=> 9, 0,  ,(천단위콤마), .(소숫점표시) 
      to_number : 숫자형문자 => 숫자. 
      to_date : 문자열=>날짜  패턴: 날짜인경우=>yyyy,mm,dd,hh .......

   5. 일반함수
      nvl : nvl(컬럼,기본값) : 컬럼의 값이 null인 경우는 기본값으로 치환.

   6. 그룹함수
      count : 레코드의 건수 리턴, null 값은 제회
            count(컬럼명) : 해당 컬럼의 값이 null아닌 갯수
            count(*) : 전체 레코드의 갯수
*/

/*
join
  cross join : 사용시 주의를 요함. 결과가 m*n개의 갯수로 리턴.
  Equi Join : 조인컬럼의 조건이 =인 조인을 등가조인이라함.
  Non Equi Join : 조인컬럼의 조건이 =가 아닌 조인을 비등가조인이라함.
 
  inner join : 기본. 조인컬럼의 조건을 만족하는 레코드만 조회. 
  outer join : 조인컬럼의 조건을 만족하지 않아도 한개/두개 테이블의 내용을 모두 조회가능한 조인
     left outer join : 왼쪽 테이블의 내용을 모두 조회.
        오라클방식: 조인컬럼의 오른쪽에 (+) 표시
        ANSI방식 : left outer join 
     right outer join : 오른쪽 테이블의 내용을 모두 조회.
        오라클방식: 조인컬럼의 왼쪽에 (+) 표시
        ANSI방식 : right outer join 
     full outer join : 양쪽 테이블의 내용을 모두 조회.
        오라클방식: left outer join, right outer join을 union 방식으로 구현
        ANSI방식 : full outer join 
   
   self join
       조인되는 테이블이 같은 경우를 self join 이라함.
       테이블명에 반드시 별명을 지정해야 함.
       조회되는 모든 컬럼도 테이블의 별명을 붙여야 함.
*/

/*
 SUBQUERY
 SELECT 구문 내부에 SELECT 구문이 존재.
 단일행 서브쿼리 : 서브쿼리의 결과가 1개인 경우.
    사용가능 연산자 : =, >, < ...
 다중행 서브쿼리 : 서브쿼리의 결과가 여러개인 경우.
    사용가능 연산자 : in
*/

/*
DML :
insert : 새로운 레코드를 추가하는 명령어.
         컬럼명 구현 생략시 스키마와 같은 순서로 모든 컬럼의 값이 설정되야 함.
    insert into 테이블 [(컬럼명1,컬럼명2...) ] values (값1,값2...)
    insert into 테이블 [(컬럼명1,컬럼명2...) ] select 구문 -- 기존 테이블의 값으로 레코드 추가
    
update : 레코드의 값을 수정하는 명령어.
   update 테이블명 set 컬럼명1 = 값1, 컬럼명2 = 값2,...
   [where 조건문] => 변경되는 레코드 선택하는 조건. 
                 => 기술되지 않은 경우 모든 레코드의 값이 수정됨.
                 
delete : 조건에 맞는 레코드 제거.
   delete [from]  테이블명
   [where  조건문] => 삭제될 레코드의 조건.
                     where 조건문이 없는 경우는 모든 레코드가 삭제됨. 주의 요함.  

   CRUD : 데이터를 처리하는 기능.
     (C)reate : 데이터 추가. insert
     (R)ead   : 데이터 조회. select
     (U)pdate : 데이터 변경. update
     (D)elete : 데이터 삭제. delete
     
TCL (Transaction Controll Language)
    commit   : 업무 정상 종료. 물리적으로 저장 완료됨.
    rollback : 업무가 비정상 종료시, commit 완료시 이후의 DML 명령어 실행을 취소함.

DDL : Data Definitaion Language
      객체를 생성,변경,제거 기능을 담당하는 명령어
     Trsaction 처리 불가능. auto commit 됨.
     derate, drop, alter
     
    create table:  table 객체 생성.
      create table 테이블명 (
         컬럼명 자료형 제약조건
      )
      create table 테이블명
      as select 구문.

     drop table : table 삭제.
        drop table 테이블명.
*/

/*
  alter : 기존객체의 구조를 변경하는 명령어
          컬럼을 추가 또는 변경, 삭제 가능함.
          컬럼 추가 : ALTER TABLE 테이블명 ADD 컬럼명 자료형
          컬럼 삭제 : ALTER TABLE 테이블명 DROP COLUMN 컬럼명 자료형
          컬럼 크기 변경 : ALTER TABLE 테이블명 MODIFY 컬럼명 변경할 자료형
          컬럼 이름 변경 : ALTER TABLE 테이블명 RENAME COLUMN 현재컬럼명 TO 변경컬럼명
*/
-- 컬럼 추가
SELECT *
  FROM DEPT3
  ;
-- DEPT3 테이블에 LOC 컬럼 추가하기
ALTER TABLE DEPT3 ADD LOC VARCHAR2(30)
;
-- 컬럼 수정 : 컬럼의 크기를 크게 하는 경우는 가능
--            컬럼의 크기를 작게 하는 경우는 저장된 데이터의 크기보다 작으면 오류 발생
-- DEPT3 테이블에 LOC 컬럼의 크기를 50자리로 변경하기
ALTER TABLE DEPT3 MODIFY LOC VARCHAR2(50)
;
-- 결과
DESC DEPT3
;
-- 컬럼 제거
ALTER TABLE DEPT3 DROP COLUMN LOC
;
-- 컬럼 이름 변경
-- DEPT3테이블의 AREA 컬럼을 LOC컬럼으로 변경하기
ALTER TABLE DEPT3 RENAME COLUMN AREA TO LOC
;

7장 DDL.pdf
0.37MB

728x90
반응형