- 레코드 삽입
insert into 테이블이름 (필드리스트) values (값리스트)
필드리스트 : 새 레코드가 삽입될 테이블 필드 나열
-> 나열하지 않은 필드의 레코드값은 NULL
* NULL이 허용되지 않은 필드는 반드시 값 지정 (생략 시 오류 발생)
-> 필드리스트 자체를 생략할 경우, 값 리스트에 테이블 필드 순서에 맞춰 모두 작성해야 함.
-> 테이블 필드 순서와는 일치하지 않아도 된다. 단, 값 리스트를 부여할 때는 필드리스트 순어에 맞춰서 부여.
ex. 위 아래의 결과는 같음.
insert into department (dept_id, dept_name, office) values ( '920', '컴퓨터공학과', '201호')
insert into department (office, dept_id, dept_name) values ('201호', '920', '컴퓨터공학과')
값 리스트 : 필드리스트 순서에 맞춰 값 나열
*레코드 삽입 시 주의사항
- 외래 키 필드가 있는 레코드 삽입 할 때, 참조되는 테이블에 그 값을 가지는 레코드가 존재해야 함. -> 참조 테이블에 그 값을 가지는 레코드 먼저 삽입.
ex.
department 테이블
dept_id dept_name office
920 컴퓨터공학과 201호
923 산업공학과 207호
925 전자공학과 308호
*student 테이블의 dept_id는 fk
<DML문>
insert into student values ('1292002', '900305-1730021', '김정현', 3, '서울', '933')
-> department에 dept_id 중 933이란 레코드 값이 없으므로 오류 발생
=> insert into deprtment values ('933', '유아교육과', '402호')
를 삽입한 후에 입력하면 실행됨
- 레코드 수정
update 테이블이름
set 수정내역
where 선택조건
* 수정내역
* 선택 조건
* where절 생략 시, 테이블 모든 레코드 수정
ex. student 테이블에서 모든 year 필드의 레코드 값들을 1씩 증가
update student
set year = year + 1
ex professor 테이블애서 '고희석' 교수의 직위를 '교수'로 수정하고 학과본호를 '923'으로 수정
update professor
set position = '교수', dept_id='923'
where name = '고희석'
*레코드 수정 시 주의사항
외래 키로 지정된 필드의 값 수정할 때, 참조하는 테이블에 존재하는 값으로만 수정 가능
- 레코드 삭제
delete from 테이블이름
where 선택조건
* where절 생략 시, 테이블의 모든 레코드 삭제 => 테이블은 삭제되지 않음.
ex. professor 테이블의 이름이 '김태석'인 교수를 삭제
delete from professor
where name='김태석'
* 레코드 삭제 시 주의사항
- 참조하고 있는 (자식레코드)가 있을 경우 삭제 불가능
- 레코드 검색
- select문 : 레코드를 찾기 위한 표현
ㄴ 레코드 정렬, 재명명, LIKE, 집합, 외부 조인, 그룹화 및 집계 함수, 중첩 질의
select 필드리스트
from 테이블리스트
where 조건
select : 출력할 필드 지정 (추출연산)
from : 실행할 때 필요한 테이블 지정
ㄴ 여러 테이블이 나열되면 캎티션 프로덕트 의미
where : 검색되어야 하는 레코드 조건 (선택 연산)
ㄴ 생략 가능
ex.
select name, dept_name
from department, student
where department.dept_id = student.dept_id
- select : name필드와 dept_name필드 값을 추출
- from : department와 student 테이블을 카티션 프로덕트(×)
- where : 지정된 조건식을 만족하는 레코드만 선택 (같은 이름의 필드일 땐 . 을 사용)
- 관계대수 : 𝝅 name, dept_name ( σ depatment.dept_id = student.dept_id(student × department)