본문 바로가기

공부 자료/DataBase

(23)
[ Trigger ] 트리거와 트리거 함수 트리거와 트리거 함수  Mybatis 사용을 위해 DB 생성을 위한 DML을 작성하면서 트리거에 대한 존재를 알게 되었는데,트리거가 무엇이고 어떻게 작성하는지 간단하게 알아보고자 한다.(JPA만 사용하다보니 @LastModifiedDate를 사용할 수 없어 트리거를 사용해보고자 한다.)  트리거(Trigger)란?: DB Table에서 INSERT / UPDATE / DELETE가 발생할 때 자동으로 실행되는 함수 트리거 함수(Trigger Fuction)이란?: 트리거가 호출하는 함수로 PL/pgSQL로 작성됨  예를들면, 회원 정보를 수정할 때 수정 시간을 함께 변경하고자 한다면?트리거 함수를 작성해 member 테이블에서 업데이트가 발생할 때 수정 시간을 자동으로 변경하는 함수를 실행시키면 되는 것..
[SQL] DML - 데이터 조작어 DML(Data Manipulation Language) [INSERT] 생성 INSERT INTO 테이블명 (칼럼명1, 칼럼명2, ...) VALUES (값1, 값2, ...); INSERT INTO 테이블명 VALUES (전체 칼럼에 대한 값); [예시] -- article 데이터 삽입 -- 1. 'title1', 'content1' INSERT INTO article VALUES(NULL, 'title1', 'content1', NULL); INSERT INTO article (title, content) VALUIS('title1', 'content1'); -- 2. 'title2' INSERT INTO article VALUES(NULL, 'title2', NULL, NULL); INSERT I..
[SQL] DDL : 데이터 정의어 DDL(Data Definition Langauge) : 데이터 정의어(데이터베이스를 정의하는 언어) : 데이터가 아닌 CREATE에 의해 생성된 것을 기준으로 함(즉, 데이터베이스, 테이블, 뷰, 인덱스 등의 데이터베이스 개체를 대상으로 함) : CREATE(생성), ALTER(변경), TRUNCATE(잘라내기), DROP(삭제) [데이터베이스 생성 및 삭제] -- 데이터베이스 생성 CREATE DATABASE 데이터베이스명; -- 데이터베이스 삭제 DROP DATABASE 데이터베이스명; CREATE [테이블 생성] CREATE TABLE 테이블명( 칼럼명1 데이터 타입 PRIMARY KEY, 칼럼명2 데이터 타입 NOT NULL, 칼럼명3 데이터 타입 DEFAULT 값, ...., PRIMARY K..
[SQL] limit - 데이터를 일부만 가져오기 limit SELECT 칼럼명 FROM 테이블명 WHERE 조건문 ORDER BY 기준칼럼 LIMIT 숫자1, 숫자2; : '숫자1'번째부터 '숫자2'개의 데이터를 가져오는 것을 의미 (숫자1이 생략된다면 0이 디폴트) : SQL은 기본적으로 1이 첫번째이지만 limit은 예외적으로 0이 첫번째 : 페이징 처리할 때 많이 사용 [예시] - emp 테이블에서 sal을 기준으로 내림차순 한 뒤 첫번째부터 5번째까지의 데이터를 조회 SELECT * FROM emp ORDER BY sal desc limit 5; SELECT * FROM emp ORDER BY sal desc limit 0, 5;
[SQL] 서브쿼리 서브쿼리 : 메인 쿼리 내에 또 다른 쿼리문을 작성하는 것 : 서브쿼리는 괄호 안에 작성 : 주로 WHERE 절에 쓰임 : SELECT문에 작성하는 서브쿼리는 조인과 동일하며, 조인이 더 효율적 : FROM 절에서도 사용 가능 SELECT 칼럼명1, 칼럼명2 ... FROM 테이블명 WHERE 조건문 (SELECT 칼럼명3, 칼럼명4 FROM 테이블명 WHERE 조건문); [단일행 서브쿼리] : 서브 쿼리의 결과가 단일 행 : 연산자 - =, (!=), >, >=, (SELECT AVG(weight) FROM student WHERE deptno1='201'); -- student 테이블에서 주전공이 전자공학과인 학과의 평균 몸무게보다 몸무게가 많은 학생들의 이름과 몸무게 조회 SELECT s.name,..
[SQL] JOIN(INNER, LEFT, RIGHT, SELF, FULL, NATURAL) JOIN 1. JOIN이란? : 두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법 : 테이블의 명을 그대로 가져가는 것이 아닌 중복 테이블명 고려를 위해 alias를 사용 : 기본 조인은 INNER JOIN에 해당 [JOIN 기본 형식] JOIN = INNER JOIN SELECT 테이블1.칼럼, 테이블2.칼럼 ... FROM 테이블1, 테이블2 WHERE 조건절; SELECT 테이블1.칼럼, 테이블2.칼럼 ... FROM 테이블1 (INNER) JOIN 테이블2 ON 조건 WHERE 추가 조건; 1. JOIN을 하기 위해 테이블을 2개 생성 -- CREATE TABLE : 테이블 생성 -- DROP TABLE : 테이블이 있으면 삭제 DROP TABLE test1; CREATE T..
[SQL] 날짜 함수 날짜 함수 1. CURDATE(), CURRENT_DATE() : 현재 날짜 반환 SELECT CURDATE(); SELECT CURRENT_DATE(); 1-1. ADDDATE(기준일 INTERVAL 숫자 DAY/MONTH/YEAR), DATE_ADD(기준일 INTERVAL 숫자 DAY/MONTH/YEAR) : 날짜 형식을 유지하면서 날짜 더하기 : 만약 CURDATE()+1과 같이 그냥 더할 경우 문자열로 출력(형식 유지X) SELECT ADDDATE(기준일 INTERVAL 숫자 DAY/MONTH/YEAR) FROM [테이블명]; SELECT DATE_ADD(기준일 INTERVAL 숫자 DAY/MONTH/YEAR) FROM [테이블명]; SELECT ADDDATE(CURDATE(), INTERVAL ..
[SQL] 숫자 함수 숫자 함수 1. CONCAT(문자열1, 문자열2) : 문자열1과 문자열2를 결합 SELECT CONCAT(문자열1, 문자열2) FROM [테이블명]; -- emp 테이블에서 ename(job) 형태로 만들어 출력 SELECT CONCAT(ename, '(', job, ')') AS 'ename_job' FROM emp; -- SMITH's sla is $sal 형태로 만들어 출력 -- 문자열은 작은 따옴표를 이용하기 때문에 '를 출력하기 위해서는 ''로 작성해야 출력됨 SELECT CONCAT(ename,'''s sal is $',sal) FROM emp; 2. INSERT(기준 문자열, 시작위치, 변경 문자 길이, 변경할 문자) : 문자열의 일부를 변경 SELECT INSERT(문자열, 시작 위치, 변..