[ 2주차 수업 ] 데이터베이스와 SQL 쿼리문 & DB 요청

2025. 4. 16. 15:39·웹 모의해킹 취업반 스터디/수업

⯌ 데이터베이스와 SQL 쿼리문

⟡ 데이터베이스 (Database, DB)

: 데이터를 구조화하여 효율적으로 검색하고 갱신할 수 있도록 통합·관리하는 데이터의 집합체입니다.

DB는 엑셀에 비유하여 이해하면 쉽습니다.

  • Database : 엑셀 파일
  • Table : 엑셀 시트
  • Column : 열, 데이터 종류, 세로데이터
  • Row : 행, 가로데이터

가상머신에서 실습을 통해 SQL 쿼리 구문에 대해 알아보겠습니다.

 

phpmyadmin : MySQL이라는 DB를 웹페이지에서 관리할 수 있게 만든 시스템.

계정 | admin / student1234

 

SQL : WAS와 DB서버가 서로 소통을 나눌 때 사용하는 언어

⟡ SQL 쿼리문

➣ select : 데이터를 가져오는 구문.

select [Column 이름] from [Table 이름]

= [Table]에 있는 [특정 Column]을 가져오는 쿼리문.

 

● select name from test_table

= test_table에 있는 name이라는 Column 가져오는 쿼리문.

● select name, pass from test_table

= test_table에 있는 name과 pass라는 Column 가져오는 쿼리문.

● select * from test_table

= test_table의 모든 Column을 가져오는 쿼리문.

 

➣ insert : 데이터를 입력하는 구문.

insert into [Table 이름] (Column이름) value (값)

= [Table]에 있는 [특정 Column]에 '값'을 입력하는 쿼리문.

 

● insert into test_table (name, score, pass) value ('name1', '80', '2222')

= test_table에 있는 (name, score, pass라는 Column)에 (name1, 80, 2222) 값을 순서대로 입력하는 쿼리문.

● insert into test_table value (NULL, 'dangdol', '70', '3333')

= test_table에 (Null, dangdol, 70, 3333) 값을 순서대로 입력하는 쿼리문.

 

➣ where : 조건에 맞는 데이터만 추출하고 싶을 때 사용하는 구문.

select * from [Table] where [조건]

= [조건]에 맞는 [Table]의 모든 정보를 가져오는 구문.

 

● select name, pass from test_table where name='normaltic'

= 조건을 하나만 지정한 구문입니다.

● select name, pass from test_table where name='normaltic' and pass='1234'

= 두 개의 조건을 모두 충족하게끔 지정한 구문입니다.

● select name, pass from test_table where name='normaltic' or pass='1234'

= 두 개의 조건 중 하나만 충족해도 되게끔 지정한 구문입니다.

 

⯌ DB 연동

WAS는 DB서버에게 아이디와 비밀번호를 전달함으로써 DB서버에게 데이터를 요청이 가능해집니다.
(이 실습에서는 phpmyadmin에 들어갈 때 사용했던 아이디와 비밀번호가 되겠습니다.)

DB에게 자신이 인증된 사람이라는 것을 알려주기 위해 아이디와 비밀번호를 알려주는 것입니다.

 

즉, WAS에는 무조건 DB의 아이디와 비밀번호가 저장되어 있을 수밖에 없습니다.
WEB서버의 쉘이 털렸다는 것은 DB도 같이 털렸다는 것을 뜻합니다.

<?php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'admin');
define('DB_PASSWORD', 'student1234');
define('DB_NAME', 'test');

$db_conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
// mysqli_connect 함수의 결과를 변수$db_conn에 저장.
$sql = "select * from test_table";

$result = mysqli_query($db_conn, $sql);

?>
db_test.php

⟡ define() 함수 

- 상수를 선언하는 함수입니다.

- 뒤에 위치한 값을 앞에 위치한 이름으로 부를 수 있게 됩니다.

 

"localhost"라고 적는 이유 : DB서버의 주소를 적는 위치입니다.

현재 실습에서는 WEB서버와 WAS, DB서버가 모두 한 가상머신 내에 존재하기 때문에 자기 자신의 주소를 적는 것입니다.

( 자기 자신을 뜻하는 IP주소 "127.0.0.1"으로 기입해도 무관.)

 

⟡ mysqli_connect() 함수

  • DB에 로그인하는 함수
  • 순서 : DB서버의 IP주소, 아이디, 비밀번호, DB이름

이 함수를 사용하면 MySQL 서버와의 연결을 생성하며, 반환값은 MySQL 서버와의 연결을 나타내는 객체입니다.

커넥션 객체라고 부르며, 이 객체를 이용해서 sql을 실행하는 것입니다.

 

⟡ DB에서 원하는 값 요청

doldol의 점수를 출력하는 과정

1) 커넥션 개체를 $db_conn에 저장

2) DB서버에게 요청할 SQL 구문을 $sql에 저장

3) 해당 DB에서 $sql에 저장된 구문으로 가져온 정보를 $result에 저장

4) 결괏값에서 mysqli_fetch_array() 함수로 한 줄을 뽑아 $row에 저장

5) $row 변수에 저장되어 있는 내용 중 score 라는 Column의 항목의 값을 출력

6) var_dump()를 통해 데이터의 정보 출력 (디버깅 용도)

doldol의 점수 출력과 $row변수의 정보 출력

$result = mysqli_query($db_conn, $sql); ← 여기서 바로 특정한 값을 불러오지 않고 $row에 저장한 후 불러오는 이유가 있습니다.

mysqli_query 함수로 받아낸 결괏값에서 특정한 값만 불러올 수 없기 때문입니다.

줄을 변수에 담은 후에 위와 같이 특정한 값을 불러오는 방식으로 가능합니다.

 

var_dump() 함수를 통해 $row에 저장된 데이터의 정보들을 출력합니다.

(주로 디버깅 용도로 사용되며, 변수가 어떤 자료형인지와 어떤 값이 저장되어 있는지 쉽게 확인할 수 있습니다.)

'웹 모의해킹 취업반 스터디 > 수업' 카테고리의 다른 글

[ 3주차 수업 ] 식별, 인증 & 로그인 로직 & 쿠키, 세션  (0) 2025.04.23
[ 1주차 수업 ] 웹 서버 이해 & 동적 페이지  (0) 2025.04.07
'웹 모의해킹 취업반 스터디/수업' 카테고리의 다른 글
  • [ 3주차 수업 ] 식별, 인증 & 로그인 로직 & 쿠키, 세션
  • [ 1주차 수업 ] 웹 서버 이해 & 동적 페이지
ㅤ민도화ㅤ
ㅤ민도화ㅤ
  • ㅤ민도화ㅤ
    Security Note
    ㅤ민도화ㅤ
    • 분류 전체보기 (6)
      • 웹 모의해킹 취업반 스터디 (6)
        • 수업 (3)
        • 과제 (3)
  • 태그

    웹 모의해킹 취업반
    SQLi
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
ㅤ민도화ㅤ
[ 2주차 수업 ] 데이터베이스와 SQL 쿼리문 & DB 요청
상단으로

티스토리툴바