약 8분
읽기 설정
글자 크기
줄 간격
글꼴
3.1 MySQL 및 MariaDB 소개
웹 개발의 핵심은 데이터의 관리와 처리를 효율적으로 수행하는 것입니다. MySQL과 MariaDB는 가장 널리 사용되는 오픈 소스 데이터베이스 관리 시스템(DBMS)입니다. 이들 시스템은 웹 애플리케이션에서 데이터를 저장하고 조회하는 데 필수적으로 사용됩니다.
1. 웹의 동작 원리
웹 애플리케이션은 다음과 같은 흐름으로 동작합니다:
- 브라우저: 사용자가 웹사이트에 접속하기 위해 사용하는 프로그램입니다.
- 웹서버: 클라이언트(브라우저)의 요청을 처리하여 적절한 응답을 반환합니다.
- PHP: 서버 측에서 실행되는 스크립트 언어로, 웹서버와 데이터베이스 간의 중개 역할을 합니다.
- 데이터베이스: 데이터의 저장소로, PHP를 통해 SQL 쿼리를 통해 데이터를 조작합니다.
- 브라우저: 최종 결과를 사용자에게 보여줍니다.
2. MySQL과 MariaDB
- MySQL: Oracle Corporation에서 관리하고 있는 데이터베이스로, 성능과 안정성에서 많은 사용자의 신뢰를 받고 있습니다.
- MariaDB: MySQL의 포크로, MySQL과 호환성을 유지하면서 추가 기능을 포함하고 있습니다. 두 데이터베이스 모두 SQL을 사용하여 데이터를 조작하며, PDO( PHP Data Objects)를 통해 PHP와 연결할 수 있습니다.
3. 기본 SQL 명령어
MySQL 및 MariaDB에서 사용되는 기본 SQL 명령어는 다음과 같습니다:
- SELECT: 데이터를 조회합니다.
- INSERT: 데이터를 추가합니다.
- UPDATE: 기존 데이터를 수정합니다.
- DELETE: 데이터를 삭제합니다.
데이터베이스를 활용한 CRUD(Create, Read, Update, Delete) 작업을 학습함으로써, 웹 개발의 기본적인 데이터 관리 능력을 배양할 수 있습니다.
4. 보안 고려사항
- SQL Injection: 데이터베이스에 대한 공격 방법으로, 안전한 쿼리 작성을 통해 예방할 수 있습니다.
- XSS, CSRF: 웹 애플리케이션에서 자주 발생하는 보안 문제를 인식하고, 적절한 방어 코드를 작성해야 합니다.
5. 객체지향 프로그래밍(OOP)
코드를 더 효율적으로 관리하기 위해 객체지향 프로그래밍을 활용할 것입니다. 클래스와 객체를 통해 데이터와 기능을 묶어 유지보수성을 높일 수 있습니다.
6. 실습 프로젝트
실습 프로젝트 단계별 진출로는 다음과 같습니다:
- 회원가입
- 로그인
- 게시판
- 댓글
- 파일 업로드
- 관리자 페이지
- REST API
- 간단한 쇼핑몰 기능
각 프로젝트는 독립적으로 관리되며, 코드의 분리를 통해 유지보수성이 향상됩니다. 마지막에 다룰 Laravel과 같은 프레임워크를 위한 기초를 다집니다.
7. 실습 과제
각 장의 끝에는 실습 과제를 통해 학습자가 이론을 바탕으로 실제 기능을 구현할 수 있도록 합니다. 이러한 경험은 실무에서 자주 발생하는 문제를 미리 경험하고 해결하는 방법을 배울 수 있는 기회를 제공합니다.
8. 오류와 디버깅
실무에서 발생할 수 있는 일반적인 오류와 그 해결 방법에 대한 안내도 제공할 것입니다. 디버깅을 통해 코드의 문제를 빠르게 찾고 수정하는 능력을 기를 수 있습니다.
이 모든 요소들은 여러분이 웹 서비스를 직접 개발하는 데 필요한 기초 능력을 배양하는 데 큰 도움이 될 것입니다.
// 데이터베이스 연결 예제
try {
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = ''; // 비밀번호 설정
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
$pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
// 예제: 테이블 생성
$sql = "CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";
$pdo->exec($sql);
// 예제: 데이터 삽입
$sql = "INSERT INTO users (username, password) VALUES (:username, :password)";
$stmt = $pdo->prepare($sql);
$stmt->execute(['username' => 'testuser', 'password' => password_hash('password', PASSWORD_DEFAULT)]);
// 예제: 데이터 조회
$sql = "SELECT * FROM users";
$stmt = $pdo->query($sql);
$users = $stmt->fetchAll();
// 예제: 데이터 업데이트
$sql = "UPDATE users SET password = :password WHERE username = :username";
$stmt = $pdo->prepare($sql);
$stmt->execute(['password' => password_hash('newpassword', PASSWORD_DEFAULT), 'username' => 'testuser']);
// 예제: 데이터 삭제
$sql = "DELETE FROM users WHERE username = :username";
$stmt = $pdo->prepare($sql);
$stmt->execute(['username' => 'testuser']);
댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.