Download Document

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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!
끗

수고하셨습니다.
Related documents