중간고사 이후시간이다.
이제까지 배운것은 대학데이터베이스가 설계되어있을 때의 쿼리문을 작성하는 것이였다.
이제 하반기에는 데이터베이스가 어떻게 만들수 있는지 설계부분에 중점을 둬서 공부를 하게 될 것이다.
데이터베이스 설계도 DBA가 가져야 할 스킬이다.
데이터베이스 갱신에 대한 SQL을 다시 해볼거다.
데이터 갱신은 테이블에 조건에 맞는 튜플에 대해서 애트리뷰트 값을 변경시킬 수 있다.
UPDATE 테이블 SET { 열이름 = 산술식 } [ WHERE 조건] ;
하나의 튜플에 대해서 업데이트한 예
UPDATE STUDENT SET year = 2 WHERE sno = 300;
복수의 튜플 변경
UPDATE COUSE SET Credit = Credit + 1 WHERE dept = '컴퓨터';
부속 질의를 통해 UPDATE 가 가능하다.
컴퓨터과에 소속된 학번에 대해서 기말고사 성적을 5점씩 올려라.
UPDATE ENROL SET Final = Final + 5 WHERE Sno IN ( SELECT Sno FROM STUDENT WHERE Dept = '컴퓨터');
부속질의로 안하고 조인을 통해 업데이트를 해도 된다. 조인으로 업데이트한 경우 조인 업데이트를 한다라고 한다.
UPDATE enrol e INNER JOIN students s ON e.sno = s.sno SET e.final = e.final + 5 WHERE s.dept = '컴퓨터';
데이터베이스를 개설한 학과의 dept를 4로 바꿔라
UPDATE STUDENT SET Dept = (SELECT Dept FROM COURSE WHERE Cname = ‘데이터베이스’) WHERE Year = 4;
데이터 베이스 개설한 과가 컴퓨터 공학과 하나인경우 제대로 하나가 리턴이 되지만,
경영학과도 데이터베이스 과목이 있는 경우도 year을 4로 바꿔버리므로 fail
select e.* from student s, enrol e where s.sno = e.sno and s.dept = 'SW';
update students inner join enrol e on e.sno = s.sno set e.final = e.final + 5 where s.dept = 'SW';
e.* : 등록테이블의 모든 애트리뷰트 출력한다.
*조인을 통해 업데이트하는 것은 알아둘 필요가 있다.
데이터의 삽입
직접 튜플값을 애트리별로 지정할 수도 있지만, select 결과를 통해 나온것을 insert 할 수도 있다.
* 검색결과를 바로 삽입한다. 실용적인 문장이다.
INSERT INTO COMPUTER(Sno, Sname, Year) SELECT Sno, Sname, Year FROM STUDENT WHERE Dept = '컴퓨터';
insert into students (sno, sname, year , email, dept) select sno + 200 ,concat(sname, 'avengers') , year + 1 , concat(email, '-avengers') from students;
*concat : 문자열 연결
delete from 테이블 where 조건;
하나의 레코드 삭제하는 구문 : 기본키를 가지고 삭제하면 하나의 레코드가 삭제된다.
delete from students where sno = 100;
delete from students where sno >= 3000; // 가능
//key column을 명세하지 않고 delete 쓰면 에러가 난다.(sql의 safety 모드때문에)
부속질의를 사용해서 삭제를 할 수 있다. 부속질의도 조인을 통해 문장을 표현하는 것이 일반적이다.
delete e from enrol e inner join students s on e. sno = s.sno where e.cno = 'C413' and e.final < 60 and s.dept = '컴퓨터';
select e.* from enrol e inner join students on e.sno = s.sno where e.cno = 'PL' and e.final >= 90 and s.dept = 'SW';
'이론 > DB' 카테고리의 다른 글
[DB] 데이터베이스 모델링, E-R 다이어그램 (3) | 2019.05.14 |
---|---|
[DB] SQL - (4) View (0) | 2019.05.03 |
[DB] SQL - (2) (0) | 2019.04.19 |
[DB] 데이터베이스 스키마/카탈로그 (0) | 2019.03.21 |
[DB] 정보와 데이터베이스, 개체/속성/관계 (3) | 2019.03.08 |