
기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은것.
데이터를 관리, 복구해주는 소프트웨어
서로간에 관계가 있는 데이터 테이블들을 모아놓은 데이터 저장공간
DB의 Data를 정의, 조작, 제어하기 위한 용어
: 데이터베이스의 스키마를 정의하거나 수정하는 데 사용
CREATE : 테이블 생성CREATE TABLE employees (	# 테이블명
    id INT PRIMARY KEY,		# 컬럼명,데이터유형,제약조건
    name VARCHAR(50),		# 컬럼명,데이터유형
    age INT,
    department VARCHAR(50)	# 컬럼명,데이터유형
);
ALTER : 테이블 수정ALTER TABLE 테이블명 RENAME TO 바꿀테이블명ALTER TABLE 테이블명 MODIFY (컬럼명,데이터유형,제약조건)ALTER TABLE 테이블명 ADD (컬럼명,데이터유형,제약조건)ALTER TABLE 테이블명 DROP COLUMN 컬럼명  ALTER TABLE (테이블명) RENAME COLUMN 컬럼명 TO 새로운컬럼명DROP : 테이블삭제DROP TABLE 테이블명 DROP TABLE 테이블명 CASCADE CONSTRAINT데이터베이스의 데이터를 조회, 삽입, 수정, 삭제하는 데 사용
SELECT : 데이터 조회SELECT column1, column2
FROM table_name
WHERE condition;INSERT : 데이터 삽입INSERT INTO table_name (column1, column2)
VALUES (value1, value2);UPDATE : 데이터 수정UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;DELETE : 데이터 삭제 DELETE FROM table_name
WHERE condition;		
#생략시 테이블 전체 데이터 삭제 (용량 초기화 x)데이터베이스의 데이터를 조회, 삽입, 수정, 삭제하는 데 사용
GRANT : 특정 권한을 부여GRANT SELECT, INSERT ON table_name TO user_name;REVOKE : 특정 권한을 취소REVOKE DELETE ON table_name FROM user_name;트랜잭션의 시작, 종료, 롤백 등을 제어하는 데 사용
COMMIT : 데이터베이스의 변경 사항을 영구적으로 저장COMMIT;ROLLBACK : 트랜잭션을 취소하고 이전의 상태로 되돌림ROLLBACK;show databases;

create database test_db;

use test_db
drop database test_db;

mysql> use mysql;
Database changed
mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+🧷 외부접속가능 사용자와 비밀번호 생성
CREATE USER 'username'@'%' indentified by 'password'🧷 현재 PC에서 접속가능 사용자와 비밀번호 생성
CREATE USER 'username'@'local host' indentified by 'password'
내부pc에서 사용 접속가능한 사용자 noma와 비밀번호 1234 생성
create user 'noma'@'localhost' identified by '1234';
Query OK, 0 rows affected (0.03 sec)
mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | noma             |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)
외부접속 가능한 사용자 noma와 비밀번호 1234 생성
 create user 'noma'@'%' identified by '1234';
Query OK, 0 rows affected (0.02 sec)
mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | noma             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | noma             |
| localhost | root             |
+-----------+------------------+
6 rows in set (0.00 sec)
🧷 외부, 내부 접속이 다른경우 사용자명이 겹쳐도 됨
🧷 외부접속가능 사용자삭제
DROP USER 'username'@'%'🧷 현재 PC에서 접속가능 사용자삭제
DROP USER 'username'@'localhost'
외부, 내부 접속 noma 사용자 삭제
 drop user 'noma'@'localhost';
Query OK, 0 rows affected (0.02 sec)
mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | noma             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)
mysql> drop user 'noma'@'%';
Query OK, 0 rows affected (0.02 sec)
mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
4 rows in set (0.00 sec)
실습을 위한 testdb 데이터베이스 생성
 create database testdb;
Query OK, 1 row affected (0.02 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
5 rows in set (0.00 sec)
user생성
 create user 'sxlbl'@'localhost' identified by '1234';
Query OK, 0 rows affected (0.01 sec)
mysql> select host, user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
| localhost | sxlbl            |
+-----------+------------------+
5 rows in set (0.00 sec)
🧷 사용자에게 부여된 권한 목록 확인
SHOW GRANTS FOR 'username'@'localhost'🧷 사용자에게 특정 데이터베이스의 모든 권한 부여
GRANT ALL ON dbname.* TO 'username'@'localhost'🧷 사용자에게 특정 데이터베이스의 모든 권한 삭제
REVOKE ALL ON dbname.* FROM 'username'@'localhost'
# 권한목록 확인
show grants for 'sxlbl'@'localhost';
+-------------------------------------------+
| Grants for sxlbl@localhost                |
+-------------------------------------------+
| GRANT USAGE ON *.* TO `sxlbl`@`localhost` |
+-------------------------------------------+
1 row in set (0.00 sec)
#testdb의 모든 권한 부여
mysql> grant all on testdb.* to 'sxlbl'@'localhost';
Query OK, 0 rows affected (0.02 sec)
mysql> show grant for 'sxlbl'@'localhost';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'grant for 'sxlbl'@'localhost'' at line 1
# 권한부여 확인
mysql> show grants for 'sxlbl'@'localhost';
+-----------------------------------------------------------+
| Grants for sxlbl@localhost                                |
+-----------------------------------------------------------+
| GRANT USAGE ON *.* TO `sxlbl`@`localhost`                 |
| GRANT ALL PRIVILEGES ON `testdb`.* TO `sxlbl`@`localhost` |
+-----------------------------------------------------------+
2 rows in set (0.00 sec)
# testdb의 모든 권한 삭제
revoke all on testdb.* from 'sxlbl'@'localhost';
Query OK, 0 rows affected (0.02 sec)
# 권한삭제 확인
mysql> show grants for 'sxlbl'@'localhost';
+-------------------------------------------+
| Grants for sxlbl@localhost                |
+-------------------------------------------+
| GRANT USAGE ON *.* TO `sxlbl`@`localhost` |
+-------------------------------------------+
1 row in set (0.00 sec)