본문 바로가기
프로그래밍 놀이터/Web

MYSQL TUtorial #1 웹 데이터베이스 만들기

by 돼지왕 왕돼지 2014. 1. 21.
반응형


 MYSQL TUtorial #1 웹 데이터베이스 만들기

 

MYSQL TUtorial #1 웹 데이터베이스 만들기


MYSQL 시작


MySQL 사용을 위해서는 다음의 과정을 완료해야 한다.


1. 웹 서버에 MySQL 설치를 마쳐야 한다.

  파일 설치

  MySQL 실행한 사용자 설정

  경로(path) 설정

  필요하면 mysql_install_db 를 실행

  루트 비밀번호 설정

  필요없는 사용자와 테스트 DB 등을 삭제

  MySQL 서버 돌리고 자동적으로 실행되도록 설정




사용자 설정 : GRANT 명령어


Global, Database, Table, Column 4단계로 권한 조정이 필요하다.


GRANT privileges [columns] 

ON item

TO user_name [IDENTIFIED BY 'password']

[REQUIRE ssl_options]

[WITH [GRANT OPTION | limit_options] ]


privileges 에는 , 로 구분되는 권한이 들어간다.

item 에는 db 명이나 table 명이 들어가며, 모든 권한(전역 권한) 을 주려면 *.* 를 입력한다.

item 에는 dbName.* 또는 dbName.tableName 과 같은 형태로 들어가고, columns 도 적어줄 수 있다.


WITH GRANT OPTION 에는

MAX_QUERIES_PER_HOUR n

MAX_UPDATES_PER_HOUR n

MAX_CONNECTIONS_PER_HOUR n 등이 들어간다.


권한은 mysql 이라는 db 안의 4개의 시스템 테이블

mysql.user, mysql.db, mysql.tables_priv, mysql.column_priv 안에 저장된다.


권한을 바꾸기 위해서는 GRANT 명령어 대신 테이블을 직접 바꿔도 된다.




일반 사용자 권한


SELECT


INSERT


UPDATE


DELETE


INDEX


ALTER


CREATE


DROP




관리자를 위한 권한


CREATE TEMPORARY TABLES : CREATE TABLES 에 TEMPORARY 키워드를 사용할 수 있다.


FILE : 파일의 데이터가 테이블로 읽혀지는 것을 가능하게 한다.


LOCK TABLES : LOCK TABLES 문을 직접 사용할 수 있게 한다.


PROCESS : 관리자가 사용자에게 속한 서버에서 실행되는 프로세스들에 대해 볼 수 있게 한다.


RELOAD : 관리자가 grant 테이블을 다시 불러들여 권한, 호스트, 로그, 테이블 등을 플러시(flush) 할 수 있다.


REPLICATION CLIENT : 복사 마스터와 슬레이브에 대해 SHOW STATUS 할 수 있다.


REPLICATION SLAVE : 복사 슬레이브 서버가 마스터 서버에 접속할 수 있게 한다.


SHOW DATABASES : SHOW DATABASES를 통해 모든 데이터베이스를 볼 수 있다.


SHUTDOWN : MySQL 서버를 정지시킬 수 있게 한다.


SUPER : 관리자가 사용자에게 속한 스레드를 중지시킬 수 있다.




특별 권한


ALL : 관리자와 유저 일반 권한 모두를 가질 수 있다.


USAGE : 어떤 권한도 주지 않는다.





REVOKE 명령어


GRANT 와 반대로 사용자로부터 권한을 뺏을 때 사용한다.


REVOKE privileges [(columns)], GRANT

ON item

FROM user_Name







SQL 서버 접속하기


mysql -D dbname -h hostname -u username -p


-D 를 빼면 use dbname 명령어를 통해 db 설정을 할수도 있다.




TABLE 만들기


.sql 파일에 create 문을 만들어 넣고 다음의 명령을 사용해서 sql 문들을 바로 실행시킬수도 있다.


> mysql -h host -D dbName -u username -p < fileName.sql




char 형


char( length ) 는 길이가 괄호안의 값 이내가 되도록 고정되어 있다.

이렇게 되면 해당 항목을 사용하든 하지 않든 50글자만큼 공간을 어떻게든 채워 넣는다.

varchar 는 이런 단점을 보완하여, 데이터를 저장하기에 필요한만큼만 할당한다.

varchar 는 공간 낭비가 적지만 char 보다 처리 속도가 느리다.




not null


NOT NULL 로 설정하면 해당 값에 null 이 들어갈 수 없다.

모든 컬럼을 not null 이라고 선언하는 것은 기본적인 최적화 방법이다.




float 형


float 은 몇 자리의 숫자를 보여줄지와, 그 중 몇자리가 소수점 아래 자리인지를 명시한다.

예를 들어 float( 6, 2 ) 를 하면 총 6자리이며, 그 중 2자리가 소수점 자리라는 의미이다.




date 형


날짜가 입력된다.




tinyint unsigned


0~255 정수. unsigned 가 없으면 -127~128 이 되겠지.




text 형


길이가 긴 문장 등을 저장할 때 쓰인다.




테이블 정보 보기


특정 테이블에 대한 자세한 정보를 알고 싶을 때는 


mysql> describe tableName; 







인덱스 만들기


기본 키 ( primary key ) 는 테이블에 인덱스를 생성한다.

나머지에 대해서는 수동으로 키를 만들어 줄 수 있다.


CREATE [UNIQUE | FULLTEXT] INDEX index_name ON table_name ( index_column_name [(length)] [ASC|DESC], ....])




case sensitive


MySQL 은 db 이름과 table 이름은 case sensitive 하다.

하지만 열의 이름과 별칭 이름은 대소문자를 구별하지 않는다.




MYSQL 식별자


데이터베이스 

  최대길이 : 64, 운영체재와 같은 case-sensitive


테이블 

  최대길이 : 64, 운영체제와 같은 case-sentivie


  최대길이 : 64, case-sensitive 없음


별칭

  최대길이 : 255, case-sensitive 없음




숫자 데이터형


TINYINT = BIT = BOOL

SMALLINT

MEDIUMINT

INT = INTEGER

BIGINT


FLOAT( precision ) ( 32/64 bit )

FLOAT( M, D )

DOUBLE( M, D ) = DOUBLE PRECISION = REAL

DECIMAL( M [,D] ) = NUMERIC = DEC = FIXED




날짜와 시간 데이터 형


DATE : YYYY-MM-DD 형식

TIME : HH:MM:SS 형식

DATETIME : YYYY-MM-DD HH:MM:SS 형식

TIMESTAMP[ M ]

YEAR[ (2|4) ] : 2는 03, 4는 2003 과 같이 표기.




문자열 데이터 형


CHAR( M ) : M 은 0~255 사이.

VARCHAR( M )

TINYBLOB

TINYTEXT

BLOB : binary large object 로 이미지나 사운드 데이터들도 저장할 수 있다.

TEXT

MEDIUMBLOB

MEDIUMTEXT

LONGBLOB

LONGTEXT


ENUM( 'value1', 'value2', ... ) : 총 65,535 개 들어갈 수 있음. 정의된 value 중 하나만 들어가거나 NULL

SET( 'value1', 'value2', ... ) : 총 64개 들어갈 수 있음. 정의된 value를 여러 개 사용한 데이터 혹은 NULL






반응형

댓글