6. PHP와 웹 데이터베이스의 연동
웹 데이터베이스 연동이라 함은 웹 사이트를 통해서 제공되는 여러 가지 서비스에 필요한 데이터를 보다 빠르고 효율적으로 관리할 수 있도록 데이터 저장이나 변경, 삭제, 검색 등의 일반 데이터베이스 작업을 웹 상에서 구현하는 것을 말한다.
1. 데이터베이스 질의어(SQL)다루기
데이터베이스 내에 저장된 데이터를 대상으로 삽입, 수정, 삭제, 검색 등의 처리를 하기 위해서는 해당 데이터베이스에 SQL(Structured Query Language)이라고 하는 표준화 된 명령어를 전달해야 한다. 데이터베이스와 연동하기 위해 제공되는 API 함수는 데이터베이스 서버에 접속하고 여기에 SQL 명령어를 전달한 후 그 처리 결과를 가져오는 일련의 함수들로 구성되어 있다.
SQL문은 데이터 정의문과 데이터 조작문의 두 가지로 나눌 수 있다. 데이터 정의문은 테이블을 생성하고 이 테이블 내에 데이터와 데이터 타입을 정의하는 작업과 생성된 테이블을 수정 및 삭제하는 작업을 수행한다.
? 새로운 테이블의 생성(CREATE TABLE)
? 생성된 테이블의 변경(ALTER TABLE)
? 생성된 테이블의 삭제(DROP TABLE)
데이터 조작문은 생성된 테이블 내에 새로운 데이터를 저장하거나 이미 저장되어 있는 데이터를 수정, 삭제하는 작업, 그리고 검색 조건을 만족하는 데이터를 검색하는 작업을 수행한다.
? 새로운 데이터의 삽입(INSERT)
? 데이터의 수정(UPDATE)
? 데이터의 삭제(DELETE)
? 데이터 검색(SELECT)
¤ 새로운 테이블의 생성(CREATE TABLE)
명령문은 다음과 같다.
|
CREATE TABLE 테이블명 (
필드명 데이터타입[NOT NULL]
{, 필드명 데이터타입 [NOT NULL]}*
[, PRIMARY KEY(필드명)}
) |
PRIMARY KEY(필드명)는 CREATE TABLE 문에서 정의한 필드 중 ()안에 지정한 필드를 테이블의 기본키로 설정한다. 기본키는 테이블 내에 저장된 레코드를 다른 레코드와 구별시켜주는 역할을 하는 식별자이다. 기본키로 설정된 필드에는 동일한 값이 두 개 이상 존재할 수 없다.
이름(name)과 아이디(id), 전자우편(email), 성별(sex)을 필드로 갖는 userdb 테이블을 CREATE TABLE문으로 정의하면 다음과 같다.
|
CREATE TABLE userdb (
name CHAR(8),
id VARCHAR(10) NOT NULL,
email VARCHAR(40),
sex CHAR(1),
PRIMARY KEY(id)
) |
여기서 필드 id는 기본키로 설정하였으므로 NOT NULL로 정의하였다.
¤ 생성된 테이블의 변경(ALTER TABLE)
기존의 테이블에 미처 정의하지 못한 필드를 추가시킬 수 있고 필드의 데이터타입을 바꿀 수도 있다. 또한 삭제도 가능하다.
|
ALTER TABLE 테이블명
ADD[COLUMN] 필드명 필드타입
or
CHARNGE [COLUMN] 기존필드명 새필드명 필드타입
or
DROP [COLUMN] 필드명 |
|
ALTER TABLE userdb ADD COLUMN addr VARCHAR (100)
OR
ALTER TABLE usedb ADD addr VARCHAR(100) //addr 추가
ALTER TABLE userdb CHANGE COLUMN addr address VARCHAR(255)
//addr을 address 로 바꾸기.
ALTER TABLE userdb DROP COLUMN address // address 삭제 |
¤ 생성된 테이블의 삭제(DROP TABLE)
¤ 데이터 검색(SELECT)
|
SELECT [DISTINCT] 테이블명 {, 테이블명}*
FROM 필드명{, 필드명}*
[WHERE 검색조건]
[ORDER BY 필드명[ASC or DESC] {, 필드명[ASC or DESC]}*]
[GROUP BY 필드명 {, 필드명}*]
[HAVING 검색조건] |
|
SELECT name, id FROM userdb WHERE level ='B'
//사용자 레벨이 B인 사용자의 이름과 아이디 검색
SELECT DISTINCT level FROM userdb
//사용자 레벨의 종류(결과 레코드의 중복 제거)
SELECT name, id, email FROM userdb WHERE milage > 300 AND sex='M'
//조건 검색
SELECT name, id, milage FROM userdb WHERE milage >=300 DRDER BY milage DESC
//내림차순으로 검색결과 정렬
SELECT name, id, email, milage+300 FROM userdb WHERE ik = 'soony'
//id가 soony인 레코드의 milage를 300점 올린다.(검색 결과에 산술 계산)
SELECT name, '님의 마일리지는‘, milage, '점입니다.’ FROM userdb WHERE milage >= 300 ORDER BY milage
// 물자열 처리
SELECT {count(필드명), sum(필드명), min(필드명), max(필드명), avg(필드명) FROM userdb WHERE sex ='F'
//그룹함수를 이용한 검색
SELECT level, max(milage), min(milage), avg(milage) FROM userdb GROUP BY level
//각 레벨당 사용자의 마일이지 최대, 최소, 평균값을 GROUP BY를 이용한 검색 |
|
SELECT sex, max(milage), min(milage), avg(milage) FROM userdb GROUP BY sex HAVING sex ='F'
//GROUP BY로 지정한 필드에 대한 검색 조건을 지정한다.
SELECT name, email, milage, sex FROM userdb WHERE sex = 'F' AND milage BETWEEN 300 AND 400
//수치 영역 안에 포함되는 값을 갖는 데이터을 검색한다.
SELECT name FROM userdb WHERE name LIKE '%현%‘
//필드값의 문자열을 검색한다.
SELECT name, id FROM userdb WHERE email IS NULL
//필드값이 NULL 인 레코드 검색 |
¤ 새로운 데이터의 삽입(INSERT)
|
INSET
INTO 테이블명[(필드명{[, 필드명]}*)]
VALUES(필드값) |
|
INSERT INTO userdb (naem, id, email, sex, milage, level) VALUES ('이완철‘,’yunka1010', 'wclee@medialab,taejon.ac.kr'. 'M', 350, 'B') |
¤데이터의 수정(UPDATE)
|
UPDATE 테이블명
SET 필드명 = 필드값 또는 산술식 {, 필드명 = 필드값 또는 산술식}*
[WHERE 검색조건] |
|
UPDATE userdb SET sex ='F' WHERE name =‘김현아’
//김현아의 sex 필드의 값을 ‘F’로 수정한다. WHERE절로 검색 조건을 명시하지 않으면 해당 테이블(userdb)내의 모든 레코드의 sex 값이 ‘F'로 수정된다. |
¤데이터의 삭제(DELETE)
|
DELETE
FROM 테이블명
[WHERE 검색 조건] |
|
DELETE FROM userdb WHERE id='이재봉‘ |
2. MySQL 데이터베이스의 사용법
/usr/local/mysql 디렉토리의 bin 디렉토리는 MySQL 서버의 기동과 종료, 데이터베이스의 생성 및 삭제, 백업과 복구 등 MySQL 서버를 운영하는데 꼭 필요한 관리자 모드 실행 파일과 관련 유틸리티 파일을 담고 있다.
¤ MySQl 서버의 기동
MySQL 서버를 기동시키려면 root 사용자로 다음과 같은 명령을 주면 된다.
MySQL을 처음 설치하면 root 의 패스워드가 설정되어 있지 않습니다.
새로운 사용자 추가 방법
3. PHP에서 지원하는 MySQL API 함수
API (Application Program Interface) ; 응용프로그램 인터페이스 API는 운영체계나 다른 응용프로그램에게 처리요구를 할 수 있도록 컴퓨터 운영체계나 다른 응용프로그램에 의해 미리 정해진 특별한 메쏘드이다. API는 운영체계나 프로그램의 인터페이스로서 사용자와 직접적으로 대하게 되는 그래픽 사용자 인터페이스나 명령형 인터페이스와 뚜렷한 차이가 있다.
|
함수명 |
내용 |
|
mysql_connect |
mysql 서버에 연결한다. |
|
mysql_close |
mysql 서버에 대한 연결을 종료한다. |
|
mysql_select_db |
mysql 서버에 있는 특정 데이터베이스를 작업 대상 데이터베이스로 선택한다. |
|
mysql_errno |
mysql_errno 함수 이전에 실행된 mysql 작업에 에러가 발생했을 경우 해당 에러의 고유 번호를 반환한다. |
|
mysql_error |
|
|