웹마스터 팁
MYSQL Query의 간단한 사용법
2000.03.06 03:25
PHP에서 DB와 연동하기 위해서는 우선 DB에 접근을 해야 합니다.
DB에 접근하기 위해서는 MYSQL DB가 어데 있는지와 자신의 계정 아듸와, 패스워드,
그리고 DB계정 아듸가 필요합니다.
보통 MYSQL DB는 자신의 계정과 같은 곳에 있기 때문에 localhost로 지정하면 되지만 따로 서버를
만들어서 MYSQL DB를 이용하는 경우에는 해당 서버의 IP 주소가 필요합니다.
그럼 실질적으로 하겠습니다.
우선 DB에 접속하기 위한 설정을 변수로 미리 선언해 놓습니다. (이게 편합니다)
$host_name = "localhost";
$user_name = "user";
$user_password = "*****";
$db_name = "test";
즉 Mysql의 DB는 같은 계정에 있다구 하고, $user_name은 자신의 계정 아듸, $user_password는 계정 패스워드, $db_name은 자신에게 할당된 DB의 이름입니다.
그럼 이제 접속을 해야 겠죠.
$connect = mysql_connect($host_name,$user_name,$user_password) or echo"mysql_error()";
mysql_connect()라는 함수가 바로 DB에 접속하는 함수입니다.
mysql_connect() 함수에 $host_name, $user_name, $user_password를 주고 호출을 하게 되면 결과가 나옵니다.
이 결과값은 $connect 안에 넣게 되죠.
뒤에 or echo"mysql_error()"; 은 만약 에러가 발생하면 에러값을 출력하게 하는 구문입니다.
mysql_error()은 에러발생시 에러값을 return 해 주는 기특한 함수입니다.
만약 이상없이 DB에 접속하게 되면 아무 표시도 안나겠죠.
그럼 이제 자신의 DB에 연결해 봅시다.
mysql_select_db($db_name, $connect ) or echo"mysql_error()";
mysql_select_db()에 $db_name 과 $connect를 넣구 호출하면 자신의 DB에 연결이 됩니다.
2. Table 생성
자 그럼 이제 DB에 테이블을 생성해 봅시다.
DB에 테이블을 생성하건, 삭제하건, 아님 수정하건 Query문을 mysql에 건네주게 되어 있습니다.
이름과 나이, 전화번호, 주소만 가지고 있는 테이블을 만들어 봅시다.
$que = "CREATE TABLE Human_info (
id int(11) DEFAULT '0' NOT NULL auto_increment,
name varchar(10),
age int(3),
tel_num varchar(20),
address text,
PRIMARY KEY (id))";
위와 같은 Query문을 만들었습니다.
Query문을 만들 때는 문자열 변수에 내용을 입력하면 됩니다.
위에 것은 보기 좋으라고 줄을 나누었는데 이러기 싫은 한줄로 쫘악 해도 됩니다.
생성하는 Query문은 "CREAT TABLE 테이블명 ( 필드명과 Type )" 로 합니다.
즉 위에서 테이블명은 Human_Info가 되죠.
그리고 id, name, age, tel_num, address 같은 넘은 바로 스키마 이름이 되는 것이고, 그 옆에 int(11),
varchar(10), text 같은 것은 Type이 되는거죠.
그런데 사용할 스키마와는 별도로 id 라는 스키마를 지정했죠?
ID는 테이블에 데이터를 넣고 뺄 때 필요한 일련번호입니다.
DEFAULT '0' 은 첨에는 0부터 시작한다는 거죠.
NOT_NULL 은 절대 빈칸은 허용 안되다는 거죠. 어떤 넘이라도 일련번호를 붙여야 된다는 거죠.
auto_increment 는 별다른 값을 안 주어도 자동으로 증가하라는 겁니다.
그리고 밑에 PRIMARY KEY (id)를 씀으로서 기본키는 ID라는 것을 지정하는 겁니다.
그럼 위에 쓰인 Type에 대해서 이야기 하죠.
int(11)은 11자리의 정수형 타입닙니다.
varchar(20)은 20칸짜리 문자열이라는 거구요.
text는 개행문자를 포함하는 끝을 모르는(?) 문자열이라는 겁니다.
Type은 보통 위에 3가지만 쓰면 별 이상없을 겁니다.
다른 Type들은 별로 쓰이지는 않으니 필요할때마다 찾아서 하시면 됩니다.
자 그럼 이 $que 라는 질의어를 mysql에 전달합시다.
mysql_query( $que, $connect ) or echo"mysql_error()";
mysql_query() 라는 함수가 바로 질의어를 넘겨주는 함수입니다.
물론 생성할 때뿐만 아니라 질의어를 넘겨줄 때 이 함수를 쓰는 겁니다.
이렇게 하면 자신의 DB에는 id, name, age, tel_num, address를 필드로 하는 테이블이 생성된겁니다.
3. Table에 자료 추가
자 이제, 테이블을 생성했으니 자료를 추가해봅시다.
지금은 테이블만 만들어져있기 때문에 자료가 하나도 없습니다.
자료를 Insert할 때는 필드의 순서대로 입력을 해야 합니다.
우선 Query 문을 작성해 봅시다.
$que = "INSERT INTO Humna_info VALUES (
'',
'아무개',
24,
'000-000-0000',
'아무시
아무구 아무동'
)";
위의 "INSERT INTO 테이블명 VALUES (데이타...)" 라구 하는 것이 자료추가하는 질의어입니다.
VALUES ( 다음에 보면 처음에 '' 라고 되어 있죠?
이넘이 바로 id입니다. 즉 인위로 값을 넣지 않죠.
하지만 위에서 정의한 대로 auto_increment 이기 때문에 저절루 순서가 매겨집니다.
그리고 2번째 이름은 문자열 이기 때문에 '로 둘러싼 것 입니다. (" 쓰면 안됩니다.)
그리고 3번째 나이는 정수형이기 때문에 ' 가 필요없습니다.
이 질의어를 mysql_query를 통해서 MySQL에 일을 냅따 시킵시다.
mysql_query( $que, $connect ) or echo"mysql_error()";
그럼 이제 Human_Info라는 테이블에는 id 값이 0인 첫 번째 값이 들어간거죠.
4. Table의 자료 제거
이제 만들어 봤으니 제거 하는 방법을 알아 봅시다.
제거하는 방법은 추가하는 것보다 더 쉽습니다.
$que = "delete from Human_info where id=0";
mysql_query( $que, $connect );
delete from 테이블명 where 조건문 하면 됩니다. 그러고 $que를 MySQL에 넘겨주면 지웁니다.
위이 예에서는 Human_Info라는 테이블에서 id값이 0인 넘을 지우라는 거죠.
where id=0 했으니깐요.
만약 where age=20 하면 Human_info 테이블에서 age=20 인넘들은 모두 지우죠.
5. Table의 자료 수정
자료의 수정방법도 매우 쉽습니다.
$que = "UPDATE Human_Info SET name='막둥이' WHERE id=0";
mysql_query( $que, $connect );
수정할 때는 "UPDATE 테이블명 SET 수정할넘=수정할값 WHERE 조건문" 하믄 됩니다.
콤마(,)를 이용해서 여러개를 바꿀수 있습니다.
6. Table의 자료 출력
자 이제 만들고, 지우고, 수정하는 걸 알았으니 원하는 자료를 테이블에서 불러오는 방법을 해봅시다.
$que = "SELECT * FROM Human_Info";
$data = mysql_query( $que, $connect );
바로 SELECT, FROM을 이용해서 가져옵니다.
* 는 모든 것을 가져오라는 겁니다.
만약 name만 필요하다면 SELECT name FROM Human_Info 라구 하면 되고요.
name과 age가 필요하면 SELECT name, age FROM Human_Info 라고 하면 되죠.
Query문을 mysql_query를 통해서 MYSQL에 전달하면 mysql_query() 함수는 찾은 결과를 return 하게 됩니다.
위에서는 $data라는 변수에 결과값을 저장하였죠.
그럼 $data 변수안에는 찾은 결과가 배열의 형태로 입력되어져 있습니다.
그럼 우선 몇 개가 찾아졌는지 함 알아봅시다.
$total = mysql_affected_rows();
위와 같이 하면 총 몇 개가 찾아졌는지 알수 있습니다.
mysql_affected_rows() 이라는 함수는 찾아진 값의 갯수를 return 합니다.
자 그럼 이제 $data안에 있는 내용을 출력하기로 해봅시다.
출력하기 위해서는 mysql_data_seek($data,$i) 라는 함수를 알아야 합니다.
mysql_data_seek()는 $data 파일에서 $i 번째의 데이터를 지정시켜 놓는 함수입니다.
즉 mysql_data_seek($data,0) 이라고 하면 찾아진 결과의 첫 번째 데이타를 지정해 놓는 거죠.
지정을 했으면 다음과 같은 방법으로 값을 가져옵니다.
$human = mysql_fetch_array( $data );
mysql_fetch_array()는 $data에서 지정된 넘의 값을 배열로 return 합니다.
즉 $human[id], $human[name], $human[age], $human[tel_num], $human[address] 가 되는거죠.
출력할 때는 echo"이름 : $human[name], 나이 : $human[age]살"로 하면 되죠.
이름 : 아무개, 나이 : 20살
위에 처럼 출력 되겠죠.
그럼 리스트처럼 주르륵 하기 위해서는 for문을 사용하면 됩니다.
for($i = 0; $i < $total; $i++)
{
mysql_data_seek($data,$i);
$human = mysql_fetch_array( $data );
echo"이름 : $human[name], 나이 : $human[age]살
";
}
위와 같이 하면 주르륵 나오겠죠?
쉽죠?
그럼 select 문에 대해서 몇가지만 더 적겠습니다.
$que = "SELECT * FROM 테이블명 order by id";
위에 처럼 하면 order by id 라는 구문 때문에 id의 정렬순으로 결과가 나옵니다.
만약 역순으로 할려면 order by id desc 라고 하면 되지요.
그리고 limit 숫자 하면 숫자만큼의 갯수만 나옵니다.
$que = "SELECT * FROM 테이블명 order by id limit 10";
위에 처럼 하면 10개만 나오죠.
만약 검색처럼 어떤 문자열을 포함하고 있는 넘을 찾을 때는 다음과 같이 하면 됩니다.
이름에 "김"이 포함된 넘을 찾는 다고 합시다.
$que = "SELECT * FROM 테이블명 WHERE name LIKE '%김%'";
위에서 WHERE라는 넘은 아까도 나왔지만 조건을 붙일 때 쓰는 넘입니다.
그리고 LIKE '%검색문자%' 라구 덧 붙이면 name 필드중 "김" 이라는 문자가 있는 넘을 찾아라는 겁니다.
댓글 82
-
꾸러기
2000.08.29 13:39
넘 멋져요 -
C™
2000.10.27 22:33
멋지다, 4개강좌 들었다 ^^γ -
김현수
2000.10.31 21:34
정말 도움되는 글만 있군요..넘 감사 ^^ -
Zend
2000.11.30 23:06
두번째 보니까 이해가 더잘되네. ^^ -
belll
2000.12.08 13:32
음~ 이런걸 사회봉사라 하겠죠? ^^ 상줘야 되는뎅~~ -
homi
2000.12.22 20:20
제로님 참 대단해요 -
제로님 팬
2000.12.26 05:52
제로님 정말 감사드립니다. 행복하세요 -
최정현
2001.01.10 00:44
*^^* -
박철민
2001.01.17 11:10
-Stage Clear- 5 -
tagnet
2001.02.02 15:48
대단해요 근데여.. 점점 글 쓰는 사람들이 왜 줄어들까요? -
tagnet
2001.02.02 15:48
이궁.. 저는 무슨 소린지 아직도 멀라여.. 에고 책을 봐야 할 듯..ㅜ.ㅜ -
늘푸르니
2001.02.04 12:26
저는..여전히..암것두 모르는..초보.. 올곳이 아닌..초보.. 하나두 모르는..초보.. 짜증만 나는..초보....... -
토리
2001.02.10 00:09
으흠.. 역시 데이타베이스부분에서 약한 토리.. 이번엔 좀 많이 어렵네요.. ㅠㅠ -
유은진
2001.03.15 01:35
여기정말 쉽게 설명되있네염.좋당!! -
서현종
2001.03.18 23:44
크악 머리터지겠다 -_-못알아 먹겠군 -
Elloy
2001.03.24 01:38
테이블 삭제 하는 방법은?? -
홍성모
2001.03.24 13:15
Good gosh~~ 아라드렀다~ -
김태진
2001.04.16 21:01
정말 감사해요 -
최충선
2001.04.20 18:06
백문이불여일타..... 보지만 말구 직접해봐야쥐...^^ -
김휘종
2001.04.24 14:34
갑자기 가슴이 답답해지면서 뭔가 꼭 이룰것 같은 자신감이.... -
체리샴푸
2001.04.25 18:04
어렵지만 반복학습하면 아;알겠죠;;;;;; -
정순임
2001.04.27 13:40
어렵네요. 공부를 더 해야겠어요 -
최다현
2001.05.01 00:58
저는 php가 뭔지도 몰라요... 그런거 갈켜줌 안돼요? -
박민호
2001.05.02 12:52
SQL첨 설치했는데 자신 계정어케 만드러여? 갈켜주세염~ -
jjoo
2001.05.08 09:50
쿼리 분석기를 돌렸더니 int는 자리수를 지정할수 없다고 나오는데요. 글구 auto_increment에서 오류두 뜨구요..왜 그런지 갈켜주세요. -
김정민
2001.05.11 18:30
ㅡ.ㅡ 이건 떠 무슨 소리야 -
박용섭
2001.05.15 02:50
쩝쩝.. -
박찬
2001.05.20 01:19
잘 읽어 보았습니다... -
이성재
2001.05.21 03:42
감이....안와.... -
레인
2001.05.21 08:05
-_-;;; 이건 뭔지 몰루게따~ ㅡ0ㅡ/ -
김주현
2001.05.23 10:51
감동적이다..라는 말에 동감을.こ_こ -
김주현
2001.05.23 11:03
그러니깐 정리를 하면. -
김주현
2001.05.23 11:03
1) DB가 있는 서버에 연결한다. 여기서 $connect 값이 생기고 -
김주현
2001.05.23 11:06
2)연결된 서버에 있는 DB중 원하는 DB를 찜한다. 찜하면 새로 찜하기 전에는 계속 이 DB만 갖고 놀게 된다. -
김주현
2001.05.23 11:08
1)은 mysql_connect() 로 하고 2)는 mysql_select_db() 로 한다. -
김주현
2001.05.23 11:09
3) 여기서 부터는 sql 문법이 승부를 가른다. 만들고, 지우고, 고치고, 덧붙이고 -
김주현
2001.05.23 11:09
..위에는 create table (만들고) delete(지우고) -
김주현
2001.05.23 11:10
..그리고 update (고치고), update (있는데다 덧붙이고) -
김주현
2001.05.23 11:11
4) 이 글의 하일라이트는 일단 만들어진 내용을 가져오는건데.. -
김주현
2001.05.23 11:12
...mysql_query() 에 'select'로 data를 불러와서 $data에 넣어두고 -
김주현
2001.05.23 11:13
...mysql_data_seek() 이건 $data 중에 뽑아올 id를 지정하고 -
김주현
2001.05.23 11:14
...mysql_fetch_array() 를 사용해야 비로소 위의 1)~3)으로 만든 데이터베이스에서 -
김주현
2001.05.23 11:16
데이터를 뽑아 올수 있다. -
김주현
2001.05.23 11:16
음. 제 설명이 더 어지어질~ -_-;;; -
박재환
2001.05.24 17:45
음........어렵다....처음부터 모르니 -
슈미
2001.05.26 19:45
어질어질...... 눈이 핑핑; -
b.l.f.
2001.06.12 16:58
후....... 넘 어려워여..............ㅡ.ㅜ -
박지호
2001.06.29 19:35
머리아프닷 -
장준표
2001.07.26 03:03
우헤헤헤헤헤헤우헤헤헤헤.......^0^ 나는 울트라 맨이다!!!!! -
장준표
2001.07.26 03:03
지송함다.....간만에 무리했더니 머리가 못견뎟나 봅니다..........T.T
제목 | 글쓴이 | 날짜 |
---|---|---|
페이지 자동 이동 방법 3가지!!! [10] | zero | 2000.03.06 |
카운터를 만들어봅시다~ (수정본) [181] | zero | 2000.03.08 |
쿠키(cookie)의 활용 [44] | zero | 2000.03.06 |
Zend Optimizer 4 설치 (아파치와 PHP4 Zend도 같이..) (리눅스) [6] | zero | 2000.06.04 |
리눅스에서 APM 설치 [9] | zero | 2000.05.31 |
MySQL RPM으로 설치하자!! (리눅스) [5] | zero | 2000.06.04 |
MYSQL Query의 간단한 사용법 [82] | zero | 2000.03.06 |
웹서핑 동작 원리의 이해 [18] | zero | 2007.10.05 |
입력폼에 배경그림 넣기 [1] | 정낙훈(xynex) | 2008.12.23 |
구글 번역기 API | 유비키리 | 2008.10.29 |
전체크기로 새창 열기 [1] | ITBANK.kr | 2008.10.01 |
지정된 시간동안 강제로 보여지는 언론사에서 많이 사용하는 광고창 | ITBANK.kr | 2008.10.01 |
항상 같은곳에 있는 광고창 만들기 | ITBANK.kr | 2008.10.01 |
첨부파일 확장자 체크 [정규식] | arimaya | 2008.06.23 |
자파스크립트로 GET으로 넘어온 파라미터 가져오기 [1] | 중딩 | 2008.05.26 |
나만의 위지윅 웹에디터 만들기 - 기본 준비2 [2] | 예뜨락 | 2008.05.11 |
나만의 위지윅 웹에디터 만들기 - 기본 준비1 [3] | 예뜨락 | 2008.05.05 |
나만의 위지윅 웹에디터 만들기 - 글 쓰기에 앞서 [4] | 예뜨락 | 2008.05.05 |
프레임홈일때 부분프레임 무단링크 방지하기 [3] | gosoo99 | 2008.04.08 |
동적 INPUT | june44.myid.net/ | 2008.03.31 |