1 / 49

웹 프로그래밍 및 실습 (Web Programming & Practice) MySQL 연동 문양세 강원대학교 IT 대학 컴퓨터과학전공

웹 프로그래밍 및 실습 (Web Programming & Practice) MySQL 연동 문양세 강원대학교 IT 대학 컴퓨터과학전공. 데이터베이스 ? (1/4). MySQL 연동. 데이터베이스 (database), DBMS 처리 / 관리하고자 하는 정보 혹은 데이터를 모아놓은 저장소 저장된 정보에 의미를 부여하고 , 다양한 연산 ( 검색 , 갱신 등 ) 을 제공하는 소프트웨어 시스템 사용자에 의해 지시되는 일련의 연산 (transaction) 을 효과적이고 정확하게 처리하는 소프트웨어 시스템

Download Presentation

웹 프로그래밍 및 실습 (Web Programming & Practice) MySQL 연동 문양세 강원대학교 IT 대학 컴퓨터과학전공

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 웹 프로그래밍 및 실습 (Web Programming & Practice) MySQL연동 문양세 강원대학교 IT대학 컴퓨터과학전공

  2. 데이터베이스? (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) MySQL 연동 • 용어 이해 • 속성(attribute), 필드(field) • 이름을 가진 논리적 데이터의 최소 단위 (예: 나이 필드, 이름 속성) • 특정 객체(object, entity)의 한 성질의 값 • 테이블(table)의 attribute로 이해할 수 있음 • 레코드(record), 튜플(tuple) • 논리적으로 서로 연관된 하나 이상의 데이터 필드(항목)들의 집합 • 엔티티 타입 (예: 학생 = {이름 필드, 학번 필드, 성별 필드, …})

  4. 데이터베이스? (3/4) MySQL 연동 • 용어 이해 (계속) • 테이블(table) • 레코드(정확히는 레코드 인스턴스)의 집합 (set of records) • 관계형 DBMS에서는 대부분의 연관성 있는 데이터를 테이블로 관리함 • 테이블의 예: 학생 테이블, 성적 테이블, 급여 관리 테이블 등 • 인덱스(index), 색인 • 검색하고자 하는 레코드를 빠르게 찾아내기 위하여 별도의 (메모리, 디스크) 구조를 관리 • 일반적으로, Unique한 하나의 속성에 대해서 인덱스를 구성함 • 트리 혹은 해싱 등의 인덱스 기술(technique)을 사용함 • 인덱스의 예: 학생 테이블에 대해 “학번” 속성으로 색인을 구성

  5. 학번 이름 나이 본적 성 1243 홍길동 10 강원 남 1257 김철수 20 경기 남 1332 박영희 19 충청 여 1334 이기수 21 전라 남 1367 정미영 20 서울 여 1440 최미숙 21 강원 여 데이터베이스? (4/4) MySQL 연동 테이블 구성의 예 Attribute (Column) Schema Tuple (Record) Index

  6. 데이터 접근 (Data Access) (1/6) MySQL 연동 • SQL • Structured Query Language (, SEQUEL) • 데이터베이스에서 정보를 얻거나 갱신하기 위한 표준화된 언어 • DML (Data Manipulation Language) • SELECT: 검색 조건에 맞는 데이터(레코드)를 선택(조회) • INSERT: 새로운 데이터(레코드)를 삽입 • UPDATE: 기존의 데이터(레코드, 속성)를 수정 • DELETE: 기존의 데이터(레코드)를 삭제 • DDL(Data Definition Language)? • 데이터 형태 및 데이터베이스 자체를 정의하는 언어 • 예: 테이블 생성 및 삭제(create/drop table), 인덱스 생성, DB 생성

  7. 데이터 접근 (Data Access) (2/6) MySQL 연동 테이블 예제: fruit 테이블

  8. 데이터 접근 (Data Access) (3/6) MySQL 연동 • SELECT • 특정 테이블에서 원하는 데이터(레코드, 속성)를 검색할 때 사용 • 상기 예는 fruit 테이블을 사용하여 색깔(color)이 빨간색인 과일의 이름(name)과 가격(price)를 가져오는 문장임 • SQL에서 특정 데이터가 문자열로 되어 있으면 작은 따옴표(‘’)로 묶어주어야 하며 숫자는 작은 따옴표로 묶지 않고 그냥 사용 • 상기 SQL 문장의 실행 결과는 다음과 같음 SELECT name, price FROM fruit WHERE color = ‘빨간색’;

  9. 데이터 접근 (Data Access) (4/6) MySQL 연동 • INSERT • 특정 테이블에 새로운 데이터(레코드)를 삽입할 때 사용 • 상기 예는 fruit 테이블에서 “이름은 멜론이고 가격은 110원, 색깔은 초록색이며 원산지는 한국”인 새로운 레코드를 삽입 • 상기 SQL 문장의 실행 결과는 다음과 같은 레코드가 fruit 테이블에 추가됨 INSERT INTO fruit VALUES (‘멜론’, 110, ‘초록색’, ‘한국’);

  10. 데이터 접근 (Data Access) (5/6) MySQL 연동 • UPDATE • 특정 테이블에서 기존 데이터(레코드)의 내용을 수정할 때 사용 • 상기 예는 fruit 테이블에서 “이름(name)이 멜론인 레코드의 가격(price)을 120원으로, 원산지(country)를 미국으로 수정”하는 경우임 • 상기 SQL 문장의 실행 결과, 기존 레코드는 다음과 같이 내용이 변경됨 UPDATE fruit SET price=120, country=‘미국’ WHERE name=‘멜론’;

  11. 데이터 접근 (Data Access) (6/6) MySQL 연동 • DELETE • 특정 테이블에서 기존 데이터(레코드)를 지울 때 사용 • 상기 예는 fruit 테이블에서 “이름(name)이 멜론인 레코드를 삭제”하는 경우임 • 상기 SQL 문장의 실행 결과, 이름이 멜론인 레코드가 fruit 테이블에서 삭제됨 DELETE FROM fruit WHERE name=‘멜론’;

  12. mysql_select_db() 사용자 데이터베이스 선택 mysql_query() SQL 명령 실행 실행 결과를 한 튜플(행)씩 가져옴 mysql_fetch_row() 데이터베이스 접속 해제 mysql_close() MySQL 사용법 (1/6) MySQL 연동 MySQL 사용 순서 데이터베이스 접속 mysql_connect()

  13. MySQL 사용법 (2/6) MySQL 연동 • mysql_connect • MySQL이 설치된 hostname에 접근하여 username과 password를 통해 MySQL에 로그인을 수행함 • 성공하면 MySQL link identifier를 리턴함 (다음 단계에서 활용함) • mysql_close() 를 호출하지 않아도 스크립트의 실행이 끝나면 자동으로 close됨 resourcemysql_connect ( [stringhostname [:port] [:/path/to/socket] [, stringusername [, stringpassword]]])

  14. MySQL 사용법 (3/6) MySQL 연동 • mysql_select_db • link_identifier 서버에서 database_name의 데이터베이스를 연결함 • 연결에 성공하면 TRUE, 실패하면 FALSE를 리턴함 • 만일 link_identifier가 없으면 자동으로 이전에 열렸던 link_identifier를 이용하여 데이터베이스를 연결함 boolmysql_select_db ( stringdatabase_name [, resourcelink_identifier])

  15. MySQL 사용법 (4/6) MySQL 연동 • mysql_query • 지정된 link_identifier를 사용하여 현재 활성화된 데이터베이스에서 주어진 질의문(query)를 실행함 • 성공하면 TRUE, 실패하면 FALSE를 리턴함 • query에 들어가는 문자열의 마지막에는 세미콜론(;)을 사용하지 않음 resourcemysql_query ( stringquery [, resourcelink_identifier])

  16. MySQL 사용법 (5/6) MySQL 연동 • mysql_fetch_row • 질의문(주로 Select 문)의 수행 결과에 따라, 각각의 레코드(tuple, row)를 차례로 읽어 들이는 함수임 • result로부터 결과 값을 배열로 리턴 • 이 함수를 계속 호출하게 되면 result로부터 다음 row(레코드)를 차례로 읽어 옴 • 더 이상 읽어 올 row가 없으면 FALSE를 리턴 arraymysql_fetch_row (resourceresult)

  17. MySQL 사용법 (6/6) MySQL 연동 • mysql_close • link_identifier로 연결된 MySQL을 닫음 ( Resource를 반환함) • 성공하면 TRUE, 실패하면 FALSE를 리턴함 • 만일 link_identifier가 연결되어 있지 않으면 마지막으로 연결된 link_identifier를 닫음 boolmysql_close ([resourcelink_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) MySQL 연동 가격이 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”; mysql_query("SET NAMES 'euckr'"); // 주의: 한글 $result = mysql_query ($query);

  40. SQL을 포함한 PHP 프로그램 예제 (2/3) 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) MySQL 연동 테이블(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) MySQL 연동 삽입 프로그램: fruit2.php <html> <body> <?PHP $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’)”; mysql_query("SET NAMES 'euckr'"); // 한글 문제 $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) MySQL 연동 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) 결과 화면

  49. Homework #10 (실습 #8) MySQL 연동

More Related