insert into 테이블명 values (값리스트);
==> 값 리스트는 테이블의 구조와 동일해야 한다.
insert into 테이블명[(속성리스트)] values (값리스트);
==> 값 리스트는 속성리스트와 동일해야 한다.
==> not null이나 pk는 반드시 속성 리스트에 포함시켜야 한다.
예시) book 테이블에 자료 추가
insert into book values(3, '즐거운오라클', null, null); //테이블의 구조와 동일하게 값 리스트 작성
insert into book(bookid, bookname) values(4, '신나는오라클'); //써준 속성리스트와 동일하게 값 리스트 작성
insert into 테이블명[(컬럼리스트)] select ~~;
==> 속성 자리에 select절이 삽입
예시) book테이블의 모든 레코드를 조회하여 newbook 테이블에 insert 하기
insert into newbook select * from book;
==> newbook 테이블에 book테이블에 있는 데이터들이 대량으로 삽입
<컬럼리스트 사용하여 삽입하기>
insert into newbook(bookname, publisher, price, bookid)
select bookname, publisher, price, bookid
from book;
update 테이블명 set 컬럼1 = 값1 [, 컬럼2 = 값2, ...] [where 조건식];
예제) custid가 5번인 사람의 주소를 '대한민국 부산'으로 변경하기
update customer set address='대한민국 부산'; //모든 회원의 주소가 '대한민국 부산'이 된다.
update customer set address='대한민국 부산' where custid = 5;
update 테이블명 set 컬럼명 = 값 where 조건식; ==> 값이 오는 자리에 서브쿼리가 올 수 있다.
update 테이블명 set 컬럼명 = (select ~~~) where 조건식;
예제) customer 테이블에서 박세리 고객의 주소를 김연아 고객의 주소로 변경
update customer set address = (select address
from customer
where name = '김연아') where name = '박세리';
delete [from] 테이블명 [where 조건식];
==> 조건식이 없으면 모든 테이블의 모든 레코드가 삭제됨.
==> 조건식이 있으면 조건식을 만족하는 레코드가 삭제됨.
예제) customer 테이블에서 고객번호가 5인 고객을 삭제
delete customer where custid = 5;
예제) 모든 고객을 삭제
delete customer;
예시) 박세리의 주소를 대한민국 서울로 수정 후, 테이블 만들기
update customer set address = '대한민국 서울' where name = '박세리';
create table test1111(
no number,
title varchar2(20)
);
==> 위의 update문을 하고 커밋을 하지 않은 후에 create문을 사용하여 테이블을 생성하면 자동커밋이 되기 때문에 이후에 rollback을 하면 아무 의미가 없다. DCL이기 때문에 자동커밋이 되었기 때문에 롤백이 적용되지 않는다.
<활용>
select abs(-78) from dual; //dual은 가상의 테이블
select abs(78) from dual;
<결과>
ABS(78)
----------
78
<활용>
select ceil(56.11) from dual;
<결과>
CEIL(56.11)
-----------
57
<활용>
select floor(56.89) from dual;
<결과>
FLOOR(56.89)
------------
56
<활용1>
select round(5679.8867, 1) from dual; //소수 1째자리까지 출력, 따라서 소수두번째 자리에서 반올림
<결과1>
ROUND(5679.8867,1)
------------------
5679.9
<활용2>
select round(5677.8867, 0) from dual; //소수 첫재짜리에서 반올림
<결과2>
ROUND(5677.8867,0)
------------------
5678
<활용3>
select round(5677.8867, -1) from dual; //일의 자리에서 반올림
<결과3>
ROUND(5677.8867,-1)
-------------------
5680
<활용4>
select round(5677.8867, -2) from dual; //십의 자리에서 반올림
<결과4>
ROUND(5677.8867,-2)
-------------------
5700
예시) 고객별 평균 주문금액을 백원 단위로 반올림하여 출력
select name, round(avg(saleprice), -2)
from customer c, orders o
where c.custid = o.custid
group by name;
<결과>
NAME ROUND(AVG(SALEPRICE),-2)
---------- ------------------------
박지성 10600
김연아 6800
장미란 10300
추신수 16500
박세리 22000
<활용>
select power(2,3) from dual; //2를 3제곱하여 반환
<결과>
POWER(2,3)
----------
8
<활용>
select sqrt(9) from dual;
<결과>
SQRT(9)
----------
3
<활용>
select chr(65) from dual; //정수 65에 해당하는 문자 반환
<결과>
CH
--
A
<활용>
select concat('hello', 'java') from dual; //hello와 java를 합쳐 하나의 문자열로 만든다.
<결과>
CONCAT('HELLO','JA
------------------
hellojava
<활용>
select initcap('hello java') from dual;
<결과>
INITCAP('HELLOJAVA')
--------------------
Hello Java
<활용>
select lower('HELLO Java') from dual;
<결과>
LOWER('HELLOJAVA')
--------------------
hello java
<활용>
select upper('HELLO Java') from dual;
<결과>
UPPER('HELLOJAVA')
--------------------
HELLO JAVA
<활용1>
select length('hello') from dual;
<결과1>
LENGTH('HELLO')
---------------
5
<활용2>
select length(ltrim(' hello ')) from dual; //왼쪽 공백을 제거한 문자의 길이를 반환
<결과2>
LENGTH(LTRIM('HELLO'))
----------------------
8