[PHP] 4장. 데이터베이스와의 상호작용

큐가·2025년 3월 31일
0

AI가 알려주는 PHP

목록 보기
3/3

4.1 SQL 기본

  • SQL: 데이터베이스에서 데이터를 조작하고 관리하기 위해 사용되는 표준화된 언어. SQL을 사용하여 데이터베이스에 쿼리(데이터베이스에서 원하는 정보를 요청하거나 질의하는 행위)를 전송하고 결과를 받아올 수 있다.

  • SQL 종류

    1. 데이터 조작 언어(DML): 데이터를 검색, 삽입, 갱신, 삭제하는데 사용되는 언어. (대표적 구문: SELECT, INSERT, UPDATE, DELETE)
    2. 데이터 정의 언어(DDL): 데이터베이스 구조를 정의하고 조작하는데 사용되는 언어. (대표적 구문: CREATE, ALTER, DROP)
    3. 데이터 제어 언어(DCL): 데이터 베이스에 대한 접근 권한을 제어하는데 사용되는 언어 (대표적 구문: GRANT, REVOKE)
  • 데이터 검색하기(SELECT): SELECT문을 사용하면 데이터 베이스에서 원하는 데이터를 검색할 수 있다. FROM절을 통해 테이블을 지정하고, WHERE 절을 통해 조건을 설정하여 데이터를 필터링 할 수 있다.
SELECT * FROME 테이블명
  • 데이터 필터링하기(WHERE): WHERE 절을 사용하여 데이터를 조건에 따라 필터링할 수 있다. 연산자들을 활용하여 복잡한 조건을 설정할 수 있다.
SELECT * FROM 테이블명 WHERE 조건칼럼 = "값1"
  • 데이터 삽입하기(INSERT): INSERT 문을 사용하여 데이터베이스에 새로운 데이터를 삽입할 수 있다. INSERT문은 INTO 절을 통해 테이블을 지정하고 VALUES 절을 통해 삽입할 데이터를 지정한다.
INSERT INTO 테이블명 (칼럼1, 칼럼2) VALUES ("값1", "값2")
  • 데이터 갱신하기(UPDATE): 데이터베이스의 기존 데이터를 갱신할 수 있다. SET절을 통해 업데이트할 필드와 값을 지정하고 WHERE 절을 통해 갱신할 데이터의 조건을 설정하며 원하는 데이터를 선택적으로 가져올 수 있다.
UPDATE 테이블명 SET 변경할칼럼2 = "값2" WHERE 조건칼럼1 = "값1"
  • 데이터 삭제하기(DELETE): 데이터베이스에서 데이터를 삭제할 수 있다. FROM절로 삭제할 테이블을 지정하고 WHERE 절로 삭제할 데이터의 조건을 설정한다.
DELETE FROM 테이블명 WHERE 조건칼럼 = "값1"
  • 데이터 정렬하기(ORDER BY): 데이터를 특정 기준에 따라 정렬할 수 있다. 오름차순(ASC)이나 내림차순(DESC)으로 정렬할 수 있다.
SELECT * FROM 테이블명 ORDER BY 정렬칼럼 ASC

4.2 MySQL 데이터베이스 소개

MySQL은 가장 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템 중 하나이다. 사용하기 쉽고 안정적이며 확장 가능한 데이터베이스 솔루션으로 알려져 있다.

MySQL 데이터베이스는 데이터를 테이블의 형태로 저장한다. 각 테이블은 행과 열로 구성되고, 행은 실제 데이터를, 열은 데이터의 속성을 나타낸다. 이러한 테이블은 서로 관계를 맺고 데이터의 구조화 관리를 용이하게 한다.

MySQL이 지원하는 데이터베이스 작업(주요 작업만)

  • 데이터 검색(SELCE문 사용)
  • 데이터 삽입(INSERT문 사용)
  • 데이터 수정(UPDATE문 사용)
  • 데이터 삭제(DELETE문 사용)

4.3 PHP에서 MySQL 연결

  • PHP에서 MySQL 데이터베이스와 상호작용하기 위해서는 먼저 MySQL과의 연결을 설정해야 한다. PHP에서는 MySQLi 또는 PDO(PHP Data Objects)라는 두가지 주요한 확장을 제공한다. 이들을 사용하여 MySQL 데이터베이스에 연결하고 쿼리를 실행할 수 있다.

4.3.1 MySQLi 확장

  • MySQLi(i는 improved를 의미)는 PHP 확장으로, MySQL 데이터베이스와의 연결을 지원한다.
  • MySQL과 연결하는 간단한 예시들
    1. 연결 설정
$servername = "localhost";
$username = "사용자이름";
$password = "비밀번호";
$database = "데이터베이스이름";

$conn = new mysqli($servername, $username, $password, $database);

if ($conn->connect_error) {
   die("연결 실패: " . $conn->connect_error);
}

2. 연결 종료

$conn->close();

3. 쿼리 실행

$sql = "SELECT * FROM 테이블명";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
   while($row = $result->fetch_assoc()) {
         echo "필드1: " . $row["필드1"] . ", 필드2: " . $row["필드2"] . "<br>";
   }
} else {
   echo "결과 없음";
}

4.3.2 PDO 확장

  • PDO는 PHP의 데이터베이스 추상화 계층이다. 이를 사용하여 다양한 데이터베이스에 일관된 방식으로 접근할 수 있다.
  • PDO를 사용하여 MySQL과 연결하는 간단한 예제
    1. 연결 설정
$servername = "localhost";
$username = "사용자이름";
$password = "비밀번호";
$database = "데이터베이스이름";

try {
   $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   echo "연결 성공";
} catch(PDOException $e) {
   echo "연결 실패: " . $e->getMessage();
}

2. 연결 종료

$conn = null;

3. 쿼리 실행

$sql = "SELECT * FROM 테이블명";
$stmt = $conn->query($sql);
$result = $stmt->fetchAll();

foreach($result as $row) {
   echo "필드1: " . $row["필드1"] . ", 필드2: " . $row["필드2"] . "<br>";
}
  • MySQLi와 PDO는 각각의 장단점이 있어 사용자의 선호나 프로젝트의 요구에 따라 선택할 수 있다.
profile
대학교 2학년, 컴퓨터학과

0개의 댓글