-- DDL?
-- Data Definition Language
-- DB CREATE
create database company;
-- DB table CREATE
use company;
create table department(
id int primary key,
name varchar(50),
budget int
);
desc department;
alter table department add column note varchar(100);
alter table department drop column budget;
drop table department;
drop database company;
-- DML; Data Manipulation Language
-- SELECT, INSERT, UPDATE, DELETE
-- 혹시 모를 사고 예방으로 사용후 drop 은 주석 처리
-- drop database school;
create database school;
use school;
create table student(
id int primary key,
name varchar(50),
age int
);
-- DML usage
-- data insert
insert into student(id, name, age) values(1, 'Kim', 20);
insert into student(id, name, age) values(2, 'Lee', 22);
-- data select
select id, name, age from student;
select name from student;
select * from student;
-- data update
-- 데이터 수정시 가능한 조건절 명시해서 사용하자
-- update student set age = 21; 전부 다 21로 변경해주는 query
update student set age = 25 where id = 1;
update student set age = 22 where id = 2;
-- 데이터 삭제 data delete
delete from student;
delete from student where name = 'Lee';
-- DCL
-- 현재 root 계정(최고 관리자)
create database mydb2;
-- 사용자 생성 및 비밀번호 설정(로컬 컴퓨터로만 접근 가능한 계정) - mysql 5 & 8 사용방법 다름
create USER 'user1'@'localhost' identified by 'password123';
-- user1 계정에 조회 권한만 부여해보자
grant select on school.student to 'user1'@'localhost';
-- user1 계정 조회 권한 회수
revoke select on school.student from 'user1'@'localhost';
-- 원격 및 로컬에서 접근 가능한 ID 생성 및 권한 부여(원격+로컬)
create user 'user2'@'%' identified by 'password123';
create user 'user2'@'localhost' identified by 'password123';
-- 권한부여
-- school.student (insert, select, delete, update)
grant select, insert, update, delete on school.student to 'user2'@'%';
grant select, insert, update, delete on school.student to 'user2'@'localhost';
revoke delete on school.student from 'user2'@'%';
-- MySQL 실습 과제: DDL, DML, DCL
-- 실습 1: DDL
-- 문제: 'academy' 데이터베이스를 만들어 주세요 (만약 존재 한다면 삭제하고 다시 생성)
drop database academy;
create database academy;
use academy;
-- 문제: 'student' 테이블을 만들어 주세요
create table student(
id int primary key,
name varchar(50),
age int
);
-- 문제: 'student' 테이블에 phone 컬럼 제약 조건 VARCHAR(15)를 추가해주세요
alter table student add column phone varchar(15);
-- 실습 2: DML
-- 문제: 데이터 (1, '김철수', 20), (2, '홍길동', 30) 를 추가해 보세요
insert into student(id, name, age) value(1, '김철수', 20);
insert into student(id, name, age) value(2, '홍길동', 30);
-- 문제: student 에 있는 데이터를 조회 해보세요
select * from student;
-- 문제: id=2 데이터를 삭제해 보세요
delete from student where id = 2;
-- 실습 3: DCL
-- 문제: 로컬 호스트 'user3' 사용자를 생성해보세요 비밀번호는 password123 입니다.
create USER 'user3'@'localhost' identified by 'password123';
-- 문제: user3 계정에 academy.student 테이블에 SELECT, INSERT, UPDATE, DELETE 권한을 주세요.
grant select, insert, update, delete on academy.student to 'user3'@'localhost';
-- 문제: user3 계정에 academy.student 테이블에 SELECT, INSERT, UPDATE, DELETE 권한 회수 해주세요
revoke select, insert, update, delete on academy.student from 'user3'@'localhost';