MySQL

(DB) SQL(DDL, DML, DCL)이란? -6

mynote6676 2025. 5. 7. 19:42

- SQL(Structured Query Language)은 데이터베이스와 소통하는 언어이다.

-역활 : 데이터베이스에서 데이터를 만들고, 조회하고, 수정하고, 삭제하고, 권한을 관리합니다.

 

-SQL은 크게 세 가지로 나뉩니다.

1.DDL : 데이터베이스 구조를 만든다.

2.DML : 데이터를 다룬다.

3. DCL : 데이터 접근 권한을 관리한다.

 

 

DDL (Data Definition Language, 데이터 정의 언어)

더보기

DDL은 데이터베이스의 구조를 만드는 명령어입니다. 테이블이나 데이터베이스르 만들거나 수정, 삭제할 때 

사용합니다. 도서관에서 책장(테이블)을 설계하는 것과 비슷해요.

 

주요 명령어

CREATE : 데이터베이스나 테이블 생성.

ALTER : 테이블 구조 수정.

DROP : 테이블이나 데이터베이스 삭제.

-------------------------------------------------------------------------------------------------------------------

-- 직접 데이터베이스 생성
create database animal;

use animal;

-- 해당 데이터 베이스 테이블생성
create table animal(
id int primary key,
name varchar(30),
size int

);

desc animal;

-- 컬럼 추가 밒 삭제 처리
alter table animal add column age varchar(100);

alter table animal drop age;

-- 테이블 삭제
drop table animal;

 

DML(Data Manipulation Language, 데이터 조작 언어)

더보기

DML은 데이터를 다루는 명령어입니다. 데이터를 추가, 조회 , 수정 , 삭제합니다.

도서관에서 책을 추가하거나 , 정보를 바꾸거나, 책을 찾는 것과 같아요.

 

주요 명령어

INSERT : 데이터 추가.

SELECT : 데이터 조회.

UPDATE : 데이터 수정

DELETE : 데이터 삭제.

 

---------------------------------------------------------------------------------------------------------

 

-- DML 에 대해 알아보자
-- INSERT, SELECT, UPDATE,DELETE

-- 주석 혹시 모를 사고 예방
-- drop database school;

create database school;

use school;

create table student(
id int primary key,
name varchar(50),
age int

);

-- DML에 사용

-- 데이터 추가
insert into student(id, name, age) values(1, '김철수', 20);
insert into student(id, name, age) values(2, '김영희', 21);

-- 데이터 조회
select  name from student; -- // 연결시 , 를 사용해서 연결
select * from student; -- // * 전체 조회

-- 데이터 수정시에는 가능한 조건절을 명시 해서 사용하자.!!!!
update student set age = 25 where id = 1;

-- 데이터 삭제
-- delete from student; // 전체 삭제
delete from student where name = '김영희';

 

DCL(Data Control Language, 데이터 제어 언어)

 

더보기

DCL은 데이터베이스 접근 권한을 관리하는 명령어입니다누가 데이터를 볼 수 있고,

수정할 수 있는지 설정합니다. 도서관에서 특정 책은 학생만, 특정 책은 선생님만 볼 수 있도록

규칙을 만드는 것과 같아요.

 

주요 명령어 

GRANT  : 권한 부여

REVOKE  : 권한 회수

 

작업 중 - root 계정

-----------------------------------------------------------------------------------------------------------------------------------

-- DCL (데이터 제어 언어)

-- 현재 root 계정(최고 관리자)
create database mydb2;

-- 사용자 생성 및 비밀번호 설정(로컬 컴푸터러만 접근 가능한 계정)- 참고로 5,8버전에 따라 명령어가 다르다.- 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';


-- 원격 및 로컬에서 접근 가능한 아이디 생성 및 권한 부여(원격,로컬 )--'%'전부를 뜻함
create user 'user2'@'%'identified by 'password123';
create user 'user2'@'localhost'identified by 'password123';

-- 권한 부여 
-- school.student (INSERT, SELECT, )
grant SELECT, insert,update,delete on school.student to 'user2'@'%';
grant SELECT, insert,update,delete on school.student to 'user2'@'localhost';

----------------------------------------------------------------------------------------------------------------------------------------

 

작업 중 - user1 계정


use school;

select * from student; 

insert into student(id, name, age) values(2, '홍길동', 22); -- 현재 권한 없음 
----------------------------------------------------------------------------------------------------------------------------

 

 



 

정리 - SQL(DDL, DML < DCL )

 

 

실습 과제 - DDL, DML, DCL

더보기

 

풀이 

 

-- DDL
-- 'academy' 데이터베이스를 만들어 주세요 (만약 존재 한다면 삭제하고 다시 생성) 
-- 'student' 테이블을 만들어 주세요
-- 'student' 테이블에 phone 컬럼 제약 조건 VARCHAR(15)를 추가해주세요

create database academy;
use academy;
create table student(
id int primary key,
name varchar(30),
age int
);
desc student;

alter table student add column phone varchar(15);

-- DML
-- 데이터 (1, '김철수', 20), (2, '홍길동', 30) 를 추가해 보세요
-- student 에 있는 데이터를 조회 해보세요
-- id=2 데이터를 삭제해 보세요
insert into student(id, name,age)values (2,'홍길동',30);
select * from student;
delete from student where name = '홍길동';

-- DCL
-- 로컬 호스트 'user3' 사용자를 생성해보세요 비밀번호는  password123 입니다.
-- user3 계정에 academy.student 테이블에 SELECT, INSERT, UPDATE, DELETE 권한을 주세요. 
-- user3 계정에 academy.student 테이블에 SELECT, INSERT, UPDATE, DELETE 권한 회수 해주세요 

create USER 'user3'@'localhost' identified by  'password123';
grant select on academy.student to 'user3'@'localhost';
revoke select on academy.student from 'user3'@'localhost';

728x90