1 / 26 Lec. 2: MySQL and RMySQL Instructor: SANG-HOON CHO DEPT. OF STATISTICS AND ACTUARIAL SCIENCES Soongsil University
1. Introduction 2 / 26 이번강의에서는 MySQL 관계형데이터베이스관리시스템 (RDBMS, Relational Database Management System) 과 MySQL 이제공하는 SQL 언어 (SQL, Structured Query Language) 에대해소개함 MySQL, 4th edition, Paul DuBois, 2008, Addison-Wesley 에기초 더나아가 R 에서 MySQL DB 에접속해 SQL 언어를사용하여원하는자료를생성하는방법을소개함
1. Introduction 3 / 26 MySQL 을사용하는이유 속도 : 기록파일처리및탐색시간빠름 사용편의성 확장성 : 다른언어들 (C, Perl, Java, PHP, Phython, 등 ) 과연동하여사용가능 연결성 : 원격접속과전자적전송가능 가용성과비용 : Open Source 프로젝트, GNU 의 GPL(General Public License)
1. Introduction 4 / 26 NICE Tool: a Visual Query Tool for MySQL phpmyadmin customized for 건강보험공단자료쿼리 MySQL PHP: 웹애플리케이션작성언어. 데이터베이스와쉽게연동. Apache: 웹서버 http://statistics.ssu.ac.kr/ statistics/ym/
2. Getting Started 5 / 26 MySQL 설치 최신버젼 MySQL 5.7.18 설치하기 아래의블로그글을참조 : http://minstar0410.tistory.com/5
2. Getting Started 6 / 26 Sample Database 자료 MySQL 책의자료, sampbd.zip, 를다운로드 http://www.kitebird.com/mysql-book/4ed.php 다운로드한압축파일을압축해제 C: root 에 tmp 디렉토리를생성하여압축해제한파일들을이디렉토리안으로이동시킴
7 / 26 3. 기본데이터베이스용어 MySQL 은관계형데이터베이스관리시스템 (RDBMS, Relational Database Management System) 으로분류됨 데이터베이스 (RDBMS 에서 DB 에해당 ): 정보를단순하고규칙적인모양새로구성해서저장하는저장소 어떤데이터베이스안에모아놓은데이터들은테이블로구성됨 각테이블은행과컬럼으로구성됨 테이블안의각행을레코드라고함 레코드들은몇조각의정보로이루어짐 관리시스템 ( MS 에해당 ): 레코드들을삽입, 탐색, 수정, 또는삭제할수있도록해서자료들을사용할수있게해주는소프트웨어 관계형 (Relational 인 R 에해당 ): DBM 의특정한종류. 여러연관된테이블들에서정보를찾는데용이함
3. 기본데이터베이스용어 8 / 26
3. 기본데이터베이스용어 9 / 26 SQL: MySQL 과대화를하려면, SQL(Structured Query Language) 이라고부르는언어를사용해야함 MySQL 서버 / 클라이언트
4. MySQL 튜토리얼 10 / 26 MySQL 프로그램실행및서버연결 MySQL 5.7 Command Line Client 실행 root 계정으로패스워드 (MySQL 설치시생성 ) 를입력하여서버에연결 % mysql -u root -p Enter password: 서버에연결된세션종료 mysql> quit
4. MySQL 튜토리얼 11 / 26 쿼리문실행하기 서버에연결하고나면쿼리를실행할준비가된것임 mysql 에원하는쿼리를타이핑해서넣으면됨 쿼리의끝부분에는세미콜론문자 ( ; ) 를타이핑하고엔터를눌러야함. 세미콜론은쿼리작성이완료되었음을알리는것임 mysql 은쿼리를서버로전송하여실행한결과를보여줌 현재의날짜와시간, 이용자, MySQL 버젼에대해요청하는쿼리 mysql> SELECT NOW(); mysql> SELECT NOW();SELECT USER();SELECT VERSION(); mysql> SELECT NOW(), -> USER(), -> VERSION() -> ;
4. MySQL 튜토리얼 12 / 26 데이터베이스생성하기 서버가관리하고있는데베이스들을나열 mysql> SHOW DATABASES; 서버에 sampdb 이름의새로운데이터베이스를생성및확인 mysql> CREATE DATABASE sampdb; mysql> SHOW DATABASES; sampdb 데이터베이스선택및확인 mysql> USE sampdb; mysql> SELECT DATABASE();
4. MySQL 튜토리얼 13 / 26 테이블만들기 쿼리일반문법 CREATE TABLE tbl_name (column_specs); 서버의 sampdb 안에 president 테이블생성 CREATE TABLE president ( last_name VARCHAR(15) NOT NULL, first_name VARCHAR(15) NOT NULL, suffix VARCHAR(5) NULL, city VARCHAR(20) NOT NULL, state VARCHAR(2) NOT NULL, birth DATE NOT NULL, death DATE NULL );
4. MySQL 튜토리얼 14 / 26 테이블만들기 create president.sql 파일에테이블생성쿼리를미리작성한후, 파일을사용하여테이블을생성할수있음 서버에접속하여 sampdb 를선택한상태라면다음쿼리를실행 mysql> source C:/tmp/create_president.sql; 서버에접속하기전이면 Command Line Client 에서다음쿼리를실행 % mysql sampdb < c:/tmp/create_president.sql;
15 / 26 4. MySQL 튜토리얼 Exercise 1 create member.sql 파일을사용하여 member 테이블을생성해보세요 create student.sql 파일을사용하여 student 테이블을생성해보세요 create grade event.sql 파일을사용하여 grade event 테이블을생성해보세요 create score.sql 파일을사용하여 score 테이블을생성해보세요 create absence.sql 파일을사용하여 absence 테이블을생성해보세요
4. MySQL 튜토리얼 16 / 26 테이블구조 sampbd 에생성된테이블들을출력 mysql> SHOW TABLES; president 테이블의구조출력 mysql> DESCRIBE president; mysql> DESC president; mysql> EXPLAIN president; mysql> SHOW COLUMNS FROM president; mysql> SHOW FIELDS FROM president; LIKE 절을추가해서주어진패턴에대응되는컬럼이름들만표시 mysql> SHOW COLUMNS FROM president LIKE %name ;
4. MySQL 튜토리얼 17 / 26 테이블구조 student 테이블의 sex 컬럼출력 mysql> DESCRIBE student sex ; sex 는어떤학생이남학생인지여학생인지여부를나타냄. ENUM( 열거형, enumeration) 컬럼은지정된값들중에서단하나만을취할수있다는의미
4. MySQL 튜토리얼 18 / 26 새로운행들을추가하기 쿼리일반문법 INSERT INTO tbl_name VALUES(value1,value2,...); 예제 mysql> INSERT INTO student VALUES( Kyle, M,NULL); mysql> INSERT INTO grade_event VALUES( 2008-09-03, Q,NULL);
4. MySQL 튜토리얼 19 / 26 새로운행들을추가하기 insert president.sql 파일에퀴리를미리작성한후, 파일을사용하여테이블행들에값들을추가할수있음 서버에접속하여 sampdb 를선택한상태라면다음쿼리를실행 mysql> source C:/tmp/insert_president.sql; 서버에접속하기전이면 Command Line Client 에서다음쿼리를실행 % mysql sampdb < c:/tmp/insert_president.sql;
4. MySQL 튜토리얼 20 / 26 새로운행들을추가하기 LOAD DATA 문을사용하여파일에서데이터를통째로로드할수도있음 mysql> LOAD DATA LOCAL INFILE member.txt INTO TABLE member;
21 / 26 4. MySQL 튜토리얼 Exercise 2 insert member.sql 파일을사용하여 member 테이블행들에값들을추가해보세요 insert student.sql 파일을사용하여 student 테이블행들에값들을추가해보세요 insert grade event.sql 파일을사용하여 grade event 테이블행들에값들을추가해보세요 insert score.sql 파일을사용하여 score 테이블행들에값들을추가해보세요 insert absence.sql 파일을사용하여 absence 테이블행들에값들을추가해보세요
4. MySQL 튜토리얼 22 / 26 정보검색하기 쿼리일반문법 SELECT what to retrieve FROM table or tables WHERE conditions that data must satisfy; 예제 mysql> SELECT * FROM president; mysql> SELECT birth FROM president WHERE last_name = Eisenhower ; mysql> SELECT name, sex, student_id FROM student; mysql> SELECT name, student_id FROM student;
4. MySQL 튜토리얼 23 / 26 Exercise 3 Handout 책자를사용해서다양한쿼리를실행해볼것
4. MySQL 튜토리얼 24 / 26 Inner Join 과 Outer Join 의차이 아래의사이트를참조 http://egloos.zum.com/darky/v/1230443
5. RMySQL 25 / 26 Install the RMySQL package 1 Rtools 설치 ( 지난번강의때설치완료함 ) 2 MySQL client library 설치 ( 오늘강의때설치완료함 ) 3 RMySQL 설치
5. RMySQL 26 / 26 Example 4 아래의코드를실행해서 R 에서 MySQL 에접속하여데이터베이스를사용해보세요 #install.packages("rmysql") library("rmysql") con <- dbconnect(dbdriver("mysql"), host = "localhost", dbname = "sampdb", user = "root", password = "1234") dbgetquery(con, "show tables;") # connect DB sql <- "select * from student limit 10;" sql <- "select * from student order by sex limit 50;" res <- dbgetquery(con, sql) # save query result to an object named as dat.jk.gj res dbdisconnect(con) # disconnet DB