Database

Database/MySQL

[MySQL] NOW() 와 SYSDATE() 차이점

MySQL 에서 제공하는 시간 반환 함수에는 NOW() 와 SYSDATE() 두가지가 존재합니다. 두 함수 모두 현재 날짜 값을 가지고 오지만, 현재라는 기준이 다릅니다. SELECT NOW() NOW_START , SLEEP(1) , NOW() AS NOW_END , SYSDATE() AS SYSDATE_START , SLEEP(1) , SYSDATE() AS SYSDATE_END; 위 실행 결과를 보면 NOW() 실행 시 NOW_START와 NOW_END 사이에 1초의 SLEEP이 있지만 같은 시간대를 반환합니다. 반면 SYSDATE() 실행 시 SYSDATE_START와 SYSDATE_END가 1초의 SLEEP이 적용 되어 시간이 출력된 것을 볼 수 있습니다. 즉, NOW()는 쿼리가 실행되는 그 ..

Database/MySQL

[ERD] 관계선(실선, 점선) 차이

실선 실선(Identifying) : A테이블과 B테이블은 "식별관계" 부모테이블[A테이블]의 PK가 외래키로써, 자식테이블[B테이블]의 PK에 포함되는 경우 부모, 자식 관계(부모가 있어야 자식이 생기는 경우) 즉, 자식 테이블[B테이블]이 부모 테이블의 FK이면서 PK인 경우 ex) User 테이블과 UserComment 테이블이 있을 경우, UserComment는 User가 반드시 있어야 존재할 수 있음 점선 점선(Non-Identifying) : A테이블과 B테이블은 "비식별관계" 부모테이블[A테이블]의 PK가 외래키로써, 자식테이블[B테이블]의 PK가 아닌 일반 속성이 되는 경우 부모, 자식 관계가 아닌 모든 경우(부모가 없어도 자식이 생기는 경우) ex) User 테이블과 Task 테이블이 있..

Database

[Mybatis] 마이바티스 #{} ${} 차이

회사에서는 Mybatis를 이용하여 파라미터를 받을 때 #{}를 사용 하지만 ${}로도 파라미터를 받을 수 있다는 걸 알게되었습니다. 저에겐 #이 익숙하지만 $로도 받을 수 있다고 생각하니 두개의 차이점이 궁금해졌습니다. ${} 사용 과정 ${} 사용 시 Statement 생성 합니다. Statement의 Parameter 값을 그대로 전달합니다. Parameter를 그대로 전달하기 때문에 문자열에 따옴표가 붙지 않습니다. 특징 Parameter가 바로 출력됩니다. 해당 컬럼의 자료형에 맞춰 Parameter의 자료형이 변경됩니다. Parameter 값이 넣어진 채로 Query문이 수행됩니다.(parameter 값이 바뀌면 다른 query로 인식) 그러므로 Parameter의 값이 바뀔 때마다 항상 Qu..

Database/MySQL

[HeidiSQL] 하이디SQL DB 데이터 엑셀로 저장하는 방법

테이블이 많아지면서 DB관련 산출물을 작성하는데 시간이 오래 걸리는 경우가 있습니다. 이때 복붙을 통해 유용하게 사용 했던 방법을 소개해드리려 합니다. 1. HeidiSQL SQL문 실행 HeidiSQL을 열어 아래의 쿼리문을 실행합니다. SELECT t1.table_name, t1.table_comment, column_name, data_type, column_type, column_key, is_nullable, column_default, extra, column_comment FROM (SELECT table_name, table_comment FROM information_schema.TABLES WHERE table_schema='조회할디비이름') t1, (SELECT table_name, ..

Database/MySQL

[MySQL] MySQL 프로시저(Procedure) 사용법

프로시저(Procedure)란? 프로시저는 한번의 요청으로 여러 SQL문을 사용할 수 있습니다. 그렇기 때문에 프로시저에 묶인 SQL문들은 하나의 쿼리로 해석되어 처리됩니다. 쉽게 말해 MySQL에서 함수를 정의하는 것이라고 볼 수 있습니다. 트리거와는 달리 함수처럼 매개변수를 받을 수 있고 결과값 또한 반환 받을 수 있습니다. 기본 구조 /*기존에 프로시저가 있으면 삭제*/ DROP procedure IF EXISTS {프로시저 이름}; DELIMITER $$ CREATE PROCEDURE {프로시저 이름} ( {IN | OUT | INOUT} {파라미터명 데이터타입} ) BEGIN DECLARE {변수명} INT(10) DEFAULT NULL; 쿼리문 END $$ DELIMITER ; 프로시저(Pro..

Database/MySQL

[MySQL] MySQL 트리거(Trigger) 사용법

트리거(Trigger)란? 트리거는 데이터 조작 언어(DML)의 데이터 상태의 관리를 자동화하는 데 사용됩니다. 즉 어떤 테이블에서 특정 이벤트(insert, update, delete)가 발생했을 때, 실행시킬 쿼리 작업을 자동으로 수행하도록 설정하는것을 트리거(Trigger)라고 합니다. 기본 구조 DROP trigger IF EXISTS {트리거 이름}; --> 트리거 이름이 존재하면 삭제 DELIMITER $$ CREATE TRIGGER {트리거 이름} {BEFORE | AFTER} {INSERT | UPDATE| DELETE } ON {테이블 이름} FOR EACH ROW BEGIN 트리거 내용 END DELIMITER ; 트리거(Trigger) 종류 행 트리거 : 테이블 안의 영향을 받는 행 ..

Database/MySQL

[MySQL] 윈도우(Window) 에서 MySQL 설치하기

MySQL 이란? MYSQL은 오라클이 지원하는 가장 널리 사용되고 있는 오픈소스의 관계형 데이터베이스 관리 시스템(RDBMS) 입니다. 다양한 운영체제에서 사용 가능하고 여러가지의 프로그래밍 언어를 지원합니다. 또한 사용하기 용이하며 크기가 큰 데이터 집합도 빠르고 효과적으로 처리할 수 있습니다. MySQL 다운로드 Download MySQL : https://dev.mysql.com/downloads/mysql/ 1. 링크 접속 위 링크에서 MySQL 홈페이지에 접속하고 아래 Go to Download Page 버튼을 클릭합니다. 2. Download 아래와 같이 Download 버튼을 클릭합니다. MySQL 설치 1. 설치 유형 선택 다운로드한 파일을 실행 후 설치 유형을 선택할 수 있는데 필요한것..

08genie
'Database' 카테고리의 글 목록