default ,테이블 생성 시 컬럼의 default(기본 값) 설정
create table detp1 (
-> deptno int(2) default 90,
-> dename varchar(14),
-> loc varchar(13)
-> );
테이블 데이터 삽입 예제 1
insert into dept1 values(10, '개발부', '서울');
테이블 데이터 null 값 삽입 2
insert into dept1 values(null, '개발부', '서울');
테이블 데이터 null 값 삽입 예제 3
insert into dept1 values(default, '개발부', '서울');
insert into dept1 values ( default, '연구부', '대전');
update ~ set ,테이블 컬럼의 데이터 수정
update emp1 set comm =0;
select * from emp1;
update ~ set ,테이블 컬럼의 데이터 수정
update emp1 set hiredate = "2011-01-01", comm = 20;
not null, null 값을 허용하지 않는 컬럼
create table dept_n1 (
-> deptno int(2) not null,
-> dname varchar(14),
-> loc varchar(13)
-> );
데이터 삽입 예제 1
insert into dept_n1 values (10, "개발부", "서울");
ERROR 1048 (23000), null 값을 허용하지 않는 컬럼에 null 값을 넣었을 때
insert into dept_n1 values (null, "개발부", "서울" );
unique, 중복 데이터를 허용하지 않는 unique 설정
방법 1)
create table dept_u1 (
-> deptno int(2) unique,
-> dname varchar(14),
-> loc varchar(13)
-> );
방법 2)
create table dept_u1 (
-> deptno int(2),
-> dname varchar(14),
-> loc varchar(13)
-> constraint unique(deptno)
-> );
제약조건을 확인하는 쿼리문
select constraint_name, table_schema, table_name, constraint_type
from information_schema.table_constraints
where constraint_schema='test1';
ERROR 1062 (23000), unique로 지정된 컬럼의 동일한 데이터 삽입 시 에러
insert into dept_u1 values (10, "개발부", "서울" );
insert into dept_u1 values (10, "개발부", "서울" );
unique로 지정된 컬럼의 null 값을 넣었을 때 => Query OK
insert into dept_u1 values (null, "총무부", "인천" );
insert into dept_u1 values (null, "총무부", "인천" );
primary key, 테이블 생성 시 컬럼의 기본 키(primary key) 설정
기본키는 not null(값 미정)과 unique(중복 미 허용)의 특성을 가짐.
create table p1 (
-> deptno int(2) primary key,
-> dname varchar(14),
-> loc varchar(13)
-> );
primary key, 테이블 생성 시 컬럼의 기본 키(primary key) 설정 2
create table dept_p2 (
-> deptno int(2),
-> dname varchar(14),
-> loc varchar(13),
-> constraint primary key(deptno)
-> );
ERROR 1062 (23000), primary key로 설정된 컬럼에 동일한 데이터 삽입 시 에러
insert p1 values ( 10, "연구부", "서울" );
insert p1 values ( 10, "연구부", "서울" );
ERROR 1048 (23000), primary key로 설정된 컬럼에 null 값 삽입 시 에러
insert p1 values ( null, "연구부", "서울" );
auto_increment, 컬럼의 숫자 자동 증가
(단, Primary key만 설정 가능)
create table dept_a1 (
-> deptno int(2) auto_increment,
-> dname varchar(14),
-> loc varchar(13)
-> );
Primary key 지정과 auto_increment 설정, 컬럼의 숫자 자동 증가
create table dept_a1 (
-> deptno int(2) primary key auto_increment,
-> dname varchar(14),
-> loc varchar(13)
-> );
unsigned, 음수를 허용하지 않는 컬럼 설정(범위: 0 ~ 4,294,967,295)
(ex. id나 일련 번호는 음수를 사용하지 X, 모든 수들이 양수로 변경)
create table dept_a1 (
-> deptno int(2) unsigned primary key auto_increment,
-> dname varchar(14),
-> loc varchar(13)
-> );
Foreign Key, 외래키(참조키) 설정, 테이블간의 관계를 정의하는 컬럼
ERROR 1005 (HY000), Primary key 설정 후 foreign key 설정
(아래 예제는 Foreign Key를 설정하기 전, 해당 컬럼이 Primary Key로 설정되지 않아서 발생하는 오류임.)
create table dept_p (
-> deptno int(2),
-> dname varchar(14),
-> loc varchar(13)
-> );
create table emp_f (
-> empno int(4),
-> ename varchar(10),
-> job varchar(9),
-> deptno int(2),
-> constraint foreign key (deptno) references dept_p_ (deptno)
-> );
Foreign Key, 외래키(참조키) 설정, 테이블간의 관계를 정의하는 컬럼
create table dept_p (
-> deptno int(2) primary key,
-> dname varchar(14),
-> loc varchar(13)
-> );
create table emp_f (
-> empno int(4),
-> ename varchar(10),
-> job varchar(9),
-> deptno int(2),
-> constraint foreign key (deptno) references dept_p (deptno)
-> );
ERROR 1452 (23000), 부모 테이블에 없는 데이터를 자식 테이블에서 삽입하려고 할 때
insert into emp_f values ( 1000, "홍길동", "clerk", 10);
1) 부모 테이블에서 부서번호(PK) = 10의 데이터 추가 후
insert into dept_p values ( 10, "연구부", "서울");
2) 자식 테이블에서 데이터 추가
insert into emp_f values( 1000, "홍길동", "clerk", 10);
3) 자식 테이블에서 null 값 가능
insert into emp_f values( 2000, "박문수", "clerk", null);
4) 외래키로 지정된 값은 반드시 추가
insert into emp_f values( 20, "개발부", "대전" );
1) 부모 테이블에서 부서번호(PK) = 20의 데이터 추가 후
insert into dept_p values( 20, "개발부", "대전" );
2) 자식 테이블에서 데이터 추가
insert into emp_f values ( 3000, "박문수", "clerk", 20);
3) 참조하고 있는 중 부모 테이블에서 부서번호(deptno) 20번을 30번으로 변경 시
부모의 부서번호는 자식의 부서번호와 관계(참조)가 있기 때문에, 오류가 발생
update dept_p set deptno=30 where deptno=20;
4) 부서번호(deptno) 자식 테이블에서 20번을 30번으로 변경 시
delete from emp_f where deptno=20;
4) 자식 테이블 변경 후 부모 테이블 변경
update dept_p set deptno=30 where deptno=20;
참조하고 있는 중 부모 테이블에서 테이블을 지울 시 발생하는 에러
drop table dept_p;
1) 자식 테이블 삭제
drop table emp_f;
2) 부모 테이블 삭제
drop table dept_p;
댓글