Full-Stack 개발자가 되려는 작은 개발자의 블로그
데이터베이스(Oracle) 기초2 본문
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 |