MySQL 기본 개념 및 설치부터 CRUD까지

MySQL은 널리 사용되는 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. 이름은 "My"와 SQL(Structured Query Language)의 합성어로, 발음은 마이-에스큐엘 또는 마이-시퀄 모두 허용됩니다.

관계형 데이터베이스의 구성 요소

MySQL은 테이블 기반 구조를 따릅니다. 각 테이블은 다음과 같은 요소로 구성됩니다:

  • 헤더(header): 열(column)의 이름
  • 행(row): 하나의 레코드
  • 열(column): 특정 속성을 나타냄
  • 값(value): 실제 저장된 데이터
  • 키(key): 고유 식별자 (예: 기본키)

Windows에서 MySQL 설정하기

MySQL 5.1 무설치 버전을 기준으로 설명합니다.

  1. 압축 파일을 원하는 디렉터리(예: C:\mysql)에 해제
  2. my-small.ini를 my.ini로 이름 변경 후 다음 내용 추가:
    [client]
    default-character-set = utf8mb4
    
    [mysqld]
    default-character-set = utf8mb4
    collation-server = utf8mb4_unicode_ci
  3. 환경 변수 MYSQL_HOME을 MySQL 설치 경로로 설정
  4. Path에 %MYSQL_HOME%\bin 추가
  5. 관리자 권한 명령 프롬프트에서 서비스 등록:
    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 개발, 서버 관리 기능을 통합 제공합니다.

태그: MySQL SQL RDBMS Database

10월 11일 06:09에 게시됨