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. meek
    17-08-07  감사합니다.
    윈도우에서 맥으로 갈아타느라 너무 많이쉬어버린감도 없잖아 있지만..
  2. sheis
    잘 봤어요^^
  3. 카이리
    2017.7.17 PHP Start 2nd day to here.
  4. treehouse
    웹애플리케이션 만들기 데이타베이스 섹션 보시고 이거보시면 더욱더 좋습니다
    9롬20000
  5. .profile이 없어서 sudo nano .profile 파일을 생성 후에 open ~/.profile을 실행했는데 (사용자가 ‘.profile’ 파일을 소유하지 않고 있으며, 이에 대한 쓰기 권한이 없습니다.) 라고 하고 복사본을 말들어서 편집하라는 메시지 뜹니다. sudo 관리자 권한으로 실행해도 똑같습니다. .profile의 권한문제인가요?
  6. 성윤
    window에서 DB 접속할대 비번을 까먹었는데,,,
    cmd창에서 비번 찾는 방법 알고 계신가요??
  7. 박지수
    비밀번호를 잘 못 입력한 것 같습니다. 처음 bitnami를 설치하실 때 입력한 비밀번호를 입력하시면 됩니다. 저도 똑같은 상황이 발생해서, 아래에서 -u root -p -h localhost 라고 입력하고, password 나오면 입력하니까 됩니다.
    대화보기
    • 대바기
      mysql monitor 실행하는단계에서 bin 폴더에 mysql파일이 없는데 어찌해야죠? 버전이 달라서그런건가요..?
    • 고맙습니다~
    • 이정민
      밑에 몇분들과 같이 명령행 인터페이스에 비밀번호를 설정하지말라는 오류메세지가 떠서 -p 만 썼더니
      비밀번호를 입력하라는 명령이 뜨더군요 그래서 비밀번호를 111111로 정하고 엔터를 땅 쳤는데
      ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
      이런 문구가 뜨네요 다 된거 맞나요?
    • mysql하위 bin 폴더를 찾아보세요.
      대화보기
      • 처음
        wamp 7.1.0 버젼을 다운로드 받았고 mysql파일에 들어갔더니 mysql.exe 파일이 다운로드 되어있지 않았습니다. 버젼이 달라서 다운이 안된것인지 파일이 지워진건지 모르겠습니다.
      • NamJin Kim
        감사합니당
      • 신입1
        아주 감사해요
      • 큰 도움이 되었습니다. 감사합니다.
        대화보기
        • 저두요..
          대화보기
          • JustStudy
            고맙습니다
          • bowl
            가로가 행 세로가 열 맞는데요;; 탄소님이 잘못알고 계신듯;; 군필자라면 누구나 알수있지요.
            대화보기
            • 생활코딩왕팬
              슬래시를 역슬래시라고 하시는경우도 있더라구요
              대화보기
              • 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 자세히 보기