Contents
1. 참고링크 [Bottom] [Top]
MySQL http://www.mysql.com
MySQL Documentation http://dev.mysql.com/doc/
MySQL 5.0 Reference Manual http://dev.mysql.com/doc/refman/5.0/en/
MySQL Downloads http://dev.mysql.com/downloads/
MySQL 프로그래밍 (C 언어) http://blog.naver.com/cycle98/140001019657
The phpMyAdmin Project http://www.phpmyadmin.net
Navicat MySQL http://mysql.navicat.com
2. MySQL 사용법 [Bottom] [Top]
2.1. MySQL 관리 [Bottom] [Top]
-- DB 를 변경한다. (information_schema : DB 구조 정보) USE information_schema; -- 전체 DB 또는 해당 DB, 테이블의 모든 컬럼 정보를 출력한다. SELECT * FROM `COLUMNS` [WHERE [`TABLE_SCHEMA` = '{DB 이름}'] AND [`TABLE_NAME` = '{테이블 이름}']];
2.2. 기본 SQL 정리 [Bottom] [Top]
2.2.1. 테이블 [Bottom] [Top]
- 생성
컬럼 최대 개수 : 테이블 당 4,096 개
행 최대 크기 : 65,535 Bytes
CREATE TABLE {테이블 이름} ( {필드 이름} {데이타 타입} [NOT NULL] [DEFAULT 기본값] [AUTO_INCREMENT] {, {필드 이름} {데이타 타입} [NOT NULL] [DEFAULT 기본값]}* [, PRIMARY KEY ({필드 이름} [, {필드 이름}, ...])] [, UNIQUE KEY {키 이름} ({필드 이름})] )
- 수정
ALTER TABLE {테이블 이름} -- 필드 추가 ADD [COLUMN] {필드 이름} {데이타 타입} -- 필드 이름, 속성 변경 CHANGE [COLUMN] {기존 필드 이름} {새 필드 이름} {데이타 타입} -- 필드속성 변경 MODIFY [COLUMN] {필드 이름} {데이타 타입} -- 필드 삭제 DROP [COLUMN] {필드 이름}
- 삭제
DROP TABLE {테이블 이름} - 테이블 이름 변경
RENAME TABLE {현재 테이블 이름1} TO {새로운 테이블 이름1} [, {현재 테이블 이름2} TO {새로운 테이블 이름2}, ... ];
2.2.2. 데이터 [Bottom] [Top]
- 검색
SELECT [DISTINCT] {필드 이름} [, {필드 이름}, ...] -- DISTINCT : 데이타의 중복 제거 FROM {테이블 이름} [, {테이블 이름}, ...] [WHERE {검색 조건}] [ORDER BY {필드 이름} [ASC | DESC] [, {필드 이름} [ASC | DESC], ...]] [GROUP BY {필드 이름} [, {필드 이름}, ...]] -- 그룹 검색 [HAVING {검색 조건}] -- 그룹에 대한 조건
- 검색 조건
- BETWEEN ~ AND : 정해진 수치 영역에 포함된 값 검색
- [NOT] IN ({값} [, {값}, ...]) : 나열된 값에 대한 선택적 검색
- LIKE '[%]값[%]' : 값이 포함된 문자열 검색 ("%" - 모든문자, "_" - 한문자)
- IS [NOT] NULL : NULL 값에 대한 검색
- LIMIT [{개수1}, ] {개수2} : 개수1 에서 개수2 까지 레코드를 검색
- 검색 조건
- 삽입
INSERT INTO {테이블 이름} [({필드 이름} [, {필드 이름}, ...])] VALUES ({필드 값} [, {필드 값}, ...])
- 수정
UPDATE {테이블 이름} SET {필드 이름} = {필드 값} | {수식} [, {필드 이름} = {필드 값} | {수식}, ...] [WHERE {검색 조건}]
- 삭제
DELETE FROM {테이블 이름} [WHERE {검색 조건}]
2.2.3. 저장 프로시저 / 저장 함수 [Bottom] [Top]
3. MySQL 팁 [Bottom] [Top]
3.1. 문자열 처리 [Bottom] [Top]
- 정규표현식을 이용한 검색
SELECT * FROM {테이블 이름} WHERE {필드 이름} REGEXP '{정규표현식}'
3.2. 숫자 처리 [Bottom] [Top]
- 자동 증가값(AUTO_INCREMENT 속성) 확인 방법
-- 테이블 이름을 생략하면 해당 DB 의 모든 테이블 정보가 출력된다. SHOW TABLE STATUS [LIKE '{테이블 이름}'];
- 자동 증가값을 임의적으로 삽입하기
- MS-SQL 과 같이 특별한 옵션 조작이 필요없고 자동 증가값을 임의값으로 입력하면 된다.
참고> INSERT 문 사용법이 MS-SQL 과 다르다.
- INSERT 문에서 자동 증가값 필드를 제외한 다른 필드들을 나열해야 하는 불편함이 있다.
- 자동 증가값 초기화 방법
- ALTER TABLE 문 사용
-- 자동 증가값 초기화 ALTER TABLE {테이블 이름} AUTO_INCREMENT = {초기값};
- TRUNCATE TABLE 문 사용
-- 테이블 데이터 및 정보까지 삭제된다. TRUNCATE TABLE {테이블 이름}; -- MySQL 버전에 따라 다르게 동작한다. -- a. 5.0 이상: 데이터만 삭제 -- b. 5.0 미만: 데이터 삭제, 자동 증가값 초기화 DELETE FROM {테이블 이름};
- ALTER TABLE 문 사용
3.3. 저장 프로시저/함수 [Bottom] [Top]
저장 프로시저/함수 목록 보기 (관리 정보)
-- MySQL 문법 SHOW { PROCEDURE | FUNCTION } STATUS [ LIKE 'pattern' | WHERE {조건식} ] -- 예제1> 전체 목록 보기 SHOW PROCEDURE STATUS; -- 테이블 구조 SHOW PROCEDURE STATUS \G; -- 텍스트 -- 예제2> 해당 프로시저/함수 보기 SHOW PROCEDURE STATUS LIKE '{프로시저 이름}'; -- 테이블 구조 SHOW PROCEDURE STATUS LIKE '{프로시저 이름}' \G; -- 텍스트 -- 예제3> 조건식으로 목록 보기 SHOW PROCEDURE STATUS WHERE {조건식}; -- 테이블 구조 SHOW PROCEDURE STATUS WHERE {조건식} \G; -- 텍스트
저장 프로시저/함수 코드 보기 (기본 정보)
-- MySQL 문법 SHOW CREATE { PROCEDURE | FUNCTION } {프로시저 이름} -- 예제1> 프로시저 코드 보기 SHOW CREATE PROCEDURE {프로시저 이름}; -- 테이블 구조 SHOW CREATE PROCEDURE {프로시저 이름} \G; -- 텍스트
저장 프로시저/함수의 컴파일된 코드 보기
-- MySQL 문법 SHOW { PROCEDURE | FUNCTION } CODE {프로시저 이름} -- 예제1> 프로시저의 컴파일된 코드 보기 SHOW PROCEDURE CODE {프로시저 이름};
3.4. DB 쿼리 최적화 [Bottom] [Top]
- DB 쿼리 개수 제한하기
-- 처음부터 개수까지 결과 받는다. SELECT * FROM {테이블 이름} LIMIT {개수}; -- 쿼리 결과 중 해당 범위(시작 ~ 끝)의 결과만 받는다. SELECT * FROM {테이블 이름} LIMIT {시작}, {끝};
3.5. 필드 추가 [Bottom] [Top]
- 특정 위치에 필드 추가 방법
-- 테이블의 처음에 필드 추가 ALTER TABLE {테이블 이름} ADD {필드1 이름} {데이타 타입} [기타 조건] FIRST; -- 필드2 다음에 필드1 추가 ALTER TABLE {테이블 이름} ADD {필드1 이름} {데이타 타입} [기타 조건] AFTER {필드2 이름}; -- 테이블의 마지막에 필드 추가 ALTER TABLE {테이블 이름} ADD {필드1 이름} {데이타 타입} [기타 조건];
4. MySQL C 프로그래밍 [Bottom] [Top]
4.1. MySQL 초기화 및 연결/해제 [Bottom] [Top]
1 // 헤더 파일 선언 2 #include <mysql.h> 3 4 // 라이브러리 링크 5 #pragma comment( lib, "libmysql.lib" ) 6 7 // 변수 선언 8 MYSQL g_mysql; 9 MYSQL * g_pDB_Connection; 10 11 // STEP 1: MySQL 초기화 12 mysql_init(); 13 // STEP 1-1: MySQL 옵션 설정 14 mysql_options(); 15 16 // STEP 2: MySQL 연결 17 mysql_real_connect(); 18 19 ... 20 21 // STEP 4: MySQL 연결 해제 22 mysql_close(); 23
4.2. DB 쿼리 [Bottom] [Top]
- DB 쿼리 후 결과 받기
1 // 변수 선언 2 MYSQL_RES * pSql_Result = NULL; 3 MYSQL_ROW sql_Row; 4 5 // STEP 1: SQL 쿼리 실행 6 mysql_real_query(); 7 8 // STEP 2: SQL 쿼리 결과 저장 9 mysql_store_result(); 10 11 // STEP 3: SQL 쿼리 결과의 Row 갯수 12 mysql_num_rows(); 13 14 // STEP 4: Row 단위의 SQL 쿼리 결과 가져오기 15 mysql_fetch_row(); 16 17 ... 18 19 // STEP 5: SQL 쿼리 결과 해제 20 mysql_free_result(); 21
- DB 쿼리만 처리
1 // STEP 1: SQL 쿼리 실행 2 mysql_real_query(); 3 4 // STEP 2: SQL 쿼리가 처리된 Row 객수 5 mysql_affected_rows(); 6
4.3. 기타 [Bottom] [Top]
1 // MySQL 에러 코드 받기 2 mysql_errno(); 3 4 // MySQL 에러 메세지 받기 5 mysql_error(); 6
