MySQL 특징
세계에서 가장 많이 쓰이는 오픈 소스의 RDBMS이다
다양한 운영체제에 다양한 언어로 활용 가능하다
표준 SQL 형식을 사용한다
SQL문
Structured Query Language
한줄씩 번역되고 빈번한 수정이 있을 때 효율적이다
번역과 동시에 실행된다(번역 파일이 따로 존재하지 않는다)
DDL / DML / DCL / TCL
데이터베이스 생성
CREATE DATABASE 데이터베이스 명;
데이터베이스 사용
USE 데이터베이스명;
*본 포스팅에서 {} 의미 : 생략이 가능하다는 뜻
DDL
Data Definition Language - 데이터 정의어
테이블에 관련된 쿼리문
CREATE : 테이블 생성
ALTER : 테이블 수정
DROP : 테이블 삭제
자료형
숫자형
INT : 정수
DECIMAL(n,m) : n(전체자리수)/m(소수점자리수)
ex) DECIMAL(4,2) --> -99.99 ~ 99.99
문자열
CHAR(n) : n바이트의 문자열(고정형), 빈자리는 그대로 남겨둔다
ex) CHAR(4) --> [____] --> A를 넣으면 --> [A___]
VARCHAR(n) : n바이트의 문자열(가변형), 빈자리는 할당 해제
ex) VARCHAR(4) --> [____] --> A를 넣으면 --> [A]
시간(날짜)
DATE : 한 순간의 날짜를 표현하는 타입
DATETIME : 한 순간의 날짜와 시간을 표현하는 타입
TIMESTAMP
테이블 생성
CREATE TABLE 테이블명(
컬럼명 1 자료형,
컬럼명 2 자료형,
...
)
테이블 삭제
DROP TABLE 테이블명;
테이블 수정
ALTER TABLE 테이블명;
칼럼추가
ADD 컬럼명 자료형;
컬럼수정
MODIFY 컬럼명 자료형;
컬럼삭제
DROP 컬럼명;
제약조건
데이터 삽입시 특정한 조건에 맞는 데이터만 삽입될 수 있도록 걸어놓은 조건
PRIMARY KEY
기존 테이블 --> ALTER / ADD CONSTRAINT
새로운 테이블 --> CREATE 안에 CONSTRAINT PRIMARY KEY(컬럼명)
FOREIGN KEY
다른 테이블과 관계성을 맺기 위해 가져오는 PK값
다른 테이블에 존재하는 값만 들어올 수 있도록 걸어주는 제약조건
관계성을 맺은 테이블
FOREIGN KEY 를 부여한 테이블은 자식 테이블
참고되고 있는 테이블은 부모테이블
값 추가, 테이블 생성 : 부모테이블 먼저
값 삭제, 테이블 삭제 : 자식 테이블 먼저
무결성
데이터의 정확성, 일관성, 유효성이 유지되는 것
정확성
데이터는 애매하지 않아야 한다
일관성
각 사용자가 일관된 데이터를 볼 수 았도록 해야한다
유효성
데이터가 실제 존재하는 데이터여야 한다
1. 개체 무결성
서로 다른 두 개체는 같지 않아야 하는 것
테이블이 PK로 설정된 컬럼을 가지도록 설계한다
2. 참조 무결성
참조되는 기본키(PRIMARY KEY)는 실제 존재하는 키여야 하는 것
3. 도메인 무결성
컬럼의 타입, NULL값 허용 등에 대한 사항을 정의하고
올바른 데이터가 들어왔는지 확인 하는 것
DML
Data Manipulation Language
데이터 조작어
실질적으로 데이터들을 CRUD하는 언어
데이터 추가
INSERT INTO 테이블명 {(컬럼명1, 컬럼명2, ...)} VALUES(값1, 값2, ...);
데이터 삭제
DELETE FROM 테이블명 WHERE 조건식;
데이터 수정
UPDATE 테이블명 SET 수정할컬럼 = 새로운값 WHERE 조건식 ;
데이터 조회
SELECT 컬럼명1, 컬럼명2,... FROM 테이블명 WHERE 조건식;
조건식
= : 같다
>< : 다르다
AND : &&
OR : ||
Auto Increment
TABLE에 데이터가 추가될 떄 마다 변하는 값을 미리 설계할 수 있다
PK이고 자료형이 INT라면 설정 가능
CREATE TABLE 테이블명( PK명 INT PRIMARY KEY AUTO INCREMENT ...);
DATE, DATETIME 타입
DATE : 'YYYY-MM-DD' 형태로 삽입
DATETIME : 'YYYY-MM-DD HH:MI:SS' 형태로 삽입
별칭
SELECT 절에서의 별칭 (컬럼의 별칭): AS 뒤에 한칸 띄우고 / 그냥 한칸 띄우고 작성
FROM 절에서의 별칭(테이블 별칭) : 테이블명 뒤에 한칸 띄우고 작성
LIKE 절
조건식
뒤에 오는 와일드카드 문자열과 비교하여 같다면 참 , 다르면 거짓
컬럼 LIKE('와일드카드문자열')
와일드카드
_(언더바) : 한 글자
EX) '_민수' : '정민수', '이민수','김민수'....
% : 모든 것(0글자도 포함)
EX) '정%' : '정준하', '정일우', '정근우', '정인', '정'...
'_이_' 세글자 중 가운데가 '이'면 참
'_이%' 두번째 글자가 '이'면 참
'%이_' 뒤에서 두번쨰 글자가 '이'면 참
'_*이%' 세번쨰 글자가 '이'면 참
'*이_%'두번쨰 글자가 '이'이며 3글자 이상이면 참
함수
단일행 함수
행 하나당 결과를 하나씩 만들어주는 함수
문자함수, 숫자함수, 형변환함수, Null처리 함수
그룹(집계) 함수
여러 향의 데이터들을 받아서 하나의 결과로 도출해주는 함수
형변환 함수
CAST(값 AS 타입)
CONVERT(값, 타입)
NULL 처리 함수
IFNULL(컬럼,대체값)
ORDER BY 절
검색 결과를 정렬하는 문법
ORDER BY 컬럼1 {정렬기준}, 컬럼2 {정렬기준},...
컬럼1 기준으로 정렬, 그 후에 기준으로 정렬,...
{정렬기준}
생략시 오름차순
ASC 오름차순
DESC 내림차순
그룹함수
COUNT, SUM, AVG, MAX, MIN
GROUP BY 절
~~ 별( 대륙별 gnp평균)
그룹함수를 적용시킬 범위(파트)를 나누는 문법
GROUP BY 컬럼1, 컬럼2, ...
컬럼1로 그룹을 짓고, 그 내부에 컬럼2를 기준으로 그룹을 나누기,...
Having
GROUP BY를 통해 그룹을 짓고 구해진 결과가 있을 떄
그 그룹에 조건을 부여할 때 사용하는 문법
HAVING 조건식
SELECT문 구조
SELECT 컬럼 1, 컬럼2, ...
WHERE 조건식 GROUP BY 컬럼1, 컬럼2,...
HAVING 조건식 ORDER by 컬럼1, 컬럼2, ... ;
SELECT문 수행 순서
FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY
JOIN(조인)
여러 테이블에 흩어져 있는 정보 중 사용자가 필요한
정보만 가져와서 가상의 테이블처럼 만들고 결과를 보여주는 것
내부 조인(INNER JOIN)
FROM 테이블명1 {INNER} JOIN 테이블명2 ON 조인조건식;
조건식이 일치하는 행을 테이블2에서 찾아서 테이블1의 행 옆에 붙여서 결과를 완성시킨다
'BACK-END' 카테고리의 다른 글
[JSP] 스크립트 태그 / 디렉티브 태그 /액션 태그 (0) | 2022.01.25 |
---|---|
[JSP]Java Server Pages 시작 (0) | 2022.01.17 |
[ORM] ORM 프레임워크 (0) | 2020.06.17 |
[MySQL] MySQL 과 schema (0) | 2020.06.15 |
[node.js]서버 구축하기 Express (0) | 2020.05.22 |