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 데이터 값
- MEDIUMTEXT: 1~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
);
'백앤드 > MySQL' 카테고리의 다른 글
[포스코x코딩온] 웹개발자 입문 과정 6주차 | MySQL 설치 및 vscode 연동 (0) | 2023.04.04 |
---|