웹마스터 팁

[MySQL] Set 형 자료형..

2003.12.24 01:32

서영태

http://www.nzeo.com/bbs/zboard.php?id=cgi_pr&no=22532php 프로그램시 유용하게 사용할수 있는 자료형 중에 하나를 소개 할까 합니다.


SET 이라는 자료형입니다. enum 과 유사하게 생겼으나 전혀 다른 별개의 자료형입니다.

enum ('a','b','c') 라고 정의된 필드가 있다고 생각합시다.

이 자료형은 a 나 b, c(혹은 null) 중 단 하나의 값을 가질수 있습니다.


set('a','b','c') 라고 정의된 필드는 enum과는 조금 다르게

null, a, b, c, (a,b), (a,c)... (a,b,c) 와 같은 값을 가질수 있습니다.

enum과는 달리 복수개의 아이템을 값으로 가질수가 있습니다.

그리고 또 하나 set 에 정의된 아이템은 비트 연산이 가능합니다.

null - 000 (0)
a     - 001 (1)
b     - 010 (2)
c     - 100 (4)
a,b  - 011 (3)
a,b,c - 111 (7)

set 형은 최대 64개의 아이템을 가질수 있고 select 문을 통해서 문자열 혹은 정수 값으로 열람이 가능합니다.

비트연산을 통해 비교구문을 활용할수 있고 그 응용범위는 넓습니다.


제 경우엔 수강신청 프로그램에 활용을 하였습니다.

각 과목은 월1~금15 까지 중 일부의 가변 갯수의 수업시간을 가집니다.

그리고 수강신청시 이미 신청한 과목과  중복된 과목은 신청할수 없겠죠?


원래는 정수형으로 필드를 설정해놓고 각 시간별로 비트를 하나씩 부여해서 php 에서 처리해주려고 했는데

이미 mysql 에 set형이라는 유사한 자료형이 있더라구요..

이 경우 기존에 수강신청한 자료에서 이미 신청한 과목의 시간을 모두 얻어

이 값을 or 연산을 해주고, 그 값과 현재 신청하려는 수강과목의 시간을 and 해주어서

그 결과가 0이 나와야 신청이 가능하겠죠??


많은 도움이 되셨나요?


----------------------------
웹상에서 웹프로그램 오픈 소스 프로젝트를 해볼생각입니다.

관심있는 분은 link1을 클릭해주세요.
제목 글쓴이 날짜
많은 txt파일 db에 한번에 저장시키기 -_-;;(별 내용없으나 필요하신분은 보세요) [1] 추천대화상대 2004.02.11
이미지 업로드시 자동으로 섬네일 이미지 만들어 주기 [2] 장정식 2004.02.02
제로 카운터 ip 체크형에서 쿠키 체크 형으로 바꾸기 [8] 정재원 2004.01.27
[초허접기초] 하드디스크 용량을 구해보자..!! [13] SeePaGae 2004.01.24
[초허접기초!!] PHP 가 무엇인고..?? 1탄.. [6] SeePaGae 2004.01.24
아이피를 숨겨보자 [5] SeePaGae 2004.01.23
(중복) 개인서버 운영하시는분들.. 좋은소스? [14] SeePaGae 2004.01.22
제로카운터 쉽게 설치하기 [26] file 대류 2004.01.17
제로보드 인크루드시 $DOCUMENT_ROOT 참조 [7] 이경훈 2004.01.14
unset / isset 를 알아보자. [2] 씨파개 2004.01.12
include에서 Failed opening 발생문제 [4] 이경훈 2004.01.10
[팁&테크] 텍스트파일에서 디비 입력하기. [1] 김영진 2004.01.09
GET으로 받는 변수가 하나일 때, 주소?변수값 사용하기 [5] 버찌 2004.01.05
일정시간 이 지난 게시물 정리하기.. [3] 명동욱 2003.12.24
[MySQL] Set 형 자료형.. [3] 서영태 2003.12.24
나도 @ 도메인 서비스를 해보자 [29] 김병철 2003.12.19
[제로카운터] 자동으로 DB를 지우자. (IP와 referer 5일 분량만 남기기) [4] 이주경 2003.12.17
카일레라 서버 페이지 만들기. [2] teslaMINT 2003.12.09
편법을 이용한 inlive 방송여부 체크 [7] 심심타 2003.12.09
DB에서 받은 데이터 배열로 하나씩 뿌리기 LetMeLove 2003.12.09