웹마스터 팁

4. 쿼리문

2004.12.11 20:34

티다

아 몇달만입니까 -_-;; 다시 돌아왔습니다.
최근 모종의 작업에 빠져 있어서 PHP게시판은 쓸 엄두도 못냈네요.

그런 고로, 오늘은 쿼리문을 하도록 하겠습니다.(어째서?)

쿼리문이 뭐냐 하면...
mysql에 새로 만들거나(CREATE) 고치거나(UPDATE) 불러오거나(SELECT) 삽입하거나(INSERT) 삭제하는(DELETE) 이런 것이 바로 쿼리문이지요.

쉽게 말하자면 mysql_query 같은 주위에서 상당히 흔하게 볼수 있는(-_-) 것이지요

이 쿼리문을 사용하기 위해서는 몇가지 준비운동이 필요합니다.
mysql_connect로 DB에 연결을 하고 나서
2단계 준비운동 동작 mysql_select_db로 DB를 선택하는 겁니다.
<?
$connect=mysql_connect("호스트","아이디","비밀번호");
mysql_select_db("DB명");
?>
이렇게요...

create 쿼리문은 이런 식으로 사용한답니다.
mysql_query("create 테이블 (필드 타입)")

그러면 DB에 tidus라는 테이블을 하나 만들고, 그 속에 1, 2, 3이라는 필드, 그리고 각각 int(10) auto_increment not null, char(20) not null, text not null의 타입을 줘 봅시다.
그리고 no라는 고유의 값을 줍시다.
primary key는고유의 값을 뜻합니다.

mysql_query("create tidus (
                                       1 int(10) auto_increment not null,
                                       2 char(20) not null,
                                       3 text not null,
                                       primary key(no)");

자 그럼 여기서 제 강좌에 내용 때워먹으려고 항상 등장하는거 한번 넣어야죠.
'분석' 크크크...

int(10) auto_increment not null 부분을 한번 보죠.
int(10)은 10자리의 정수형 타입을 뜻합니다.
auto_increment는 별다른 값을 안줘도 자동으로 증가합니다. 1이었다면 2로, 5였다면 6으로...
not null은 비우지 말라는 겁니다. ''를 허용하지 않는단 거죠.

char(20) not null 부분을 한번 봅시다. char(20)은 1~20바이트를 저장할 수 있습니다.
varchar라는것이 있는데요, 이것은 char와 거의 흡사하지만 몇가지 다른 게 있습니다.
char는 1바이트를 저장하든 14바이트를 저장하든 20바이트를 저장하든 무조건 용량은 20바이트입니다.
varchar는 1바이트를 저장하면 1바이트를 차지하고, 20바이트를 저장하면 20바이트를 차지합니다.
그럼 varchar를 쓰는게 용량상 더 좋지......만!! char는 일정한 공간을 차지하고 있기 때문에 검색에 더 좋다고 합니다앗...(이건 주워들은말)

text not null 도 한번 봅시다.
text는 65535개의 문자를 저장할수 있습니다.
65535가 무슨 의미가 있냐..!!
요 숫자 많이 들어봤죠? 전 많이 들어봤는데 -_-;; 2의 16승입니다.
blob나 longtext를 이용해서 65535개 이상의 문자를 저장할 수도 있는데, 65535개 쓰는거 쉬운게 아니죠 -_-;;

primary key(no)는 뭘까요.
앞에서 설명했지만, primary key는 고유값을 뜻합니다.
물론 이거 없다고 동작 안하는건 아닙니다.
하지만 기본키(KEY)는 'no'라는걸 말합니다.

이제 UPDATE부분으로 갑시다. (흑흑 이제 5분의 2 ㅠㅠ)
UPDATE는 고치는걸 말합니다.
그러니까
mysql_query("UPDATE tidus SET 1=1 where 2=0");
하시면
2라는 값의 0의 1을 1로 변경한다는 겁니다.
mysql_query("UPDATE 테이블 SET 수정할거=수정할값 where 조건절");
식으로 쓰이죠.

SELECT는 DB내용을 불러옵니다.
가령
mysql_query("SELECT * from tidus");
를 하면 tidus테이블에 있는 모든 내용을 불러오라는겁니다.
mysql_query("SELECT 필요한값 from 테이블");
이죵.
자 다음으로 갑시다. (CREATE빼고 다 성의없냐 -_-^)

INSERT는 자료를 삽입하는 거죠.
mysql_query("INSERT INTO tidus (1, 2, 3) VALUES (1, 2, 3)";
정도로 대충 해놓읍시다.
tidus테이블안의 1,2,3이란 값에 1,2,3을 넣는다는 거죠.
만약 tidus (1, 2, 3)부분을 tidus (1, 3)으로 바꾸면
2부분의 값은 삽입하지 않습니다.
후후훗...
그리고 tidus (1, 2, 3)부분을 아예 없애버리면 모든 값을 순서대로 써야 됩니다.

DELETE는 자료를 삭제하는거죠.
mysql_query("DELETE from tidus where 1=2");
라고 하시면 tidus테이블의 1의 2라는 값을 지워버린다는 겁니다.
where이 없으면 어떻게 되는지 궁금하신가요?
어떻게 되긴요......................OTL이죠

자 기나긴 쿼리문 강좌가 끝났습니다.
CREATE빼고 다 성의없다고 생각중... OTL

어쨌든 12일 소요된 강좌입니다. 중간에 스타크래프트 하느라요.