Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 29 30 31
Archives
Today
Total
관리 메뉴

채널오렌지 THE I.O.T

[ORACLE] 테이블 CRUD 하는 법 본문

Web/ORACLE

[ORACLE] 테이블 CRUD 하는 법

채널오렌지 2022. 5. 21. 19:14

테이블을 관리하기 전에 간단하게 엑셀로 정리해 놓았다. Column(열,세로)과 row(행,가로)에 유의하며 써보자.


 

 CREATE

 

CREATE TABLE userlist (
	num NUMBER NOT NULL,
	id VARCHAR2(50) NOT NULL,
	password VARCHAR2(100),
	created DATE NOT NULL
);

먼저 테이블을 생성하는 코드를 입력하자. 메모장에 적어놓았다가 sql에 붙여넣기 해도 동작이 행해진다.

테이블 이름은 userlist며,

NUMBER은 숫자형 데이터 타입이고 VARCHAR2는 문자 데이터 타입이며 DATE는 날짜 데이터 타입이다.

또, (50)은 50byte의 데이터 공간을 할당한 것으로 예로, 5글자를 입력한다면 5byte의 데이터공간을 쓴 것 이다.

 

 

열의 데이터가 다 차있는 id와 달리 password는 한 행이 비어있다.

 

NULL은 비어있다는 뜻이므로 NOT NULL은 비어있으면 안된다는 이야기다. 즉, NOT NULL이 있는 Column은 하나라도 비어있으면 안된다는 뜻이다. 반대로 NOT NULL이 없다면, 중간에 데이터가 비어있어도 상관없다는 이야기로 헷갈린다면 password의 Column부분을 보면 된다.

 

INSERT ALL
	INTO userlist VALUES (1,'abcd','efghi','2022-05-05')
	INTO userlist VALUES (2,'24hour','132*99a8','2019-07-01')
SELECT *
FROM DUAL;

INSERT INTO userlist
	(num,id,created)
	VALUES
	(3,'master','1111-01-01');​

테이블을 만들었으므로 이제 INSERT로 새로운 행을 삽입 할 수 있다. 

일단 기본 형태는 3행을 추가한 아래의 형태다. 유의할 것은 3행은 password가 없으므로 한자리를 비워놓았다. 이 작업을 하나씩 행을 추가할 때 마다 해주면 되는데, 동시에 여러 행을 삽입하기 위해선 위의 1,2행을 삽입한 것 처럼 해줘야 한다. 저기서 DUAL은 오라클에서 제공하는 더미 테이블이다. 

그런데, 이렇게 삽입하면 끝이 아니라 COMMIT를 해줘야 db에 반영이 된다. COMMIT은 트랜잭션으로 데이터 변경사항을 영구적으로 적용하는 것이다. 앞으로 모든 작업을 하고 확실하다 느끼면 commit;를 해서 변경 사항을 확정해주자.


 

Read

 

SELECT * FROM userlist;
SELECT id, password FROM userlist;

SELECT * FROM userlist WHERE num=1;
SELECT * FROM userlist WHERE num>=2;

SELECT id, created FROM userlist WHERE num=3;​

읽어 오는 방법은 굉장히 다양하며 이를 잘 다루는 것이 핵심이라고 할 수 있다.

위의 코드는 SELECT절로 읽어올 열을 지정하고 WHERE절로 조건을 지정하여 데이터를 제한해서 불러오는 작업이다. 이 조건이 다양하므로 많은 공부를 해야 잘 다룰수 있을 것 같다.. ㅠㅠ

 

SELECT * FROM userlist ORDER BY num DESC;
SELECT * FROM userlist ORDER BY id ASC;

ORDER BY는 정렬이다. num DESC는 Descending으로 num을 기준으로 내림차순으로 정렬하며 id ASC는 Ascending으로 id를 기준으로 오름차순으로 정렬하는 방법이다.

 

SELECT * FROM userlist 
	OFFSET 2 ROWS;
SELECT * FROM userlist
	OFFSET 0 ROWS
	FETCH NEXT 1 ROWS ONLY;

OFFSET은 페이징 처리로, 건너뛸 행의 수를 지정하는 것이다. OFFSET 2 ROWS는 2개의 행을 건너뛰고 가져오라는 의미다. 밑의 FETCH NEXT 1 ROWS ONLY는 몇개의 행을 반환할 것 인지 정하며 여기서는 1개의 행만 가져오도록 하였다. 주의할 점은 컴퓨터는 1이 아니라 0부터 시작한다.


 

Update

 

UPDATE userlist
	SET
	 id = 'Guest',
	 created = SYSDATE
	WHERE
	 num=1;

수정하는 것은 그렇게 어렵지 않아 보인다. SET으로 변경할 데이터를 입력하고 WHERE로 조건을 지정해 어느 곳을 수정할지 알려주는 것이다. SYSDATE는 현재 시간 날짜정보를 불러오는 타입이다.


 

Delete

 

DELETE FROM userlist;
DELETE FROM userlist WHERE NUM = 2;

삭제하는 것도 어렵지 않아 보인다. 다만, 잘못 삭제 하고 큰일 날 수도 있으므로 가장 신중히 해야할듯 하다.. WHERE절 없이 실행하면 그 테이블을 전부 삭제하므로 조심해야 한다.


 

이렇게 오라클 CRUD를 정리해 보았는데 보고 몇번 해보는건 쉽지만 이를 자유자재로 다루는 건 어렵다. 그리고 읽어오는 작업이 특히 다양하므로 많은 코드를 숙지하는 것이 가장 실력을 기르는데 좋은 방법일 듯 하다!

'Web > ORACLE' 카테고리의 다른 글

[ORACLE] PRIMARY와 SEQUENCE  (0) 2022.05.22
[ORACLE] 기존의 객체가 이름을 사용하고 있습니다.  (0) 2022.05.22
Comments