1. 세미콜론
MySQL에서 세미콜론은 명령어를 분리하거나 끝날 때 사용한다.
만약 명령구문이 제대로 끝나지 않을 경우 다음과 같은 프롬프트를 볼 수 있다.
MySQL 프롬프트 |
의미 |
mysql> |
MySQL이 준비되고 명령어를 기다린다. |
-> |
명령어의 다음 줄을 기다린다. |
'> |
작은 따옴표로 시작하는 다음 문자열을 기다린다. |
"> |
큰 따옴표로 시작하는 다음 문자열을 기다린다. |
`> |
역따옴표로 시작하는 다음 문자열을 기다린다. |
/*> |
/*로 시작하는 다음 주석을 기다린다. |
2. 명령어 취소
명령어를 취소하고 싶으면 CTRL+C는 절대 입력하면 안된다.
\c와 리턴을 입력하면 명령어가 취소 된다.
3. MySQL 명령어
명령어 |
매개 변수 |
의미 |
ALTER |
database, table |
데이터베이스나 테이블을 변경 |
BACKUP |
table |
테이블 백업 |
\c |
|
입력 취소 |
CREATE |
database, table |
데이터베이스나 테이블 생성 |
DELETE |
(table과 row의 표현식) |
테이블에서 행 지움 |
DESCRIBE |
table |
테이블 열에 대한 설명 |
DROP |
database, table |
데이터 베이스나 테이블을 지움 |
EXIT (CTRL+C) |
|
종료 |
GRANT |
(사용자 정보) |
사용자 권한 변경 |
HELP (\h, \?) |
item |
아이템에 대한 도움말 출력 |
INSERT |
데이터의 표현식 |
데이터 삽임 |
LOCK |
table(s) |
테이블 잠금 |
QUIT(\q) |
|
EXIT와 같음 |
RENAME |
table |
테이블 이름 바꿈 |
SHOW |
(해당되는 아이템이 너무 많음) |
아이템의 상세내용 출력 |
SOURCE |
filename |
파일 이름으로부터 명령어 실행 |
STATUS(\s) |
|
현재 상태 출력 |
TRUNCATE |
table |
테이블 비움 |
UNLOCK |
table(s) |
테이블의 잠금 해제 |
UPDATE |
(데이터의 표현식) |
기존의 기록을 갱신 |
USE |
database |
데이터베이스 사용 |
4. 데이터베이스 생성
publications 라는 이름의 데이터베이스를 생성하기 위해선
CREATE DATABASE publications
위와 같은 명령어를 입력하면 된다. 이후엔
USE publications
라는 명령어를 입력해 Datbases changed라는 메세지를 확인하면 다음 내용을 진행할 수 있다.
5. 유저 생성
패스 (필요하면 적겠다)
6. 테이블 생성
새로운 테이블이 생성되었는지 확인하기 위해선
DESCRIBE classics;
위 명령 사용시 테이블의 정보를 보여주는데 각 필드의 값은 다음과 같다.
- Field
테이블 내의 각 필드와 열의 이름
- Type
필드에 저장된 데이터의 타임
- Null
필드가 NULL 값을 가질 있는지 없는지 확인
- Key
MySQL은 데이터를 빨리 검색하고 찾을 수 있도록 키와 인덱스를 지원한다.
- Default
새로운 행이 추가될 때 값이 없으면 필드에 기본으로 설정하는 값
- Extra
필드가 자동 증가로 설정되어 있는지 동의 부가 필요
7. 데이터 타입
CHAR vs VARCHAR
- 공통점 :
텍스트 문자열을 허용하고, 필드의 크기를 제한한다.
- 차이점 :
CHAR 필드의 모든 문자열은 크기가 정해진다. 더 작은 문자열 입력 시 공백으로 채워진다.
VARCHAR 필드는 텍스트를 채우지 않으며, 입력한 텍스트에 맞게 가변 필드 크기를 가지게 한다.
(단 조금의 오버헤드 필요)
1) CHAR 데이터 타입
최대 n 까지의 문자열의 길이만큼 입력받을 수 있다.
VARCHAR의 경우 보이진 않지만 항상 1바이트의 오버헤드가 추가적으로 존재한다.
- CHAR (n) : 최대 255
- VARCHAR(n) : 최대 65535
2) BINARY 데이터 타입
BINARY 데이터 타입은 관련된 문자 세트가 없는 문자의 전체 바이트를 저장하는데 사용된다. ex) GIF
- BINARY(n) 또는 BYTE(n) : 최대 255
- VARBINARY(n) : 최대 65535
3) TEXT 데이터 타입
TEXT는 VARCHAR와 다르게 기본 값을 가질 수 없다.
TEXT는 처음 n개의 문자만 인덱스할 수 있으므로 전체 내용 검색에선 VARCHAR더 효율성이 좋다.
- TINYTEXT(n) : 최대 255
- TEXT(n) : 최대 65535
- MEDIUMTEXT(n) : 최대 16777215
- LONGTEXT(n) : 최대 4294967295
4) BLOB 데이터 타입
65535바이트를 넘는 바이너리 데이터에 가장 유용하다.
하지만 BINARY와 다르게 기본 값을 가질 수 없다.
- TINYBLOB(n) : 최대255
- BLOB(n) : 최대 65535
- MEDIUMBLOB(n) : 최대 16777215
- LONGBLOB(n) : 최대 4294967295
5) 숫자형 데이터 타입
UNSIGNED 수식어를 사용하면 양수를 표현할 수 있다.
ex) CREATE TABLE tablename (fieldname INT UNSIGNED)
- TINYINT : 최대 127
- SMALLINT : 최대 32767
- MEDIUMINT : 최대 8388607
- INT 또는 INTEGER : 2147483647
- BIGINT : 겁나크다(8바이트사용)
- FLOAT : 3.40..E+38
- DOUBLE : 1.79...E+308
6) 날짜와 시간
행을 추가할 때 값을 명시하지 않으면 현재 시간이 자동으로 들어가다.
- DATETIME : 0000-00-00 00:00:00
- DATE : 0000-00-00
- TIMESTAMP : 0000-00-00 00:00:00 (1970-2037년만 포함)
- TIME : 00:00:00
- YEAR : 0000 (1901-2155년만 포함)
7) AUTO_INCREMENT
테이블 생성시 자동으로 고유키가 증가하도록 함
위 그림에서 언더바가 잘 안보일 수 있으나 AUTO와 INCREMENT사이에는 언더바가 존재한다.
8) 테이블에 대이터 추가
9) 기타
- 테이블 이름 바꾸기 : ex) ALTER TABLE classics RENAME pre1900;
- 테이블 지우기 : ex) DROP TABLE classics;
- 열의 데이터 타입 바꾸기 : ex) ALTER TABLE classics MODIFY year SMALLINT;
- 새로운 열 추가 : ex) ALTER TABLE classics ADD pages SAMLLINT UNSIGNED;
- 열 이름 바꾸기 : ex) ALTER TABLE classics CHANGE type category VARCHAR(16);
- 열 지우기 : ex) ALTER TABLE classics DROP pages;
8. 윈도우 환경에서 MySQL 처음 사용하기
1) mysql 접속
APMSetup 을 사용해 웹 환경을 구축하였다.
콘솔창에서 다음과 같이 입력한다.
mysql -u root -p |
디폴드 암호는 : apmsetup 이다.
2) 데이터베이스 생성
명령을 사용해 데이터베이스를 생성한다.
CREATE DATABASE 디비이름 |
3) 유저 생성
GRANT ALL ON 디비이름.* TO '유저이름'@'localhost' IDENTIFIED BY '패스워드' |
4) 재로그인
quit 명령어를 사용해 종료한후 다시 접속한다.
mysql -u 유저이름 -p |
3)에서 생성했던 패스워드를 입력하면 된다.
만약 root로 로그인할 경우 다음 명령어를 사용하면 된다.
USE 디비이름 |
9. 파이썬을 사용해 MySQL 코드 작성
https://pypi.python.org/pypi/MySQL-python
위의 url에 접속해 파이썬 모듈을 다운받고 설치한다.
상위의 코드로 사용하면 된다.
파이썬을 이용할 경우 한글 인코딩 문제가 발생할 것이다.
코드 최상단에 다음의 코드를 작성해준다.
# -*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') |
한글 인코딩 문제의 경우 쿼리를 날리기 전에 꼭
cur.execute("set names utf8") |
명령을 사용해 mysql에게 알려주어야 한다. 아무리 설정을 해주어도 이것을 안해주면 말짱도루묵이다.
그리고 mysql 폴더 내에 있는 my.ini 또는 my-default.ini 파일 내에
다음과 같이 내용을 수정해주어야 한다.
[mysql] default-character-set=utf8 [mysqld] character-set-client-handshake = FALSE init_connect = "SET collation_connection = utf8_general_ci" init_connect = "SET NAMES utf8" default-character-set = utf84 character-set-server = utf8 collation-server = utf8_general_ci [client] default-character-set = utf8 [mysqldump] default-character-set = utf8 |
다음과 같은 설정을 완료한 후 디비서버를 다시 실행시킨 뒤
다음의 명령어를 통해 정상적으로 설정되었는지 확인한다.
show variables like 'c%'; |
10. 참고(파이썬에서 문자열의 인코딩 상태를 확인하는 법)
import chardet print chardet.detect(변수명)['encoding'] |
'개발 > 웹' 카테고리의 다른 글
Nessus 를 활용한 웹서버 취약점 확인 (0) | 2015.03.19 |
---|---|
LAMP 설치 (Linux, apache, MySQL, PHP) (0) | 2015.03.19 |
Ajax (0) | 2015.03.09 |
PHP 문법 (0) | 2015.02.18 |
웹 개발 환경 설정 (0) | 2015.02.18 |