Database 121

[Redis] 개념 및 설치/실행

Redis '키-값' 구조의 비정형 데이터를 저장하고 관리하기 위한 비관계형 데이터베이스 관리 시스템(DBMS)으로, redis라는 이름은 REmote DIctionary Server의 약자이다. 살바토르 산필리포(Salvatore Sanfilippo)가 개발해 현재는 Redis Labs가 지원하는 오픈 소스 기반 데이터베이스다. 주로 데이터베이스, 캐시, 메시지 브로커, 스트리밍 엔진으로써 사용된다. 특징 - 인메모리 데이터베이스 Redis의 가장 큰 특징 중 하나는 데이터를 메모리로 불러와 처리하는 메모리 기반 DBMS, 즉 인 메모리 데이터베이스라는 점이다. 데이터를 디스크나 SSD에 저장하는 데이터베이스보다 빠른 성능을 기대할 수 있다. - 다양한 데이터 타입 strings, hashes, lis..

Database 2023.06.16

[SQL] 문자열 뒤집기 (REVERSE)

REVERSE SQL에서 문자열을 다룰 때 사용하는 함수 중 하나로, 전달받은 문자열의 시작과 끝을 반전시킨 문자열을 반환한다. 2023.06.07 - [SQL] 문자열을 split한 마지막 값 가져오기와 같은 작업을 할 때 사용할 수 있다. 사용법 REVERSE(string) -- 예시 SELECT REVERSE('SQL Tutorial'); 실행 결과 | REVERSE('SQL Tutorial') | | ----------------------- | | lairotuT LQS | 참고 문서 https://www.w3schools.com/sql/func_sqlserver_reverse.asp

Database 2023.06.15

[MySQL] DB 내 모든 테이블 ROW 수 확인하기

개요 단일 테이블에 대한 ROW 수는 특정 테이블에 count 함수를 실행하여 간단하게 구할 수 있다. SELECT COUNT(*) FROM table_name; 실행 결과 | count(1) | | -------- | | 2 | 그렇다면 데이터베이스 내 모든 테이블을 대상으로 행 수를 얻을 때는 어떻게 해야 할까? 방법을 적어둔다. 예시 DB 아래의 DDL로 생성한 예시 데이터베이스를 이용해 테스트해본다. CREATE TABLE test ( id INT ); INSERT INTO test (id) VALUES (1); INSERT INTO test (id) VALUES (2); CREATE TABLE IF NOT EXISTS `docs` ( `id` int(6) unsigned NOT NULL, `re..

Database 2023.06.08

[SQL] 문자열을 split한 마지막 값 가져오기

개요 SQL에서 split 함수를 이용해 구분자로 문자열을 잘랐다. 근데 프로그래밍 언어와 달리 자른 문자열 리스트에서 마지막 값을 가져오려고 -1을 사용하면 의도대로 동작하지 않았다. 어떤 방식으로 쿼리를 작성해야 하는지 적어둔다. 예시 테이블 예시로 어떤 파일들의 경로가 저장된 테이블이 있다고 하자. 이 데이터에서 경로를 제외한 파일의 이름만 가져오고 싶다. | uri | | ---------------------------------------------------- | | Articles/Search/ArtMID/2681/ArticleID/2218/Diet.aspx | | OurStory/MeettheFoodieandtheMD.aspx | | OurMenu.aspx | DDL 더보기 CREATE ..

Database 2023.06.07

[SQL] 정규식 관련 함수

개요 SQL을 이용해 문자열의 포함여부 등을 확인할 때는 LIKE 문을 사용한다. 조건에 해당하는 문자열이 여럿인 경우, OR절로 연결해서 사용하기 때문에 쿼리문이 길어질 수 있다. (LIKE 문은 IN과 함께 사용할 수 없다.) 이런 경우 정규식을 사용하면 보다 간결한 쿼리문을 작성할 수 있다. 이 글에서는 정규식 관련 함수를 정리한다. REGEXP_MATCH REGEXP_MATCH는 문자열과 패턴이 일치하는지 확인하고 일치한 문자열 배열을 반환한다. flags는 함수의 동작을 제어하는데 예로 들어 i가 들어가는 경우 대소문자 구분을 하지 않는다. REGEXP_MATCHES(source_string, pattern [, flags]) -- 예시 SELECT REGEXP_MATCHES('Learning ..

Database 2023.06.06

[SQL] 문자열 자르기 (SPLIT_PART/SUBSTRING/LEFT/RIGHT)

개요 2023.06.01 - [SQL] 문자열 합치기 (||/CONCAT/CONCAT_WS)에서 여러 문자열을 합쳐보았다. 이번 글에서는 자르는 방법도 정리한다. 표준인 ANSI SQL을 기준으로 하고 싶어, PostgreSQL을 사용해 정리한다. SPLIT_PART SPLIT_PART 함수는 문자열을 지정한 구분자로 자르고 n번째 하위 문자열을 반환한다. SPLIT_PART(string, delimiter, position) -- 예시 SELECT SPLIT_PART('A,B,C', ',', 2); 실행 결과 | split_part | | ---------- | | B | SUBSTRING / SUBSTR SUBSTRING는 특정 위치로부터 지정한 길이의 문자열을 반환한다. 길이는 생략할 수 있으며, ..

Database 2023.06.02

[SQL] 문자열 합치기 (||/CONCAT/CONCAT_WS)

개요 최근 SQL을 통해 문자열을 많이 다루게 될 것 같아 관련 내용을 정리해두고자 한다. 이 글에서는 문자열을 합치는 방법에 대해서 정리한다. 표준인 ANSI SQL을 기준으로 하고 싶어, PostgreSQL을 사용해 정리한다. || || 연산자를 사용하면 두 개 이상의 문자열을 열결하여 하나의 문자열로 반환한다. 만약 연결할 문자열에 NULL이 포함되어 있으면 NULL을 반환한다. str_1 || str_2 -- 예시 SELECT 'Concatenation' || ' ' || 'Operator' AS result, 'Concat with ' || NULL AS contain_null_result ; 실행 결과 | result | contain_null_result | | ----------------..

Database 2023.06.01

[MySQL] 이전 행, 다음 행 조회 (LAG/LEAD)

개요 2023.05.14 - [MySQL] 윈도우 함수 - OVER 2023.05.15 - [MySQL] 집계 함수와 OVER 절 2023.05.16 - [MySQL] 순위 함수 (RANK) 2023.05.17 - [MySQL] 추출 함수 (FIRST_VALUE/LAST_VALUE) 위 글에서 윈도우 함수에 대해 정리하고 있는데, 이 글에서는 윈도우 함수 중 비집계 함수에 해당하는 LAG, LEAD 함수에 대해 정리한다. 예시 데이터 아래와 같이 사원 이름(employee_name), 부서(department), 시간(hours)으로 구성된 초과근무 시간 테이블을 예시 데이터로 사용한다. DDL 더보기 CREATE TABLE overtime ( employee_name varchar(50) NOT NUL..

Database 2023.05.18

[MySQL] 추출 함수 (FIRST_VALUE/LAST_VALUE/NTH_VALUE)

개요 2023.05.14 - [MySQL] 윈도우 함수 - OVER 2023.05.15 - [MySQL] 집계 함수와 OVER 절 2023.05.16 - [MySQL] 순위 함수 (RANK) 위 글에서 윈도우 함수에 대해 정리하고 있는데, 이 글에서는 윈도우 함수 중 비집계 함수에 해당하는 추출 함수에 대해 정리한다. 예시 데이터 아래와 같이 사원 이름(employee_name), 부서(department), 시간(hours)으로 구성된 초과근무 시간 테이블을 예시 데이터로 사용한다. DDL 더보기 CREATE TABLE overtime ( employee_name varchar(50) NOT NULL, department varchar(50) NOT NULL, hours int NOT NULL, PRI..

Database 2023.05.17

[MySQL] 순위 함수 (RANK)

개요 MySQL 8.0부터는 Window 함수를 지원하면서 보다 편리하게 순위를 매길 수 있게 되었다. 순위 함수는 Window 함수 중 비집계 함수이며 OVER 절과 함께 사용해야 한다. MySQL에서 지원하는 순위함수는 RANK, DENSE_RANK, PERCENT_RANK, ROW_NUMBER 정도가 있다. 예시 데이터를 이용해 순위 함수의 사용 방법을 정리한다. 예시 데이터 아래의 사원 번호(empno), 사원 이름(ename), 직업(job), 급여(sal) 데이터로 구성된 테이블을 예시로 사용한다. DDL 더보기 CREATE TABLE emp ( empno int, ename varchar(30), job varchar(30), sal int ) INSERT INTO emp VALUES (79..

Database 2023.05.16