Mysql 기준으로 작성되었습니다.
용어 정리
스키마: DB, 테이블의 정의 내역
외래키: 어떤 테이블의 기본키가 다른 테이블의 컬럼에 들어 있는 경우
NoSql: 검색보다 저장속도가 중요한 경우에는 별도로 다루는 NoSQL과 같은 시스템을 고려할 수 있다.
DML: 테이블의 데이터를 조작 (CRUD)
DDL: 테이블의 스키마를 정의, 수정 (create, drop, alter)
DCL: 테이블 접근 권한 (grant, revoke)
join
inner join: null값을 허용하지 않음
Left join: join의 왼쪽 테이블의 null값을 포함
right join: join의 오른쪽 테이블의 null값을 포함
view
생성
create view 뷰이름 as 셀렉트구문
삭제
drop view 뷰이름
select into, insert into
select into: select한 값으로 테이블을 만든다.
create table 테이블이름 셀렉트구문
insert into: 셀렉트의 결과를 테이블에 데이터를 추가
insert into 테이블이름 셀렉트구문
case
조건문
case
when 조건 then 행동
when 조건 then 행동
end
like 검색: 패턴 매칭
select 컬럼이름 from 테이블이름 where 컬럼명 like *패턴
패턴예시 ('%', '_' 활용)
예시1) '%k' - k로 끝나는 문자
예시2) 'k%' - k로 시작하는 문자
예시3) 'k__' - k로 시작하는 3글자
주의! Like 검색은 DBMS에 부담이 많이 가서 or같은 논리연산자를 함께 사용하는 것은 자체하는 것이 좋다.
null 함수
컬럼이 Null일 경우 이를 어떻게 처리할지 명시하는 함수 Mysql에는 ifnull / coalesce 이 있다.
sum같음 함수에는 null의 처리가 내장되어 있다.
group by / having
group by: 보통 집합 함수와 함께 사용되어 그룹별 연산을 적용할 수 있다.
having: group by의 결과에 조건절을 걸 때 사용
ALL / ANY
ALL
select
Name
from
city
where
Population > ALL(select Population from city where CountryCode = 'KOR')
=> CountryCode가 'KOR'인 도시 인구의 최댓값보다 많은 인구 수를 가진 도시의 이름을 출력하게 된다.
ANY
select
Name
from
city
where
Population > ANY(select Population from city where CountryCode = 'KOR')
=> CountryCode가 'KOR'인 도시 인구의 최솟값보다 많은 인구 수를 가진 도시의 이름을 출력하게 된다.
EXISTS
where in의 서브쿼리 버전이라고 생각하면 쉽다.
사용: where exists (서브 쿼리)
select * from
Customers c
where exists
(select
*
from
Orders o
where
c.CustomerId = o.CustomerId and o.OrderDate = '1996-08-14')
=> 결과적으로 1996-08-14 에 상품을 주문한 고객의 목록을 출력
UNION
합집합의 표시
사용: select 문 UNION select 문
※ 기본적으로 distinct가 적용되어 있기 때문에 중복을 허용하고 싶다면 UNION ALL 을 활용할 것
자료형
1. 정수형
TINYINT
INT
BIGINT
2. 실수형
FLOAT
DOUBLE
DECIMAL
3. 문자열
CHAR (고정 길이)
VARCHAR (가변 길이)
4. 텍스트
TEXT (최대 약 6만 글자)
MEDIUMTEXT (최대 약 1600만 글자)
LONGTEXT (최대 약 40억 글자)
5. BLOB (동영상같은 바이너리 데이터)
BLOB
MEDIUMBLOB
LARGEBLOB
6. 시간 관련
DATA (년월일)
TIME (시분초)
DATETIME (년월일 시분초)
TIMESTAMP (년월일 시분초 형태이나 1970-01-01 이후 경과한 시간을 표시해줌)
Index
인덱싱을 하면 검색이 빨리진다. 하지만 데이터 입력, 수정, 삭제 시에는 더 퍼포먼스가 떨어진다. 이를 감안하여 적용을 결정해야 한다.
기본키는 자동으로 인덱스가 설정된다.
인덱스 추가 방법: create index 인덱스 이름 on 테이블명(컬럼명)
create index Card_index on Card(card_number);
스토리지 엔진
데이터베이스가 데이터를 CURD 할 때 사용하는 기본 컴포넌트
Myisam과 InnoDB 가 있다.
Myisam: 상대적으로 높은 성능
InnoDB: 상대적으로 높은 안정성 (mysql은 기본적으로 InnoDB 사용)
'기타' 카테고리의 다른 글
AWS Beanstalk로 spring프로젝트 배포 정리 (0) | 2023.06.24 |
---|---|
트래픽을 상승을 위한 구글 SEO 완전 정복 (1) | 2021.02.09 |
jenkins 설치 시 플러그인 설치오류 (Feat. docker) (0) | 2020.07.23 |
TDD (0) | 2020.02.27 |