PHP따라하기 - PHP와 웹 데이터베이스의 연동

 

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)

        

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



태초에 나는 개그이야기를 만들었다.
내말을 믿고 나를 따르면 천당,
내말을 믿지않고 나를 따르지 않으면 지옥,
나는 하늘나라(우주)에 사느니라.

그럼 난 외계인?