- 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';
'MySQL' 카테고리의 다른 글
(DB)INSERT 구문과 제약 사항-8 (0) | 2025.05.08 |
---|---|
(DB)MySQL에 대표적인 데이터 타입 - 7 (0) | 2025.05.08 |
(DB)데이터베이스 구축 절차 -5 (0) | 2025.05.07 |
(DB)MySQL 워크벤치 화면 구성 살펴보기 - 4 (0) | 2025.05.07 |
(DB)데이터베이스의 발전 -3 (0) | 2025.05.06 |