MySQL에서 단일 쿼리로 모든 열 이름을 소문자로 변환하기데이터베이스를 운영하다 보면 테이블의 열(컬럼) 이름이 대소문자로 뒤섞여 있어 일관성을 위해 모두 소문자로 통일해야 할 때가 있습니다. MySQL에서는 information_schema.columns 시스템 뷰와 CONCAT() 함수를 조합하면 필요한 ALTER TABLE 문을 자동으로 생성해 손쉽게 처리할 수 있습니다.1단계: 샘플 테이블 생성먼저 대소문자가 혼합된 열 이름을 가진 테이블을 생성해 보겠습니다.mysql> create table DemoTable1&nb
MySQL의 암시적 타입 변환 동작 이해하기MySQL에서는 WHERE 절에서 숫자와 문자열을 비교할 때 암시적(Implicit) 타입 변환이 발생합니다. 중요한 규칙은 다음과 같습니다.문자열이 정수로 시작하면 해당 부분만 정수로 변환되고, 그렇지 않으면 0으로 변환됩니다.이번 글에서는 실제 예제를 통해 이 동작을 확인해 보겠습니다.1. 테이블 생성먼저 StudentId 컬럼을 가진 테이블을 생성합니다.mysql> create table DemoTable1390 -> ( &
MySQL SELECT 구문 오류의 원인MySQL에서 select ClientId, ClientName, ClientAge, from tablename과 같은 쿼리를 실행하면 오류가 발생합니다. 원인은 컬럼 이름 목록의 끝, 즉 from tablename 바로 앞에 불필요한 쉼표(,)가 있기 때문입니다.실제로 이런 오류 메시지를 보셨을 겁니다:mysql> select ClientId,ClientName,ClientAge, from DemoTable1391; ERROR 1064 (42000): You have an error i
GROUP_CONCAT() 함수로 여러 행을 한 줄로 합치기MySQL에서 여러 행에 흩어져 있는 값들을 하나의 행으로 가져오고, 각 값을 쉼표(,)로 구분하여 표시하려면 GROUP_CONCAT() 함수를 사용하면 됩니다.이 경우 GROUP BY 절을 사용할 필요가 없습니다. GROUP_CONCAT() 자체가 더 간결하고 빠른 해결책이기 때문입니다.1. 테이블 생성하기먼저 예제로 사용할 테이블을 생성합니다.mysql> create table DemoTable1371 -> ( -> Id int, -
MySQL에서 단일 열 값에서 숫자 빼는 방법MySQL에서 특정 열(column)에 저장된 값에서 숫자를 빼려면 UPDATE 문과 뺄셈 연산자(-)를 함께 사용하면 됩니다. WHERE 절로 조건을 지정하면 원하는 행만 골라서 수정할 수도 있습니다.먼저 실습에 사용할 테이블을 생성하겠습니다.mysql> create table DemoTable1372 -> ( -> Value int -> ); Query OK, 0 rows affected (0.
MySQL에서 저장된 데이터를 마치 JSON 형식처럼 보이도록 표시하고 싶다면 concat() 함수를 활용하면 됩니다. 이 글에서는 실제 예제를 통해 텍스트 타입 컬럼을 JSON 형태의 문자열로 업데이트하는 과정을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다. 자동 증가되는 기본키와 학생 정보를 담을 text 타입 컬럼으로 구성했습니다.mysql> create table DemoTable1373-> (-> StudentId int NOT NULL AUTO_INCREMENT PRI
MySQL에서는 CASE WHEN 구문을 활용해 특정 조건을 만족하는 행만 집계할 수 있습니다. COUNT() 함수 내부에 CASE 조건을 넣으면, 조건을 충족하는 경우만 카운트됩니다. 이번 글에서는 예제 테이블을 만들고 실제 동작 과정을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 테스트에 사용할 테이블을 생성합니다.mysql> create table DemoTable1374 -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Name var
MySQL EXPLAIN 키워드의 역할MySQL의 EXPLAIN 키워드는 쿼리를 실제로 실행하지 않습니다. 대신 MySQL이 해당 쿼리를 어떻게 실행할 것인지에 대한 실행 계획(execution plan)을 보여주는 역할을 합니다. 이를 통해 인덱스 사용 여부, 조인 방식, 스캔되는 예상 행 수 등을 미리 확인할 수 있으며, 쿼리 성능 분석과 최적화에 필수적인 도구로 활용됩니다.실제 예제를 통해 EXPLAIN의 동작 방식을 살펴보겠습니다.1. 테이블 생성먼저 예제로 사용할 테이블을 생성합니다.mysql> create table
MySQL에서 날짜 값에 특정 기간을 더하려면 INTERVAL 키워드를 사용하면 됩니다. 이번 글에서는 날짜에 1년과 2일을 한 번의 쿼리로 더하는 방법을 예제와 함께 살펴보겠습니다.먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1376 -> ( -> AdmissionDate date -> );Query OK, 0 rows affected (0.
MySQL에서 테이블에 설정된 캐스케이드(CASCADE) 옵션을 비롯해 외래 키, 인덱스, 기본 키 등 테이블의 전체 구조를 확인하려면 SHOW CREATE TABLE 명령어를 사용하면 됩니다. 이 명령은 해당 테이블을 생성할 때 실제로 적용된 CREATE TABLE 문을 그대로 출력해 주기 때문에, ON DELETE CASCADE, ON UPDATE CASCADE 같은 제약 조건도 한눈에 파악할 수 있습니다.1. 예제 테이블 생성하기먼저 실습에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTa
MySQL에서는 서로 다른 두 개 이상의 테이블 데이터를 UNION으로 결합한 뒤, IN 절을 사용해 특정 조건에 맞는 레코드만 한 번의 쿼리로 조회할 수 있습니다. 이번 글에서는 예제 테이블 두 개를 만들고, UNION과 IN 절을 함께 사용하는 방법을 단계별로 살펴보겠습니다.1. 첫 번째 테이블 생성하기먼저 학생 정보를 저장할 첫 번째 테이블을 생성합니다.mysql> create table DemoTable1-> (-> StudentId int,-> StudentName varchar(20)-> );Q
MySQL에서 특정 접두어를 가진 영숫자 문자열의 최대값 조회하기영숫자가 혼합된 문자열 컬럼(예: IT794, AT1034)에서 특정 문자로 시작하는 값들 중 최대값을 구하려면 MAX() 함수와 함께 CAST()를 사용해 문자열을 숫자로 변환해야 합니다. 또한 특정 문자로 시작하는 행만 필터링하기 위해 RLIKE 연산자를 활용합니다.먼저 예제 테이블을 생성해 보겠습니다.mysql> create table DemoTable1381 -> ( -> DepartmentId varc
MySQL에서 한 열(column) 안에 있는 두 개의 값을 서로 맞바꾸고 싶다면 CASE WHEN 문을 활용하는 것이 가장 간단하고 확실한 방법입니다. 이 글에서는 실제 예제를 통해 두 값을 교환하는 UPDATE 쿼리를 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1382 -> ( -> StudentName varchar(20) &nbs
MySQL에서 정확한 문자열 값 검색하기MySQL에서 기본 문자셋(utf8mb4의 일반 콜레이션)을 사용하면 문자열 비교 시 대소문자가 구분되지 않습니다. 따라서 MySQL과 mysql을 같은 값으로 취급하게 되죠. 대소문자까지 완전히 일치하는 정확한 문자열 값을 검색하려면 COLLATE 절에 바이너리 콜레이션인 utf8_bin을 지정해야 합니다.실제 예제를 통해 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 테스트용 테이블을 생성합니다.mysql> create table DemoTable1620 -> (
MySQL에서 집계 함수와 다른 모든 열을 함께 조회하는 방법MySQL에서 MAX(), MIN(), SUM() 같은 집계 함수를 사용할 때, 일반적인 방식으로는 나머지 열들을 함께 조회하기 어렵습니다. 이럴 때 서브쿼리(subquery)를 활용하면 집계 값과 개별 행의 데이터를 동시에 손쉽게 가져올 수 있습니다. 지금부터 예제를 통해 단계별로 살펴보겠습니다.1단계: 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable1621 -&g
MySQL의 WITH ROLLUP은 GROUP BY 절과 함께 사용하여 그룹별 소계와 전체 총계를 한 번의 쿼리로 손쉽게 계산할 수 있는 강력한 기능입니다. 이 글에서는 WITH ROLLUP의 기본 문법부터 실제 예제까지 단계별로 살펴보겠습니다.WITH ROLLUP 기본 문법WITH ROLLUP을 사용하는 기본적인 문법은 다음과 같습니다.SELECT yourColumnName1, SUM(yourColumnName2) FROM yourTableName GROUP BY yourColumnName1 WITH ROLLUP;예제 테이블 생성
MySQL에서 길이가 서로 다른 영숫자(alphanumeric) 데이터를 단순히 ORDER BY로 정렬하면 문자열 기준으로 비교되기 때문에 의도한 순서대로 정렬되지 않는 경우가 많습니다. 이 문제는 SUBSTRING_INDEX() 함수와 산술 연산을 조합하면 깔끔하게 해결할 수 있습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1623-> (-> StudentCode varchar(20)-> );Query OK, 0 rows affected
MySQL에서 여러 값 중 하나와 일치하는 행 조회하기SELECT 문에서 특정 컬럼의 값이 여러 후보 값 중 하나와 일치하는지 확인하고 싶다면 IN() 연산자를 사용하면 됩니다. IN()은 여러 개의 OR 조건을 하나의 간결한 표현으로 처리할 수 있어 가독성이 좋고 쿼리 작성도 훨씬 편리합니다.아래 예제를 통해 실제 동작 과정을 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1624 -> (&n
MySQL에서는 REPLACE() 함수를 사용하여 문자열에 포함된 공백을 대시(-) 같은 다른 문자로 손쉽게 변경할 수 있습니다. 이 글에서는 실제 예제를 통해 컬럼 값의 공백 사이에 대시를 추가하는 과정을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1625 -> ( -> FullName varchar(20) &nb
MySQL RPAD() 함수로 문자열 길이에 따라 별(*) 추가하기문자열의 길이를 기준으로 그 뒤에 별(*) 문자를 덧붙이고 싶다면 RPAD() 함수를 활용하면 됩니다. RPAD()는 지정한 길이만큼 문자열을 오른쪽으로 채워주는 함수로, IF 조건문과 함께 사용하면 길이에 따라 다른 길이의 별을 붙일 수 있습니다.아래 예제를 통해 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 이름을 저장할 간단한 테이블을 생성합니다.mysql> create table DemoTable1626 ->