컴퓨터/MySQL 18

MySQL (18) - 트리거(Trigger)를 만들어보자

DB에서 데이터가 변경될 때 추가적인 작업이 필요한 경우가 있습니다. 이 작업은 일반적으로 클라이언트-서버 구조에서는 서버 측에서 처리될 수도 있지만, DB 내부에서도 이를 처리할 수 있습니다. 이를 위해 트리거를 활용하는 방법을 알아보려고 합니다. Trigger (트리거) 트리거는 방아쇠라는 뜻을 가지고 있습니다. 방아쇠를 당기면 총알이 나가는 것처럼 데이터가 바뀌면 DB에 특정한 쿼리를 자동으로 실행할 수 있습니다. 어떤 테이블에서 이벤트가 발생했을 때, 추가로 필요한 쿼리 작업들을 자동으로 수행할 수 있게 트리거를 설정합니다. Trigger 생성 방법 CREATE TRIGGER ex_trigger {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON my_table F..

컴퓨터/MySQL 2024.03.07

MySQL (17) - Join에서 중복을 제거하는 방법

SQL을 사용하다 보면 Join을 해서 테이블을 자주 합치게 됩니다. 데이터를 합칠 때 중복 값이 나올 수가 있습니다. DB를 관리할 때 보통 Join을 할때 대상이 유니크한 값을 가져야 합니다. 하지만 DB 관리를 잘못한 경우 중복이 발생할 수 있습니다. 이번에는 중복을 제거하는 방법에 대하여 알아보겠습니다. 다양한 방법들이 있으나 상황에 따라 사용하면 됩니다. 예시 테이블 T01 (사번, 이름, 직급, 휴대폰번호) STAF_NO STAF_NM STAF_LEVEL PHONE_NUM 1000 홍길동 팀장 010-1234-1234 1001 김철수 대리 010-1234-1235 1002 김영희 대리 010-1234-1236 T02 (사번, 직급, 근속일자, 월급) STAF_NO STAF_LEVEL STAF_..

컴퓨터/MySQL 2023.10.19

MySQL (16) - 뷰(View)에 대하여 알아보자

혼자서 데이터베이스를 작업하는 경우 모든 권한을 마음대로 컨트롤할 수 있습니다. 외주업체 등 여러 명이 데이터를 활용할 때 사용자에게 꼭 필요한 정보만 접근해야 할 때가 있습니다. 이때 필요한 게 View입니다. View 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위하여 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블입니다. 저장장치에 물리적으로 존재하지는 않지만, 사용자에게 있는 것처럼 간주하고 사용됩니다. 이를 통해 데이터 보정작업 등 임시적인 용도로 사용됩니다. 또한 Join 된 데이터를 뷰를 통하여 간단하게 뽑을 수 있습니다. View를 사용할 때 장단점 View를 사용할 때 장단점은 다음과 같습니다. 장점 특정 사용자에게 테이블 전체가 아닌 필요한 데이터만 보여줄 수 있습니..

컴퓨터/MySQL 2023.10.03

MySQL (15) - 쿼리문을 합하는 방법 (UNION, UNION ALL)

쿼리로 데이터를 뽑을 때 여러 개의 SQL 쿼리문을 사용하여 하나의 데이터로 출력해야 하는 경우가 있습니다. 이럴 때 사용할 수 있는 방법이 UNION입니다. 사용 방법에 대하여 알아보도록 하겠습니다. 예제 테이블 TABLE1 ID (PK) NAME 1 Jack 2 John 3 Yui TABLE2 ID (PK) NAME 3 Yui 4 Minji 5 Minsu UNION, UNION ALL 두 쿼리문을 UNION으로 묶는 방법은 다음과 같습니다. SELECT * FROM TABLE1 UNION SELECT * FROM TABLE2 UNION의 결과는 다음과 같습니다. ID NAME 1 Jack 2 John 3 Yui 4 Minji 5 Minsu UNION은 두 쿼리문의 결과 데이터들을 중복 처리가 되어 나..

컴퓨터/MySQL 2023.08.13

MySQL (14) - 내장함수를 이용하여 날짜 및 시간을 다뤄보자

이전에 게시글에 문자와 숫자 함수를 이용하여 쿼리를 다뤘었습니다. 문득숫자, 문자 만큼 DBMS에서 내장함수를 많이 사용한다는 것을 깨달았습니다. 그래서 날짜 및 시간을 다루는 내장함수를 소개하겠습니다. 날짜 및 시간 함수 정리 CURDATE, CURTIME, NOW, SYSDATE SELECT CURDATE() -- 2023-06-19 , CURTIME() -- 10:30:45 , NOW() -- 2023-06-19 10:30:45 , SYSDATE() -- 2023-06-19 10:30:45 FROM DUAL; 가장 먼저 소개할 함수는 현재의 날짜와 시간을 알아내는 함수입니다. CURDATE함수는 현재의 년-월-일을 출력하고 CURTIME은 현재의 시:분:초를 출력합니다. NOW와 SYSDATE함수는..

컴퓨터/MySQL 2023.06.20

MySQL (13) - 프로시저(Procedure)와 함수(Function)

간단하게 CRUD만 사용하는 경우에는 SQL을 깊게 사용하지 않지만, 전문적으로 DB를 운영하기 위해서는 결국 함수형으로 관리하는 것이 필수입니다. SQL에는 함수만 있지 않고 프로시저가 있습니다. 이번에는 해당 개념에 대하여 알아보려고 합니다. 함수 (Function) 데이터베이스에서 함수는 일반적인 프로그래밍언어에서 함수의 역할과 동일합니다. 입력값을 받아 특정한 작업을 수행하고 결과값을 출력하는 구조로 되어있습니다. 함수는 특정 작업을 수행하고 그 결과를 반환하여 DML 및 SELECT를 사용하는 쿼리문 안에서 표현식으로 사용될 수 있습니다. 함수는 다음과 같은 특징을 가지고 있습니다. 함수에서 입력값을 받아 처리하고 해당 결과값을 반환합니다. 함수 호출 문에서 반환된 값으로 사용할 수 있습니다. ..

컴퓨터/MySQL 2023.05.01

MySQL (12) - 집계함수에 대하여 알아보자 (COUNT, SUM, AVG, MIN, MAX)

SQL을 사용하는 경우 테이블의 최솟값, 합계 등 정보가 필요한 경우가 있습니다. 그럴 때 집계함수라는 것을 활용합니다. 5가지의 집계함수에 대하여 알아보겠습니다. 집계함수 집계함수(Aggregate Function)란 DB에서 특정 칼럼의 값들을 모아서 계산하는 함수입니다. 이에 따른 특징으로 입력이 여러 개의 row를 가지고 출력이 하나의 결과를 만듭니다. 집계 함수를 이용하여 데이터의 요약 정보를 쉽게 구할 수 있습니다. 예제 테이블 class name price score 1 minji 5500 80 2 sanggyu 1000 2000 3 younga 2500 100 COUNT SELECT COUNT(*) --2 FROM mytable WHERE price > 2000; COUNT 함수는 특정 칼..

컴퓨터/MySQL 2023.04.05

MySQL (11) - 내장함수를 이용하여 숫자를 다뤄보자

SQL을 다룰 때 문자만큼이나 숫자 형식도 많이 다루게 됩니다. 문자열 내장함수에 이어 숫자를 조작하는 내장함수를 알아보도록 하겠습니다. ※ 함수 설명을 중심으로 내용을 진행합니다. ※ 제가 자주 사용한 함수는 ★로 표시하였습니다. 숫자 함수정리 ABS (★) SELECT ABS(-1004) -- 1004 FROM DUAL; ABS 함수는 절댓값으로 반환하는 함수입니다. 해당 예제에서는 1004로 반환합니다. SIGN SELECT SIGN(1004) --1 FROM DUAL; SIGN 함수는 숫자가 양수인 경우에는 1 음수 일때는 -1을 반환하며, 0일 때는 0을 반환합니다. 위의 예제에는 1을 반환합니다. POW, SQRT (★) SELECT POW(3,2), SQRT(16) -- 9, 4 FROM D..

컴퓨터/MySQL 2023.04.02

MySQL (10) - Transaction(트랜잭션)에 대하여 알아보자

DB 서버를 운영하다 보면 종종 데이터를 잘못 입력하여 서버가 꼬이는 경우가 있습니다. DB에는 트랜잭션이라는 개념이 있습니다. 트랜잭션을 제어하는 경우 어느 정도 해당 문제를 해결할 수 있습니다. 트랜잭션이란? 트랜잭션(Transaction)은 DB의 상태를 변환시키는 작업 단위 혹은 한 번에 모두 수행하여야 하는 연산들의 모음을 말합니다. 한마디로 쪼갤 수 없는 작업의 최소 단위를 말합니다. SQL에 자주 사용하는 4가지의 쿼리문이 있습니다. (SELECT, INSERT, UPDATE, DELETE) 위의 쿼리중 1가지만 사용하는 경우도 작업의 단위가 될 수 있습니다. 하지만 이것에 벗어나 예를 들어 게시글을 작성하고, 업로드하며, 마지막으로 다시 게시판에 조회하는 경우 이것을 묶어 작업하는 것도 단..

컴퓨터/MySQL 2023.03.23

MySQL (9) - 내장함수를 이용하여 글자를 다뤄보자

예전에 select절을 이용하여 데이터를 불뤄 오는 방법을 다뤘습니다. 데이터를 그대로 가지고 오는 것이 아니고 가공해서 가져오는 것도 필요하다는 것을 알았습니다. where절을 이용하여 데이터의 일부를 가져오는 방법 등을 더 범위 있는 사용을 위해 이번에는 해당 함수들을 설명하려고 합니다 ※ 함수 설명을 중심으로 내용을 진행합니다. ※ 제가 자주 사용한 함수는 ★로 표시하였습니다. 문자열 함수정리 LIKE (★★★) -- sam문자가 포함된 값을 모두 조회한다. SELECT * FROM mytable WHERE comp LIKE '%sam%'; -- sam문자로 시작하는 값을 모두 조회한다. SELECT * FROM mytable WHERE comp LIKE 'sam%'; -- 삼으로 시작하는 3글자를..

컴퓨터/MySQL 2023.03.16