본문 바로가기
BACK-END

[MySQL]간단한 MySQL 사용 방법(SQL문)

by 지에스정 2022. 1. 4.

 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