백인감자
[DB] MySQL 기본 본문
MySQL 이란?
오픈 소스의 관계형 데이터베이스 관리 시스템(RDBMS)이다.
응용 프로그램에서 MySQL 데이터베이스에 접근하기 위해 다수의 프로그래밍 언어로 된 API를 사용할 수 있다. 이들 API는 언어에 종속적이다.
MySQL은 공식적으로 아래의 프로그래밍 언어를 지원한다.
C/C++
C#/F#
볼랜드 델파이 (dbExpress를 통한)
자바 (네이티브 자바 드라이버를 통한)
파이썬
루비
REALbasic (매킨토시 계열)
프리베이직
스몰토크
Eiffel
리스프
펄
Tcl
PHP · PHP4 · PHP5 · PHP6
델파이1 · 델파이2 · 델파이3 · 델파이4 · 델파이5 · 델파이6 · 델파이7 · 델파이8
델파이2007 · 델파이2008 · 델파이2009
파파라치
MySQL은 MyODBC라고 불리는 ODBC 인터페이스를 지원해서 다른 프로그래밍 언어를 지원한다. 그 예로 ASP와 콜드퓨전을 들 수 있다. MySQL은 대부분 ANSI C로 구현되었다.
출처: 위키백과(https://ko.wikipedia.org/wiki/MySQL)
환경구축
MYSQL 설치 사용
1. dev.mysql.com
2. downloads ->MySQL Community Edition ->MySQL Community Server 선택
3. MySQL Installer 5.7 for windows: Windows(x86, 32-bit), MySQL Installer MSI download 선택
- 64-bit도 지원함
- MySQL Installer 5.7.14: Select windows: Windows -> Windows(x86, 32-bit), MSI Installer download 선택
4. Begin Your Download - mysql-installer-community-5.7.14.0.msi
- login, sign up 무시하고
- No thanks, just start my
download. 선택하여 download 시작
기본 명령어 & TABLE 데이터 타입
show databases; 데이터베이스 목록들을 보여준다. database 로 단수로 입력하면 에러뜸
use 데이터베이스명; 해당 데이터베이스로 들어간다.
show tables; 데이터베이스내의 테이블 목록을 보여준다.
describe 테이블이름; 해당 테이블의 정보를 보여준다 .
create table 테이블이름 ; 테이블 생성
create database 데이터베이스 이름 ; db 생성
drop table 테이블이름 ; --> 해당 테이블을 삭제한다.
drop database 데이터베이스 이름 ; --> 해당 db를 삭제한다.
quit mysql 종료
sql 문 입력할 때 대소문자 구분이 없다!!
참고 튜토리얼 문서:
mysql-tutorial-0905.pdfMySQL 데이터 타입
MySQL 에서 사용하는 데이터 타입에 대해서 알아본다.
CHAR 데이터 타입
CHAR와 VARCHAR(VARiable length CHARacter string)은 모두 텍스트 문자열을 허용하고, 필드의 크기를 제한한다. 두 타입의 차이점은 CHAR 필드의 모든 문자열은 크기가 정해진다는 것. 즉 더 작은 문자열을 입력하면 공백으로 채워진다. 반면 VARCHAR의 경우, 텍스트를 채우지 않으며, 입력한 텍스트 크기에 맞게 가변적으로 크기를 가진다. 그러나, VARCHAR는 각 값의 크기를 추적할 수 있는 약간의 오버헤드가 필요하기 때문에 모든 데이터의 크기가 비슷하다면, CHAR가 더 효율적이다.
TYPE | 사용되는 바이트 | 예제 |
CHAR(n) | 정확히 n (<=255) | CHAR(5) 'Hello'는 5바이트 사용 CHAR(50) 'Hello'는 50바이트 사용 |
VARCHAR(n) | 최대 n 까지(<=65535) | VARCHAR(100)'Hello'는 5바이트 사용 VARCHAR(5) 'Hello'는 5바이트 사용 |
BINARY 데이터 타입
BINARY 데이터 타입은 관련된 문자 세트가 없는 문자의 전체 바이트를 저장하는데 사용된다. 예를 들면 GIF 이미지를 저장하는데 사용할 수 있다.
TYPE | 사용되는 바이트 | 예제 |
BINARY(n) 혹은 BYTE(n) | 정확히 n (<=255) | CHAR이지만 바이너리 데이터를 가짐 |
VARBINARY(n) | 최대 n 까지(<=65535) | VARCHAR이지만 바이너리 데이터를 가짐 |
TEXT와 VARCHAR 데이터 타입
TEXT와 VARCHAR에는 작은 차이점이 있다.
TEXT 필드는 기본 값을 가질 수 없다.
MySQL은 TEXT 열의 처음 n 개의 문자만 인덱싱 할 수 있다.
이것은, 만약 전체 내용을 검색할 때는 VARCHAR이 더 알맞고, 빠르다는 것이다.
TYPE | 사용되는 바이트 | 속성 |
TINYTEXT(n) | 최대 n (<=255) | 문자열로 취급 |
TEXT(n) | 최대 n (<=65535) | 문자열로 취급 |
MEDIUMTEXT(n) | 최대 n (<=16777215) | 문자열로 취급 |
LONGTEXT(n) | 최대 n (<=4294967295) | 문자열로 취급 |
BLOB 데이터 타입
BLOB(Binary Large OBject)는 65535 바이트를 넘는 바이너리 데이터에 유용하며, 기본 값을 가질 수 없다.
TYPE | 사용되는 바이트 | 속성 |
TINYBLOB(n) | 최대 n (<=255) | 바이너리 데이터로 취급 |
BLOB(n) | 최대 n (<=65535) | 바이너리 데이터로 취급 |
MEDIUMBLOB(n) | 최대 n (<=16777215) | 바이너리 데이터로 취급 |
LONGBLOB(n) | 최대 n (<=4294967295) | 바이너리 데이터로 취급 |
숫자형 데이터 타입
TYPE | 사용되는 바이트 | 최소 값 (signed/unsigned) | 최대 값 (signed/unsigned) |
TINYINT | 1 | -128 | 127 |
SMALLINT | 2 | -32768 | 32767 |
MEDIUMINT | 3 | -8388608 | 8388607 |
INT or INTEGER | 4 | -2147483648 | 2147483647 |
BIGINT | 8 | -9223372036854775808 | 9223372036854775807 18446744073709551615 |
FLOAT | 4 | -3.40E+45 | 3.40E+45 (no unsigned) |
DUBLE or REAL | 8 | -1.7976E+320 | 1.7976E+320 |
DB 생성 & TABLE 생성
mysql 처음 실행시 show databases; 를 입력하면 아래와 같이 4개의 db 가 있는데 명령어를 통해 sol 이라는 db를 생성하고 해당 db로
이동 한 코드이다.
그 다음으로 sol 이라는 db 내에서 Human 이라는 table 을 생성하는 코드이다.
create table 테이블이름 ( 필드1이름 필드1데이터타입, 필드2이름 필드2데이터타입,...) 이런 방식으로 테이블을 생성한다.
레코드 삽입
mysql> INSERT INTO pet VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
(sql 구문을 잘 이해하기 위해 대문자로 표시함)
텍스트 파일을 테이블에 넣기
아래와 같이 구성된 테이블이 있다고 하자.
이러한 테이블에서 텍스트파일을 불러와서 데이터를 insert 시키려고 한다.
각 텍스트 사이에는 tab 키 를 이용하여 띄웠다. (이것에 대한 설명은 아래에 나옴.)
그리고 mysql 에서 아래와 같은 명령어를 입력한다.
.
mysql>load data local infile '파일경로' into table 테이블명 ;
Windows 환경에서는 lines terminated by '\r\n' 을 추가해줘야 한다고 튜토리얼 문서에 나와있다.
windows 에서는 \ 를 두개 써줘야 하나의 \ 로 인식함.
정상적으로 완료되었으면 위와 같은 결과를 확인 할 수 있다.
위의 결과화면을 통해 간략한 구조를 설명하면
위으 테이블에서 record (row) 는 우리가 입력한 데이터이다.
(텍스트파일에서 Field 간의 구분은 tab 키를 통해서 할 수 있다. spacebar 로 하면 name 에 모든 내용이 들어가버린다.)
레코드 수정하기 & 레코드 삭제하기
위의 pet table 에서 조건에 맞는 레코드의 birth field 를 수정하고자 한다.
그러면 update 문을 사용하면 손쉽게 데이터를 수정할 수 있다.
mysql> UPDATE pet SET birth = '1993-12-04' WHERE name = 'Whistler';
mysql> UPDATE pet SET sex = 'M' WHERE name = 'Whistler';
= 기호는 C에서의 == 와 같음. 비교연산자로 사용됨.
위와 같이 두 개의 명령어를 입력하면 결과는 아래와 같음을 확인할 수 있다.
레코드 삭제의 경우 예를들어
delete from 테이블이름 where name='sol'; 와 같이 하면 레코드 중 name field 가 'sol' 인 것을 찾아 그 레코드를 삭제한다.
Field 속성 추가&변경&삭제
table에 field 추가
- alter table city add column new_field varchar(10);
field 속성 변경하기
- alter table city modify District varchar(30);
- describe city;
기존 field 삭제하기
- alter table city drop column population;
'데이터베이스' 카테고리의 다른 글
[DB/자료구조] B-Tree(B트리), B+ 트리 (6) | 2017.07.08 |
---|---|
[DB] 데이터베이스 복구, ACID (0) | 2016.12.18 |
[DB] MySQL C/C++(visual studio 2015) 연동하기 (21) | 2016.09.30 |
[DB]3단계 DB시스템 구조, 관계형 데이터베이스 (0) | 2016.09.19 |