MySQL에서 VARCHAR 컬럼의 숫자값으로 최댓값 구하기MySQL에서 숫자 데이터가 VARCHAR(문자열) 타입으로 저장되어 있으면, 단순히 ORDER BY 절만 사용할 경우 값이 사전순(문자열 기준)으로 정렬되어 의도한 결과를 얻을 수 없습니다. 예를 들어 1089.00보다 788.00이 더 크다고 잘못 판단될 수 있습니다.이 문제를 해결하려면 CAST() 함수를 사용해 varchar 값을 정수(SIGNED INTEGER)로 형 변환한 뒤 정렬해야 합니다. 아래에서 전체 과정을 단계별로 살펴보겠습니다.1. 테이블 생성먼저 It
MySQL에서 열 값 끝에 문자 추가하기MySQL에서 SELECT 쿼리를 실행할 때 열 값의 끝에 특정 문자를 추가하고 싶다면 CONCAT() 함수를 사용하면 됩니다. CONCAT() 함수는 여러 문자열을 하나로 연결해 주는 기능을 하며, 이를 활용하면 원본 데이터를 변경하지 않고도 조회 결과에 원하는 문자를 덧붙일 수 있습니다.1. 테이블 생성하기먼저 예제로 사용할 테이블을 생성합니다.mysql> create table DemoTable766 (Name varchar(100)); Query OK, 0 rows affected
MySQL에서 테이블에 저장된 0 값을 다른 특정 값으로 일괄 변경하고 싶다면, ISNULL()과 비슷한 역할을 하는 IF() 함수를 활용할 수 있습니다. IF() 함수는 조건이 참일 때와 거짓일 때 각각 다른 값을 반환하므로, 값이 0일 때만 원하는 값으로 치환하는 로직을 손쉽게 구현할 수 있습니다.1. 샘플 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable749 (Value int);Query OK, 0 rows affected (1.02 sec)2. 데이터 삽입INSE
MySQL 서버에 현재 로그인(접속)되어 있는 사용자 목록을 확인해야 할 때가 있습니다. 장애 진단, 세션 관리, 보안 점검 등 다양한 상황에서 유용하게 활용할 수 있는데요. MySQL에서는 크게 두 가지 방법으로 접속 중인 사용자를 조회할 수 있습니다.첫 번째 방법: INFORMATION_SCHEMA.PROCESSLIST 조회INFORMATION_SCHEMA의 PROCESSLIST 테이블을 SELECT 문으로 조회하면 현재 실행 중인 모든 스레드와 접속 정보를 확인할 수 있습니다.SELECT * FROM INFORMATION_SC
테이블의 일부 컬럼 값에 특정 키워드가 포함되어 있고, 해당 키워드를 가진 레코드만 조회하고 싶은 경우가 있습니다. 이럴 때 LIKE 연산자를 사용하면 됩니다.예제 테이블 생성먼저 예제로 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable750 (Title varchar(200)); Query OK, 0 rows affected (0.69 sec)데이터 삽입INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 삽입합니다.mysql> insert into DemoTable750 valu
MySQL에서 특정 열에 대해 두 개 이상의 서로 다른 값을 가진 레코드를 조회하고 싶다면, GROUP BY 절과 HAVING 절을 함께 사용하는 것이 가장 효과적인 방법입니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable751 ( StudentName varchar(100), SubjectName varchar(100) ); Query OK, 0 rows affected (0.66 sec)2. 샘플 데이터 삽입INSERT 명령을 사용하여 학생
MySQL에서 IN()을 활용한 사용자 지정 정렬 방법MySQL에서 특정 값들을 우선적으로 정렬하고 싶을 때, IN() 조건과 함께 ORDER BY CASE를 사용하면 원하는 순서대로 결과를 가져올 수 있습니다. 이 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable752 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Na
MySQL에서 날짜의 월(Month) 부분만 추출하는 방법날짜 데이터에서 월 부분만 따로 가져오고 싶다면 DATE_FORMAT() 함수를 사용하면 됩니다. 이 함수는 날짜 값을 지정한 형식 문자열에 맞춰 변환해 주는데, %M은 월의 영문 이름(June, January 등), %m은 두 자리 숫자 형태의 월(06, 01 등)을 반환합니다.1. 테이블 생성하기먼저 예제로 사용할 테이블을 생성합니다.mysql> create table DemoTable753 (DueDate datetime);Query OK, 0 rows affect
MySQL에서 중복을 제거한 고유한(distinct) 값과 각 값이 나타난 개수(count)를 함께 조회하려면 GROUP BY 절과 COUNT() 함수를 함께 사용하면 됩니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable754 (ProductPrice int); Query OK, 0 rows affected (0.48 sec)2. 데이터 삽입하기INSERT 명령어를 사용해 몇 개의 레코드를 삽입합니다.mysql> insert into DemoTable754
MySQL에서 SELECT 문으로 계산된 값에 별칭(Alias)을 붙인 후, 그 별칭을 기준으로 결과를 필터링하고 싶은 경우가 있습니다. 이때 WHERE 절 대신 HAVING 절을 사용하면 됩니다.WHERE 절은 별칭을 인식하지 못하기 때문에, 집계되거나 계산된 컬럼의 별칭으로 조건을 걸 때는 반드시 HAVING 절을 활용해야 합니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable755 ( Id int NOT NULL AUTO_INCREMENT PR
MySQL에서 하나의 행에 있는 여러 열의 값을 비교하여 그중 가장 작은 값을 찾고 싶다면 LEAST() 함수를 사용하면 됩니다. 이 함수는 인자로 전달된 여러 값 중 최소값을 반환하며, 열 이름을 그대로 인자로 넘기면 각 행별로 최소값을 손쉽게 계산할 수 있습니다.1. 테이블 생성하기먼저 실습에 사용할 테이블을 생성해 보겠습니다. 세 개의 정수형 열을 가진 테이블입니다.mysql> create table DemoTable756 ( Value1 int, &
테이블의 VARCHAR 컬럼에 문자열과 숫자가 결합된 값이 저장되어 있고, 숫자 부분이 항상 오른쪽에 위치하는 경우를 생각해 봅시다. 예를 들어 다음과 같습니다.John1023Carol9871David9098이때 컬럼 전체 값 중 오른쪽에 있는 숫자를 기준으로 정렬하고 싶다면 어떻게 해야 할까요? 이런 경우 ORDER BY RIGHT() 함수를 활용하면 간단하게 해결할 수 있습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable757 ( &nb
MySQL에서 OR 조건을 대체하는 REGEXP 방식MySQL에서 여러 개의 OR 조건이 포함된 WHERE 절은 코드가 길어지고 가독성이 떨어질 수 있습니다. 이럴 때 유용한 대안이 바로 REGEXP(정규 표현식)입니다. REGEXP를 사용하면 복잡한 OR 조건을 하나의 패턴으로 간결하게 처리할 수 있습니다.1. 테스트용 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable684(EmployeeInformation text); Query OK, 0 rows affected
MySQL에서는 INSERT INTO ... SELECT 문을 활용하면 한 테이블의 데이터를 조회하면서 동시에 고정된 값(상수)을 함께 삽입할 수 있습니다. 예를 들어, 기존 직원 명단 테이블에서 이름만 가져오고, 나머지 컬럼에는 공통으로 적용되는 상숫값을 넣어야 하는 경우에 유용합니다.아래 예제를 통해 단계별로 살펴보겠습니다.1단계: 첫 번째 테이블 생성하기먼저 이름 데이터를 담을 테이블을 생성합니다.mysql> create table DemoTable1(Name varchar(100)); Query OK, 0 rows af
MySQL에서 두 테이블 간 누락된 값을 찾는 방법두 MySQL 테이블 사이에서 한쪽 테이블에는 없는 값을 찾으려면 NOT IN 연산자를 활용하면 됩니다. 이 연산자는 특정 컬럼의 값이 서브쿼리 결과 집합에 존재하지 않는 행만 필터링해 줍니다.실제 예제를 통해 단계별로 살펴보겠습니다.1단계: 첫 번째 테이블 생성mysql> create table DemoTable1(Value int);Query OK, 0 rows affected (0.56 sec)2단계: 첫 번째 테이블에 데이터 삽입INSERT 명령을 사용해 레코드를 추가합
MySQL에서 ERROR 1064는 SQL 쿼리에 잘못된 구문(syntax)이 사용되었을 때 발생하는 대표적인 오류입니다. 이 오류 메시지에는 check the manual that corresponds to your MySQL server version for the right syntax to use near...라는 문구가 함께 출력되며, 이는 해당 위치 근처의 구문이 MySQL 서버 버전의 문법과 맞지 않는다는 의미입니다.오류 발생 예시아래는 잘못된 데이터 타입 선언으로 인해 오류가 발생하는 예제입니다. 테이블 생성 시 DA
MySQL에서 특정 값으로 시작하는 레코드 선택하기MySQL에서 특정 값으로 시작하는 레코드를 조회하려면 LIKE 연산자와 와일드카드 문자 %를 함께 사용해야 합니다. LIKE 연산자는 패턴 매칭을 수행하며, %는 임의의 길이의 문자열(0자 이상)을 의미합니다. 예를 들어 567%라는 패턴은 567으로 시작하는 모든 값과 일치합니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable690( UserId int NOT NULL AUTO_IN
MySQL에서 create table table은 작동할까?먼저 테이블을 생성할 때 create table table처럼 table이라는 단어를 그대로 테이블 이름으로 사용하면 어떤 일이 발생하는지 살펴보겠습니다.mysql> create table table( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(100));위 쿼리를 실행하면 다음과 같은 오류가 발생합니다.ERROR 1064 (42000): You have an
MySQL에서 빈 문자열과 NULL 값 동시에 조회하기MySQL에서 NULL 여부를 확인하려면 IS NULL 연산자를 사용하고, 빈 값(빈 문자열 )은 빈 문자열과 직접 비교해야 합니다. 이 두 가지 조건을 OR로 결합하면 NULL과 빈 값을 한 번의 쿼리로 함께 조회할 수 있습니다. 아래 예제를 통해 자세히 살펴보겠습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 만들어 보겠습니다.mysql> create table DemoTable691( PlayerId int NOT NULL AUTO_INCREMENT PRIMAR
MySQL에서는 RAND() 함수와 CAST() 함수를 조합하면 테이블의 특정 열 값을 난수로 손쉽게 업데이트할 수 있습니다. 이번 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 테이블을 생성합니다.mysql> create table DemoTable746 ( Number int ); Query OK, 0 rows affected (0.56 sec)2. 샘플 데이터 삽입하기INSERT 명령을 사용하여 테이블에 레코드를 몇 개 삽입합니다.mysql> insert