Transcript Document

Wheel Seminar
MySQL
yasik
목차

데이터베이스?
간략소개
 SQL?


MySQL?
간략소개
 다운로드
 MySQL 사용


NoSQL?

간략소개
데이터 베이스?

Database?

정의


여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 정보
의 집합이다.
특징
실시간 접근성
 지속적인 변화
 동시 공유
 내용에 대한 참조


DBMS(DataBase Management System)
데이터베이스 관리 시스템
 다수의 컴퓨터사용자에게 데이터로 접근, 기록을 가능케 함

데이터 베이스?

Database?

RDBMS(Relational Database Management System)

데이터를 테이블, 혹은 표의 형태로 저장하여 관리
학번
이름
ID
..
..
Record
Or
Tuple
Table
Column
데이터 베이스?

Database

RDBMS(Relational Database Management System)

Table * n 으로 구성되어있다.
Table * n
데이터 베이스?

SQL?

SQL(Structured Query Language)
개체 관계형 데이터베이스 지원
 연산 집합을 가짐


RDBMS에서 다음의 기능을 위해 고안된 컴퓨터 언어



자료의 검색과 관리
데이터베이스 스키마 생성과 수정
데이터베이스 객체 접근 조정 관리
MYSQL?

Why MySQL?










Scalability and Flexibility
High Performance
High Availability
Robust Transactional Support
Web and Data Warehouse Strengths
Strong Data Protection
Comprehensive Application Development
Management Ease
Open Source Freedom and 24 x 7 Support
Lowest Total Cost of Ownership
MYSQL?

MySQL Table Type

ISAM




MyISAM





1MYSQL 3.x버전까지의 테이블
테이블 최대용량은 4GB
5.0 버전부터 사라짐
MYSQL 4.x버전의 기본 테이블 타입
ISAM의 확장
용량은 OS에 달림
작은 규모의 DB에 적합(관계가 복잡하지 않은 db)
MERGE

여러 개의 MyISAM 테이블을 하나로 취급하여 MyISAM의 용량
제한을 극복한 타입
MYSQL?

MySQL Table Type

InnoDB ( ara에서 사용 )
트랜잭션, Foreign key, row-level locking 지원
 용량 제한이 거의 없음
 MyISAM에 비해 용량을 많이 사용함
 대규모의 DB에 적합(복잡한 관계의 db)


BDB
트랜잭션, page-level locking 지원
 데이터는 옮길 수 없음


HEAP
메모리를 저장공간으로 사용
 엑세스 타임이 빨라 임시 테이블이나 검색결과 테이블 등으로
활용

MYSQL?

설치하기 전에

MySQL 설치 이전에 /tmp 폴더 퍼미션 777 로 변경하기

자세한내용은
https://sparcs.org/wheel/wiki/Processes/ICUBEHowTo
MYSQL?

MySQL 설치
#apt-get install mysql-common mysql-server mysqlclient
 설치중에 root 비밀번호를 생성


소스를 통해 다운받는 법은 Reno의 mysql 세미나를 참
조합시다.
MYSQL?

MySQL 설치후?
MySQL 기본값으로 서버단, 클라이언트단에서 사용하
는 인코딩을 UTF-8 로 설정해주도록 합니다.
 /etc/mysql/my.cnf 파일의 [mysqld] 섹션에 아래의 내
용을 추가합니다.
 init_connect='SET collation_connection =
utf8_general_ci; SET NAMES utf8;' character-setserver=utf8 collation-server=utf8_general_ci


자세한 내용은
https://project.sparcs.org/arara/wiki/ARAraEngine/En
vironmentHowto 최하단
MYSQL?

MySQL 실행 및 종료

#/etc/init.d/mysql start|stop|restart
MYSQL?

MySQL 설정

/etc/my.cnf : MySQL 모든 프로그램에 대한 옵션

DATADIR/my.cnf :서버에 관련된 옵션


DATADIR 은 /etc/my.cnf 의 [mysqld]에 있음
$HOME/.my.cnf : 개인 사용자의 옵션
MYSQL?

MySQL 로 서버에 접속하기
$mysql
-u [username] default : connected username
-p(password)
confirm password needed
-h [host address]
default : localhost
-P [port]
default : 3306
-S [socket address]
이후로는 mysql [login] [database]로 표기
MYSQL?

MySQL 로 서버에 접속하기

mysql –u [id] –p –h localhost
MYSQL?

MySQL 사용자 관리하기
User 생성
1.
grant [권한] on [db명].[table] to [ID]@[host] identified by
‘[password]’ with grant option;
 flush privileges;

User 삭제
2.
delete from user where user=‘[username]’;
 flush privileges;

MYSQL?

MySQL 사용자 관리하기

일단 권한을 다 줘서 만들어보자
된다
MYSQL?

MySQL 사용자 관리하기

이제 삭제

다시 로그인하려든다면 에러메시지를 보게 될것이다.
MYSQL?

MySQL 사용자 관리
사용자 외부 접속 허용하기
/etc/mysql/my.cnf 에서


bind address=127.0.0.1 을 주석처리
mysql 에서
use mysql;
 select host, user, password from user;
 update user set host=‘%’ where user=‘[username]’ and
host=‘[old host]’
 flush privileges;

MYSQL?

MySQL 사용자 관리하기
사용자관리
 사용자 외부 접속 허용하기

보통 외부 접속을 허용하기 위해서는 하나의 유저에 대해 2개이
상의 호스트를 추가하는 것이 좋다.
 접속하는 곳에 따라 비밀번호와 권한을 다르게도 설정가능

localhost
%option: 로컬 호스트의 호스트 이름 ex) wseminar4
 외부의 접속을 허용하는 주소 (1개보다 많아도 됨)

MYSQL?

MySQL 사용하기
명령어는 항상 ; or \g 로 끝남
 \q, ^D, quit, exit 명령어로 접속 종료
 command clear는 \c
 도움말은 \h

MYSQL?

MySQL 의 자료형









varchar(N) : 가변 길이 문자열
char(N) : 고정 길이 문자열
text : 최대 65536개의 문자 저장, case insensitive
blob : 최대 65536개의 문자 저장, case sensitive
int : 정수형
float : 실수형
date : 날짜 ( yy-mm-dd )
time : 시간 ( hh:mm:ss)
datetime
MYSQL?

SQL 주요 명령어들









create
insert
select
update
delete
show
explain
describe
alter
MYSQL?

SQL 주요 명령어들
show, explain, describe
: DB 와 테이블에 대한 정보를 얻어옴




show databases;
show tables from [database];
show columns from [table];
= explain [table];
= describe [table];
= desc [table];
MYSQL?

역시 된다
MYSQL?
MYSQL?

SQL 주요 명령어들

create
: DB, 테이블, 칼럼 생성



create database [db name];
use [db name]; 이후
create table [table name] ( [column name] type,
… );
MYSQL?

해보자
MYSQL?
MYSQL?

SQL 주요 명령어들

insert
: 테이블에 레코드 추가
use [db name]; 이후

insert into [table name] ( [column1], [column2], …)
values ( [value1], [value2], …) ;
축약형

insert into [table name] values ( [v1], [v2], …) ;

MYSQL?
MYSQL?
MYSQL?

SQL 주요 명령어들

select
: 테이블에서 레코드 검색
use [db name]; 이후

select [column1], [column2], … from [table name]
( where [conditions] );
 칼럼을 적는 대신 * 으로 모든 칼럼을 볼 수 있다.

MYSQL?
MYSQL?

SQL 주요 명령어들

update
: 레코드 수정


use [db name]; 이후
update [table name] set [column1]=[data1],
[column2]=[data2],… where [conditions];
MYSQL?
MYSQL?

SQL 주요 명령어들
•
•
•
•
•
가능한
and(&&), or(||), not(!)
=, !=(same as <>), <, > , <=, >=
[a] in ( [b1], [b2], … )
Etc etc
MYSQL?

SQL 주요 명령어들

drop
: DB, 테이블,



drop database [db name] ;
use [db name]; 이후
drop table [table name];
MYSQL?

Bye
MYSQL?
MYSQL?

Mysqladmin








록

Mysql 관리자
mysqladmin [login] create [db_name]
mysqladmin [login] drop [db_name]
mysqladmin [login] ping : mysqld 가 돌아가는지 확
인
mysqladmin [login] status : mysql 상태
mysqladmin [login] extended-status
mysqladmin [login] shutdown
mysqladmin [login] processlist
= mysqladmin [login] process : 실행중인 클라이언트 목
mysqladmin [login] variables : 변수, 값 출력
MYSQL?
MYSQL?
NOSQL!

NoSQL?

Not SQL? Not Only SQL?
기존의 RDBMS와는 다른 DMBS
 신뢰성과 확장성에 중점을 둔 빠르고 쉬운 DB
 테이블, 로우, 컬럼등이 존재x
 컬렉션, 데이터 베이스로 관리한다


CouchDB, MongoDB

얼랭으로 만들어짐
NOSQL!
끗

수고하셨습니다.