SQL | MySQL 다루기

S·2024년 2월 18일
0

WEB

목록 보기
4/8

개발 환경 설정


  1. XAMPP을 켜고 MySQL을 Start 한다.

  2. http://localhost/phpmyadmin/ 에 접속한 뒤, 사용자 계정 탭 에서 사용자 추가를 눌러 데이터베이스와 데이터베이스 사용자(user)를 만든다.

  3. 모든 권한을 체크한다.

  4. 왼쪽 하단의 실행 버튼을 누른다.

 

SQL 기본 문법


테이블 생성

CREATE TABLE 테이블 이름 (1이름,2이름
    인덱스
) ENGINE=MySQL 엔진이름;

예시 쿼리

CREATE  TABLE  `tbl_person` ( 
    `person_id`  INT  NOT  NULL AUTO_INCREMENT ,  
    `name`  VARCHAR(256) NOT  NULL , 
    `age`  INT NOT  NULL ,     
    PRIMARY  KEY (`person_id`)
) ENGINE = InnoDB;
  • NOT NULL 은 비어있으면 안 된다는 의미이다.
  • InnoDB 는 MySQL 데이터베이스 엔진이다.

 

테이블에 값 가져오기

SELECT 컬럼들 FROM 테이블명 WHERE 조건컬럼=조건값;

예시 쿼리

SELECT * FROM  tbl_person  where person_id = 1;
  • * 은 모든 칼럼을 의미한다.

 

테이블에 값 입력하기

INSERT INTO 테이블 이름 (컬럼1이름,컬럼2이름) values( 컬럼1, 컬럼2);

예시 쿼리

INSERT INTO tbl_person (name, age) values ('yse', 50);
  • 칼럼과 값은 각각 ,로 구문하며 칼럼의 개수와 값의 개수는 일치해야 한다.
  • 칼럼은 미리 테이블에 만들어져 있어야 한다.
  • 문자열을 '가 아닌 "로 감싼 경우 동작하지 않는다.

 

테이블에 값 수정하기

UPDATE 테이블명 set 컬럼1이름=컬럼1, 컬럼2이름=컬럼2, 컬럼3이름=컬럼3where 조건

예시 쿼리

UPDATE tbl_person set name='yse', age='30' where person_id = 1;

 

테이블에 값 삭제하기

DELETE 테이블명 where 조건

예시 쿼리

DELETE FROM tbl_person  where person_id = 1;

 

PHP에서 MySQL 접속하기

db.php

<?php
function db_get_pdo()
{
	// 데이터베이스 서버의 주소
    $host = 'localhost'; // localhost: 본인의 컴퓨터
    // 데이터베이스 서버의 포트
    $port = '3306';
    // 데이터베이스 이름
    $dbname = 'php3min';
    // 인코딩 방법
    $charset = 'utf8';
    // 데이터베이스 사용자 이름
    $username = 'php3min';
    // 데이터베이스 사용자 비밀번호
    $db_pw = "1234";
    // 데이터베이스 연결 문자열
    $dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=$charset";
    $pdo = new PDO($dsn, $username, $db_pw); // pdo: 데이터베이스에 연결
    return $pdo; 
}

 

PHP에서 MySQL 값 가져오기

dp.php

function db_select($query, $param=array()){
	// MySQL에 접속하는 객체
    $pdo = db_get_pdo();
    try {
        $st = $pdo->prepare($query);
        // 쿼리 실행
        $st->execute($param);
        // 실행한 데이터를 가지고 옴
        $result = $st->fetchAll(PDO::FETCH_ASSOC);
        // null로 초기화할 경우 데이터베이스 커넥션 끊김
        $pdo = null;
        return $result;
    } catch (PDOException $ex) {
        return false;
    // 쿼리 실패 혹은 다른 문제 발생 시에도 쿼리 연결을 끊음
    } finally {
        $pdo = null;
    }
}

// 실행 결과를 출력하기 위한 부분
var_dump(db_select("select * from tbl_person"));
echo "<br />";
var_dump(db_select("select * from tbl_person where person_id = ?", array(1)));
echo "<br />";
var_dump(db_select("select * from tbl_person where person_id = :person_id", array('person_id' => 1)));

실행 결과

array(1) { [0]=> array(3) { ["person_id"]=> string(1) "1" ["name"]=> string(3) "yse" ["age"]=> string(2) "30" } } 

쿼리에 파라미터를 전달하는 방법

  1. 쿼리 문자열 안에 ? 로 넣는다.
    db_select("select * from tbl_person where person_id = ?", array(1))
    위 구문은 아래와 같은 쿼리를 실행한다.
    select * from tbl_person where person_id = 1
  2. 쿼리 문자열 안에 :키 로 넣는다.
    db_select("select * from tbl_person where person_id = :person_id", array('person_id' => 1))
    위 구문은 아래와 같은 쿼리를 실행한다.
    select * from tbl_person where person_id =

 

PHP에서 MySQL 값 입력하기

dp.php

// 성공 시 PK를, 실패 시 false를 반환한다.
function db_insert($query, $param = array())
{
    $pdo = db_get_pdo();
    try {
        $st = $pdo->prepare($query);
        $result = $st->execute($param);
        // 자동으로 설정되는 PK를 가져옴
        $last_id = $pdo->lastInsertId();
        $pdo = null;
        if ($result) {
            return $last_id;
        } else {
            return false;
        }
    } catch (PDOException $ex) {
        return false;
    } finally {
        $pdo = null;
    }
}

var_dump(
    db_insert(
        "insert into tbl_person (name, age) values (?,?)",
        array("php", 25)
    )
);

// 실행 확인 후 삭제 시작
var_dump(
    db_insert(
        "insert into tbl_person (name, age) values (:name,:age)",
        array("name" =>"php7", "age" => 5)
    )
);
// 실행 확인 후 삭제 끝

실행 결과

string(1) "2" string(1) "3" 

 

PHP에서 MySQL 값 수정 / 삭제하기

dp.php

function db_update_delete($query, $param = array())
{
    $pdo = db_get_pdo();
    try {
        $st = $pdo->prepare($query);
        $result = $st->execute($param);
        $pdo = null;
        return $result;
    } catch (PDOException $ex) {
        return false;
    } finally {
        $pdo = null;
    }
}

// 실행 확인 후 삭제 시작
var_dump(
    db_update_delete(
        "update tbl_person set age=:age where person_id = :person_id", 
        array("age" => 4, "person_id" => 1) 
    )
);

var_dump(
    db_update_delete(
        "delete from tbl_person where person_id = ?", 
        array(3) 
    )
);
// 실행 확인 후 삭제 끝

실행 결과

bool(true) bool(true) 
profile
Someone has been here

0개의 댓글