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 update 후 sudo 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';
'Database > Mysql' 카테고리의 다른 글
데이터베이스 조인(SQL JOIN) 한눈에 보기: INNER, LEFT, RIGHT OUTER (6) | 2024.09.11 |
---|