예시로 쓸 테이블
create table student(
sno varchar2(3) ,
sname nvarchar2(10),
year varchar2(10),
dept nvarchar2(10) ,
constraint student_sno_pk primary key(sno));
create table course(
cno varchar2(5) primary key,
cname nvarchar2(10),
credit varchar2(3),
dept nvarchar2(10),
prname nvarchar2(10));
create table enrol(
sno varchar2(3) ,
cno varchar2(5) ,
grade varchar2(3),
midterm int,
final int ,
constraint enrol_sno_fk foreign key(sno) references student(sno),
constraint enrol_cno_fk foreign key(cno) references course(cno),
constraint enrol_combo_pk primary key(sno, cno));
왼쪽부터 student, course, enrol 테이블

🌵 UPDATE SET
특정 칼럼의 값 바꾸기
순서 유의해서 작성!!
update student set dept = '만화' where sno = '600';
🌵 CASE
특정 조건으로 분류하기
case 구절 안은 when 조건 then 반환값 ELSE 조건하지 않는 값 반환으로 구성된다
칼럼명을 별칭으로 바꿀 수는 있지만 별칭을 받아와서 조건을 주는 것은 안 됨!
select s.sno, sname, sum(MIDTERM+final), round(avg(MIDTERM+final),1)/2 ,
case --별칭 사용 안 됨
when( (round(avg(MIDTERM+final),1)/2) >= 90) then '우수'
when( (round(avg(MIDTERM+final),1)/2) >= 85) then '보통'
else '미달'
end 성적구분
from student s join enrol e
on s.sno = e.sno
group by s.sno, sname;

기본문 방식으로 사용할 수 있지만 switch 방식으로도 사용할 수 있다.
select sno, sname,
case sno
when '100' then '맞습니다'
else '아닙니다'
end as 찾기
from student;

🌵 TCL(Transaction_트랜잭션)
COMMIT, ROLLBACK, SAVEPOINT
select * from student; -- 기존 5개 레코드
commit;
insert into student (sno, sname) values('700','둘리T1');
savepoint t1; --t1
commit;
ROLLBACK ;
select * from student; -- 6개 레코드 출력
insert into student (sno, sname) values('800','둘리T1');
savepoint T2; --대소문자 구분해야 함 -> 800번 저장
commit;
ROLLBACK ;
select * from student; -- 7개 레코드 출력
insert into student (sno, sname) values('900','둘리T1-1');
insert into student (sno, sname) values('901','둘리T1-1'); -- 롤백시 출력 안됨
ROLLBACK T2;
select * from student;-- 7개 레코드 출력(901 둘리 미출력)
🌵 삭제용어
DELETE, TURNCATE, DROP
| DELETE | TURNCATE | DROP | |
|---|---|---|---|
| 구조 | DML | DDL | DDL |
| 특징 | - ROLLBACK 가능 -조건처리 가능 -테이블 구조 유지 -속도가 떨어짐 | -조건처리 불가능 테이블 구조 삭제 -전체 레코드 제거할 때 유용 | -ROLLBACK불가능 -테이블 구조 제거 |
| 예시 | delete from student; | truncate table student; | drop table student; |
와우! 유용하네요!