MySQL에서 특정 값 몇 개만 내림차순으로 정렬하고 나머지 값들은 오름차순으로 정렬하고 싶다면 FIELD() 함수를 활용하면 됩니다. FIELD() 함수는 첫 번째 인자로 전달된 값이 이후 나열된 값 목록 중 몇 번째 위치에 해당하는지를 반환하며, 이 반환값을 기준으로 정렬하면 원하는 커스텀 정렬 순서를 손쉽게 구현할 수 있습니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Value int );
MySQL에서 여러 개의 행(row)을 쉼표로 구분된 하나의 문자열 목록으로 결합하려면 GROUP_CONCAT() 함수를 사용하면 됩니다. 이 함수는 GROUP BY 절과 함께 활용하면 그룹별로 여러 값을 하나의 문자열로 손쉽게 합칠 수 있어, 태그 목록이나 카테고리 집계 등 다양한 상황에서 유용하게 사용됩니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AU
네, 트리거(TRIGGER)를 사용하면 충분히 가능합니다. 트리거를 만들어 두면 INSERT 시점에 값이 자동으로 소문자로 변환되어 저장됩니다. 아래에서 단계별로 살펴보겠습니다.1. 테스트용 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( StudentSubject text ); Query OK, 0 rows affected (0.61 sec)2. 소문자 자동 변환 트리거 생성다음으로, INSERT가 실행되기 전에 값을 소문자로 변환하는 BEFOR
MySQL에서 NOW() 함수는 현재 날짜와 시간을 반환하며, 이를 활용하면 타임스탬프(timestamp) 필드에 손쉽게 현재 시각을 저장할 수 있습니다. 이번 글에서는 MySQL Workbench 환경에서 타임스탬프 필드에 NOW()를 적용하는 방법을 단계별로 살펴보겠습니다.1. 테이블 생성먼저 타임스탬프 타입의 컬럼을 포함하는 테이블을 생성합니다.create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, ShippingDate timestamp );위
MySQL에서 테이블이 이미 존재하는지 확인하면서 안전하게 테이블을 생성하려면 CREATE TABLE IF NOT EXISTS 구문을 사용하면 됩니다. 이 구문은 테이블이 존재하지 않을 경우에만 새로 생성하고, 이미 존재하는 경우에는 오류 대신 경고(Warning)를 출력합니다.기본 문법CREATE TABLE IF NOT EXISTS yourTableName ( yourColumnName1 dataType, . . . N );여기서 핵심은 IF NOT EXISTS 절입니다. 만약 지정한 이름의 테
MySQL에서 하나의 쿼리에 여러 개의 AND 조건을 적용하면, 지정된 모든 조건을 동시에 만족하는 레코드만 조회할 수 있습니다. 이는 복잡한 데이터 필터링에 매우 유용한 기능입니다.기본 문법여러 개의 AND 조건을 사용하는 기본 문법은 다음과 같습니다.SELECT * FROM yourTableName WHERE yourColumnName1 = yourValue1 AND yourColumnName2 = yourValue2 AND yourColumnName3 = yourValue3;예제 테이블 생성먼저 실습에 사용할 테이블을 생성해
MySQL에서 인덱스 확인하기 MySQL에서 테이블에 설정된 인덱스를 확인하려면 SHOW 명령어를 사용하면 됩니다. 이 명령어 하나만으로 해당 테이블에 생성된 모든 인덱스의 상세 정보를 손쉽게 조회할 수 있습니다. 기본 문법 인덱스를 조회하는 기본 문법은 다음과 같습니다. show index from yourTableName; 1단계: 예제 테이블 생성 먼저 실습에 사용할 테이블을 생성해 보겠습니다. mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMEN
MySQL에서 두 개의 테이블을 하나로 합쳐서 조회하려면 UNION ALL 구문을 사용하면 됩니다. UNION ALL은 각 테이블의 결과를 조건에 맞게 필터링한 후 그대로 이어 붙여주는 역할을 합니다.이번 글에서는 실제 예제를 통해 두 테이블을 생성하고, 특정 조건(Id = 20)을 적용하여 두 테이블의 데이터를 연결하는 방법을 단계별로 살펴보겠습니다.1. 첫 번째 테이블 생성먼저 DemoTable1이라는 테이블을 만들어 보겠습니다. 테이블은 Id와 FirstName 두 개의 컬럼으로 구성됩니다.mysql> create tab
MySQL에서 특정 값이 두 열(column) 사이에 존재하는지 확인하려면 BETWEEN 절을 사용하면 됩니다. BETWEEN 절은 일반적으로 하나의 열과 상수 값을 비교할 때 많이 쓰이지만, 이처럼 두 개의 서로 다른 열 사이에서 값을 검색하는 용도로도 활용할 수 있습니다.실제 예제를 통해 살펴보겠습니다.1. 테이블 생성하기먼저 데모용 테이블을 생성합니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score1 i
MySQL에서 현재 시점(NOW())으로부터 10일 이후의 날짜 데이터를 조회하려면 DATE_ADD() 함수와 WHERE 절을 함께 사용하면 됩니다. DATE_ADD()는 특정 날짜에 지정한 기간(일, 월, 년 등)을 더한 값을 반환하는 함수로, INTERVAL 키워드와 조합하면 다양한 날짜 연산을 간편하게 처리할 수 있습니다.1. 예제 테이블 생성먼저 배송 날짜(ShippingDate)를 저장할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Sh
MySQL에서 문자열의 마지막 문자가 특정 문자(예: 물음표 ?)인 경우 이를 제거하려면 SUBSTRING() 함수를 사용하면 됩니다. 먼저 예제 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( SubjectName varchar(100) ); Query OK, 0 rows affected (0.47 sec)INSERT 명령을 사용하여 테이블에 몇 개의 레코드를 삽입합니다.mysql> insert into DemoTable values(MySQL); Query OK
데이터베이스 작업 중 특정 조건에 해당하는 레코드의 숫자 값을 일괄적으로 감소시켜야 하는 경우가 자주 있습니다. 예를 들어 점수(Score)에서 벌점을 차감하거나 재고 수량을 줄이는 상황이 대표적입니다. 이번 글에서는 UPDATE 문과 WHERE 절을 활용하여 특정 레코드의 값을 10만큼 감소시키는 방법을 예제와 함께 살펴보겠습니다.1. 테이블 생성하기먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMAR
MySQL에서 특정 ID에 해당하는 열에 저장된 쉼표로 구분된 문자열의 개수를 구하려면 CHAR_LENGTH() 함수를 활용하면 됩니다. 이 함수는 문자열의 길이를 반환하며, REPLACE() 함수와 함께 사용하면 구분자로 나뉜 값의 개수를 손쉽게 계산할 수 있습니다. 1. 테이블 생성하기 먼저 예제에 사용할 테이블을 생성합니다. mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT
MySQL에서 테이블의 전체 행(row) 개수를 확인할 때 흔히 count(*)를 사용하지만, count(1)을 사용해도 동일한 결과를 얻을 수 있습니다. 두 방식 모두 테이블의 전체 행 개수를 반환하므로, count(*)를 쓰지 않고도 원하는 값을 손쉽게 구할 수 있습니다.기본 문법먼저 기본적인 사용 문법을 살펴보겠습니다.select count(1) from yourTableName;예제 테이블 생성실습을 위해 먼저 예제 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Stu
두 날짜 사이의 데이터를 조회하려면 DATE() 함수와 INTERVAL 구문을 활용한 조건절을 사용해야 합니다. 아래 예제는 오늘 날짜와 7일 전 사이의 데이터를 가져오는 방법을 보여줍니다.select *from yourTableName where DATE(yourColumnName) > (NOW() - INTERVAL 7 DAY);참고: 현재 날짜가 2019-06-02라고 가정하고 설명을 진행하겠습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable (
MySQL에서 타임스탬프(timestamp) 값으로부터 요일 이름을 추출하려면 DAYNAME() 함수를 사용하면 됩니다. 이 함수는 날짜 또는 datetime 값을 입력받아 해당 날짜의 요일 이름을 문자열로 반환합니다.기본 사용 문법은 다음과 같습니다.select dayname(yourColumnName) from yourTableName;1. 예제 테이블 생성하기먼저 실습에 사용할 테이블을 생성해 보겠습니다. 로그인 날짜를 저장할 timestamp 타입의 컬럼 하나를 포함합니다.mysql> create table DemoTa
MySQL에 mm/dd/yyyy 형식의 날짜 문자열을 삽입하려면 STR_TO_DATE() 함수를 사용하면 됩니다. 이 함수는 지정된 형식의 문자열을 MySQL이 인식할 수 있는 DATE 타입으로 변환해 줍니다.기본 문법INSERT INTO yourTableName VALUES(STR_TO_DATE(yourDateValue, yourFormatSpecifier));예제 테이블 생성먼저 예제로 사용할 테이블을 생성합니다.mysql> CREATE TABLE DemoTable ( ShippingDate date
MySQL ORDER BY 절로 특정 값을 기준으로 정렬하기MySQL에서 조회 결과를 정렬할 때는 ORDER BY 절을 사용합니다. 일반적인 오름차순·내림차순 정렬뿐만 아니라, 조건식을 함께 활용하면 특정 값을 맨 앞에 표시하고 나머지 데이터를 원하는 순서로 정렬할 수도 있습니다.이번 글에서는 예제 테이블을 만들고, 특정 학생 ID(70)를 가장 먼저 출력한 뒤 나머지 ID를 오름차순으로 정렬하는 방법을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 CREATE TABLE 문으로 예제 테이블을 생성합니다.mysql> crea
MySQL에서 name은 예약어가 아닙니다결론부터 말하면, name은 MySQL의 예약어(reserved word)가 아닙니다. 따라서 백틱(`) 기호 없이도 테이블 이름이나 컬럼 이름으로 자유롭게 사용할 수 있습니다.다만, SELECT나 INSERT처럼 MySQL에서 이미 문법적으로 사용 중인 예약어를 테이블 이름이나 컬럼 이름으로 쓰고 싶다면 반드시 백틱(`)으로 감싸 주어야 합니다.1. name을 그대로 사용하는 예제먼저 백틱 없이 name이라는 이름의 테이블을 생성해 보겠습니다.mysql> create table nam
MySQL에서 숫자로 된 쿼리 결과를 분할하려면 CONCAT() 함수를 사용하면 됩니다. 이 함수는 여러 문자열을 하나로 연결해 주는 역할을 하며, LEFT() 및 RIGHT() 함수와 함께 사용하면 원하는 위치를 기준으로 숫자 값을 손쉽게 나눌 수 있습니다.1. 테이블 생성하기먼저 실습에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( StudentId int ); Query OK, 0 rows affected (0.68 sec)2. 데이터 삽입하기INSERT