Download presentation
Presentation is loading. Please wait.
1
MySQL 연동 Yang-Sae Moon Department of Computer Science
Kangwon National University, Korea
2
데이터베이스(database), DBMS
데이터베이스? (1/4) MySQL 연동 데이터베이스(database), DBMS 처리/관리하고자 하는 정보 혹은 데이터를 모아놓은 저장소 저장된 정보에 의미를 부여하고, 다양한 연산(검색, 갱신 등)을 제공하는 소프트웨어 시스템 사용자에 의해 지시되는 일련의 연산(transaction)을 효과적이고 정확하게 처리하는 소프트웨어 시스템 상용 DBMS (Commercial DBMS) Disk-based DBMS: Oracle, Informix, Sybase, UniSQL, MySQL, … Main Memory DBMS: Ten-Times, Altibase, UniSQL, …
3
데이터베이스? (2/4) 용어 이해 속성(attribute), 필드(field) 레코드(record), 튜플(tuple)
MySQL 연동 용어 이해 속성(attribute), 필드(field) 이름을 가진 논리적 데이터의 최소 단위 (예: 나이 필드, 이름 속성) 특정 객체(object, entity)의 한 성질의 값 테이블(table)의 attribute로 이해할 수 있음 레코드(record), 튜플(tuple) 논리적으로 서로 연관된 하나 이상의 데이터 필드(항목)들의 집합 엔티티 타입 (예: 학생 = {이름 필드, 학번 필드, 성별 필드, …})
4
데이터베이스? (3/4) 용어 이해 (계속) 테이블(table) 인덱스(index), 색인
MySQL 연동 용어 이해 (계속) 테이블(table) 레코드(정확히는 레코드 인스턴스)의 집합 (set of records) 관계형 DBMS에서는 대부분의 연관성 있는 데이터를 테이블로 관리함 테이블의 예: 학생 테이블, 성적 테이블, 급여 관리 테이블 등 인덱스(index), 색인 검색하고자 하는 레코드를 빠르게 찾아내기 위하여 별도의 (메모리, 디스크) 구조를 관리 일반적으로, Unique한 하나의 속성에 대해서 인덱스를 구성함 트리 혹은 해싱 등의 인덱스 기술(technique)을 사용함 인덱스의 예: 학생 테이블에 대해 “학번” 속성으로 색인을 구성
5
데이터베이스? (4/4) 테이블 구성의 예 Attribute (Column) 학번 1243 1257 1332 1334 1367
MySQL 연동 테이블 구성의 예 Attribute (Column) 학번 1243 1257 1332 1334 1367 1440 이름 홍길동 김철수 박영희 이기수 정미영 최미숙 나이 10 20 19 21 본적 강원 경기 충청 전라 서울 성 남 여 Schema Tuple (Record) Index
6
데이터 접근 (Data Access) (1/6)
MySQL 연동 SQL Structured Query Language (, SEQUEL) 데이터베이스에서 정보를 얻거나 갱신하기 위한 표준화된 언어 DML (Data Manipulation Language) SELECT: 검색 조건에 맞는 데이터(레코드)를 선택(조회) INSERT: 새로운 데이터(레코드)를 삽입 UPDATE: 기존의 데이터(레코드, 속성)를 수정 DELETE: 기존의 데이터(레코드)를 삭제 How about DDL(Data Definition Language)? 데이터 형태 및 데이터베이스 자체를 정의하는 언어 예: 테이블 생성 및 삭제(create/drop table), 인덱스 생성, DB 생성
7
데이터 접근 (Data Access) (2/6)
MySQL 연동 테이블 예제: fruit 테이블 name price color country 사과 10 빨간색 한국 배 20 노란색 복숭아 30 분홍색 수박 40 초록색 감 50 주황색 토마토 60 미국 바나나 70 인도네시아 키위 80 호주 파인애플 90 대추 100
8
데이터 접근 (Data Access) (3/6)
MySQL 연동 SELECT 특정 테이블에서 원하는 데이터(레코드, 속성)를 검색할 때 사용 상기 예는 fruit 테이블을 사용하여 색깔(color)이 빨간색인 과일의 이름(name)과 가격(price)를 가져오는 문장임 SQL에서 특정 데이터가 문자열로 되어 있으면 작은 따옴표(‘)로 묶어주어야 하며 숫자는 작은 따옴표로 묶지 않고 그냥 사용 상기 SQL 문장의 실행 결과는 다음과 같음 SELECT name, price FROM fruit WHERE color = ‘빨간색’; name price 사과 10 토마토 60
9
데이터 접근 (Data Access) (4/6)
MySQL 연동 INSERT 특정 테이블에 새로운 데이터(레코드)를 삽입할 때 사용 상기 예는 fruit 테이블에서 “이름은 멜론이고 가격은 110원, 색깔은 초록색이며 원산지는 한국”인 새로운 레코드를 삽입 상기 SQL 문장의 실행 결과는 다음과 같은 레코드가 fruit 테이블에 추가됨 INSERT INTO fruit VALUES (‘멜론’, 110, ‘초록색’, ‘한국’); name price color country 멜론 110 초록색 한국
10
데이터 접근 (Data Access) (5/6)
MySQL 연동 UPDATE 특정 테이블에서 기존 데이터(레코드)의 내용을 수정할 때 사용 상기 예는 fruit 테이블에서 “이름(name)이 멜론인 레코드의 가격(price)을 120원으로, 원산지(country)를 미국으로 수정”하는 경우임 상기 SQL 문장의 실행 결과, 기존 레코드는 다음과 같이 내용이 변경됨 UPDATE fruit SET price=120, country=‘미국’ WHERE name=‘멜론’; name price color country 멜론 120 초록색 미국
11
데이터 접근 (Data Access) (6/6)
MySQL 연동 DELETE 특정 테이블에서 기존 데이터(레코드)를 지울 때 사용 상기 예는 fruit 테이블에서 “이름(name)이 멜론인 레코드를 삭제”하는 경우임 상기 SQL 문장의 실행 결과, 이름이 멜론인 레코드가 fruit 테이블에서 삭제됨 DELETE FROM fruit WHERE name=‘멜론’;
12
MySQL 사용법 (1/6) MySQL 사용 순서 데이터베이스 접속 사용자 데이터베이스 선택 SQL 명령 실행
mysql_connect() 데이터베이스 접속 mysql_select_db() 사용자 데이터베이스 선택 mysql_query() SQL 명령 실행 mysql_fetch_row() 실행 결과를 한 튜플(행)씩 가져옴 mysql_close() 데이터베이스 접속 해제
13
MySQL 사용법 (2/6) mysql_connect
MySQL이 설치된 hostname에 접근하여 username과 password를 통해 MySQL에 로그인을 수행함 성공하면 MySQL link identifier를 리턴함 (다음 단계에서 활용함) mysql_close() 를 호출하지 않아도 스크립트의 실행이 끝나면 자동으로 close됨 resource mysql_connect ( [string hostname [:port] [:/path/to/socket] [, string username [, string password]]])
14
MySQL 사용법 (3/6) mysql_select_db
link_identifier 서버에서 database_name의 데이터베이스를 연결함 연결에 성공하면 TRUE, 실패하면 FALSE를 리턴함 만일 link_identifier가 없으면 자동으로 이전에 열렸던 link_identifier를 이용하여 데이터베이스를 연결함 bool mysql_select_db ( string database_name [, resource link_identifier])
15
MySQL 사용법 (4/6) mysql_query
지정된 link_identifier를 사용하여 현재 활성화된 데이터베이스에서 주어진 질의문(query)를 실행함 성공하면 TRUE, 실패하면 FALSE를 리턴함 query에 들어가는 문자열의 마지막에는 세미콜론(;)을 사용하지 않음 resource mysql_query ( string query [, resource link_identifier])
16
MySQL 사용법 (5/6) mysql_fetch_row
질의문(주로 Select 문)의 수행 결과에 따라, 각각의 레코드(tuple, row)를 차례로 읽어 들이는 함수임 result로부터 결과 값을 배열로 리턴 이 함수를 계속 호출하게 되면 result로부터 다음 row(레코드)를 차례로 읽어 옴 더 이상 읽어 올 row가 없으면 FALSE를 리턴 array mysql_fetch_row (resource result)
17
DB와 SQL에 대한 자세한 내용은 추후 DB 및 DBP 과목에서 수강하세요!
MySQL 사용법 (6/6) MySQL 연동 mysql_close link_identifier로 연결된 MySQL을 닫음 ( Resource를 반환함) 성공하면 TRUE, 실패하면 FALSE를 리턴함 만일 link_identifier가 연결되어 있지 않으면 마지막으로 연결된 link_identifier를 닫음 bool mysql_close ([resource link_identifier]) DB와 SQL에 대한 자세한 내용은 추후 DB 및 DBP 과목에서 수강하세요!
18
phpMyAdmin – 실행 및 로그인 (1/2)
MySQL 연동 phpMyAdmin DB 및 SQL명령을 자세히 알지 않고서도 MySQL에 대한 사용을 용이하게 해주는 유틸리티 APM을 정상적으로 설치한 경우, 자동적으로 함께 설치됨 실행하기
19
phpMyAdmin – 실행 및 로그인 (2/2)
MySQL 연동 로그인하기 root/apmsetup
20
phpMyAdmin – 새로운 DB 만들기 (1/4)
MySQL 연동 새로운 DB의 이름을 입력하고 만들기를 클릭
21
phpMyAdmin – 새로운 DB 만들기 (2/4)
MySQL 연동 새로운 DB의 생성 결과 대응되는 SQL Statement
22
phpMyAdmin – 새로운 DB 만들기 (3/4)
MySQL 연동 생성된 DB 확인하기
23
phpMyAdmin – 새로운 DB 만들기 (4/4)
MySQL 연동 생성된 DB 확인하기 (결과 화면)
24
phpMyAdmin – 새로운 Table 만들기 (1/5)
MySQL 연동 Table을 만들고자 하는 DB를 선택 (예의 경우 goods)
25
phpMyAdmin – 새로운 Table 만들기 (2/5)
MySQL 연동 만들고자 하는 Table의 이름과 속성(필드) 개수를 입력
26
phpMyAdmin – 새로운 Table 만들기 (3/5)
MySQL 연동 Table을 구성하는 속성의 정보(타입, 크기, 색인 정보 등)를 입력
27
phpMyAdmin – 새로운 Table 만들기 (4/5)
MySQL 연동 Table 생성에 대한 수행 결과 대응되는 SQL Statement
28
phpMyAdmin – 새로운 Table 만들기 (5/5)
MySQL 연동 생성된 Table에 대한 정보 조회 결과
29
phpMyAdmin – 레코드 삽입하기 (1/4)
MySQL 연동 원하는 Table을 메뉴에서 삽입을 클릭
30
phpMyAdmin – 레코드 삽입하기 (2/4)
MySQL 연동 해당 레코드의 (속성) 값을 입력하고 실행
31
phpMyAdmin – 레코드 삽입하기 (3/4)
MySQL 연동 레코드 생성의 수행에 따른 결과 화면 대응되는 SQL Statement
32
phpMyAdmin – 레코드 삽입하기 (4/4)
MySQL 연동 레코드 생성 반복
33
phpMyAdmin – 레코드 검색하기 (1/6)
MySQL 연동 원하는 Table을 메뉴에서 검색을 클릭
34
phpMyAdmin – 레코드 검색하기 (2/6)
MySQL 연동 검색 조건을 입력 (아래 예는 테이블 전체 검색)
35
phpMyAdmin – 레코드 검색하기 (3/6)
MySQL 연동 테이블 전체 검색의 결과 화면 대응되는 SQL Statement
36
phpMyAdmin – 레코드 검색하기 (4/6)
MySQL 연동 검색 조건을 입력 (아래 예는 가격 속성에 조건 입력)
37
phpMyAdmin – 레코드 검색하기 (5/6)
MySQL 연동 가격 속성에 조건을 준 경우의 결과 화면 대응되는 SQL Statement
38
phpMyAdmin – 레코드 검색하기 (6/6)
MySQL 연동 SQL 문장을 직접 입력하는 예제
39
SQL을 포함한 PHP 프로그램 예제 (1/3) 가격이 50원 이상인 레코드들의 출력 프로그램 (fruit_mysql.php)
<html> <body> <?PHP $conn = mysql_connect (‘localhost’, ‘root’, ‘apmsetup’); $db_status = mysql_select_db (‘goods’); if (!$db_status) { error (“DB_ERROR”); exit; } $query = “select * from fruit where price >= 50”; $result = mysql_query ($query);
40
SQL을 포함한 PHP 프로그램 예제 (2/3) 가격이 50원 이상인 레코드들의 출력 프로그램 (계속)
MySQL 연동 가격이 50원 이상인 레코드들의 출력 프로그램 (계속) print “<table border=1><tr>” . “<th>이름</th>” . “<th>가격</th>” . “<th>색깔</th>” . “<th>원산지</th></tr>”; while ($row = mysql_fetch_row ($result)) { print “<tr><td>” . $row[0] . “</td>” . “<td>” . $row[1] . “</td>” . “<td>” . $row[2] . “</td>” . “<td>” . $row[3] . “</td></tr>”; } print “</table>”; ?> </body> </html>
41
SQL을 포함한 PHP 프로그램 예제 (3/3) MySQL 연동 가격이 50원 이상인 레코드들의 출력 프로그램 실행 화면
42
MySQL을 이용한 웹 프로그래밍 (1/7) 테이블(fruit)에 새로운 레코드를 삽입하는 웹 화면의 구성 fruit1.php
<html> <body> <form name=fruit method=post action=“./fruit2.php”> 새로운 데이터를 입력해 주세요<br> 이름: <input type=text name=name><br> 가격: <input type=text name=price><br> 색깔: <input type=text name=color><br> 원산지: <input type=text name=country><br> <input type=submit value=“입력”> <input type=reset value=“취소”> </form> </body> </html>
43
MySQL을 이용한 웹 프로그래밍 (2/7) MySQL 연동 fruit1.php의 실행 결과
44
MySQL을 이용한 웹 프로그래밍 (3/7) 삽입 프로그램: fruit2.php <html> <body>
$conn = mysql_connect (‘localhost’, ‘root’, ‘apmsetup’); $db_status = mysql_select_db (‘goods’); if (!$db_status) { error (“DB_ERROR”); exit; } $query = “INSERT INTO fruit VALUES “ . “(‘$name’, $price, ‘$color’, ‘$country’)”; $result = mysql_query ($query); if ($result) print “입력되었습니다.<br>”; else print “입력되지 않았습니다.<br>”; ?> </body> </html>
45
MySQL을 이용한 웹 프로그래밍 (4/7) MySQL 연동 삽입 프로그램(fruit2.php)의 실행 결과
46
MySQL을 이용한 웹 프로그래밍 (5/7) MySQL 연동 검색을 통한 삽입 결과 확인 (fruit_mysql.php)
47
MySQL을 이용한 웹 프로그래밍 (6/7) fruit_mysql.php의 개선 (Sorting) ..
$query = “select * from fruit where price >= 50 order by price”; $result = mysql_query ($query);
48
MySQL을 이용한 웹 프로그래밍 (7/7) MySQL 연동 fruit_mysql.php의 개선 (Sorting) 결과 화면
Similar presentations