

mysql -u root -p
-u root: root 사용자로 접속-p: 비밀번호 입력을 위한 옵션SHOW DATABASES;
USE test;
test라는 데이터베이스를 사용하겠다는 의미SHOW TABLES;
USE 명령어로 선택한 DB) 안에 존재하는 테이블을 보여줌USE mysql;
mysql 데이터베이스는 사용자 계정 및 권한 정보 등이 저장된 시스템 DBSHOW TABLES;
mysql 데이터베이스 내부의 모든 시스템 테이블을 나열함DESCRIBE user;
user 테이블의 컬럼(열) 정보 출력SELECT column1, column2, ... FROM table;
SELECT host FROM user;
SELECT host, user, password FROM user;
SELECT host, user, password, max_updates FROM user WHERE max_updates = 0;
SELECT host, user, password, max_updates FROM user WHERE max_updates > 0;
SELECT host, user, password, max_updates FROM user WHERE max_updates >= 0;
SELECT host, user, password, max_updates FROM user WHERE max_updates != 1;
SELECT host, user, password, max_updates FROM user WHERE max_updates <> 1;
SELECT host, user, password, max_updates FROM user WHERE max_updates BETWEEN -1 AND 1;
SELECT host, user, password, max_updates FROM user WHERE max_updates BETWEEN 0 AND 1;
SELECT host, user, password, max_updates FROM user WHERE max_updates BETWEEN 1 AND 2;
SELECT host, user, password, max_updates FROM user WHERE max_updates IN (1, 2, 3, 4);
SELECT host, user, password, max_updates FROM user WHERE max_updates IN (1, 2, 3, 0);
SELECT host, user, password, max_updates FROM user WHERE max_updates IS NULL;
SELECT host, user, password, max_updates FROM user WHERE max_updates IS NOT NULL;
SELECT host, user FROM user WHERE host = 'localhost';
SELECT host, user FROM user WHERE host LIKE 'localhost';
SELECT host, user FROM user WHERE host LIKE 'local_';
SELECT host, user FROM user WHERE host LIKE 'local_%';
SELECT host, user FROM user WHERE host LIKE '_ocal%';
SELECT host, user FROM user WHERE host LIKE 'ocal%';
SELECT host, user FROM user WHERE host LIKE 'localhost%';
SELECT host, user FROM user WHERE host LIKE '_____host%';
SELECT host, user FROM user WHERE host LIKE '_o___host%';
SELECT host, user FROM user WHERE host LIKE '%local%' AND user LIKE 'root';
SELECT host, user FROM user WHERE host LIKE '%local%' OR user LIKE 'root';
USE test;
CREATE TABLE user (
name VARCHAR(10),
uid INT,
locate VARCHAR(10),
email VARCHAR(20)
);
DESCRIBE user;
SELECT * FROM user;
INSERT INTO user (name, uid, locate, email)
VALUES ('Lee', 1, 'seoul', 'lee@test.example.com');
INSERT INTO user (uid, name, email, locate)
VALUES (2, 'KIM', 'kim@test.example.com', 'daegu');
INSERT INTO user
VALUES ('Lim', 3, 'kyunggi', 'lim@test.example.com');
INSERT INTO user
VALUES (4, 'kyunggi', 'park@test.example.com', 'Park');
SELECT * FROM user;
UPDATE user
SET name = 'Park'
WHERE uid = 0;
DELETE FROM user
WHERE uid = 0;
UPDATE user
SET locate = 'busan';
WHERE 조건이 없기 때문에 user 테이블의 모든 행의 locate 컬럼이 'busan'으로 변경됨SELECT * FROM user;
locate가 'busan' 으로 동일하게 설정됨DELETE FROM user;
WHERE 조건이 없으면 user 테이블의 모든 행이 삭제됨SELECT * FROM user;
UPDATE / DELETE 사용 시 항상 WHERE 조건부터 작성하는 습관을 들이기
실수로 실행하지 않도록 SELECT로 먼저 조건 테스트하고, 조건이 맞는지 확인한 후에 UPDATE/DELETE 실행
트랜잭션 사용이 가능한 환경이라면 꼭 BEGIN, ROLLBACK, COMMIT 구조로 안전하게 작업
SHOW VARIABLES LIKE 'auto%';
autocommit = ON 이면 각 SQL 실행 시 자동으로 커밋됨autocommit = OFF 이면 명시적인 COMMIT 없이는 반영되지 않음SET autocommit = OFF;
INSERT INTO user
VALUES ('Lim',3,'kyunggi','lim@test.example.com');
SELECT * FROM user;
COMMIT 하지 않았으므로 확정된 것은 아님ROLLBACK;
SELECT * FROM user;
exit
mysql -u root -p
SHOW VARIABLES LIKE 'autocommit';
autocommit = ON (기본값으로 복귀됨)START TRANSACTION;
-- SQL 작업들 실행
COMMIT; -- 저장
-- 또는 ROLLBACK; -- 취소
vi /etc/my.cnf
[mysqld]
autocommit = 0
[mysqld] 섹션 아래에 autocommit = 0 추가systemctl restart mysql
mysql -u root -p
SHOW VARIABLES LIKE 'autocommit';
Value가 OFF로 표시되면 성공적으로 영구 설정 완료SET autocommit = OFF; 는 현재 세션에만 일시적 적용my.cnf의 autocommit = 0 설정은 모든 사용자의 기본값 변경ALTER TABLE user ADD age INT;
ALTER TABLE user ADD level INT(5);
ALTER TABLE user DROP level;
ALTER TABLE user MODIFY email INT;
email을 INT로 수정 (기존 값이 문자열이라면 데이터 변환 주의)ALTER TABLE user ADD PRIMARY KEY(uid);
uid를 기본 키로 지정ALTER TABLE user MODIFY name VARCHAR(10) NOT NULL;
name에 NOT NULL 제약조건 추가ALTER TABLE user MODIFY locate VARCHAR(10) UNIQUE;
UNIQUE 제약 조건을 적용할 수 있음SELECT locate, COUNT(*) FROM user GROUP BY locate HAVING COUNT(*) > 1;
locate 확인 가능USE mysql;
SHOW TABLES;
DESCRIBE user;
SELECT host, user FROM user;
mysql.user 테이블 구조 확인CREATE USER user01@localhost IDENTIFIED BY '123';
user01 이라는 사용자 계정 생성 (접속 호스트는 localhost)%, 127.0.0.1 등으로도 지정 가능DESCRIBE user;
SELECT Select_priv, user FROM user;
Select_priv, Create_priv 등)SHOW GRANTS FOR user01@localhost;
SHOW GRANTS FOR root@localhost;
test DB의 user 테이블에 대해 SELECT, CREATE, DROP 권한 부여GRANT SELECT, CREATE, DROP ON test.user TO user01@localhost;
SHOW GRANTS FOR user01@localhost;
REVOKE CREATE, DROP ON test.user FROM user01@localhost;
SELECT 권한만 남았는지 확인SHOW GRANTS FOR user01@localhost;
mysqldump -u root -p test > test.dump
test 데이터베이스를 백업하여 test.dump 파일로 저장
-u root -p : root 사용자로 비밀번호 입력 후 접속
mysql -u root -p
USE test;
SHOW TABLES;
DROP TABLE user;
SHOW TABLES;
exit;
user 테이블 삭제mysql -u root -p test < test.dump
test.dump 파일을 test 데이터베이스에 덮어쓰기user 테이블이 복구됨mysql -u root -p
USE test;
SHOW TABLES;
user 테이블이 다시 존재하는지 확인