본문 바로가기

SQL

(14)
[SQL] 트리거 목차트리거트리거 활용트리거가 사용하는 임시 테이블 트리거트리거트리거(trigger)는 자동으로 수행하여 사용자가 추가 작업을 잊어버리는 실수를 방지해줌트리거는 테이블에 INSERT 나 UPDATE 또는 DELETE 작업이 발생하면 실행되는 코드다.  트리거의 기본 작동트리거는 테이블에서 DML 문(INSERT, UPDATE, DELETE 등)의 이벤트가 발생할 때 작동한다.테이블에 미리 부착되는 프로그램 코드라고 생각하면 된다.스토어드 프로시저와 달리 트리거에는 IN, OUT 매개변수를 사용할 수 없다.AFTER 트리거 기준으로 설명한다. 테이블 생성CREATE TABLE IF NOT EXISTS trigger_table(id INT, txt VARCHAR(10));INSERT INTO trigger_t..
[SQL] 스토어드 프로시저, 스토어드 함수, 커서 목차스토어드 프로시저매개변수의 사용스토어드 함수커서 스토어드  프로시저스토어드 프로시저(저장 프로시저)란 MySQL에서 제공하는 프로그래밍 기능이다.스토어드 프로시저는 쿼리 문의 집합으로도 볼 수있으며, 어떠한 동작을 일괄 처리하기 위한 용도로도 사용한다.자주 사용하는 쿼리를 반복하기보다는 스토어드 프로시저로 묶어 놓고, 필요할 때마다 MySQL을 운영할 수있다. 가장 많이 사용하는 필수적인 형식DELIMITER $$CREATE PROCEDURE 스토어드_프로시저_이름 (IN 또는 OUT 매개변수)BEGIN -- 이 부분에 SQL 프로그래밍할 코드 작성 END $$DELIMITER ;$$ 는 $ 하나로 바꿔줘도 되지만 명확하게 표기하기 위해서 2개를 사용한다. (##, %%, // 등으로 교체..
[SQL] 인덱스 목차인덱스의 종류인덱스의 장단점클러스터형 인덱스보조 인덱스인덱스의 내부 작동인덱스의 구조인덱스의 활용인덱스를 효과적으로 사용하는 방법 인덱스인덱스는 데이터를 빠르게 찾을 수 있는 도구이다. 인덱스의 종류 클러스터형 인덱스기본 키를 생성하면 자동 생성테이블에 1개만 생성가능기본 키를 지정한 열을 기준으로 자동정렬보조 인덱스고유 키로 지정하면 자동 생성여러 개 만들수 있음자동 정렬 X 인덱스의 장단점장점SELECT 문으로 검색하는 속도가 매우 빨라진다.그 결과 컴퓨터의 부담이 줄어들어 결국 전체 시스템의 성능이 향상된다.단점인덱스도 공간을 차지해서 데이터베이스 안에 추가적인 공간이 필요하다.보통 테이블의 10% 정도 된다.처음 인덱스를 만드는 데 시간이 오래 걸릴 수 있다.SELECT 가 아닌 변경작업(IN..
[SQL] 뷰 뷰뷰는 데이터베이스의 개체 중 하나이다.뷰는 테이블처럼 데이터를 가지고 있지는 않다.뷰의 실체는 SELECT 문으로 만들어져 있다.뷰에 접근하는 순간 SELECT가 실행되어 화면에 출력하는 것이다.  뷰의 종류단순 뷰: 하나의 테이블과 연관된 뷰복잡 뷰: 2개 이상의 테이블과 연관된 뷰  뷰를 만드는 형식CREATE 뷰_이름AS SELECT 문; 뷰를 만든 후에 뷰를 접근하는 방식은 테이블과 동일하게 SELECT 문을 사용한다.SELECT 열_이름 FROM 뷰_이름 [WHERE 조건];  뷰 생성 예시CREATE VIEW v_memberAS SELECT mem_id, mem_name, addr FROM member;SELECT * FROM v_member; 필요한 열만 보거나 조건식을 넣..
[SQL] 테이블 제약조건 테이블테이블은 표 형태로 구성되 2차원 구조로, 행과 열로 구성되어 있다.행은 로우(row) 나 레코드(record) 라고 부른다.열은 컬럼(column) 또는 필드(field) 라고 부른다. 제약조건테이블을 만들 때는 테이블의 구조에 필요한 제약조건을 설정해줘야 한다.기본키(PRIMARY KEY)와 외래키(FOREIGN KEY)가 대표적인 제약조건이다.기본키는 학번, 아이디, 사번 등과 같이 고유한 번호를 의미하는 열에외래키는 기본 키와 연결되는 열에 지정한다.이메일, 휴대폰과 같이 중복되지 않는 열에는 고유키(UNIQUE KEY) 를 지정할 수 있다.잘못된 입력을 방지하는 체크(CHECK) 제약조건매번 입력하기 귀찮다면 기본값(DEFAULT)값을 꼭 입력해야 하는 NOT NULL 제약조건을  설정할 ..
[SQL] 스토어드 프로시저 목차IF 문IF ELSE 문CASE 문WHILE 문 동적 SQL 스토어드 프로시저스토어드 프로시저는 MySQL 에서 프로그래밍 기능이 필요할 때 사용하는 데이터베이스 개체이다.SQL 프로그래밍은 기본적으로 스토어드 프로시저 안에 들어가야 한다. 스토어드 프로시저의 구조   IF 문IF 문은 조건 문으로 가장 많이 사용되는 프로그래밍 문법 중 하나이다. IF 문의 기본 형식IF THEN SQL 문장들END IF; 'SQL 문장들' 이 한 문장이라면 그 문장만 써도 되지만, 두 문장 이상 처리할 때는 BEGIN ~ END로 묶어줘야 한다. 예시DELIMITER $$ CREATE PROCEDURE ifProc1()BEGIN IF 100 = 100 THEN SELECT '100은 10..
[SQL] 조인 조인이란?조인은 두 테이블을 엮어서 정보를 추출하는 것을 말한다.   내부 조인두 테이블을 연결할 때 가장 많이 사용되는 것이 내부 조인이다.그냥 조인이라 부르면 내부 조인을 의미한다.두 테이블의 조인을 위해서는 테이블이 일대다(one to many) 관계로 연결되어야 한다.  일대다 관계데이터베이스의 테이블은 하나로 구성되는 것보다는여러 정보를 주제에 따라 분리해서 저장하는 것이 효율적이다.이 분리된 테이블은 서로 관계를 맺고 있다.한쪽 테이블에는 하나의 값만 존재해야 하지만, 연결된 다른 테이블에는 여러 개의 값이 존재할 수 있는 관계 예시회원 테이블에서 블랙핑크(BLK)의 아이디는 1개 밖에 없다. (기본 키)구매 테이블의 아이디에서는 3개의 BLK가 있을 수 있다. (외래 키)즉, 회원은 1명이지..
[SQL] MySQL의 데이터 형식 목차정수형문자형날짜형변수의 사용데이터 형 변환  데이터 형식테이블을 만들 때는 데이터 형식을 설정해야 한다.데이터 형식에는 크게 숫자형, 문자형, 날짜형이 있다.다양한 데이터 형식이 존재하는 이유는 실제로 저장될 데이터의 형태가 다양하기 때문이다.각 데이터에 맞는 데이터 형식을 지정함으로써 효율적으로 저장할 수 있다.예시이름을 저장하기 위해 내부적으로 100 글자를 저장할 칸을 준비하는 것은 낭비이다. 데이터 형식MySQL에서 제공하는 데이터 형식의 종류는 수십 개 정도이다.데이터 형식마다 크기나 표현할 수 있는 숫자의 범위가 다르다. 정수형정수형은 소수점이 없는 숫자이다.인원 수, 가격, 수량 등에 사용정수형으로 03을 저장한다면 0은 사라진다. 정수형으로 테이블을 만들어보자.CREATE TABLE h..
[SQL] 데이터 변경을 위한 SQL 문 목차INSERT 문UPDATE 문DELETE 문 데이터 변경을 위한 SQL 문 데이터베이스와 테이블을 만든 후에는 데이터를 변경하는 입력/수정/삭제 기능이 필요하다.예를 들어, 새로 가입한 회원을 테이블에 입력할 때는 INSERT 문을,회원의 주소나 연락처가 변경되어 정보를 수정할 때는 UPDATE 문을 사용한다.또, 회원이 탈퇴해서 회원을 삭제할 때는 DELETE 문을 사용한다.  INSERT 문테이블에 행 데이터를 입력하는 기본적인 SQL 문이다.INSERT는 테이블에 데이터를 삽입하는 명령어 이다. 기본적인 형식INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...) INSERT 문은 별로 어려울 것이 없으나, 주의할 점 몇 가지가 있다.테이블 이름 다음에 나오..
[SQL] SQL SELECT 문(2) 목차ORDER BY 절LIMITDISTINCTGROUP BY 절집계 함수HAVING 절 정렬을 위한 SELECT 문SELECT 문에서는 결과의 정렬을 위한 ORDER BY결과의 개수를 제한하는 LIMIT중복된 데이터를 제거하는 DISTINCT 등이 있다. 그리고 GROUP BY 절은 지정한 열의 데이터들을 같은 데이터끼리는 묶어서 결과를 추출한다.주로 그룹을 묶는 경우는 합계, 평균, 개수 등을 처리할 때 사용하므로 집계 함수와 함께 사용한다.GROUP BY 절에서도 HAVING 절을 통해 조건식을 추가할 수 있다.HAVING 절은 WHERE 절과 비슷해 보이지만, GROUP BY 절과 함께 사용되는 것이 차이점이다. ORDER BY 절SELECT 절의 형식은 다음과 같다.SELECT 열_이름 FR..