AD

전수진 공부 프로젝트 트게더를 만들어보자 - DB(Table 제약 조건)

모데충
2022-08-23 18:24:18 219 3 0

안녕하세요. 지난 시간 숙제는 아래 쿼리문 하나로 정리할 수가 있습니다. 여러분들도 한번 꼭 해보셔서 "DB가 이런거구나"라고 하는거를 어느정도 느껴보셨으면 좋겠습니다.

SELECT * FROM RESTAURANT WHERE AREA = '?' AND AREA2 = '?' AND MENU LIKE '%?%';

?부분에 각 컬럼에 알맞는 값들을 넣으셔서 실행시키시면 지역별맛집 리스트가 나오게 됩니다. 자세한 내용은 지난 시간 글을 봐주시면 감사하겠고, 답변을 내주신 1분께는 편의점 상품권을 전달해드렸습니다. 감사합니다.


이번 시간에는 Table 제약조건에 대해서 알아보겠습니다. 우리가 지금까지는 테이블에 값을 넣었을때 자유롭게 입력을 하였지만 실제 사용하는 테이블에는 여러가지 제약조건이 걸려 있습니다.


예를 들어본다면 네이버에는 회원을 관리하는 테이블이 있을 것입니다. 회원을 관리하는 테이블에서 가장 중요한 것이 무엇일까요?

여러가지가 있겠지만 가장 기본되는 것은 "중복되는 아이디 금지"일 것입니다. 만약 네이버에서 순당무님과 동일한 아이디로 제가 회원 가입을 하게 되었을때 테이블에 어떠한 제약조건도 걸려있지 않는다면 회원가입은 정상적으로 성공할 것이고 저는 로그인 하는 순간 순당무님의 모든 이메일과 개인정보,그리고 가입되어 있는 모든 카페에 썻던 게시글을 확인 할 수도 있을 것입니다. 


그래서 네이버뿐 아니라 모든 사이트에서는서 회원가입을 할때 아이디를 입력하면은 아래와 같이 동일한 아이디가 있는지 판단하여 없을 경우에만 가입을 할 수 있도록 제약이 걸려 있습니다.

caf09d78be432366e167ca8f032ca2d0.png

8e13749bb89467131977804b08b2aa0b.png


이런식으로 테이블에는 제약 조건을 걸 수 있는데 제일 많이 쓰는 제약조건인

Not null,Unique,Primary Key,Default 이 4가지에 대해서 알아보도록 하겠습니다.


1.Not null

먼저 Not null입니다. Not null의 의미는 "null은 안돼!"라는 뜻입니다. 그러면 여기서 우리는 null이 뭔지를 알고 넘어갈 필요가 있습니다. 


null이라는 "없다"라는 뜻입니다. 말 그대로 데이터가 존재하지 않는다는 것입니다. 여기서 짚고 넘어가야할 것은 숫자에서는 0을 값이 없다고 하고 문자에서는 띄어쓰기를 빈칸이라고 하는데 컴퓨터 체계에서는 숫자0이든 띄어쓰기같은 공백이든 모두 데이터코드를 가지고 있습니다. 아래의 링크를 참고하시면 도움이 됩니다.

아스키 코드 : https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C 


null이라는 것은 저런 아스키 코드값도 존재하지 않는 것을 말합니다. 


좀 더 쉽게 비유해서 설명하자면 우리가 대기중에 아무것도 안보인다고 해서 없다고 말하지는 않습니다. 실제로는 대기중에는 산소,질소,이산화탄소는 눈에만 안보일뿐이지 다양한 것들이 존재합니다. 하지만 진공 상태에서는 아무것도 존재할 수가 없습니다. 이 진공 상태를 null이라고 이해하시면 되겠습니다.


not null은 이렇게 지정이 가능합니다.

2cd3f58ff1c00eacdbba6f6e37ed23d9.png

이런식으로 테이블을 선언할때 컬럼명 뒤에 not null을 지정하게 되면은 해당 컬럼은 무조건 값을 가지고 있어야 합니다. 그게 띄어쓰기같은 공백이든 0이든 말이죠. 만약 null이 들어가게 된다면 insert나 update를 허용하지 않게 됩니다.


2.Unique

두번째는 Unique입니다. Unique의 사전적 의미는 고유한이라는 뜻을 가졌습니다. 다시 말하자면 "중복을 허용하지 않겠다"라는 뜻입니다. 같은 값을 넣으려고 하면은 거부됩니다. Unique는 이렇게 지정할 수가 있습니다.

768afdf8dcf2294741a6c9c9e4c2deff.png

저렇게 한 괄호 안에 3개가 한꺼번에 묶이게 되면은 각 컬럼별로 중복값을 체크하는것이 아닌 ID,NAME,PASSWORD모두를 체크하게 됩니다. 다시 말해서 저 3개의 값이 모두 동일하지 않은 값만 들어오게 된다는 의미입니다. 정리하자면 아래와 같습니다.

981c450eccf6e098a2f65327d2bc0115.png

 만약 컬럼별로 중복체크를 하고자 한다면 아래와 같이 추가적으로 Unique조건을 지정 하시면 됩니다.

fe521ec3a914b4c3474ba55e567f1482.png

3.Primary Key

기본키라고도 하며 Primary Key는 위에서 알아본 not null과 unique를 합친 기능이라고 이해하시면 될듯 합니다. Unique같은 경우 여러개를 지정할 수 있지만 Primary Key는 테이블당 하나만을 지정할 수가 있습니다. 설정하는 방법은 아래와 같습니다.

a1ca0929cf663f77629c333f62ef4bd6.png


4.Default

기본적으로 테이블에는 여러컬럼들이 존재하는데 값을 넣어주지 않을 경우 null이 들어가게 됩니다. Default는 값을 넣어주지 않을 경우 기본적으로 지정되는 값을 선택할 수가 있습니다. 설정하는 방법은 아래와 같습니다.

376bee56634a5ca1d1f3290d95d7296f.png


오늘의 숙제는 따로 없습니다만 만약 어떤분이시든지 DB에 관해서 관심이 있으신 분들이시라면은 이러한 제약조건을 이용해서 테이블을 만들어보셔서 실제로 어떠한 방식으로 작동이 되는지 실습해보시는것을 추천드립니다. 질문은 언제나 환영입니다.


봐주시는 모든 분들께 늘 감사합니다.

후원댓글 0
댓글 0개  
이전 댓글 더 보기
이 글에 댓글을 달 권한이 없습니다. 로그인해 보세요.
잡담신고팬아트건의함게임추천이벤트순클립전수진 공부 프로젝트음식을 올려보아요마지막 클립 불태우기
2
전수진 공부 프로젝트
에펙 뉴비 순당무님을 위한 팁글 모음.link [1]
쥐펄
07-29
4
전수진 공부 프로젝트
초전도체 논문 [2]
서카포노예제발
07-29
6
04-06
3
03-30
15
전수진 공부 프로젝트
순손실 방지 프로젝트 - 1.다시보기 자동저장하기 [17]
모데충
03-29
4
전수진 공부 프로젝트
심심해서 쓰는 인터넷 신청부터 점검까지 [3]
모데충
03-23
0
전수진 공부 프로젝트
녹화에 음악 안남게 하기 [3]
모데충
12-20
11
전수진 공부 프로젝트
씹덕일러를 그려보자 (2) - 김욾 선화, 밑색 칠하기 [6]
미노일세
11-15
7
11-07
16
전수진 공부 프로젝트
걸게이머 결승에 관하여(뇌피셜) [8]
모데충
11-03
7
전수진 공부 프로젝트
망 사용료 논쟁에 대해서 알아보자(초스압 주의) [7]
모데충
09-30
8
전수진 공부 프로젝트
연애 잘하는 법,권태기와 식은 마음의 구분 [3]
boysick12
09-25
2
전수진 공부 프로젝트
트게더를 만들어보자 - 다음 과정 의견수렴 [3]
모데충
09-17
2
09-10
5
전수진 공부 프로젝트
발?성법 [1]
라ㅡ떼
09-10
3
전수진 공부 프로젝트
트게더를 만들어보자 - DB(Table Join) [마감] [15]
모데충
09-05
5
전수진 공부 프로젝트
트게더를 만들어보자 - DB(Table 정규화) [2]
모데충
09-02
2
전수진 공부 프로젝트
방장 공부하자 (서버, 서버의 기본 3)
라ㅡ떼
09-01
3
전수진 공부 프로젝트
방장 공부하자 (서버, 서버의 기본 2)
라ㅡ떼
08-28
5
전수진 공부 프로젝트
방장 공부하자 (서버, 서버의 기본 1) [2]
라ㅡ떼
08-26
»
전수진 공부 프로젝트
트게더를 만들어보자 - DB(Table 제약 조건)
모데충
08-23
3
전수진 공부 프로젝트
트게더를 만들어보자 - DB(CRUD 조건문) [마감] [8]
모데충
08-19
3
전수진 공부 프로젝트
트게더를 만들어보자 - DB(DataGrip 설치) - [마감] [15]
모데충
08-17
9
08-16
인기글 글 쓰기