백인감자

[DB] MySQL 기본 본문

데이터베이스

[DB] MySQL 기본

백인감자 2016. 9. 5. 11:22

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.pdf




MySQL 데이터 타입


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

-128

127
255 

SMALLINT 

-32768

32767
65535 

MEDIUMINT

-8388608

8388607
16777215 

INT or INTEGER

-2147483648

2147483647
4294967295 

BIGINT

-9223372036854775808

9223372036854775807

18446744073709551615

FLOAT

-3.40E+45
(no unsigned) 

3.40E+45

(no unsigned) 

DUBLE or REAL

-1.7976E+320
(no unsigned)   

1.7976E+320
(no unsigned)   


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;



Comments