조회한 data의 결과를 저장하여 활용할 수 있게 하는 것
CREATE VIEW section_view AS # section_view라는 이름으로 뷰 생성
SELECT section_id, section_name
FROM sections;
SELECT * FROM section_view; # 일반 조회 쿼리와 동일
---
-- 뷰 삭제
DROP VIEW section_view; # 일반 삭제와 동일
CREATE VIEW menu_view AS
SELECT
menu_id,
menu_name,
CONCAT(
SUBSTRING(business_name, 1, 1), # 컬럼 내용 일부를 감추기
REPEAT('*', CHAR_LENGTH(business_name) - 1)
) AS business,
price,
likes AS evaluation
FROM businesses B
INNER JOIN menus M
ON M.fk_business_id = B.business_id;
UPDATE section_view
SET section_name = '서양식'
WHERE section_id = 5;
# 일반 조회로 만들어진 뷰 테이블이어서 수정 가능
UPDATE business_view
SET business_name = '화룡반점'
WHERE business_name = '화룡각';
# 집계함수가 사용된 뷰 테이블이기 때문에 수정 불가능함
Primary Key에는 기본적으로 인덱스가 적용됨
ALTER TABLE `mydatabase`.`businesses`
ADD INDEX index_biz_name (business_name);
# index_biz_name이라는 인덱스를 business_name이라는 컬럼에 추가
ALTER TABLE menus
ADD INDEX index_name_cal (menu_name, kilocalories);
# index_name_cal이라는 인덱스를 menu_name과 kilocalories 두개 컬럼에 추가
SHOW INDEX FROM businesses;
ALTER TABLE businesses
DROP INDEX index_biz_name;
Full-Text 인덱스는 InnoDB, MyISM에서만 사용 가능
InnoDB : 수정, 삭제, 추가 작업이 발생할 경우 적합
MyISM : 대량의 읽기 작업만 발생할 경우 적합
ALTER TABLE ratings
ADD FULLTEXT INDEX index_full_text (comment);
# Full-text 인덱스 만들기
SELECT * FROM ratings
WHERE MATCH(comment) AGAINST ('괜찮은데');