💾 Data/SQL

💾 Data/SQL

[MySQL] JSON_TABLE(), JSON_ARRAY()

[MySQL] JSON_TABLE(), JSON_ARRAY()MySQL은 JSON 데이터 타입을 지원하면서 더 강력하고 유연한 JSON 처리를 제공하고 있다.특히 JSON_TABLE 함수는 JSON 데이터를 SQL 테이블처럼 다룰 수 있는 매우 유용한 기능이다. JSON_TABLE과 JSON_ARRAY 함수의 사용법과 예제를 통해 어떻게 JSON 데이터를 더 쉽게 다룰 수 있는지 알아보자.JSON_ARRAY여러 값을 JSON 배열로 생성할 때 사용된다. 이 값은 인자로 들어온 값을 JSON 배열 형식으로 반환한다. 사용법JSON_ARRRAY([val1,[, val2, ...]]) 예시SELECT JSON_ARRAY(1, 'apple', true, NULL);위 쿼리의 결과는 다음과 같은 JSON 배열을 ..

💾 Data/SQL

[MySQL] 데이터를 구분자로 Split 하기

[MySQL] 데이터를 구분자로 Split 하기개요DB 테이블에 컬럼이 다음과 같은 형식으로 되어있는 데이터가 있었는데 구분자를 분리해서 개수가 몇개인지 카운트를 하고싶었다.test_columnsappleapple, bananabanana, pineapplepineapple MySQL에서 특정 문자를 기준으로 split 하는 함수에는 SUBSTRING_INDEX() 함수가 있는데,이 함수는 인덱스에 해당하는 라인만 뽑기 때문에 데이터가 많을 경우 원하는 결과를 얻기 위해선 프로시저를 사용해야 했다..😥 SELECT 문으로 데이터 하나 뽑자고 프로시저를 사용하는 건 너무 과한 것 같아 다른 방법을 알아보기로 했다. JSON_TABLE열심히 서칭한 결과 JSON_TABLE()이라는 아주 좋은 방법이 있었다..

💾 Data/SQL

[MySQL] EXISTS

[MySQL] EXISTSEXISTSEXISTS는 MySQL에서 서브쿼리의 결과가 존재하는지 여부를 확인하는데 사용하는 조건문이다. 주로 특정 조건에 맞는 데이터가 존재하는지 여부를 확인할 때 사용하며, 참 또는 거짓의 값을 반환한다.EXISTS는 보통 SELECT문과 함께 사용되며, 데이터의 유무에 따라 로직을 결정하는 데  유용하다. 기본 구조SELECT 칼럼명FROM 테이블명WHERE EXISTS ( 서브쿼리);위 구조에서 EXISTS 안의 서브쿼리가 실행되며, 서브쿼리의 결과에 한 개 이상의 레코드가 존재하면 참을 반환하고, 그렇지 않으면 거짓을 반환한다. 작동 방식EXISTS는 서브쿼리가 반환하는 데이터를 확인하지 않는다. 대신, 서브쿼리가 최소한 한 개의 행이라도 반환하면 TRUE를 반환..

💾 Data/SQL

[MySQL] PERCENT_RANK()

[MySQL] PERCENT_RANK() PERCENT_RANK()데이터 내에서 특정 값의 상대적인 순위를 백분률로 반환한다.0과 1사이의 값을 반환하며, 값이 0이면 가장 낮은 순위, 1이면 가장 높은 순위를 의미한다.PERCENT_RANK() OVER ([PARTITION BY partition_expression] ORDER BY order_expression) 동작 원리PERCENT_RANK()는 각 행의 순위를 기준으로 계산된다.$$PERCENTRANK()=\frac{Rank-1}{TotalRows-1}$$ 여기서 RANK는 해당 행의 순위이며, Total Rows는 전체 행의 수이다.ex) 데이터가 10개인 경우 PERCENT_RANK()는  각 행의 순위를 0부터 1까지 나눈 값을 반환한다...

💾 Data/SQL

[MySQL] INNER, LEFT, RIGHT JOIN

SQL에서 조인은 데이터베이스에서 여러 테이블을 결합해 데이터를 조회할 때 매우 유용한 도구다.MySQL에서의 조인의 기본 개념과 사용법에 대해 알아보고자 한다. JOIN조인(Join)은 두 개 이상의 테이블을 결합해 하나의 결과 집합을 만드는 SQL 연산이다.조인은 주로 테이블 간의 관계를 정의하고, 그 관계에 기반해 데이터를 조회할 때 사용된다. MySQL에서 자주 사용되는 조인은 크게 네 가지로 나눌 수 있다.INNER JOIN일치하는 데이터만 필요할 때LEFT JOIN왼쪽 테이블의 모든 데이터를 포함할 때RIGHT JOIN오른쪽 테이블의 모든 데이터를 포함할 때FULL OUTER JOIN두 테이블의 모든 데이터를 포함할 때 INNER JOININNER JOIN은 두 테이블간의 교집합을 반환한다.즉..

💾 Data/SQL

[MySQL] SQL 변수 선언 및 사용

[MySQL] SQL 변수 선언 및 사용MySQL에서 변수를 사용하는 것은 데이터베이스 내에서 반복 작업을 자동화하거나, 복잡한 쿼리를 간결하게 만드는 데 매우 유용하다. MySQL에는 주로 세 가지 종류의 변수가 있다. 1. 사용자 정의 변수 (User-Defined Variables)사용자 정의 변수는 세션 내에서만 존재하며, 주로 SELECT, INSERT, UPDATE 쿼리 내에서 사용된다.변수 이름 앞에는 항상 '@' 기호를 붙인다. 선언 및 사용법사용자 정의 변수는 별도의 선언 없이 바로 값을 할당하여 사용할 수 있다.-- 변수 @myVar에 100을 할당SET @myVar = 100;-- 변수 @myVar의 값을 출력SELECT @myVar;아래 예제는 'employees' 테이블에서 가장 ..

💾 Data/SQL

[MySQL] DB 테이블 row 수 확인

[MySQL] DB 테이블 row 수 확인 전체 테이블 별 row count를 구하기 위해선 다음과 같은 Query를 사용할 수 있다.SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = 'DBNAME' ORDER BY table_name;

💾 Data/SQL

[SQL] USING

[SQL] USING USING 두 개의 테이블이 내부 조인으로 조인 될 때 조인하고자 하는 두 테이블의 컬럼명이 같을 경우 조인 조건을 길게 적지 않고 간단하게 적을 수 있다. 일반적인 JOIN 조건이 다음과 같을 때, SELECT * FROM dept d JOIN employees e ON d.dept_num = e.dept_num; USING을 사용하면 다음과 같이 표현 할 수 있다. SELECT * FROM dept d JOIN employees e USING(dept_num); 추가로 ON을 사용하면 컬럼명이 다르더라도 JOIN 조건을 사용할 수 있다.

💾 Data/SQL

[MySQL] With 문

[MySQL] With 문SQL을 사용하여 대량의 데이터를 다루는 경우, 임의의 결과를 정의하고 사용하는 경우임시 테이블을 만들어 해당 테이블에 값을 저장할 수 있다. WITHwith절은 동일한 SQL이 반복되어서 사용될 때 성능을 높이기 위해 사용된다.실제로는 temp라는 임시테이블에 저장되는 가상의 테이블이다.with as ( )with절은 임시테이블을 사용하여 저장해놓은 데이터를 액세스하기 때문에, 메모리를 차지한다.여러 개의 with절을 동시에 돌리면 임시테이블에 부하가 발생해 다같이 느려진다. with절은 다음과 같은 두가지 방식이 이용된다. 1) materialize기본 with절 사용 시 적용되는 것으로  temp를 사용한다.  2) inlinetemp 테이블을 생성하지 않고 inli..

💾 Data/SQL

[MySQL] ROUND(), TRUNCATE()

[MySQL] ROUND(), TRUNCATE() 숫자 데이터를 다룰 때, 소수점 자리를 처리해야하는 경우가 있다. MySQL에서 반올림과 버림 기능을 사용하기 위해 각각 ROUND()와 TRUNCATE() 함수를 사용할 수 있다. 반올림 ROUND ROUND() 함수를 사용하면 반올림을 사용할 수 있다. ROUND(소수, 나타내고 싶은 자리 수) 만약 소수점 3번째 자리에서 반올림을 하고싶다하면 다음과 같이 나타낼 수 있다. SELECT ROUND(123.4567, 2) -- 123.46 음수도 사용이 가능하다. SELECT ROUND(123.456, -1) -- 120 버림 TRUNCATE TRUNCATE() 함수를 이용하면 특정 자리 수 이하를 버릴 수 있다. TRUNCATE(숫자, 나타내고 싶은 ..

💾 Data/SQL

[MySQL] 계정 생성 및 권한 부여

[MySQL] 계정 생성 및 권한 부여 DB를 처음 생성할 때 root 계정이 생성된다. 관리자 계정은 데이터베이스에 대한 모든 권한을 가지고 있다. 관리자 계정 이외의 사용자들은 용도에 맞는 권한을 부여받아 이용하는 것이 일반적이다. 그럼 일반 사용자 계정을 생성하고 그에 맞는 권한을 부여하는 방법은 무엇일까? user 확인 먼저 다음과 같이 MySQL에 접속해준다. mysql -h -u -p 다음과 같이 현재 user를 확인 할 수 있다. use mysql; select host, user, plugin, authentication_string from user; 계정 생성 -- 내부ip(localhost) 접속 가능 계정 CREATE USER '계정아이디'@'localhost' IDENTIFIED ..

💾 Data/SQL

[MySQL] DATE_FORMAT

[MySQL] DATE_FORMAT MySQL의 DATE_FORMAT 함수는 날짜를 지정한 형식으로 출력한다. DATE_FORMAT DATE_FORMAT(날짜, 형식) 주어진 date를 format에 맞춰 문자열로 변환한다. 구분 기호는 다음과 같다. 기호 역할 기호 역할 %Y 4자리 년도 %m 숫자 월(두자리) %y 2자리 년도 %c 숫자 월(한자리) %M 긴 월(영문) %d 일자(두자리) %b 짧은 월(영문) %e 일자(한자리) %W 긴 요일 이름(영문) %l 시간(12시간) %a 짧은 요일 이름(영문) %H 시간(24시간) %i 분 %r hh:mm:ss AM, PM %T hh:mm:SS %S 초 Example SELECT DATE_FORMAT(now(), '%Y-%m-%d'); -- 2023-11-..

heywantodo
'💾 Data/SQL' 카테고리의 글 목록