[Day 21] Database 0425 - 내용 정리

Doyeon Kim·2022년 4월 25일
1

Database

목록 보기
7/12
post-thumbnail

🌞데이터 조작어(DML)

  • 데이터를 삽입, 수정, 삭제하는 명령어들을 말한다.

🌈insert

  • 데이터를 추가하는 명령어
  • 기본문법
insert into 테이블명 values (값리스트);

==> 값 리스트는 테이블의 구조와 동일해야 한다.

insert into 테이블명[(속성리스트)] values (값리스트);

==> 값 리스트는 속성리스트와 동일해야 한다.
==> not null이나 pk는 반드시 속성 리스트에 포함시켜야 한다.

예시) book 테이블에 자료 추가

insert into book values(3, '즐거운오라클', null, null); //테이블의 구조와 동일하게 값 리스트 작성
insert into book(bookid, bookname) values(4, '신나는오라클'); //써준 속성리스트와 동일하게 값 리스트 작성

🍁대량 삽입(bulk insert)

  • 대량의 데이터 추가하기
  • 한꺼번에 여러 개의 튜플을 삽입하는 방법
  • 이미 있는 테이블의 레코드(들)을 검색하여 insert 하기
  • 기본문법
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

  • 자료의 수정
  • 기본문법1
update 테이블명 set 컬럼1 =1 [, 컬럼2 =2, ...] [where 조건식];
  • 한꺼번에 여러 개의 컬럼을 수정할 수도 있다. 조건식이 없으면 모든 레코드의 값이 수정됨. 조건식이 있으면 조건식을 만족하는 레코드의 값이 수정된다.

예제) custid가 5번인 사람의 주소를 '대한민국 부산'으로 변경하기

update customer set address='대한민국 부산'; //모든 회원의 주소가 '대한민국 부산'이 된다.
update customer set address='대한민국 부산' where custid = 5;
  • 기본문법2
update 테이블명 set 컬럼명 = 값 where 조건식; ==> 값이 오는 자리에 서브쿼리가 올 수 있다.
update 테이블명 set 컬럼명 = (select ~~~) where 조건식;

예제) customer 테이블에서 박세리 고객의 주소를 김연아 고객의 주소로 변경

update customer set address = (select address 
									from customer 
									where name = '김연아') where name = '박세리';

🌈delete

  • 테이블에 있는 기존 튜플을 삭제하는 명령
  • 기본문법
delete [from] 테이블명 [where 조건식];

==> 조건식이 없으면 모든 테이블의 모든 레코드가 삭제됨.
==> 조건식이 있으면 조건식을 만족하는 레코드가 삭제됨.

예제) customer 테이블에서 고객번호가 5인 고객을 삭제

delete customer where custid = 5;

예제) 모든 고객을 삭제

delete customer;

🌞rollback

  • DML 작업을 가장 최근에 commit한 지점까지 취소한다.
  • 가장 마지막에 commit 했던 이후로 돌아온다.
  • DCL이나 DDL은 자동으로 commit이 된다.

예시) 박세리의 주소를 대한민국 서울로 수정 후, 테이블 만들기

update customer set address = '대한민국 서울' where name = '박세리';
create table test1111(
		no number,
		title varchar2(20)
);

==> 위의 update문을 하고 커밋을 하지 않은 후에 create문을 사용하여 테이블을 생성하면 자동커밋이 되기 때문에 이후에 rollback을 하면 아무 의미가 없다. DCL이기 때문에 자동커밋이 되었기 때문에 롤백이 적용되지 않는다.


🌞수학 관련 함수

🌈abs 함수

  • 절대값을 알려주는 함수

<활용>

select abs(-78) from dual; //dual은 가상의 테이블
select abs(78) from dual;

<결과>

 ABS(78)
----------
	    78

🌈ceil 함수

  • 무조건 올림수를 반환하는 함수

<활용>

select ceil(56.11) from dual;

<결과>

CEIL(56.11)
-----------
	     57

🌈floor 함수

  • 무조건 버림수를 반환하는 함수

<활용>

select floor(56.89) from dual;

<결과>

FLOOR(56.89)
------------
		  56

🌈round(값, 자리수) 함수

  • 반올림하여 반환하는 함수
  • 자리수가 0이면 정수부만(1의자리까지만) 표시
  • 자리수가 1이면 소수점 1째자리까지 표시(소수 둘째자리에서 반올림)
  • 자리수가 -1이면 10의자리까지 표시(1의자리에서 반올림)

<활용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

🌈power 함수

  • 숫자를 n 제곱승 하여 반환하는 함수

<활용>

select power(2,3) from dual; //2를 3제곱하여 반환

<결과>

POWER(2,3)
----------
		 8

🌈sqrt 함수

  • 제곱근을 반환하는 함수

<활용>

select sqrt(9) from dual;

<결과>

    SQRT(9)
 ----------
		  3

🌞문자열 관련 함수

🌈chr 함수

  • 정수가 아스키 코드 값에 해당하는 문자를 반환

<활용>

select chr(65) from dual; //정수 65에 해당하는 문자 반환

<결과>

CH
--
A

🌈concat 함수

  • 두 개의 문자열을 연결하여 반환하는 함수

<활용>

select concat('hello', 'java') from dual; //hello와 java를 합쳐 하나의 문자열로 만든다.

<결과>

CONCAT('HELLO','JA
------------------
hellojava

🌈initcap 함수

  • 단어의 첫 글자를 대문자로 변환

<활용>

select initcap('hello java') from dual;

<결과>

INITCAP('HELLOJAVA')
--------------------
Hello Java

🌈lower 함수

  • 소문자로 변환하는 함수

<활용>

select lower('HELLO Java') from dual;

<결과>

LOWER('HELLOJAVA')
--------------------
hello java

🌈upper 함수

  • 대문자로 변환하는 함수

<활용>

select upper('HELLO Java') from dual;

<결과>

UPPER('HELLOJAVA')
--------------------
HELLO JAVA

🌈ltrim 함수

  • 왼쪽 공백을 제거하는 함수

🌈rtrim 함수

  • 오른쪽 공백을 제거하는 함수

🌈trim 함수

  • 좌우의 공백을 제거하는 함수

🌈length 함수

  • 문자열의 길이를 반환하는 함수

<활용1>

select length('hello') from dual;

<결과1>

LENGTH('HELLO')
---------------
			  5

<활용2>

select length(ltrim('   hello   ')) from dual; //왼쪽 공백을 제거한 문자의 길이를 반환

<결과2>

LENGTH(LTRIM('HELLO'))
----------------------
			         8
profile
꾸준히 성장하는 개발자✨

0개의 댓글