MySQL-기초 1
Jinseog Kim Dongguk University [email protected]
SQL은 아래의 용도로 구성됨
데이터정의 언어(Data definition Language: DDL) : 데이터의 저장구조를 정의하는 언어로 스키마 정의 수정, 삭제하는 명령문과 인덱스의 생성 및 삭제 데이터조작 언어(Data Manipulation Language: DML) : 데이터에 접근 및 조작하는 언어로 튜플의 검색, 삽입, 삭제 수정과 같은 명령문
SQL의 기초
SHOW DATABASES;
데이터베이스 리스트 출력
CREATE DATABASE [db_name];
이 문장을 실행하면 MySQL data 디렉토리에 db_name이란 서브디렉토리가 생성된다.
만일 같은 이름의 data base디렉토리가 있으면 에러메시지를 내보낸다.
(예) 새로운 database world를 만들고, 이를 handling하기 위한 명령문은 다음과 같다.
CREATE DATABASE world;
USE world;
데이터베이스 생성
DROP DATABASE [IF EXISTS] db_name
DROP DATABASE
IF EXISTS: 삭제하려는 데이터베이스가 없는 경우에 에러메시지를 막아줌
데이터베이스 삭제
문자셋(Character Set): 문자의 인코딩 규칙이 정의된 집합 (ASCII, EUC-KR, UTF-8 등)
콜레이션(Collation): 문자셋으로 인코딩된 문자들간 비교시 사용하는 규칙집합
데이터베이스 생성시 character set과 collation을 지정하는 방법:
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
DATABASE: 한글처리
CREATE TABLE mytbl(
테이블 정의문;
... ...
) DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
테이블 생성시 한글 처리
외부 파일에서 입력: LOAD DATA 구문의 이용 레코드 단위의 입력: INSERT 문 사용
테이블에 자료입력
LOAD DATA LOCAL INFILE "file_name" INTO TABLE tbl_name;
FIELDS TERMINATED BY ","
... ;
FIELDS TERMINATED BY “,” : 컬럼간 구분자 표시
외부 파일에서 입력: LOAD DATA
Fluffy Harold cat f 1993-02-04 \N Claws Gwen cat m 1994-03-17 \N Buffy Harold dog f 1989-05-13 \N Fang Benny dog m 1990-08-27 \N
Bowser Dianne dog m 1998-08-31 1995-07-29 Chirpy Gwen bird f 1998-09-11 \N
Whistler Gwen bird \N 1997-12-09 \N Slim Benny snake m 1996-04-29 \N
예제 데이터(외부 데이터 파일)
CREATE TABLE pet(
name VARCHAR(20) NOT NULL PRIMARY KEY, owner VARCHAR(20),
species VARCHAR(20), sex VARCHAR(1), birth DATE, death DATE );
테이블 생성
INSERT INTO pet VALUES('Puffball','Diane','hamster','f',' INSERT INTO pet VALUES('Fluffy','Harold','cat','f','1993-02-04', INSERT INTO pet VALUES('Claws','Gwen','cat','m','1994-03-17',NULL ...
1999-03-30' NULL
);
레코드 단위 입력
LOAD DATA LOCAL INFILE "/home/jskim/tmp/pet.txt" INTO TABLE pet FIELDS TERMINATED BY "\t";
외부파일을 이용한 입력
CREATE TABLE test_db.news(
journal VARCHAR(20) NOT NULL, title VARCHAR(200), pub_date DATE,
reporter VARCHAR(20), contents text
);
뉴스 테이블 생성
엑셀 데이터 변환
기사내용의 줄나눔(개행) 문자를 공백으로 치환 탭구분 텍스트 파일로 저장
Linux에서는 한글 인코딩 UFT-8로 변환 아래의 SQL구문 사용
LOAD DATA LOCAL INFILE INTO TABLE test_db.news;
/* FIELDS TERMINATED BY "\t"
LINES TERMINATED BY "EOL\n";*/
SELECT journal FROM test_db.news LIMIT 10;
"/var/www/lectures/2016-2/DB/news-tab-utf8
외부파일을 이용한 입력
SELECT journal FROM test_db.news LIMIT 10;
SELECT title FROM test_db.news LIMIT 50;
SELECT journal, title, pub_date, reporter FROM test_db.news SELECT contents FROM test_db.news LIMIT 2;
LIMIT
조회
head(iris, 2)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
write.table(iris, file="H:/lectures/2016-2/DB/iris.csv", sep=",", col.names = FALSE,
row.names = FALSE, quote=FALSE)
R iris data
CREATE TABLE test_db.iris(
Sepal_Length DOUBLE, Sepal_Width DOUBLE, Petal_Length DOUBLE, Petal_Width DOUBLE, Species VARCHAR(20), );
“Sepal.Length” “Sepal.Width” “Petal.Length” “Petal.Width” “Species” ## R iris data
LOAD DATA LOCAL INFILE "C:/tmp/iris.csv" INTO TABLE FIELDS TERMINATED BY ",";
test_db.iris