Database/Mysql / / 2024. 8. 21. 15:57

MySQL 완벽 가이드: 기초부터 고급까지

1. MySQL 설치 및 접속

 

MySQL 설치

 

MySQL 설치는 운영 체제에 따라 다릅니다.

 

Windows:

1. MySQL 공식 웹사이트에서 MySQL Installer를 다운로드합니다.

2. 설치 도중 “Developer Default” 또는 “Server Only”를 선택하여 MySQL 서버를 설치합니다.

3. 설치가 완료되면 MySQL Workbench 또는 명령 프롬프트에서 MySQL을 관리할 수 있습니다.

macOS:

1. Homebrew를 설치한 경우, 터미널에서 brew install mysql 명령어로 설치합니다.

2. 설치 후 brew services start mysql 명령어로 MySQL 서버를 시작합니다.

Linux:

1. Debian/Ubuntu 계열에서는 sudo apt updatesudo apt install mysql-server 명령어로 설치합니다.

2. 설치 후 sudo systemctl start mysql 명령어로 MySQL 서버를 시작합니다.

 

MySQL 서버 시작

 

Windows: MySQL Workbench에서 서버를 시작하거나 명령 프롬프트에서 net start mysql 명령어를 실행합니다.

macOS/Linux: sudo service mysql start 또는 sudo systemctl start mysql 명령어를 사용합니다.

 

MySQL 접속

 

터미널 또는 명령 프롬프트에서 MySQL에 접속하려면:

mysql -u root -p

 

-u root: MySQL의 루트 사용자로 접속.

-p: 비밀번호를 요구합니다. 비밀번호를 입력하면 MySQL 콘솔로 접속됩니다.

 

2. 기본 SQL 명령어

 

데이터베이스 관리

 

데이터베이스 목록 확인: 현재 MySQL 서버에 있는 모든 데이터베이스를 확인합니다.

SHOW DATABASES;

 

데이터베이스 생성: 새 데이터베이스를 생성합니다.

CREATE DATABASE my_database;

 

데이터베이스 선택: 특정 데이터베이스를 선택하여 사용합니다.

USE my_database;

 

데이터베이스 삭제: 기존 데이터베이스를 삭제합니다.

DROP DATABASE my_database;

 

테이블 관리

 

테이블 목록 확인: 현재 선택된 데이터베이스의 모든 테이블을 확인합니다.

SHOW TABLES;

 

테이블 구조 확인: 특정 테이블의 구조를 확인합니다.

DESCRIBE table_name;

 

테이블 생성: 새로운 테이블을 생성합니다.

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

 

테이블 삭제: 기존 테이블을 삭제합니다.

DROP TABLE table_name;

 

3. 데이터 조작 (CRUD)

 

데이터 삽입

 

테이블에 새로운 데이터를 추가합니다.

INSERT INTO users (username, password, email) 
VALUES ('johndoe', 'securepassword', 'johndoe@example.com');

 

데이터 조회

 

전체 조회: 테이블의 모든 데이터를 조회합니다.

SELECT * FROM users;

 

조건부 조회: 특정 조건에 맞는 데이터를 조회합니다.

SELECT * FROM users WHERE username = 'johndoe';

 

특정 열만 조회: 특정 열(column)만 조회합니다.

SELECT username, email FROM users;

 

데이터 수정

 

기존 데이터를 수정합니다.

UPDATE users 
SET email = 'newemail@example.com' 
WHERE username = 'johndoe';

 

데이터 삭제

 

특정 데이터를 삭제합니다.

DELETE FROM users WHERE username = 'johndoe';

 

테이블의 모든 데이터를 삭제합니다.

DELETE FROM users;

 

4. 고급 SQL 기능

 

JOIN (조인)

 

다른 테이블과 데이터를 결합하여 조회합니다.

SELECT orders.id, users.username, orders.order_date
FROM orders
JOIN users ON orders.user_id = users.id;

 

GROUP BY 및 집계 함수

 

데이터를 그룹화하고 집계 결과를 얻습니다.

SELECT SUBSTRING_INDEX(email, '@', -1) AS domain, COUNT(*) AS user_count
FROM users
GROUP BY domain;

 

서브쿼리

 

쿼리 내에 또 다른 쿼리를 작성할 수 있습니다.

SELECT * FROM users 
WHERE created_at = (SELECT MAX(created_at) FROM users);

 

트랜잭션 관리

 

여러 SQL 작업을 하나의 트랜잭션으로 묶어 원자성을 보장합니다.

START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;

COMMIT;

COMMIT은 모든 작업을 확정하고, ROLLBACK은 트랜잭션을 취소합니다.

 

5. 사용자 및 권한 관리

 

사용자 생성 및 권한 부여

 

새로운 MySQL 사용자를 생성하고 특정 데이터베이스에 대한 권한을 부여합니다.

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON my_database.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

 

사용자 비밀번호 변경

 

기존 MySQL 사용자의 비밀번호를 변경합니다.

ALTER USER 'username'@'localhost' IDENTIFIED BY 'newpassword';

 

6. 백업 및 복원

 

데이터베이스 백업

 

MySQL 데이터베이스를 백업합니다.

mysqldump -u root -p my_database > backup.sql

 

데이터베이스 복원

 

백업된 데이터를 복원합니다.

mysql -u root -p my_database < backup.sql

 

7. MySQL 종료

 

MySQL 콘솔에서 로그아웃하거나 MySQL을 종료하려면:

EXIT;

 

또는:

QUIT;

 

8. 실습 예제

 

1. 간단한 회원 관리 시스템 구축

 

Step 1: 데이터베이스 생성

CREATE DATABASE user_management;

 

Step 2: 테이블 생성

USE user_management;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

 

Step 3: 데이터 삽입

INSERT INTO users (username, password, email)
VALUES ('alice', 'password123', 'alice@example.com'),
       ('bob', 'password456', 'bob@example.com');

 

Step 4: 데이터 조회

SELECT * FROM users;

 

Step 5: 데이터 수정

UPDATE users SET email = 'newalice@example.com' WHERE username = 'alice';

 

Step 6: 데이터 삭제

DELETE FROM users WHERE username = 'bob';

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유