웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
[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을 클릭해주세요.
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을 클릭해주세요.
댓글 3
-
TheMics
2003.12.24 19:27
enum은 라디오버튼, set은 체크박스라고 생각하면 되겠네요'ㅡ') -
서영태
2003.12.26 01:19
TheMics/ 정말 적절한 비유군요 ~ 굿입니다.
여담이지만.. 테이블 스키마가
test[ field(set(a,b,c) ]로 정의되어 있고 test에 field = a,c 라는 레코드가 있을때..
select field from test; -----> a,c
select field+0 from test; ------> 5
와 같이 결과값이 반환됩니다. -
행복한고니
2003.12.30 00:18
** 추가 **
set 타입의 원리는 2진수 단위의 비트연산입니다.
또한, 최대 64가지의 값을 가질 수 있으니 set타입이 8byte의 필드크기를 차지한다는 것을 알 수 있죠.
누군가 했더니 스쿨에 오픈프로젝트 한다고 글 올렸던 분이네요.
제목 | 글쓴이 | 날짜 |
---|---|---|
일정시간 이 지난 게시물 정리하기.. [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 |
세션을 이용한 관리자 모드 구축하기 3강 [6] | 박정호 | 2003.12.09 |
세션을 이용한 관리자 모드 구축하기 2강 [6] | 박정호 | 2003.12.09 |
세션을 이용한 관리자 모드 구축하기 1강(중복?) | 박정호 | 2003.12.09 |
쉘 명령어 사용하기 [11] | 9000㎒ | 2003.12.02 |
랜덤 배경음악 만들기. [6] | 폭주나루 | 2003.12.01 |
throttle-me를 이용한 계정 트래픽 나타내기 [39] | 旻天 | 2003.11.27 |
제로보드회원의 포인트 랭킹 체크하기 sql 정리 [4] | 한꼬마 | 2003.11.26 |
한꼬마의 제로보드 이용법 (sql로 테이블 호출) [2] | 한꼬마 | 2003.11.26 |
[Lotto 6/45] 로또 추첨 구현하기~ [5] | 전원주 | 2003.11.21 |
한꼬마의 제로보드 활용방법 (로그인 값 알아 보기) [3] | 한꼬마 | 2003.11.20 |
회원 포인트 랭킹(중복 -_-a) [4] | weky | 2003.11.15 |
제로보드회원의 포인트 랭킹 체크하기 [13] | 전원주 | 2003.11.15 |
지금은 시스템 점검중 만들기... [8] | zentoo.com | 2003.11.11 |