MYSQL TUtorial #1 웹 데이터베이스 만들기 |
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
'프로그래밍 놀이터 > Web' 카테고리의 다른 글
[CSS] Less 란 무엇인가? (0) | 2014.02.10 |
---|---|
[CSS] Bootstrap Tutorial #1 - download & setup (0) | 2014.02.08 |
[PHP Tutorial] 예외처리. (0) | 2014.01.06 |
[PHP] File Manipulation Tutorial (0) | 2013.12.30 |
query 문에 regular expression 을 사용해보자. (0) | 2013.12.17 |
댓글