[MySQL] 문자열 함수 MySQL 문자열 함수의 종류 함수 설명 CONCAT(문자열, 문자열) 문자열을 합쳐준다. LEFT(문자열, 길이) OR RIGHT(문자열, 길이) 왼쪽 또는 오른쪽에서 길이만큼 문자열을 끊어준다. SUBSTRING(문자열, 시작, 끝) 문자열을 기준에 따라 나눠준다. REPLACE(문자열, target, replace) 문자열 중의 target에 해당하는 부분을 replace로 바꾼다 REVERSE(문자열) 문자열을 거꾸로 뒤집는다. CHAR_LENGTH(문자열) 문자열의 길이를 반환한다. (공백 포함) UPPER(문자열) 문자열을 대문자로 전부 변환하여 반환한다. LOWER(문자열) 문자열을 소문자로 전부 변환하여 반환한다. CONCAT(문자열, 문자열) 문자열을 합쳐준다...
[SQL] COUNT() 함수의 최대값 혹은 최대값을 가지는 값 찾기 count()의 최대값 찾기 SELECT COUNT(COLUMN1) AS MAX FROM TEST GROUP BY COLUMN1 ORDER BY MAX DESC LIMIT 1; desc로 내림차순 정렬한 후, 반환 결과를 limit1으로 제한하여 가장 상단에 있는 값을 출력한다. count()의 최대값을 가지는 값 찾기 SELECT COLUMN2 FROM TEST GROUP BY COLUMN1 ORDER BY COUNT(COLUMN1) DESC LIMIT 1; order by절에서만 사용하고 출력 결과만 select하여 출력한다. limit 1로 제한하였으므로 최대값을 지니는 값이 두 개여도 하나만 출력되는 단점이 있는데 Having ..
[MySQL] REGEXP LIKE와 IN을 같이 사용한 것과 동일한 결과를 출력하는 방법이 없을까하고 찾아보니, REGEXP라는 정규식을 사용하면 like와 in을 동시에 사용한 것과 같이 사용이 가능하다고 한다. 사용법은 다음과 같다. TEST 테이블의 TEST1 컬럼에 감자, 튀김, 햄버거 중 하나라도 포함이 된 row는 출력을 한다. SELECT * FROM TEST WHERE TEST1 REGEXP '감자|튀김|햄버거' 다음은 예시 사용법이다. SELECT CAR_TYPE, COUNT(*) AS CARS FROM CAR_RENTAL_COMPANY_CAR WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트' GROUP BY CAR_TYPE ORDER BY CAR_TYPE 참고 htt..
[MySQL] 재귀 쿼리(Recursive) 🤔재귀함수? 함수 안에 자신의 함수를 다시 호출하는 함수를 의미한다. 자신의 로직을 내부적으로 반복하다가, 일정한 조건이 만족되면 함수를 이탈하여 결과를 도출한다. MySQL에서도 재귀 쿼리 기법이 존재하는데, 사용법은 다음과 같다. WITH RECURSIVE 쿼리문을 작성하고, UNION을 통해 재귀를 구성한다. WITH RECURSIVE cte AS( SELECT 1 AS a --재귀 초깃값 UNION ALL SELECT a + 1 --재귀 FROM cte WHERE h < 5 --재귀 정지 조건 ) SELECT * FROM cte a 1 2 3 4 5 예를 들어, 0시부터 23시까지의 시간값이 필요할 때, 다음과 같이 재귀쿼리를 사용할 수있다. ANIMA..
[MySQL] NULL 처리 DB데이터를 조회할 때, Null 값을 처리해야 할 경우가 있다. MySQL에서 컬럼의 값이 Null 인 경우를 처리해주는 함수에 대해서 알아보자 IFNULL 해당 컬럼의 값이 Null을 반환할 때, 다른 값으로 출력할 수 있다. SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명; CASE 조건식을 통해 True, False를 판단하여 조건에 맞게 변환할 수 있다. CASE WHEN 조건식1 THEN 식1 WHEN 조건식2 THEN 식2 ... ELSE 조건에 맞는경우가 없는 경우 실행할 식 END SELECT CASE WHEN NAME IS NULL THEN "No name" ELSE NAME END as NAME FROM ANIMAL..
[SQL] 테이블 생성 (CREATE) CREATE TABLE CREATE TABLE 테이블 명( 컬럼명 데이터타입 조건, 컬럼명 데이터타입 조건, . . ); 데이터 타입 데이터 타입 의미 CHAR 특정 문자열의 개수를 지정 VARCHAR 가변길이의 문자열을 저장할 때 사용 최대 길이를 지정 (ORACLE x) VARCHAR2 가변길이의 문자열을 저장할 때 사용 최대 길이를 지정 (MySQL, MariaDB x) NUMBER 숫자에 사용되는 데이터 타입, 소수점 저장 가능 (MySQL에선 INT) DECIMAL 숫자에 사용되는 데이터 타입 소수점 저장 가능 DATE 날짜에 사용되는 데이터타입 제약 조건 제약 조건 의미 NOT NULL 값이 꼭 입력이 되어야 할 때 사용 NULL 허용 x UNIQUE 해..
[SQL] 테이블 변경 (ALTER) ALTER 기존에 생성되어있는 테이블에 컬럼을 추가/변경 하는 등 테이블 변경 사항을 적용할 때 사용하는 구문 컬럼 추가 ALTER TABLE table_name ADD COLUMN column_name varchar(32) NOT NULL; 컬럼 변경 ALTER TABLE table_name MODIFY COLUMN column_name varchar(16) NULL; 컬럼 이름 변경 ALTER TABLE table_name CHANGE COLUMN column_name new_column_name varchar(16) NULL; 컬럼 삭제 ALTER TABLE table_name DROP COLUMN column_name; 테이블 이름 변경 ALTER TABLE ..
1. 데이터베이스 별 용량 조사 SELECT table_schema AS 'DatabaseName', ROUND(SUM(data_length+index_length)/1024/1024, 1) AS 'Size(MB)' FROM information_schema.tables GROUP BY table_schema ORDER BY 2 DESC; 2. 테이블 별 용량 조사 SELECT table_name AS 'TableName', ROUND(SUM(data_length+index_length)/(1024*1024), 2) AS 'All(MB)', ROUND(data_length/(1024*1024), 2) AS 'Data(MB)', ROUND(index_length/(1024*1024), 2) AS 'Inde..
파티션 (Partition) 파티션이란 논리적인 하나의 테이블이나 인덱스를 여러 개의 파티션으로 분할 하는 기능을 말함 크기가 큰 테이블에 쿼리를 수행 할 경우 DB에 상당한 부하가 걸리기때문에, 파티션을 통해 특정 데이터에 대한 접근 시간을 줄이고, 쿼리의 실행 속도를 향상 시키는 데 도움을 줄 수 있음 각 파티션 별로 독립적으로 백업하고 복구가 가능하지만, 테이블 간 Join이 일어날 경우 비용이 증가할 수 있음 파티셔닝 적용 ✔ MySQL 기준 1. 파티셔닝을 적용 할 테이블을 생성할 때, 파티션을 지원하도록 설정 CREATE TABLE 테이블명 ( 컬럼1 데이터_타입, 컬럼2 데이터_타입, ... ) PARTITION BY {RANGE|LIST|HASH} (파티션_키); 파티션 키는 파티션을 나눌..
[SQL] 프로시저와 함수 프로시저 (procedure) : 일련의 SQL 문으로 구성된 코드 블록 코드 블록은 데이터 베이스에 저장되며, 필요할 때 호출하여 실행할 수 있음 프로시저는 주로 반복적인 작업을 수행하거나 복잡한 데이터 조작 및 처리를 위해 사용됨 함수(Function) 처럼 결과값을 Return 받을 수 없음, out 매개변수를 사용하여 값을 전달 장점 DB 서버에서 실행되기 때문에, 네트워크 비용을 줄이고 데이터 베이스와 상호작용을 최소화하여 성능을 향상 시킬 수 있음 하나의 요청으로 여러 SQL문을 실행할 수 있음 프로시저는 데이터 베이스의 인증된 사용자만 호출할 수 있으므로 보안 측면에서 이점 단점 디버깅 및 유지보수가 어려움 문자나 숫자 연산에 프로시저를 사용한다면 성능이 낮아질 수..
MySQL에서 데이터 타입을 변환하는 방법은 크게 두 가지가 있음 1. CAST CAST 함수는 데이터 타입을 변환할 때 사용됨 CAST (변환 할 값 AS 변환 할 데이터 타입) SELECT CAST('123' AS INTEGER); --문자열 데이터를 숫자형 데이터로 변환 2. CONVERT CONVERT 함수도 데이터 타입을 변환할 때 사용됨 다양한 데이터 타입 변환 형식을 제공 CONVERT(변환 할 데이터 타입(길이), 변환 할 값, 형식) SELECT CONVERT(VARCHAR(10), GETDATE(), 101); --MM/DD/YYYY 형식으로 표시됨 CONVERT 함수에서 사용할 수 있는 형식 0 or 100 mon dd yyyy hh:miAM/PM (예: Jan 1 2023 12:00..
[SQL] View View 데이터 베이스에서 사용되는 가상 테이블 View는 실제 데이터를 저장하지 않고 데이터베이스의 다른 테이블에서 가져온 쿼리를 기반으로 만들어짐 View의 장점 1. 데이터를 요약, 필터링, 조인 또는 계산하는데에 사용 가능 2. View를 사용하면 복잡한 쿼리를 단순화하고, 재사용 가능한 코드를 생성하여 작업을 간단하게 할 수 있음 3. 특정 사용자 또는 그룹에게 보여줄 수 있는 데이터를 제한하고 보안성을 향상시키는데 사용 4. View를 사용하여 복잡한 쿼리의 실행 속도를 높임 View 생성 ❗ MySQL 기준 CREATE VIEW 문을 사용하여 만들어 짐 CREATE VIEW 문은 새로운 테이블을 만들지 않고 쿼리 결과를 View에 저장함 예제 테이블 CREATE TABLE..