본문 바로가기

IT/Mysql & MariaDB

(14)
[Mysql] 데이터 정의어 (DDL) 1. 데이터 정의어(DDL) 이란 테이블을 생성, 삭제하거나 컬럼을 추가, 수정, 삭제할 때 사용하는 명령어입니다. 크게 CREATE, ALTER, DROP, TRUNCATE로 구분됩니다. 2. 데이터 정의어 명령어 정리 1) CREATE 데이터베이스 또는 테이블을 생성할 때 사용합니다. create database 데이터베이스명; show databases; use 데이터베이스명; create table 테이블명 ( 컬럼명 자료형 [제약조건 및 옵션], [키 제약조건 선언] ) CREATE TABLE department ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NULL DEFAULT NULL, PRIMARY KEY (id) ) create tab..
[Mysql] 조인 (JOIN) 이란? 1. JOIN 이란? 한개 또는 여러개의 테이블을 결합하는 연산을 의미합니다. JOIN의 종류는 다음과 같습니다. cross join inner join left outer join right outer join full outer join self join join을 설명하기 이전에 테스트로 사용될 테이블 부터 생성해 보겠습니다. CREATE TABLE `department` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) CREATE TABLE `employee` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NU..
[Mysql] distinct와 group by의 차이 1. 예제 테이블 및 데이터 CREATE TABLE `employee` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NULL DEFAULT NULL, `salary` INT(11) NULL DEFAULT NULL PRIMARY KEY (`id`) ) CREATE TABLE `access_log` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `access_dt` DATETIME NULL DEFAULT '', `emp_id` INT(11) NULL DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `fk_access_log_emp_id` FOREIGN KEY (`emp_id`) REFERE..
[Mysql] group by와 having 1. group by란? group by는 특정 컬럼을 기준으로 그룹화 하는 명령어입니다. 그룹화를 하면 집계함수를 이용해서 통계데이터(평균, 합계 등)을 구할 수 있습니다. select 컬럼 from 테이블명 where 조건 group by 그룹컬럼 [having 조건] 2. group by 예제 #예제 테이블 및 데이터 CREATE TABLE `department` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) CREATE TABLE `employee` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NULL DE..
[Mysql] group by 시 가장 큰 값을 가진 row 조회하기 DB 쿼리문을 작성 할 때, 특정 컬럼의 최대 값, 최소 값을 구해야할 경우가 있습니다. 최대 값, 최소 값을 구하기는 쉽지만, 최대, 최소 값을 가진 Row를 조회해야하는 경우 원하는 결과가 안나올 수 있습니다. 이때 사용할 수 있는 몇가지 방법을 알려드리겠습니다. (더 좋은 방법이 있다면 댓글로 남겨주세요!) 테이블 생성 및 데이터 삽입 쿼리입니다. CREATE TABLE `employee` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NULL DEFAULT NULL, `salary` INT(11) NULL DEFAULT NULL, `dept_id` INT(11) NULL DEFAULT NULL, PRIMARY KEY (`id`), IND..
[Mysql] delete join DELETE [alias, ...] FROM table_a AS a LEFT JOIN table_b AS b ON (b.id = a.b_id) WHERE [조건문] [alias, ...] 부분에 삭제할 테이블의 alias를 입력하면 된다. (ex: DELETE a, b ... 또는 DELETE b ...) table_a와 table_b가 참조 관계이고, 두 테이블의 행을 동시에 삭제할 경우 참조무결성 에러가 발생할 수 있다.
[Mysql] Date_Format 날짜 포멧 1. 날짜 포멧 기본 문법 DATE_FORMAT(date, format) 1) 예제 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s') #2021-01-27 16:30:45 2. 포멧 옵션 FormatDescription %a : Abbreviated weekday name (Sun to Sat) %b : Abbreviated month name (Jan to Dec) %c : Numeric month name (0 to 12) %D : Day of the month as a numeric value, followed by suffix (1st, 2nd, 3rd, ...) %d : Day of the month as a numeric value (01 to 31) %e : ..
[MariaDB] Sequence 사용 방법 1. Sequence ID 값을 숫자가 아닌 다양한 방식으로 저장하고 싶은 경우 사용합니다. Thread-safety 하게 ID를 발급 받을 수 있으며, AUTO_INCREMENT 대신 사용할 수 있습니다. Sequence는 값을 캐시하므로 경우에 따라 AUTO_INCREMENT 보다 빠를 수 있다고 합니다. MariaDB의 Sequence 기능은 10.3버전 부터 지원됩니다. 2. Sequence 문법 CREATE [OR REPLACE] [TEMPORARY] SEQUENCE [IF NOT EXISTS] sequence_name [ INCREMENT [ BY | = ] increment ] [ MINVALUE [=] minvalue | NO MINVALUE | NOMINVALUE ] [ MAXVALUE ..