컬럼명을 기술해야 하는 경우
1. 모든 컬럼에 값을 설정하지 않는 경우
2. 스키마 순서와 상관없이 순서를 개발자가 지정할 때
3. DB구조가 자주 변경되는 경우 컬럼명을 기술하는 것이 안전함
null 값 입력방법
1. 컬럼을 기술하지 않기
2. 빈문자열값을 설정
3. null, NULL로 직접 입력
insert into dept2 (dcode,dname,pdept,area) values (9000,'특수판매팀',1000,'임시지역');
위 코드는 dept2라는 테이블에 9000번 부서를 추가해주는 코드이다.
그림과 같이 맨 마지막 행에 추가된 것을 확인할 수 있다.
코드에서 처럼 테이블에 각 컬럼을 입력하고, 컬럼 형식에 맞는 values들을 차례대로 입력하면 된다.
update professor set bonus=99 where position = '조교수';
위 코드는 교수테이블에서 직급이 조교수인 교수의 보너스를 99로 변경하기.
이때 where조건문을 조교수라고 한정했기 때문에 모든 bonus가 99로 바뀌는 것이 아닌
position이 조교수인 사람들만 변경된다.
update professor set pay = pay*1.15 where pay <= 230 and position = (select position from professor where name = '장혜진');
위 코드는 장혜진 교수와 같은 직급의 교수 중 급여가 300이하인 교수의 급여만 15% 인상하는 코드이다. 이처럼 where문을 활용하여 다양한 조건을 줄 수 있다.
delete from dept2 where decode=9000;
위 코드는 dept2 테이블의 decode 값이 9000번인 레코드를 삭제하는 코드이다.
이 때 where 조건문을 통해 decode를 9000번만 삭제할 수 있도록 합니다.
delete는 값을 삭제하는 명령어인만큼 사용시 주의해야한다.
- DDL 명령어
1. create : 객체(table) 생성
- alter : 객체 수정
- drop : 객체 제거
- truncate : 객체와 데이터를 분리
- DDL 명령어 특징
1. commit, rollback 의미가 없다.
- DDL 명령어가 실행되면, 자동으로 commitehla => rollback을 하려면 rollback을 먼저실행하고, DDL 명령어 실행
create table ddl_test ( no number(3), -- 최대 숫자 3자리 name varchar(10), --최대 10byte 문자형태 (한글 한문자당 3byte) birth date default sysdate -- 날짜,시간데이터 저장, default = sysdate );
위 코드는 ddl_test라는 테이블을 생성해주고, no, name, birth라는 컬럼을 생성해주었다. 하지만 컬럼안에 데이터가 없다. 이를 insert를 활용하여 데이터를 넣어주자.
insert into ddl_test (no,name) values (1,'홍길동');
위 코드 와 같이 입력하면 no컬럼엔 1, name컬럼엔 홍길동 값이 들어간다. 이때 , birth는 입력하지 않아 null이 나와야하지만 default를 sysdate 즉 현재 날짜로 설정해 두었기때문에 현재 날짜가 입력될 것이다
create table ddl_test2 ( no number(3) primary key, name varchar(10) default '홍길동', birth date default sysdate ); insert into ddl_test2 (no) values (2); insert into ddl_test2 (no) values (2);
위 코드를 모두 실행한다면 맨 마지막 행에서 오류가 발생할 것이다.
이는 테이블을 생성할때 no라는 컬럼을 primary key로 지정했기때문에 중복되는 데이터가 들어갈 수 없기 때문이다.
create table dept3 as select * from dept2; alter table dept3 add tel varchar(20); alter table dept3 rename column tel to phone; alter table dept3 modify area varchar(30);
위 코드는 dept2 테이블을 dept3이라는 테이블로 복사하는 코드이다 .
이 때 as뒤에 모든 컬럼을 지정했기 때문에 완전히 복사된다. 그 다음 alter이라는 명령어를 통해 tel이라는 컬럼을 varchar(20)자료형으로 추가해주었다.
그 이후 tel이라는 컬럼의 이름을 phone으로 변경하였다.
마지막으로 이름만 바꾸는 것이 아닌 area라는 컬럼의 크기를 30으로 변경하였다.
하지만 이때 크기를 10으로 바꾼다면 에러가 발생할 수 있다. 이는 컬럼의 데이터들 크기가 10보다 크기 때문이다.
select max(lengthb(area)) from dept3;
위 코드는 area에 저장된 데이터의 최대 크기를 조회하는 코드이다 이전 코드에서 크기가 데이터 크기보다 작게 변경할 때 에러가 발생한다면 위와 같은 코드를 활용하여 저장된 데이터의 최대 크기에 맞게 설정해준다.
alter table dept3 drop column phone;
위 코드는 drop이라는 명령어를 사용하여 phone이라는 컬럼을 제거하는 코드이다.
drop table dept3;
위 코드는 테이블 dept3를 제거하는 코드이다.
truncate table ddl_Test2
위 코드는 table ddl_Test2는 삭제하지 않지만 테이블의 내용을 삭제하는 코드이다.