MySQL에서는 SELECT 절에서 정의한 별칭(alias)을 같은 쿼리 내에서 직접 참조할 수 없습니다. 이러한 제약을 우회하려면 사용자 정의 변수(user-defined variable)를 활용하는 것이 가장 간단한 방법입니다.아래는 기본 문법입니다. 여기서 @yourAliasName은 값이 할당되는 변수이며, 동시에 별칭처럼 활용됩니다.select @yourAliasName := curdate() as anyAliasName,concat(yourValue., yourColumnName, yourValue, @yourAlias
MySQL에서 테이블의 특정 행(row)에 있는 하나의 열(column) 값, 즉 특정 셀 값을 가져오고 싶을 때는 SELECT 문과 WHERE 절을 함께 사용하면 됩니다. 이 글에서는 예제를 통해 단계별로 그 방법을 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( Name varchar(40), Score int ); Query OK, 0 rows affected (0.72 sec)Name(이름)과 Score(점수) 두 개의 열을
이메일 주소 중 숫자 5자리로 시작하는 값만 조회하고 싶다면 MySQL의 REGEXP 연산자를 활용하는 것이 가장 간단한 방법입니다. 정규 표현식 패턴을 사용하면 문자열의 시작 부분이 특정 조건에 맞는지 손쉽게 확인할 수 있습니다.기본 쿼리 문법select * from yourTableName where yourColumnName regexp ^[0-9]{5};여기서 사용된 정규식 패턴의 의미는 다음과 같습니다.^ : 문자열의 시작을 의미합니다.[0-9] : 0부터 9까지의 숫자 한 글자를 나타냅니다.{5} : 앞의 패턴이 정확히
MySQL에서 특정 조건에 해당하는 행의 열 값을 다른 값으로 대체하려면 UPDATE 문과 WHERE 절을 함께 사용하면 됩니다. 이 글에서는 예제 테이블을 만들고, 데이터를 삽입한 뒤, UPDATE 쿼리를 사용해 특정 학생의 점수를 변경하는 전 과정을 단계별로 살펴보겠습니다. 1. 테이블 생성하기 먼저 CREATE TABLE 문으로 예제 테이블을 생성합니다. StudentId는 자동 증가(AUTO_INCREMENT) 기본 키로 설정하고, Score 열에는 정수형 점수를 저장합니다. mysql> create table Dem
AUTO_INCREMENT 열에는 값을 직접 삽입할 필요가 없습니다결론부터 말하면 아니요, AUTO_INCREMENT로 설정된 열에는 INSERT 문으로 값을 직접 삽입할 필요가 없습니다. 해당 열은 1부터 시작하여 새 레코드가 추가될 때마다 자동으로 값이 증가하기 때문입니다. 이는 테이블 생성 시 해당 열을 AUTO_INCREMENT로 지정했기 때문에 가능한 동작입니다.실제 예제를 통해 동작 방식을 단계별로 확인해 보겠습니다.1단계: 테이블 생성먼저 EmployeeId 열을 AUTO_INCREMENT로 설정한 테이블을 생성합니다.
IP 주소처럼 점(.)으로 구분된 문자열 데이터를 다룰 때, 전체 값이 아닌 특정 부분만 추출하고 싶은 경우가 자주 있습니다. 예를 들어 192.168.130.67과 같은 IP 주소에서 마지막 옥텟을 제외한 192.168.130 부분만 가져와서 그룹별로 개수를 집계하려면 어떻게 해야 할까요?이런 문자열 조작에는 MySQL의 SUBSTRING_INDEX() 함수가 가장 적합합니다. 이 함수는 지정한 구분자를 기준으로 문자열을 나눈 후, 원하는 위치까지의 부분 문자열을 반환합니다.1. 테이블 생성하기먼저 실습에 사용할 테이블을 만들어
MySQL에서 마지막 구분 기호를 기준으로 문자열의 왼쪽 부분 추출하기MySQL에서 문자열의 마지막 구분 기호를 기준으로 왼쪽 부분만 추출하려면 LEFT() 함수를 사용하면 됩니다. 여기에 LOCATE()와 REVERSE() 함수를 함께 조합하면 원하는 결과를 손쉽게 얻을 수 있습니다.핵심 아이디어는 다음과 같습니다. 먼저 REVERSE() 함수로 문자열을 뒤집은 뒤, LOCATE() 함수로 구분 기호($)의 위치를 찾습니다. 이 위치는 원본 문자열에서 마지막 구분 기호가 나타나는 위치에 해당하며, 전체 문자열 길이에서 이 값을 빼
MySQL에서 LIKE 절과 와일드카드(%)를 활용하면 특정 문자열로 시작하는 여러 값을 손쉽게 조회할 수 있습니다. 이번 글에서는 Joh로 시작하는 이름들을 가져오는 방법을 단계별 예제와 함께 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( Name varchar(40) ); Query OK, 0 rows affected (0.55 sec)2. 샘플 데이터 삽입하기INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다.mysq
MySQL BIGINT vs BIGINT(20): 핵심 차이점MySQL에서 BIGINT와 BIGINT(20)의 유일한 차이점은 표시 너비(display width)입니다. 괄호 안의 숫자 20은 실제 저장 가능한 값의 크기나 범위에 영향을 주지 않으며, 오직 값을 화면에 표시할 때의 최소 자릿수를 지정하는 용도로만 사용됩니다.즉, 두 타입 모두 동일하게 -9223372036854775808부터 9223372036854775807까지의 정수를 저장할 수 있습니다. 참고로 MySQL 8.0.17 버전부터는 표시 너비 기능이 공식적으로
MySQL에서는 AND와 OR 연산자를 조합하여 복잡한 조건을 처리하고, 여러 개의 행(row)을 한 번에 조회할 수 있습니다. 이번 글에서는 실제 예제를 통해 두 연산자를 함께 사용하는 방법을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다. 학생 정보를 저장하는 테이블로, 학생 이름과 수학 점수, MySQL 점수, 그리고 상태(활성/비활성) 컬럼을 포함합니다.mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT
MySQL에서 LIKE 연산자를 사용할 때, 검색 결과가 특정 문자로 시작하는 값만 조회되도록 제한해야 하는 경우가 자주 있습니다. 이 글에서는 실제 예제를 통해 여러 개의 시작 문자 조건을 적용하는 방법을 단계별로 살펴보겠습니다.1. 샘플 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( FirstName varchar(40) ); Query OK, 0 rows affected (0.52 sec)2. 테스트 데이터 삽입INSERT 문을 사용하여 몇 개의 레코드를
MySQL에서 데이터를 조회할 때 컬럼에 NULL 값이 포함되어 있으면 결과의 가독성이 떨어질 수 있습니다. 이번 글에서는 CASE 문을 사용해 NULL 값을 원하는 사용자 정의 값(예: UNKNOWN NAME)으로 대체하는 방법을 단계별로 살펴보겠습니다. 1. 테이블 생성하기 먼저 예제에 사용할 테이블을 생성합니다. mysql> create table DemoTable ( FirstName varchar(20) ); Query OK, 0 rows affected (1.15 sec) 2. 샘플 데이터 삽입하기 inser
MySQL에서 SELECT 1로 값 존재 여부 확인하기MySQL 데이터베이스에 특정 값이 존재하는지 빠르게 확인하려면 SELECT 1을 사용하는 것이 가장 간단하고 효율적인 방법입니다. 기본 문법은 다음과 같습니다.select 1 from yourTableName where yourColumnName=yourValue;위 쿼리를 실행했을 때 결과로 1이 반환되면 해당 값이 테이블에 존재한다는 의미입니다. 반대로 Empty set이 반환되면 값이 존재하지 않는 것입니다.실제 예제를 통해 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼
MySQL에서 레코드를 특정 기준에 따라 묶고 싶을 때는 GROUP BY 절을 사용하고, 각 그룹의 값을 더할 때는 SUM() 함수를 사용합니다. 이 글에서는 과목(Subject)별로 점수(Marks)를 그룹화하고 합산하는 방법을 예제와 함께 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 학생 이름(Name), 과목(Subject), 점수(Marks)를 저장할 테이블을 생성합니다.mysql> create table DemoTable ( Name varchar(40), Subject varchar(40),
현재 날짜가 2019-08-20이라고 가정해 보겠습니다. 이 예제에서는 제품의 만료일이 지났는지 여부를 나타내는 상태 컬럼을 자동으로 업데이트하는 방법을 단계별로 살펴봅니다. 먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( ProductStatus tinyint(1), ProductExpiryDate date ); Query OK, 0 rows affected (1.03 sec)여기서 ProductStatus는 제품 상태(0 = 판매 중, 1 = 만료)를 나타내고,
MySQL의 IF() 함수는 조건식을 평가한 후, 조건이 참이면 두 번째 인수를, 거짓이면 세 번째 인수를 반환합니다. 이를 활용하면 숫자 데이터를 기준으로 인턴 직원, 정규직 직원과 같은 문자열 상태 값을 손쉽게 출력할 수 있습니다.1. 샘플 테이블 생성먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, EmployeeSalary int ); Query OK, 0 rows affec
MySQL에서 특정 월의 데이터를 조회하려면 MONTH() 함수를, 특정 연도의 데이터를 조회하려면 YEAR() 함수를 사용하면 됩니다. 두 함수를 WHERE 절에서 함께 조합하면 원하는 월과 연도에 해당하는 레코드만 정확하게 추출할 수 있습니다. 지금부터 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( StudentName varchar(40), StudentAdmissionDate date ); Query
MySQL에서는 REPLACE() 함수를 활용하면 UPDATE 문과 함께 사용하여 텍스트 열의 특정 문자열을 다른 문자열로 간편하게 교체할 수 있습니다. 이 글에서는 실제 예제를 통해 텍스트 열 값을 일괄 변경하는 과정을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( Code varchar(100) ); Query OK, 0 rows affected (0.50 sec)varchar(100) 타입의 Code 열 하나를 가진 Dem
현재 날짜가 2019-09-06이라고 가정하고, 예제를 위해 먼저 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( AdmissionDate date ); Query OK, 0 rows affected (0.54 sec)INSERT 명령을 사용하여 테이블에 샘플 레코드를 삽입합니다.mysql> insert into DemoTable values(2019-01-08); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTa
MySQL에서 두 열의 값이 서로 같을 때 해당 행을 삭제하려면 DELETE 문과 WHERE 절을 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 이름과 두 개의 점수(Score1, Score2)를 저장할 테이블을 만들어 보겠습니다.mysql> create table DemoTable ( Name varchar(40), Score1 int, Score2 int ); Query OK, 0 rows affected (2.71 sec)2. 샘플 데이터 삽입