본문 바로가기

데이터/SQL

(12)
[프로그래머스] 조건에 맞는 도서 리스트 출력하기 SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') AS PUBLISHED_DATE FROM BOOK WHERE YEAR(PUBLISHED_DATE)=2021 AND CATEGORY ='인문' ORDER BY PUBLISHED_DATE ASC;
[프로그래머스] 강원도에 위치한 생산공장 목록 출력하기 SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY WHERE ADDRESS LIKE '%강원도%' ORDER BY FACTORY_ID ASC;
[혼공] 6-2장 인덱스의 내부 작동 1. 인덱스의 내부 작동 원리 균형 트리 (Balanced tree) - 클러스터형 인덱스와 보조 인덱스는 모두 내부적으로 균형 트리로 만들어짐 - 균형 트리는 루트 페이지부터 검색 - 노드(node) : 데이터가 저장되는 공간 - 루트 노드(root node) : 노드의 가장 상위 노드 - 리프 노드 (leaf node) : 제일 마지막에 존재하는 노드 - 중간 노드 : 루프노드와 리프 노드의 중간에 끼인 노드 - MySQL에서는 노드를 페이지(page)라고 부름 - 페이지 : 최소한의 저장단위, 16Kbyte 균형 트리의 페이지 분할 - 인덱스를 만들면 SELECT의 속도를 향상시킬 수 있음 - BUT 페이지 분할 작업으로 데이터 변경 작업(INSERT,UPDATE,DELETE)시 성능이 나빠짐 2...
[혼공] 6-1장 인덱스 개념 1. 인덱스 인덱스(index) - 데이터를 빠르게 찾을 수 있도록 도와주는 도구 - 테이블의 열(컬럼) 단위에 생성 - 하나의 열에는 하나의 인덱스 생성 가능 SHOW INDEX - 인덱스의 정보 확인 장점 - SELECT문으로 검색하는 속도가 매우 빨라짐 - 컴퓨터의 부담이 줄어들어서 전체 시스템의 성능이 향상됨 단점 - 인덱스도 공간을 차지해서 데이터베이스 안에 추가적인 공간 필요 - 데이터의 변경 작업 (INSERT,UPDATE,DELETE)이 자주 일어나면 성능이 나빠질 수도 있음 2. 인덱스의 종류 1) 클러스터형 인덱스 (Clustered Index) - 기본 키로 지정하면 자동생성되며 테이블에 1개만 만들 수 있음 - 영어 사전과 비슷 CREATE TABLE table1 ( col1 INT..
[혼공] 5-3장 가상의 테이블 뷰 1. 뷰의 개념 - 뷰의 실체는 SELECT문으로 만들어져 있기 때문에 뷰에 접근한느 순간 SELECT가 실행되고 그 결과가 화면에 출력 - 단순 뷰 : 하나의 테이블로 만든 뷰 - 복합 뷰 : 두 개 이상의 테이블로 만든 뷰 - 형식 CREATE VIEW 뷰_이름 AS SELECT문; - 뷰에 접근하는 방식은 테이블과 동일한 SELECT문 ex) 회원 테이블의 아이디, 이름, 주소에 접근하는 뷰 USE market_db; CREATE VIEW v_member AS SELECT mem_id,mem_name,addr FROM member; SELECT * FROM v_member; 2. 뷰를 사용하는 이유 1) 보안(security)에 도움이 됨 2) 복잡한 SQL을 단순하게 만듬 3. 뷰의 실제 작동 1..
[혼공] 5-2장 테이블 제약조건 제약 조건(constraint) - 데이터의 무결성을 지키기 위해 제한하는 조건 1. 기본 키 제약 조건 기본키(Primary Key) - 데이터를 구분할 수 있는 식별자 - ex) 회원 테이블의 아이디, 학생 테이블의 학번, 직원 테이블의 사번 - 중복될 수 없음 - NULL 값 입력 불가 - 기본 키로 생성한 것은 자동으로 클러스터형 인덱스가 생성 - 테이블은 기본 키를 1개만 가질 수 있음 1) CREATE TABLE에서 기본 키 설정 CREATE TALBE member ( mem_id CHAR(8) NOT NULL PRIMARY KEY, ... ); - 회원 아이디(mem_id)는 회원 테이블(member)의 기본키 2) ALTER TABLE에서 기본 키 설정 DROP TABLE IF EXISTS..
[혼공] 4-3장 SQL 프로그래밍 스토어드 프로시저 - MySQL에서 프로그래밍 기능이 필요할 때 사용하는 데이터베이스 개체 DELIMITER $$ CREATE PROCEDURE 스토어드_프로시저_이름() BEGIN 이 부분에 SQL 프로그래밍 코딩 END $$ -- 스토어드 프로시저 종료 DELIMITER; -- 종료 문자를 다시 세미콜론으로 변경 CALL 스토어드_프로시저_이름(); -- 스토어드 프로시저 실행 1. IF 문 - 기본 형식 IF THEN SQL 문장들 END IF; - SQL 문장이 두 문장 이상이 처리되어야 할 때는 BEGIN ~ END로 묶어줘야 함 ex) DROP PROCEDURE IF EXISTS ifProc1; -- 기존에 ifPro1을 만든적이 있다면 삭제 DELIMITER // CREATE PROCEDUR..
[혼공] 4-2장 두 테이블을 묶는 조인 조인(join) - 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것 1. 내부조인 (inner join) - 테이블이 일대다(one to many)관계로 연결되어야 함 - 일반적으로 조인이라 부르는것은 내부조인 - 내부 조인은 두 테이블에 모두 있는 내용만 조인되는 방식 - 내부 조인은 두 테이블에 모두 데이터가 있어야만 결과가 나옴 - 일대다 관계 - 한쪽 테이블에는 하나의 값만 존재해야하지만, 연결된 다른 테이블에는 여러 개의 값이 존재할 수 있는 관계 ex) - 회원 테이블 에서 'BLK'는 1명밖에 없음 - 회원 테이블의 아이디를 기본키(primary key)로 지정 - 구매 테이블의 아이디에서는 3개의 BLK 찾을 수 있음 - 회원은 1명이지만 구매는 여러번(many)할 수 있다 -..