개발하는 삶
[MySQL] 다중 테이블 및 JOIN, 조건문, 명령어 본문
다중 테이블
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 |