mysql -u [username] -p -h [hostname] -p [port] [database_name]
CREATE DATABASE [database 명];
USE [database 명];
예시
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
테이블 안에 넣을 컬럼에 대해서는
[컬럼명] 타입 추가설정(기본키, 외래키, 디폴트, null 여부 등)의 순서로 작성해주면 된다.
기본키 : [column name] [type] AUTO_INCREMENT PRIMARY KEYNull 불가 : [column name] [type] NOT NULLNull 허용 : [column name] [type] DEFAULT NULL기본값 : [column name] [type] DEFAULT [기본값]외래키 :
명령어
INSERT INTO [테이블명] ([컬럼1], [컬럼2], ...) VALUES ([컬럼1 넣을 값], [컬럼2 넣을 값], ...);
예시
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
명령어
전체 컬럼 => SELECT * FROM [테이블명] WHERE [조건];
일부 컬럼 => SELECT [컬럼1], [컬럼2], [컬럼3], ... FROM [테이블명] WHERE [조건];
예시
SELECT * FROM users WHERE email = 'alice@example.com';
SELECT name FROM users WHERE email = 'alice@example.com';
명령어
UPDATE [테이블명] SET [변경할 컬럼1] = [변경할 값], [변경할 컬럼2] = [변경할 값], ... WHERE [조건];
예시
UPDATE users SET name = 'Alicia' WHERE id = 1;
명령어
DELETE FROM [테이블명] WHERE [조건];
예시
DELETE FROM users WHERE id = 1;
SHOW TABLES;
DESCRIBE users;
START TRANSACTION;
INSERT INTO employees (employee_id, name) VALUES (101, 'John');
SAVEPOINT savepoint1;
INSERT INTO employees (employee_id, name) VALUES (102, 'Jane');
ROLLBACK TO savepoint1;
INSERT INTO employees (employee_id, name) VALUES (103, 'Mike');
COMMIT;
START TRANSACTION으로 트랜잭션을 시작했다.INSERT 작업을 진행한 뒤, COMMIT이 아닌 SAVEPOINT를 지정해주었다. 이를 통해 저장점을 설정한 것이다.INSERT 시행 후 SAVEPOINT1로 돌아가는 ROLLBACK을 실행했다.INSERT는 취소되고, 'John'을 저장한 상태로 돌아간다.COMMIT으로 데이터를 영구 저정했다.
READ UNCOMMITTED: 커밋되지 않은 데이터도 읽을 수 있는 가장 낮은 고립성 수준
READ COMMITTED: 다른 트랜잭션에서 커밋된 데이터만 읽는 수준으로 Oracle 기본값
REPEATABLE READ: 트랜잭션이 완료될 때까지 같은 데이터를 반복해서 읽을 수 있도록 보장
SERIALIZABLE: 가장 엄격한 고립성 수준으로, 트랜잭션 간 데이터베이스가 완전히 고립되도록 보장
설정 예시
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
명령어
CREATE USER '[사용자명]'@'[호스트]' IDENTIFIED BY '[비밀번호]';
GRANT [부여할 권한] ON [데이터베이스명]. TO '[사용자명]'@'[호스트]';
FLUSH PRIVILEGES;
예시
CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL PRIVILEGES ON my_database. TO 'my_user'@'localhost';
FLUSH PRIVILEGES;
FLUSH PRIVILEGES; 는 변경된 권한을 적용한다는 의미!
명령어
GRANT [부여권한1], [부여권한2], ... ON [데이터베이스명].[테이블명] TO '[사용자명]'@'[호스트]';
예시
GRANT SELECT, INSERT, UPDATE, DELETE ON my_database.users TO 'my_user'@'localhost';
명령어
CREATE INDEX [인덱스명] ON [테이블명]([대상 컬럼명]);
예시
CREATE INDEX idx_users_email ON users(email);
예시
SELECT u.user_id, u.name, p.profile_id, p.age
FROM Users u
INNER JOIN Profiles p
ON u.user_id = p.user_id;
예시
SELECT u.user_id, u.name, p.profile_id, p.age
FROM Users u
LEFT JOIN Profiles p
ON u.user_id = p.user_id;
예시
SELECT u.user_id, u.name, p.profile_id, p.age
FROM Users u
RIGHT JOIN Profiles p
ON u.user_id = p.user_id;
예시
SELECT u.user_id, u.name, p.profile_id, p.age
FROM Users u
LEFT JOIN Profiles p
ON u.user_id = p.user_id
UNION
SELECT u.user_id, u.name, p.profile_id, p.age
FROM Users u
RIGHT JOIN Profiles p
ON u.user_id = p.user_id;
UNION을 통해 LEFT JOIN, RIGHT JOIN 값을 합치면 된다.
예시
SELECT u.user_id, p.profile_id
FROM Users u
CROSS JOIN Profiles p;
카티전 곱(Cartesian Product)을 생성한다.
예시
SELECT e1.employee_id, e1.name, e2.employee_id, e2.name
FROM Employees e1
INNER JOIN Employees e2
ON e1.manager_id = e2.employee_id;
mysqldump -u root -p [backup_DBname] > [backup_filename]
[backup_DBname] : 백업 대상인 DB의 명을 넣어주면 된다.[backup_filename] : 백업 데이터가 저장될 파일의 이름을 지정하는 것으로, 원하는 명칭.sql 형식이나 경로를 포함하여 /path/to/backup/my_backup.sql로도 지을 수 있다.mysql -u root -p [backup_DBname] > [backup_filename]