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! 끗 수고하셨습니다.