SQL 데이터베이스 다루기_[오라클 테이블 생성, 변경, 삭제]

2024. 9. 11. 15:12SQL

테이블 생성하기

테이블을 생성할때는 create table이라는 구문을 사용하여 테이블을 만들어야한다.

예시로 기업에서 서비스 이용자의 테이블을 만든다고 가정한 후, 테이블을 제작한다.

--테이블 생성하기--

--테이블 구성 로직
--1)기업의 서비스 이용자 데이터 수집 테이블 생성
--2)이용자ID, 가입일자, 사용횟수, 사용시간
create table user_info(
    ID varchar2(10),
    join_data varchar2(20),
    count number,
    time number
);

간단하게 테이블 생성!

테이블을 생성할때의 기본 구조는 테이블명, 컬럼명, 형식과 형식에 들어갈 데이터 사이즈를 지정해야한다.

이때 문자는 가변형인 varchar2와 고정형 char를 사용하며, 숫자는 number를 사용한다. number의 경우 사이즈 생략이 가능한데, 사이즈를 생략하게 되면 말그대로 사이즈에 제한이 없어지기 때문에 제한없이 큰 숫자도 삽입이 가능하다.

 

 

테이블 내용삽입

테이블에 내용을 삽입할때는 insert_into와 values를 사용하여 내용을 삽입해야한다.

주의할점은 테이블을 생성할때 지정했던 형식과 맞아야한다. 문자형식이라면 '작은따옴표' 사용하여 넣어준다!

--테이블 내용 삽입
insert into user_info values ('1', '2024-05-01', 3, 2);
insert into user_info values ('2', '2024-04-21', 5, 9);
insert into user_info values ('3', '2024-02-31', 1, 1);
insert into user_info values ('4', '2024-06-11', 7, 18);
insert into user_info values ('5', '2024-04-10', 9, 22);

 

 

테이블 내용 불러오기

테이블의 내용을 불러올때는 select * from 테이블명; 의 형식을 따르는데

*은 모든 컬럼을 불러오겠다는 의미이며, 이 자리에 보고싶은 다른 컬럼들의 이름만 적어, 확인도 가능하다.

select * from user_info;

select ID, count from user_info;

위 결과는 select *를 사용하여 모든 컬럼을 사용하겠다는 구문을 작성 후 출력한 결과이다. 이때 ID 컬럼만 확인하고싶다면 select id를, count만 확인하고싶다면 select count를 적어주면 된다.

 

 

테이블 내용 수정하기

테이블의 컬럼 내용을 수정하고 싶을때는 update구문을 사용하여 내용을 변경한다.

주의할점! where절을 사용하지 않으면 해당 컬럼의 전체가 수정되므로 주의!!

--테이블 내용 변경하기
--update 구문사용
--ID 3번의 join_data를 2024-02-22로 수정하기!
update user_info set join_data='2024-02-22' where ID='3';
--update uset_info set join_date=2023-11-04'-- where절로 변경할 행의 제한을 걸지 않으면 행전체가 변경됨!--
select * from user_info where ID='3';

기존에 join_data의 날짜가 2024-02-31이었던 3번행의 날짜가 22일로 변경된것을 확인할 수 있다. 이때, 위의 쿼리에서 where절을 생략한다면 해당 테이블의 모든 join_data가 2024-02-22로 변경될 수 있다.

--여러행 한꺼번에 변경하기
update user_info set time=90, count=50 where ID=5;
select * from user_info;

이렇게 한꺼번에 여러컬럼을 동시에 수정할 수 도있다

update 구문의 set절에 변경할 컬럼들을 차례대로 적어준 후 where절을 이용하여 조건을 주게되면 한번에 한행의 여러컬럼의 값을 수정할 수 있다.

 

 

테이블 행 삭제하기

테이블의 특정 행을 삭제하고 싶을때는 delete 구문을 사용하여 행을 삭제한다.

delete구문은 행단위로만 삭제되며 특정 컬럼의 한 값만 삭제할 수 없다.

--행삭제하기
--delect 구문 사용
--이용자수 가장 적은 3번째 행 삭제하기
select * from user_info;
delete from user_info where count=1;
delete from user_info where ID='1';
--delete from user_info; delete에서 where절 빼면 전체삭제 되므로 주의!!--

where절 조건에따라 1번과 3번행이 삭제된것을 확인할 수 있다.

 

 

만약 행의 값1개만 삭제하고 싶다면 delete가 아니라 update를 사용하여 해당값을 null로 바꿔주어야한다!

--update이용하여 값1개만 삭제(null로 바꾸기)
update user_info set count=null where ID=2;

 

 

Truncate와 drop

테이블의 내용을 삭제하거나 테이블 자체를 삭제하고싶을때는 Truncate와 drop을 사용해야한다. 

--Truncate 구문 사용해서 테이블 구조만 남기기
Truncate table user_info;
select * from user_info;

Truncate는 테이블의 내용만 삭제하고 테이블의 구조는 남기는 형식이다. delete와 달리 rollback(되돌리기)가 불가능하므로 주의해서 사용해야한다.

 

 

--drop 테이블로 테이블 완전삭제
drop table user_info purge;

select * from user_info;

drop의 경우 테이블자체를 완전히 삭제하는 것이며, drop table의 구문 뒤에 purge를 입력하면 휴지통에도 남지않고 완전히 삭제할 수 있다. 만약 puerge를 사용하지 않았다면 show trashbin; 명령어를 통해 휴지통에 있는 테이블을 복구할 수 도 있다.

위의 구문에서 테이블을 삭제했기때문에 다시 해당 테이블을 조회하면 해당 테이블이 존재하지 않는다고 출력된다.

 

 

<학습 전체코드 공유>

--테이블 생성하기--

--테이블 구성 로직
--1)기업의 서비스 이용자 데이터 수집 테이블 생성
--2)이용자ID, 가입일자, 사용횟수, 사용시간
create table user_info(
    ID varchar2(10),
    join_data varchar2(20),
    count number,
    time number
);


--테이블 내용 삽입
insert into user_info values ('1', '2024-05-01', 3, 2);
insert into user_info values ('2', '2024-04-21', 5, 9);
insert into user_info values ('3', '2024-02-31', 1, 1);
insert into user_info values ('4', '2024-06-11', 7, 18);
insert into user_info values ('5', '2024-04-10', 9, 22);


--테이블 내용 불러오기
select * from user_info;


--테이블 내용 변경하기
--update 구문사용
--ID 3번의 join_data를 2024-02-22로 수정하기!
update user_info set join_data='2024-02-22' where ID='3';
--update uset_info set join_date=2023-11-04'-- where절로 변경할 행의 제한을 걸지 않으면 행전체가 변경됨!--
select * from user_info where ID='3';

--여러행 한꺼번에 변경하기
update user_info set time=90, count=50 where ID=5;
select * from user_info;

--행삭제하기
--delect 구문 사용
--이용자수 가장 적은 3번째 행 삭제하기
select * from user_info;
delete from user_info where count=1;
delete from user_info where ID='1';
--delete from user_info; delete에서 where절 빼면 전체삭제 되므로 주의!!--

--update이용하여 값1개만 삭제(null로 바꾸기)
update user_info set count=null where ID=2;

--Truncate 구문 사용해서 테이블 구조만 남기기
Truncate table user_info;
select * from user_info;

--drop 테이블로 테이블 완전삭제
drop table user_info purge;

select * from user_info;

 

 


 

학습일기

티스토리를 작성하게되면서 오랜만에 sql을 기초부터 복습하게 됐다.  sql을 처음 배운날에는 테이블하나생성하는것도 굉장히 어려워했었는데 지금 복습하며 다시 코드를 작성해보니 확실히 수월하게 작성할 수 있었다. 그때는 이것조차어려워했었는데..지금 복습해보니 기초라 쉽다 이런게 아니라 정말 시도때도 없이 쓰이는 구문들이라 기초라 불렸었다는걸 깨달았다...(🙄복습하면서 이걸 기초라고 배웠었구나...진짜 숨쉬는 쓰는 구문들이여서 처음배운거구나..) 분명 앞으로 복습하다보면 나 스스로가 쉽다고 생각했던 내용들도 알고보니 잘 못하는 순간이 올텐데 그런 순간들을 마주 할때마다 나 왜 이것도 못하지..? 하지말고 그 무엇보다중요한 기초를 탄탄하게 만드는 시간이라고생각해야겠다..!