백앤드/MySQL

[포스코x코딩온] 웹개발자 입문 과정 6주차 | DDL,DML,DCL

영최 2023. 4. 4. 23:37
728x90

1.SQL문

 Structured Query Language의 약자로,

 데이터베이스를 제어하고 관리할 수 있는 목적의 프로그래밍 언어를 의미한다.

 파일 업로드 시에는 req.body로 파일을 전송 받거나 전송할 수 없다. 

 가.분류

  SQL의 분류로는 DML,DDL,DCL이 있다.

  - DDL: 데이터 정의어 (구조 정의)

  - DML: 데이터 조작어 (조회, 검색)

  - DCL: 데이터 제의어 (권한)

 

 나.SQL 공통 명령어

-- 데이터베이스 목록 보기
SHOW DATABASE:

-- 데이터 베이스 이용하기
USE 데이터베이스명;

-- 테이블 목록 보기
SHOW TABLES;

-- 테이블 구조 보기
DESC 테이블명;

 

2.DDL

 Data Definition Language의 약자로, 

 데이터베이스 혹은 테이블을 정의하는 언어이다.

 가.CREATE 

-- DATABASE 생성 및 한글 인코딩
CREATE DATABASE codingon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

-- DATABASE codingon 사용
use codingon;

-- codingon안에 student라는 TABLE생성
CREATE TABLE student (
	id VARCHAR(20) NOT NULL PRIMARY KEY,
	name VARCHAR(10) NOT NULL,
    age INT,
	birthday DATE NOT NULL
);

   1)문자형 데이터 형식

    - CHAR(N):  1~255 byte, 고정길이 문자형

    - VARCHAR(N): 1~65535 byte, 가변길이 문자형(입력에 따라 달라짐)

    - TEXT: 1~65535 byte, 255크기의 TEXT 데이터 값

    - MEDIUMTEXT1~16777215byte, 16777215byte크기의 TEXT 데이터 값

   2)숫자형 데이터 형식

    - TINYINT:  1byte, -128 ~ 127 범위, 정수

    - SMALLINT:  2byte, -32768 ~32767 범위, 정수

    - INT:  4byte, 약 -21억 ~21억 범위, 정수

    - BIGINT:  8byte, 약-900경 ~ 900경, 정수

    - FLOAT:  4byte, -3,40E+38 ~-1.17E-38 범위, 소수점 아래 7자리까지 표현

   3)날짜형 데이터 형식

    - DATE:  3 byte, 날짜 저장(YYYY-MM-DD 형식)

    - TIME: 3 byte, 시간 저장(HH:MM:SS 형식)

    - DATATIME: 8 byte, 날짜와 시간 저장(YYYY-MM-DD HH:MM:SS 형식)

 

 나.ALTER

  테이블의 특정 컬럼을 삭제,추가,변경시 사용하는 명령어

-- 1.컬럼 추가(ADD)
ALTER TABLE student ADD age INT NOT NULL;

-- 2.컬럼 변경(MODIFY)
ALTER TABLE student MODIFY age VARCHAR(10) NOt NULL;

-- 3.컬럼 삭제(DROP)
ALTER TABLE student DROP COLUMN age;

 

 .DROP vs TRUNCATE

  테이블 완전 삭제 혹은 행만 삭제 방법이다.

-- 1.DROP: 테이블 완전 삭제
DROP TABLE student;

-- 2.TRUNCATE: 테이블 행만 삭제 
TRUNCATE TABLE student;

3.DML

 Data Manipulation Language의 약자로, 

 데이터베이스의 내부 데이터를 관리하기 위한 언어이다.

 대부분 컴퓨터 소프트웨어가 가지는 기본적인 처리기능인 'CRUD'를 가능하게 한다.

  - Create: 생성 -> SQL: INSERT

  - Read: 읽기 -> SQL: SELECT

  - Update:갱신 -> SQL: UPDATE

  - Delete: 삭제 -> SQL: DELETE

 가.INSERT

-- 방법1: 필드 명시
INSERT INTO student (id, name, birthday) VALUE('sarah123','sarah','2023-04-03');

-- 방법2: 필드 명시 X , 모든 컬럼 값을 순서대로 입력
INSERT INTO student VALUES ('kim1234','kim','10','2000-01-01');

 

 나.SELECT★

  데이터를 검색하는 기본 문장이다.

  질의어(Query)라고도 하며 SQL 문 중 가장 많이 사용되는 문법이다.

   - SELECT 속성이름

   - FROM 테이블 이름

   - WHERE 검색 조건; 형식으로 작성한다.

-- 오름차순
SELECT * FROM student ORDER BY age ASC;

-- 내림차순 제한 2개만 출력
SELECT * FROM student ORDER BY age DESC LIMIT 2;

-- WHERE 조건
SELECT * FROM student WHERE birthday <= '2001-01-01';
SELECT name FROM student WHERE name != 'kim';
SELECT name FROM student WHERE not name = 'kim';
SELECT * FROM student WHERE age BETWEEN 15 AND 25;
SELECT * FROM student WHERE name IN ('kim', 'lee');

-- 글자 수 상관 없이 마지막 두 글자가 'im' 이면 조건 만족
-- kim, lim, shim 모두 조건 만족
SELECT * FROM student WHERE name LIKE '%im';

-- 총 3글자인데 두 번째 문자는 'i', 그리고 세 번째 문자는 'm'
-- kim, lim만 조건 만족 
SELECT * FROM student WHERE name LIKE '_im';

   1)비교 연산자 (WHERE)

    - =:  같다

    - >보다 크다

    - >=: 보다 크거나 같다

    - < 보다 작다

    - <= 보다 작거나 같다

   2)부정 연산자 (WHERE)

    - !=:  같지 않다

    - ^=:  같지 않다

    - <>:  같지 않다

    - NOT 컬럼명 = : ~와 같지 않다

   3)범위, 집합, 패턴, NULL (WHERE)

    - BETWEEN a AND b:  a 와 b(포함) 사이의 값이면 참

    - IN(list): 리스트에 있는 값 중 하나라도 일치하면 참

    - LIKE '비교 문자열': 비교문자열과 형태가 일치하면 사용

        (%:0개이상 어떤 문자, _:1개의 단일 문자)

    - IS NULL : NULL값인 경우 참

   4)논리연산자 (WHERE)

    - AND:  앞 뒤 조건 모두 참일 경우 참

    - OR: 하나라도 참이면 참

    - NOT: 반대 결과 리턴

 

 다.UPDATE

  테이블에서 특정 속성 값 수정

-- 데이터 수정 
-- name이 'kim'인 데이터의 age를 1로 수정 
UPDATE student SET age = 1 WHERE name = 'kim';

 

라.DELETE

  테이블에서 기존 행을 삭제 

-- 데이터 삭제 
-- id가 'shim1234'인 데이터 삭제 
DELETE FROM student WHERE id = 'shim1234';

 

4.DCL

 Data Control Language의 약자로, 

 데이터베이스에 접근하고 데이터 사용 권한을 주거나 회수하는데 사용하는 명령어이다.

 가.GRANT

  특정 데이터베이스 사용자에게 특정 작업에 대한 수행 권한을 부여한다.

GRANT permission_type ON db_name.table_name
	TO username@host IDENTIFIED BY 'pw' [WITH GRANT OPTION];

 

 나.REVOKE

  특정 데이터베이스 사용자에게 특정 작업에 대한 권한을 박탈한다.

REVOKE permission_type ON db_name.table_name FROM username@host;

 

5.외래키 설정 방법

-- student 테이블
-- id : 기본 키
CREATE TABLE student (
	id VARCHAR(20) NOT NULL PRIMARY KEY,
    name VARCHAR(10) NOT NULL,
    age INT NOT NULL,
    birthday DATE NOT NULL
);

-- class 테이블
-- student_id : 외래 키
-- AUTO_INCREMENT: 데이터 삽입 시 1씩 증가
CREATE TABLE class (
	id int AUTO_INCREMENT PRIMARY KEY,
    class_name varchar(20),
    student_id varchar(20),
    FOREIGN KEY (student_id) REFERENCES student(id) ON UPDATE CASCADE ON DELETE CASCADE
);
728x90