꾸준히 재밌게
728x90
728x90
[MySQL] 프로시저 (Stored Procedure)
DB 2023. 3. 16. 06:54

학원 내 모의 프로젝트에서 1. 회원 탈퇴의 경우 일정 기간이 지나면 자동으로 테이블에서 삭제 처리 2. 통계 테이블에 해당 날짜의 자정이되면 자동으로 insert처리 위와 같은 DB 자동화를 구축해 보고 싶었고 강사님께 여쭈어봤더니 CI/CD ?? Jenkins 같은 것들을 학습하면 구현하는 데 도움이 될 거라고 하셨는데 너무 생소한 개념이기도 하고 학습하는데 시간이 다 가서 프로젝트 수행을 못할 것 같아 방법을 찾아보던 중 프로시저를 활용해 MySQL 내에 이벤트를 구현해 간단한 자동화??아닌 자동화를 구현한 적이 있다. 그 때 당시 이해했던 프로시저는 Java의 메서드와 같은 역할을 하는 것인줄 알았다. 함수를 생성하여 이벤트 스케쥴러를 통해 프로시저를 호출했기 때문이다. 지금와서 지난 쿼리를 보니..

article thumbnail
[MySQL] 이벤트 생성 - 이벤트 스케쥴러(Event Scheduler)
DB 2023. 3. 11. 22:13

학원 내 모의 프로젝트 중에서 간단하게 이벤트를 생성 해 통계 테이블에 자정마다 날짜를 입력 해 줬던 적이 있다. 사용했던 경험이 있기 때문에 내 것으로 만들어보고자 포스팅을 하게 되었다. 이벤트 생성 아래의 코드는 프로젝트 내 통계 테이블 중 방문자 테이블의 첫 insert를 위해 사용했다. (해당 날짜 방문자는 00:00:00으로 초기화 되어있는 해당 일자 테이블에 방문횟수가 +1되는 구조였다) create event visitDaily on schedule every 1 hour starts now() --comment 주석 do insert into VISIT(VISIT_DATE, NUMBER) select date_format(now(), "%Y%m%d"), 0 from dual where no..

[MySQL/DB] 서브쿼리(SubQuery)
DB 2023. 1. 11. 22:49

[ 서브쿼리 (SUBQUERY) ] 다른 쿼리 내부에 포함되어 있는 SELECT문을 말한다. 서브쿼리는 괄호() 로 묶어서 표현한다. 서브쿼리 실행 후 메인쿼리를 실행한다. 서브쿼리는 단일 행 연산자(=, >=)와 다중 행 연산자(IN, NOT IN, ANY, EXISTS 등)들을 사용하여 표현한다. 메인쿼리와 서브쿼리 메인쿼리 = 부모쿼리 = 외부쿼리(outer query) 서브쿼리 = 자식쿼리 = 내부쿼리(inner query) SELECT FROM WHERE 조건식 연산자 (SELECT FROM WHERE); 장점 1. 쿼리의 구조화를 통한 가독성 상승 2. 복잡한 JOIN, UNION과 같은 동작을 수행할 수 있는 또 다른 방법을 제공 서브쿼리를 사용 가능 한 곳 ​MySQL에서 서브쿼리를 포함할..

article thumbnail
[MySQL/DB] 조인(JOIN), 합집합(UNION), 중복제거(DISTINCT)
DB 2023. 1. 8. 19:16

[ JOIN ] 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해준다. 관계형 데이터베이스(Relation Database)에서 가장 많이 쓰인다. 특징 조인하는 테이블에는 같은 값을 가진 컬럼이 필요하다. 세 개 이상의 테이블도 조인이 가능하다. 조인할 때 테이블에 대한 별칭이 필요하다. 조인 컬럼을 비교하는 조건이 필요하다. INNER JOIN 조인하는 테이블의 ON 절의 조건이 만족하는 데이터만 가져온다. MySQL에서는 JOIN, INNER JOIN, CROSS JOIN이 같은 의미로 사용된다. 조인 관계에 부합되는 레코드를 모두 가지며, 조인에 부합되지 않는 레코드는 모두 삭제된다. SELECT E.EMPNO, E.ENAME, D.DNAME FRO..

article thumbnail
[MySQL/DB] 집계함수와 그룹화(GROUP BY)
DB 2023. 1. 8. 12:41

집계함수 NULL값은 집계하지 않는다. 함수 설명 MAX 최대값 MIN 최소값 SUM 합계 AVG 평균 COUNT 개수 Oracle의 EMP 테이블로 사용해보자. 혹시 없다면 해당 링크에서 데이터를 추가하기 바란다. SELECT MAX(SAL) FROM EMP; SELECT MIN(SAL) FROM EMP; SELECT SUM(SAL) FROM EMP; SELECT TRUNCATE(AVG(SAL), 2) FROM EMP; SELECT COUNT(COMM) FROM EMP; >> 5000 / 800 / 29025 / 2073.21 / 4 그룹화(GROUP BY) 유형별 개수를 알고 싶을 때 데이터의 그룹화를 위해 사용하는 절이다. WHERE절과 ORDER BY절 사이에 위치해야 한다. 사용하기 -- 기본 ..

[MySQL/DB] Oracle 사원 학습용 테이블(EMP, DEPT, SALGRADE) 및 설명
DB 2023. 1. 8. 12:20

EMP 더보기 CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7, 2), COMM NUMBER(7, 2), DEPTNO NUMBER(2)); INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK', 7902, TO_DATE('17-12-1980', 'DD-MM-YYYY'), 800, NULL, 20); INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('20-02-1981', 'DD-MM-YYYY'), 1600, 300, 30); INSERT..

[MySQL/DB] 제어 흐름 함수 (IF, IFNULL, NULLIF, CASE ~)
DB 2023. 1. 8. 12:09

제어 흐름 함수 프로그램의 흐름을 제어할 때 사용한다. IF IF(expr1, expr2, expr3) : expr1이 참이면 expr2, 거짓이면 expr3을 반환한다. SELECT IF(100>100, '정답', '오답'); >> 오답 IFNULL IFNULL(expr1, expr2) : expr1이 NULL이면 expr2, NULL이 아니면 expr1을 반환한다. SELECT IFNULL(NULL, 2313); SELECT IFNULL(2313, 2); >> 2313 / 2 NULLIF NULLIF(expr1, expr2) : expr1=expr2이면 NULL, 아니면 expr1을 반환한다. SELECT NULLIF(1, 2); SELECT NULLIF(1, NULLIF(1,2)); >> 1 / N..

[MySQL/DB] 형변환 함수 (CAST, CONVERT)
DB 2023. 1. 8. 11:47

형 변환 CAST / CONVERT 함수를 사용하여 데이터 형 변환이 가능하다. SELECT로 검색 또는 INSERT, UPDATE로 필드에 값을 넣을 때 설정한 데이터타입에 맞춰 데이터를 넣어야 하는 경우 형변환 함수를 사용한다. 사용법 CAST(지정값 AS type) CONVERT(지정값, type) 사용하기 -- 숫자를 문자로 SELECT CAST(972 AS CHAR); SELECT CONVERT(972, CHAR); 결과 : 972 -- DECIMAL 활용 SELECT CAST('-100' AS DECIMAL(5,3)); SELECT CONVERT('-100', DECIMAL(5,3)); 결과 : -99.999 -- 날짜형 데이터타입을 SIGNED 타입으로 SELECT CAST(NOW() AS ..

728x90
728x90