PHP

데이터베이스

데이터베이스란?

데이터의 저장, 조회, 수정을 편리하고 안전하게 할 수 있도록 고안된 소프트웨어다.

MySQL이란?

데이터베이스라는 분류의 제품군에 속한 구체적인 상품으로 ORACLE에 의해서 개발되고 있다. 오픈소스이고, 가장 많은 사용자를 가지고 있는 데이터베이스 시스템에 속한다. MySQL과 같은 분류에 속한 데이터베이스로는 ORACLE, MSSQL 등이 있다.

데이터베이스와 PHP

일반적으로 데이터를 저장해야 하는 에플리케이션을 구축하는 경우 데이터는 데이터베이스 서버에 저장한다. PHP 에플리케이션의 코드에는 데이터베이스 서버에 접속해서 데이터를 조회/수정/삭제하는 코드를 작성한다. PHP 에플리케이션이 호출되면 PHP 엔진은 PHP 에플리케이션의 코드에 따라서 데이터베이스의 클라이언트가 되어서 데이터베이스에 접속해서 여러가지 작업을 처리한다.

선행지식

본 수업은 데이터베이스에 대한 수업이 아니라 PHP를 이용해서 데이터베이스를 제어하는 방법에 대한 수업이다. 따라서 데이터베이스 자체에 대한 설명은 수업의 범위에 포함되지 않기 때문에 MySQL 수업을 참고한다.

선행작업

MySQL 클라이언트를 이용해서 MySQL 서버에 접속한다. 접속 방법은 아래 동영상을 참고한다.

윈도우에서 MySQL 서버에 접속하는 법

Mac에서 MySQL 서버에 접속하는 법

리눅스에서 MySQL 서버에 접속하는 법

Database, Table 제어

아래의 명령을 입력해서 데이터베이스를 생성한다. 아래의 명령은 opentutorials라는 데이터베이스를 생성한다.

CREATE DATABASE opentutorials CHARACTER SET utf8 COLLATE utf8_general_ci;

아래 명령을 입력해서 데이터베이스 opentutorials를 선택한다.

use opentutorials;

아래 명령을 입력해서 데이터베이스 opentutorials 내에 테이블 topic을 생성한다.

CREATE TABLE topic (
    id  int(11) NOT NULL AUTO_INCREMENT,
    title  varchar(255) NOT NULL ,
    description  text NULL ,
    created  datetime NOT NULL ,
    PRIMARY KEY (id)
);

SQL문을 이용해서 테이블을 제어하는 방법

PDO

PDO(PHP Data Objects)란 여러가지 데이터베이스를 제어하는 방법을 표준화시킨 것이다. 데이터베이스는 다양한 종류가 있다. 그리고 종류에 따라서 서로 다른 드라이버를 사용해 왔는데 드라이버의 종류에 따라서 데이터베이스를 제어하기 위한 API가 달랐다. PDO를 사용하면 동일한 방법으로 데이터베이스를 제어할 수 있다.

PHP의 (mysql_connect와 같은 함수를 사용할 수 있게 해주는)MySQL 확장은 PHP 5.5 버전부터 지원되지 않을 예정이다. 따라서 새로운 에플리케이션의 개발하는 경우 MySQL 확장을 사용해서는 안된다. 하지만 사용하는 환경이 PDO나 mysqli를 지원하지 않거나 기존의 코드가 MySQL 확장이라면 이것의 사용법을 알아야 한다.

또한 PHP에 대한 올바른 사용법을 전파하고 있는 PHP Right Way에서는 POD를 사용할 것을 권하고 있다. 이에 대한 내용은 PHP Right Way의 데이터베이스 편을 참고한다.

PDO를 이용한 데이터베이스의 제어는 PDO 수업에서 설명하겠다.

PDO 수업

MySQL 확장

MySQL 확장은 더 이상 지원되지 않을 기능이다. 하지만 기존의 에플리케이션에서 광범위하고 MySQL 확장을 사용하고 있기 때문에 이것에 대한 사용법을 다루는 것도 의미가 있을 것이다. 이에 대한 사용법을 배우고 싶다면 MySQL 확장 수업을 보자.

MySQL 확장

댓글

댓글 본문
작성자
비밀번호
  1. 신입1
    아주 감사해요
  2. 큰 도움이 되었습니다. 감사합니다.
    대화보기
    • 저두요..
      대화보기
      • JustStudy
        고맙습니다
      • 가로가 행 세로가 열 맞는데요;; 탄소님이 잘못알고 계신듯;; 군필자라면 누구나 알수있지요.
        대화보기
        • 생활코딩왕팬
          슬래시를 역슬래시라고 하시는경우도 있더라구요
          대화보기
          • Database,table 제어 강좌중 text를 title이라고 읽으셧네요!!
          • 탄소
            Database, Table 제어 동영상 8분쯔음에 행렬 설명하시는거 행이랑 열 반대로 된 것 같아요.. 항상 공부 열심히 하고 있습니다.
          • 파수꾼
            명령줄에 패스워드를 입력하는거에 대한 경고이고...-p만 쓰면 패스워드 입력하라고 나올겁니다.
            대화보기
            • 윈도우에서 패스설정후 cmd 란에서 mysql -uroot -p111111 -hlocalhost 을쳐서 접근했는데,
              warning: Using a password on the command line interface can be incecure 라고 나오고,
              그 아랫줄에는 정상적으로 실행되었다고 나오는데, 경고가 뜨는 이유를 모르겟네요.
            • APM_Setup으로 설치해서
              C:\APM_Setup\Server\MySQL5\bin 에 있는 mysql.exe 맞나요?
              그리고 mysql이 서버쪽에만 존재해서 database를 관리해 주는 것인줄 알았는데
              클라이언트 쪽에서도 존재한다는 것은 이번에 처음 알았습니다.
              클라이언트 쪽, 즉 사용자가 인터넷을 사용하면서 mysql을 어떻게 사용하는 것인지 궁금합니다.
            • dongxuan09@naver.com
              맥에서 비트나미가 아닌 MAMP로 설치하신 분들 mysql 터미널 경로입니다.

              /Applications/MAMP/Library/bin/mysql

              혹시 도움이 되실까...
            • 육점이
              뒤로갈수록 한챕터에 강의가 많아지네요!! 하지만 차근차근 따라가니 재미있습니다 감사합니다.
            • egoing
              환경변수 수정하고 cmd를 껏다 다시 켜거나 아니면 해당 디렉토리로 이동해서 직접실행해 보시면 어떤가요?
              대화보기
              • minjae
                계속 cmd 에서 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다라고 뜹니다....ㅠㅠㅠㅠㅠㅠㅠㅠ 어쩌면 좋을까요? 네이버에 검색해서 환경변수 들어가서 path 도 편집해보았는데 실행이 안되네요...ㅠ
                저번 시간부터 GD도 활성화가 하라는대로 해봤는데 안되서 지금 너무 의기소침한 상태입니다....
              • saycheese
                자세한 설명감사합니다! 전문가가 되고 싶어요... ㅎ
              • phpMyAdmin을 사용해서 테이블 생성 또는 수정한다면
                리눅스에서 커맨드 입력하는건 사용하지 않아도 될까요?
              • 샤핀
                이제 조금만 더하면 어느정도 알고 싶었던 부분들이 끝나가네요.
                다 끝나면 삼국지12 게임 데이터를 활용한 php + mysql + 안드로이드 어플을 만들어 보고 싶네요.
                힘들긴 하겠지만요 ㅋ
              • egoing
                접속시에 비밀버호가 누락 되었네요.
                대화보기
                • JPARK
                  ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: Y
                  ES)

                  이런 에러가 출력되면 어떻게 해야 되나요?
                • sjpark
                  description 필드에 한글입력이 안되시는 분들은 :
                  1. C:\Bitnami\wampstack-5.4.25-1\mysql\my.ini 열기
                  2. [client]
                  default-character-set=euckr (UTF --> euckr 로 변경)
                  3. WAMP Stack 에서 MySQL, Apache 서비스 재시작

                  하시면 됩니다.
                • 별모모
                  잘 보고 있습니다. 매듭이 하나씩 풀리는 듯 합니다. 명품 수업. 고맙습니다.
                • 토로롱
                  우와! 저 자바 패스 설정하면서도 왜하는지 몰랐는데 처음 배웠어요!
                  감사합니다!!
                • 서리
                  혹시나 해서 윈도우에서 mysql 비밀번호를 까먹으신 분들을 위해 올립니다.
                  http://faq.hostway.co.kr......794
                • 엠제이
                  오타 신고..
                  1. "PHP Right Way에서는 POD를 사용할 것을 권하고 있다", POD -> PDO
                  2. "종류에 따라서 서로 다른 드라이브를 사용해", 드라이브 -> 드라이버
                  제품별 driver를 의미하는거 같습니다. 드라이브(drive)는 C드라이브, D드라이브 때 사용하는 단어라고 생각 ^^
                • papilios
                  동영상을 보니 10월 31일에 촬영하신 따끈따끈한 강의네요!

                  열정적인 강의에 감사드려요. 또 한편으로 넓고 깊은 프로그래밍 지식이 부러워요 ㅠㅠ
                버전 관리
                egoing
                현재 버전
                선택 버전
                graphittie 자세히 보기