Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

Full-Stack 개발자가 되려는 작은 개발자의 블로그

데이터베이스(Oracle) 기초2 본문

강의 정리/Oracle

데이터베이스(Oracle) 기초2

jhjin 2020. 4. 23. 16:40

DML(데이터 조작어)

삽입(Insert)

테이블에 데이터를 삽입하는 역할

insert into 테이블명(컬럼명1,컬럼명2...) values(값1,값2...);

수정(Update)

테이블의 데이터를 수정하는 역할

조건이 없을 경우 모든 튜플(레코드)를 수정

where절과 조합하여 조건에 맞는 해당 레코드만 수정

update 테이블명 set 컬럼명1=수정값,컬럼명2=수정값2...where 조건;

삭제(Delete)

테이블의 데이터를 삭제하는 역할

조건이 없을 경우 모든 레코드를 삭제

where절과 조합하여 조건에 맞는 해당 레코드만 삭제

delete from 테이블명 where 조건

DQL(데이터 질의어)

검색(Select)

select (distinct 중복없음) 검색컬럼1,검색컬럼2..from 테이블명 where 조건;

desc addressbook;
insert into addressbook values('정XX',to_date('1998-2월-5', 'YYYY-MON-DD'),'010-XXXX-7853',20194185);
insert into addressbook values('이XXX',to_date('1993-3월-20', 'YYYY-MON-DD'),'010-XXXX-2301',20194725);
insert into addressbook values('박XX',to_date('1980-3월-6', 'YYYY-MON-DD'),'010-8809-XXXX',20192523);
insert into addressbook values('김XX',to_date('1998-4월-10', 'YYYY-MON-DD'),'010-7917-XXXX',20194201);
insert into addressbook values('김XX',to_date('1999-11월-23', 'YYYY-MON-DD'),'010-4182-XXXX',20194171);

-- 모든 생일을 현재 날짜로 수정
update addressbook set birth=sysdate;

-- emp 테이블에서 사원번호가 7902인 사원의 부서 번호를 30으로 변경
update emp set deptno=20 where empno=7902;

-- 부서 번호가 20번인 사원ㄷ르 급여를 10%인상
update emp set sal=sal*1.1 where deptno=20;
commit;

-- 사원번호가 7963인 사원의 데이터를 삭제
delete from emp where empno=7963;

select empno,ename
from emp;

select ename,sal from emp;

--별칭 사용
select ename as 이름, sal as 급여
from emp;

select distinct sal
from emp;

--조건절(where)
-- 부서번호가 10인 직원의 사원번호,사원이름 검색
select empno,ename, deptno
from emp
where deptno=10;

--급여가 1000이상인 사원의 정보를 출력
select empno,ename,deptno
from emp
where sal>=1000;

테이블 예명(Alias)

    - SELECT문 싱행 시에만 사용하는 임시 이름

    - 테이블 Alias로 테이블 이름을 단순화 할 수 잇다.

    - 테이블의 컬럼을 명확히 지정 할 수 있다.

    - 30자까지 가능하나 짧을수록 좋다.

 

오라클 내장 함수

1. 숫자형 함수

    - ABS(절대값)

select abs(-100) from dual;

    -  CEIL(올림), FLOOR(버림),ROUND(반올림)

select ceil(98.32),floor(98.62),round(98.86),round(98.31) 
from dual;

select round(3.1415926,3) 
from dual;

select round(314.526,-1) 
from dual;

    - MOD(나머지)

select mod(11,4) from dual;

    - TRUNC(절삭)

select trunc(7.569244,2) from dual;
select trunc(75692.44,-2) from dual;

2. 문자형 함수

 

    - CONCAT : 문자열을 연결하는 함수

-- 누군가의 자식을 표현하는 JR
select concat(concat(concat(first_name,' '),(last_name)),' JR') from employees;
select first_name || ' ' || last_name from employees;

    - INITCAP : 문자열의 첫 문자를 대문자로 변환

select initcap('programming') from dual;

    -  LOWER, UPPER : 문자열 전체를 소문자 또는 대문자로 변환

select first_name ,lower(first_name),UPPER(first_name)
from employees;

    - LENGTH : 문자열 길이 출력
    - SUBSTR : 문자열 안에서 특정 문자열 추출

select first_name || ' ' || last_name,
        length(hire_date),
        '입사일 : ' ||
        substr(hire_date,1,4) || '년' ||
        substr(hire_date,6,2) || '월' ||
        substr(hire_date,9,2) || '일'
from EMPLOYEES;

    - INSTR : 문자열에서 특정 문자/문자열의 위치 출력
    - INSTR(문자열,'찾을문자/문자열',검색시작위치,n개번째위치)

select last_name ,instr(last_name,'a'),
        instr(last_name,'a',-1,3)
from employees
where last_name like '%a%';

3. 날짜 함수

    - SYSDATE : 시스템의 현재 날짜 정보 출력

SELECT SYSDATE,             -- 현재 시간
    SYSDATE - 1,            -- 현재 시간에서 하루전
    SYSDATE - 1/24,         -- 현재 시간에서 한시간전
    SYSDATE - 1/24/60,      -- 현재 시간에서 1분전
    SYSDATE - 1/24/60/60    -- 현재 시간에서 1초전
FROM DUAL;

 

    - SYSTIMESTAMP : 현재 일자/시간 출력(시스템) 최소단위 - 10억분의 1초

SELECT SYSTIMESTAMP 
FROM DUAL;

    - ADD_MONTHS(달) : 시스템 날짜의 달수를 추가한 달력을 출력한다.

SELECT ADD_MONTHS(SYSDATE, -2) 
FROM DUAL;

    - MONTHS_BETWEEN(달1, 달2) : 달1과 달2 사이의 달 수의 차이를 출력

SELECT MONTHS_BETWEEN(TO_DATE('2020-08-05', 'RRRR-MM-DD')
       ,TO_DATE('2019-02-05', 'RRRR-MM-DD')) 차이달
FROM DUAL;

    - LAST_DAY : 달의 마지막 날짜 구하기

SELECT SYSDATE, LAST_DAY(SYSDATE) 
FROM DUAL;

    - NEXT_DAY(d,c) : 달의 마지막 날짜 구하기, c - 요일 => 1(일)~7(토)

SELECT NEXT_DAY(SYSDATE, 4) "다음주 수요일"
FROM DUAL;

4. 변환 함수

    - TO_CHAR() : 자료형 > CHAR형으로 변환한다.

-- number >> char : to_char > 산술연산 가능
select 12345678-1, to_char(12345678)-1 
from dual;

select to_char(12345678,'999,999,999')
from dual;

select to_char(6,'0009') 
from dual;

-- date >> char : to_char
select to_char(sysdate,'YYYY-MM-DD'),
       to_char(sysdate,'YYMMDD'),
       to_char(sysdate,'YYYY'),
       to_char(sysdate,'MM')
from dual;

    - TO_NUMBER() : 자료형 > NUMBER형으로 변환한다.

-- char >> number  : to_number
select to_number('123456')
from dual;

    - TO_DATE() : 자료형 > DATE형으로 변환한다.

-- char >> date : to_date
select to_date('202004230130','YY-MM-DD HH:MI')
from dual;

 

'강의 정리 > Oracle' 카테고리의 다른 글

데이터베이스(Oracle) 실습1  (0) 2020.04.27
데이터베이스(Oracle) 기초1  (0) 2020.04.21
Comments