개발하는 삶

[MySQL] 다중 테이블 및 JOIN, 조건문, 명령어 본문

CS/Database

[MySQL] 다중 테이블 및 JOIN, 조건문, 명령어

삶_ 2023. 2. 22. 17:39

다중 테이블

 

JOIN

  • 데이터베이스 내의 여러 테이블들을 조합해서 하나의 테이블로 결과를 보여주는 것
  • INNER JOIN(JOIN) + ON
    • 테이블1 INNER JOIN 테이블2 ON 조건문
    • 조건을 만족하는 데이터들을 합침
  • LEFT JOIN
    • 테이블1 LEFT JOIN 테이블2 ON 조건
    • 테이블1을 기준으로 조건을 만족하는 데이터들을 합침
  • RIGHT JOIN
    • 테이블1 RIGHT JOIN 테이블2 ON 조건
    • 테이블2를 기준으로 조건을 만족하는 데이터들을 합침
// a와 b 테이블을 합쳐서 해당 컬럼만 가진 테이블을 완성
create table 완성테이블명 (
	select a.id, a.name, b.land, b.idid
    from 테이블1 a
    join 테이블2 b on b.id = a.id
)

 

 

UNION

  • 여러개의 SELECT 문 결과를 하나의 테이블로 결과를 보여주는 것 (필드갯수, 순서, 타입이 같아야 함)
    • 합칠 때 비슷한 형식의 컬럼은 합쳐버리기 때문에 따로따로 합치고 싶으면 JOIN을 이용하기
  • SELECT 필드명 FROM 테이블1 UNION 필드명 FROM 테이블2 : 중복된 컬럼 값은 한번만 표시됨
  • SELECT 필드명 FROM 테이블1 UNION ALL 필드명 FROM 테이블2 : 중복된 컬럼 값도 전부 표시

 

인덱스

  • 테이블에서 원하는 데이터를 쉽고 빠르게 검색하기 위해 사용함
  • MySQL은 첫번째 필드부터 차례대로 테이블 전체를 검색하기 때문에 데이터가 크면 검색하는 시간이 오래걸리므로 인덱스를 활용하면 좋다
  • 생성, 정보보기
    • CREATE INDEX 인덱스이름 ON 테이블이름 (필드명1, 필드명2 …) : 인덱스 생성
    • CREATE UNIQUE INDEX 인덱스이름 ON 테이블이르 (필드명1, 필드명2 …) : 중복 값을 허용하지 않는 인덱스 생성
    • SHOW INDEX FROM 테이블이름 : 해당 테이블의 모든 인덱스 정보 보기
  • 추가, 삭제
    • ALTER TABLE 테이블이름 ADD INDEX 인덱스이름 (필드이름) : 인덱스 추가
    • ALTER TABLE 테이블이름 ADD UNIQUE 인덱스이름 (필드이름) : 중복 값을 허용하지 않는 인덱스 추가
    • ALTER(DROP) TABLE 테이블이름 DROP INDEX 인덱스이름 : 해당 테이블의 인덱스 삭제

 

날짜와 시간 함수

  • 전체
    • NOW() : 현재 날짜와 시간 (YYYY-MM-DD HH:MM:SS)
    • CURDATE() : 현재 날짜 (YYYY-MM-DD)
    • CURTIME() : 현재 시간 (HH:MM:SS)
  • 부분
    • DATE() : 전달받은 값의 날짜만 반환
    • MONTH() : 전달받은 값의 월만 반환
    • DAY() : 전달받은 값의 일자만 반환
    • HOUR() : 전달받은 값의 시간만 반환
    • MINUTE() : 전달받은 값의 분만 반환
    • SECOND() : 전달받은 값의 초만 반환

 

그룹 함수

  • COUNT() : 총 갯수 (COUNT(*) : 전체 갯수)
  • MIN(필드명) : 필드값 중 제일 작은 값
  • MAX(필드명) : 필드값 중 제일 큰 값
  • SUM(필드명) : 필드값의 총 값
  • AVG(필드명) : 필드값의 평균값

 

조건문

CASE ~ WHEN

  • if문과 비슷함
  • case when A or B then C : A 아니면 B일때 C를 반환
// 만약 ~하다면 컬럼1을 아래와 같이 업데이트
update 테이블명
set 컬럼1 = (
case
	when '안녕하세요' or '안녕' then 'HELLO'
	when '안녕하세요' AND '안녕' then 'HI'
    else 'WHAT?'
    end
)

 

 

 

 

DB 및 테이블 조회 명령어

  • DB 확인 : show databases;
  • DB 사용 : use databse명;
  • table 확인 : show tables;
  • table 스키마 확인 : desc 테이블명;

  • table의 컬럼 관련 정보 전체 확인 : show full columns from 테이블명;

 

'CS > Database' 카테고리의 다른 글

[Database] 관련 지식 메모  (0) 2023.05.23
[MySQL] 기본 문법  (0) 2022.11.23
[Oracle] create, alter 등  (0) 2022.08.16
[MyBatis] 기본 지식  (0) 2022.08.12
[Oracle] join  (0) 2022.08.11