MySQL은 널리 사용되는 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 이름은 "My"와 SQL(Structured Query Language)의 합성어로, 발음은 마이-에스큐엘 또는 마이-시퀄 모두 허용됩니다.
관계형 데이터베이스의 구성 요소
MySQL은 테이블 기반 구조를 따릅니다. 각 테이블은 다음과 같은 요소로 구성됩니다:
- 헤더(header): 열(column)의 이름
- 행(row): 하나의 레코드
- 열(column): 특정 속성을 나타냄
- 값(value): 실제 저장된 데이터
- 키(key): 고유 식별자 (예: 기본키)
Windows에서 MySQL 설정하기
MySQL 5.1 무설치 버전을 기준으로 설명합니다.
- 압축 파일을 원하는 디렉터리(예:
C:\mysql)에 해제 my-small.ini를my.ini로 이름 변경 후 다음 내용 추가:[client] default-character-set = utf8mb4 [mysqld] default-character-set = utf8mb4 collation-server = utf8mb4_unicode_ci- 환경 변수
MYSQL_HOME을 MySQL 설치 경로로 설정 Path에%MYSQL_HOME%\bin추가- 관리자 권한 명령 프롬프트에서 서비스 등록:
mysqld --install MySQL --defaults-file="%MYSQL_HOME%\my.ini"
서비스 제어 명령어
- 시작:
net start MySQL - 중지:
net stop MySQL - 제거:
sc delete MySQL
MySQL 스크립트 구성 요소
- 식별자: 데이터베이스, 테이블, 컬럼 이름 등. 영문자, 숫자, 언더스코어(_)로 시작해야 하며, Linux에서는 대소문자 구분
- 키워드:
SELECT,INSERT등 예약어는 식별자로 사용 금지 - 문(statement): SQL 표준 + MySQL 확장 문법
- 함수: 문자열, 수학, 날짜, 암호화 등 다양한 내장 함수 제공
주요 데이터 타입
| 카테고리 | 타입 예시 |
|---|---|
| 정수 | TINYINT, INT, BIGINT |
| 실수 | FLOAT, DOUBLE, DECIMAL |
| 날짜/시간 | DATE, DATETIME, TIMESTAMP |
| 문자열 | CHAR, VARCHAR, TEXT |
| 이진 데이터 | BLOB, LONGBLOB |
데이터베이스 사용 절차
1. 로그인
mysql -u root -p
비밀번호가 설정되지 않았다면 Enter만 누르면 됩니다.
2. 데이터베이스 생성
CREATE DATABASE school_db CHARACTER SET utf8mb4;
3. 데이터베이스 선택
USE school_db;
4. 테이블 생성
CREATE TABLE learners (
learner_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
full_name VARCHAR(50) NOT NULL,
gender ENUM('M', 'F') NOT NULL,
years_old TINYINT UNSIGNED NOT NULL,
contact_number VARCHAR(15) DEFAULT '-'
);
CRUD 작업
삽입(INSERT)
INSERT INTO learners VALUES (NULL, '김철수', 'M', 22, '010-1234-5678');
INSERT INTO learners (full_name, gender, years_old) VALUES ('박영희', 'F', 20);
조회(SELECT)
SELECT full_name, years_old FROM learners;
SELECT * FROM learners WHERE gender = 'F';
SELECT * FROM learners WHERE years_old > 21;
SELECT * FROM learners WHERE full_name LIKE '%김%';
수정(UPDATE)
UPDATE learners SET contact_number = DEFAULT WHERE learner_id = 3;
UPDATE learners SET years_old = years_old + 1;
UPDATE learners SET full_name = '이민호', years_old = 19 WHERE contact_number = '010-9999-8888';
삭제(DELETE)
DELETE FROM learners WHERE learner_id = 2;
DELETE FROM learners WHERE years_old < 20;
DELETE FROM learners; -- 모든 데이터 삭제
테이블 구조 변경(ALTER)
-- 컬럼 추가
ALTER TABLE learners ADD COLUMN address VARCHAR(100) AFTER years_old;
ALTER TABLE learners ADD COLUMN birth_date DATE;
-- 컬럼 수정
ALTER TABLE learners CHANGE contact_number phone_number VARCHAR(15) DEFAULT '-';
-- 컬럼 삭제
ALTER TABLE learners DROP COLUMN birth_date;
-- 테이블 이름 변경
ALTER TABLE learners RENAME TO members;
객체 삭제
DROP TABLE members;
DROP DATABASE school_db;
보안 설정
root 비밀번호 변경
mysqladmin -u root password "새로운비밀번호"
GUI 도구 추천
MySQL Workbench는 공식 제공 GUI 도구로, 시각적 모델링, SQL 개발, 서버 관리 기능을 통합 제공합니다.