나의 수업일지

인천 일보 아카데미 26일차 -2-서브쿼리 응용 / 제약조건 / 제약조건 확인

GUPING 2023. 3. 29. 16:04
  • 서브쿼리 응용 풀어보기

-- 연습문제 
-- 1. clark 보다 늦게 입사한 사원 조회 
select * from emp where hiredate > (select hiredate from emp where ename = 'clark');
        전체 입사일 목록            clark의 입사일

-- 2. 부서번호가 20인 사원 중에서 전체 사원 평균 급여보다 높은 급여를 받는 사원 조회 
select * from emp where deptno = 20 and sal > (select avg(sal) from emp);
    전체 deptno 20인 회사원의 sal 목록        평균 sal

-- 3. 2번 조회 결과에서 부서이름, 부서위치도 함께 조회 
select * from emp e , dept d 
    where e.deptno = 20 and d.deptno = 20 
        and sal > (select avg(sal) from emp);
    전체 emp , dept에서 emp는 약어 e , dept는 약어 d
    각각의 deptno가 20이고 sal이 평균 sal보다 높으면 출력

 

 

  • 제약조건(Contraints) 알아보기

 

 

  • 제약조건(Contraints) 문법
create table [데이블이름](
	col1 [타입] 제약조건 종류 ,
    ....
    -- pk, fk경우에는
    constraint [제약조건 이름] primary key(pk 지정할 컬럼 이름),
    constraint [제약조건 이름] foreign key(fk 지정할 걸럼 이름)
    			references [부모테이블이름](참조컬럼이름)
)

 

 

  • 제약조건 사용 전 테이블 만들고 / 데이터 넣어보기

정석적인 테이블 만들기 / 데이터 넣기

만든 테이블에 제약 조건이 없기 때문에 문법만 맞다면 대부분 입력 가능하다

 

 

  • 제약조건(Contraints) 사용해보기

not null은 적용하고 싶은 컬럼에 모두 적용 가능하다

not null 사용 - 해당 조건의 칸에는 반드시 값이 들어가야한다

데이터에서 id에 null을 넣어보면 에러코드 1048이 뜨는걸 알 수 있다

 

 

unique 사용 - 넣는 값이 컬럼에 이미 있는 값이라면 막아준다

중복으로 데이터를 넣어보면 에러코드 1062가 발생한다

 

 

default 사용 - 따로 값을 지정하지 않아도 자동으로 설정 값이 저장된다

가입 시간을 넣지 않았지만 default now()로 자동으로 값이 들어간걸 확인할 수 있다

 

 

primary key 사용 - null값과 중복을 잡아준다 두가지 조건을 모두 걸어야할때 사용한다

사진을보면 조건을 걸고싶은 칼럼 뒤에 넣어도 상관없지만

같은 조건을 여러 컬럼에 넣고 싶을때 constraint pk를 사용해 한번에 넣을 수 있다

 

 

  • 자투리 걸려있는 제약조건 확인