MySQL에서 저장된 타임스탬프 값이 현재 시간(현재 시각)과 같은 시간대에 속하는지 확인하고 싶다면 CURTIME() 함수를 활용하면 됩니다. 이 함수는 현재 시각을 반환하며, HOUR() 함수와 함께 사용하면 시(hour) 단위로 비교할 수 있습니다.예제 테이블 생성먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable-> (-> ArrivalTime timestamp-> );Query OK, 0 rows affected (0.65 sec)샘플 데이터 삽입INSE
MySQL 테이블 이름에 user를 사용할 수 있을까?MySQL에서는 테이블 이름으로 user를 그대로 사용할 수 없습니다. user는 MySQL의 예약어(reserved word)로 지정되어 있기 때문입니다. 이 경우 두 가지 해결 방법이 있습니다.테이블 이름을 users처럼 다른 이름으로 변경하기백틱(backtick, `) 기호로 user를 감싸서 사용하기참고로 user라는 단어 자체는 CREATE USER 구문으로 계정을 생성하거나, mysql 시스템 데이터베이스에서 사용자 목록을 조회할 때 활용됩니다.방법 1. 테이블 이름을
MySQL에서 열 값의 마지막 두 문자 삭제하기MySQL에서 문자열의 마지막 두 문자를 제거하려면 LEFT() 함수와 LENGTH() 함수를 함께 사용하면 됩니다. LEFT() 함수는 문자열의 왼쪽부터 지정한 길이만큼의 문자를 반환하고, LENGTH() 함수는 문자열의 전체 길이를 계산합니다. 이 두 함수를 조합하면 문자열 끝부분을 원하는 만큼 손쉽게 잘라낼 수 있습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ->
MySQL에서 AUTO_INCREMENT로 설정된 기본 키(PK) 컬럼의 값도 UPDATE 문을 사용하면 충분히 변경할 수 있습니다. 이번 글에서는 기존 행들의 ID 값을 한 번에 이동시키는 방법을 예제와 함께 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,-> StudentName varchar(20)-> );Query OK,
MySQL에서 ! 연산자 대신 NOT 키워드를 사용하세요MySQL에서 동일한 결과를 얻고자 한다면 ! 연산자를 사용하지 않는 것이 좋습니다. MySQL은 논리 부정을 위해 이미 NOT 키워드를 기본적으로 제공하기 때문입니다. 코드의 가독성과 호환성 측면에서도 NOT 키워드를 사용하는 것이 권장됩니다.실제 예제를 통해 단계별로 확인해 보겠습니다. 먼저 테이블을 생성합니다.mysql> create table DemoTable1560 -> ( -
MySQL에서 중복 값을 형식화하여 가져오는 방법중복된 값(예: 동일한 학생 이름)을 하나의 행으로 묶고, 각각의 값을 쉼표 등으로 구분해 형식화된 문자열로 출력하려면 GROUP_CONCAT() 함수를 사용하는 것이 가장 효율적입니다. 이 함수는 GROUP BY 절과 함께 사용하여 여러 행의 값을 하나의 문자열로 손쉽게 병합할 수 있습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable1561-> (-> StudentName varchar(20),->
여러 행(그룹)에 대해 각각의 최소값을 동시에 조회하려면 MIN() 함수와 서브쿼리(subquery)를 함께 사용하면 됩니다. 이번 글에서는 테이블 생성부터 원하는 결과를 얻는 쿼리까지 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 이름(Name)과 점수(Score)를 저장할 테이블을 생성합니다.mysql> create table DemoTable -> ( -> Name varchar(20),  
개요MySQL에서 이번 달과 올해의 시작일 이후에 충전된 바우처 값의 총합을 계산하려면 MONTH() 함수와 YEAR() 함수를 활용하면 됩니다. 이 두 함수는 각각 날짜 값에서 월과 연도를 추출해 주기 때문에, 현재 날짜와 비교하는 조건을 손쉽게 작성할 수 있습니다.아래에서 예제 테이블 생성부터 데이터 삽입, 그리고 최종 집계 쿼리까지 단계별로 살펴보겠습니다.1. 예제 테이블 생성하기먼저 바우처 값과 충전 날짜를 저장할 테이블을 생성합니다.mysql> create table DemoTable1562 &nb
MySQL 사용자 이름 필드, 어떤 이름을 사용해야 할까?MySQL 테이블을 설계할 때 사용자 이름 필드를 name으로 할지 user_name으로 할지 고민되는 경우가 많습니다. 결론부터 말하면, 테이블 이름을 필드 이름의 접두어로 붙이는 방식은 피하는 것이 좋습니다. 즉, user_name보다는 username 또는 user처럼 간결한 이름을 사용하는 것이 바람직합니다.필드 이름에 테이블 이름을 접두어로 붙이면 쿼리 작성 시 모호성(ambiguity)이 발생할 가능성이 높아집니다. 특히 여러 테이블을 조인(JOIN)할 때 같은 접
MySQL에서 데이터를 최댓값부터 최솟값 순으로(내림차순) 정렬하려면 ORDER BY 절과 length() 함수를 함께 활용하면 됩니다. 특히 숫자가 VARCHAR 타입의 문자열로 저장되어 있을 때, 단순히 문자열 기준으로 정렬하면 의도한 숫자 크기 순서가 나오지 않을 수 있습니다. 이 경우 문자열 길이를 먼저 기준으로 정렬한 뒤 값을 내림차순으로 정렬하면 원하는 결과를 얻을 수 있습니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable-> (-> Pr
MySQL에서 IN 조건을 사용해 여러 개의 ID를 조회하면, 결과 집합은 지정한 값의 순서와 상관없이 반환됩니다. 하지만 실무에서는 조회 대상 ID를 나열한 순서 그대로 결과를 정렬해야 하는 경우가 종종 있습니다.이럴 때 유용한 것이 바로 FIND_IN_SET() 함수입니다. 이 글에서는 FIND_IN_SET()과 ORDER BY 절을 조합해 원하는 순서대로 결과 집합을 만드는 방법을 예제와 함께 단계별로 살펴보겠습니다.1. 샘플 테이블 생성하기먼저 학생 정보를 저장할 테이블을 생성합니다.mysql> create table
MySQL CASE WHEN 문법 소개MySQL에서 특정 열(column)의 값이 NULL인 경우에는 NULL을 그대로 반환하고, NULL이 아닌 경우에는 다른 열의 값을 가져오고 싶다면 CASE WHEN 문을 활용하면 됩니다.기본 형식은 다음과 같습니다.CASE WHEN column1 IS NULL THEN NULL ELSE column2 END즉, column1이 NULL이면 NULL을 반환하고, 값이 존재하면 column2의 값을 반환하는 방식입니다. 실제 예제를 통해 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이
varchar 타입으로 저장된 날짜·시간 문자열을 datetime으로 변환한 뒤 다른 날짜 값과 비교하려면 STR_TO_DATE() 함수를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 테이블 생성부터 데이터 변환, 날짜 비교까지의 과정을 단계별로 살펴보겠습니다. 1. 테이블 생성하기 먼저 varchar 타입의 컬럼을 가진 테이블을 생성합니다. mysql> create table DemoTable1565 -> ( -> ArrivalDatetime varchar(40)&n
MySQL에서 intvalue=1과 intvalue=1의 차이점MySQL에서 INT 타입 컬럼을 조건으로 조회할 때는 intvalue=1처럼 숫자 리터럴을 사용하는 것이 올바른 방법입니다. 반면 intvalue=1처럼 문자열을 사용하면 MySQL이 내부적으로 cast(1 as int) 형태로 암시적 형 변환(Implicit Conversion)을 수행합니다.두 쿼리 모두 결과는 동일하게 보일 수 있지만, 암시적 형 변환이 발생하면 인덱스를 제대로 활용하지 못해 대용량 데이터를 처리할 때 성능 저하가 생길 수 있습니다. 따라서 항상
MySQL에서 USD 통화 형식으로 데이터 표시하기MySQL에서는 FORMAT() 함수와 CONCAT() 함수를 함께 사용하면 숫자로 저장된 금액을 USD 1,000,000,000.00처럼 읽기 쉬운 통화 형식으로 손쉽게 변환할 수 있습니다.FORMAT(값, 소수점 자릿수) 함수는 지정한 자릿수만큼 반올림하고, 천 단위마다 쉼표(,)를 자동으로 삽입해 줍니다. 여기에 CONCAT()으로 접두사 USD 를 붙이면 완성된 통화 문자열을 얻을 수 있습니다.1단계: 테이블 생성먼저 금액을 저장할 테이블을 생성합니다. 금액 컬럼은 정확한 계
MySQL에서 문자열 값과 식별자의 따옴표 규칙MySQL에서 문자열 입력값에는 반드시 작은따옴표()를 사용해야 합니다. 반면, 테이블 이름이나 컬럼 이름처럼 식별자(identifier)에 해당하는 경우에는 작은따옴표를 사용하지 않고 백틱(`)을 사용해야 합니다.백틱은 키보드에서 숫자 1 왼쪽, Esc 아래에 있는 기울어진 따옴표 모양의 특수 문자로, MySQL에서는 이를 통해 예약어와 충돌하는 이름도 안전하게 사용할 수 있습니다.1. 테이블 생성하기먼저 예제용 테이블을 생성해 보겠습니다.mysql> create table De
MySQL에서 중복 데이터가 삽입되지 않도록 방지하고 오류를 표시하려면 UNIQUE KEY(고유 키)를 사용하면 됩니다. 먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable1553 -> ( -> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> EmployeeName varchar(20), -> EmployeeSalary int -> );Query OK, 0 rows affect
MySQL에서 대량의 텍스트 데이터를 검색할 때 FULLTEXT 검색을 사용하면 일반적인 LIKE 연산자보다 훨씬 빠른 속도로 문자열을 찾을 수 있습니다. 이 글에서는 FULLTEXT 인덱스를 생성하고 활용하는 전체 과정을 단계별로 살펴보겠습니다.1. 테이블 생성먼저 검색 대상이 될 텍스트 컬럼을 가진 테이블을 생성합니다.mysql> create table DemoTable1554 -> ( -> Title text
Java 애플리케이션에서 MySQL 데이터베이스에 연결하려면 JDBC(Java Database Connectivity) 드라이버를 사용해야 합니다. 이 글에서는 DriverManager 클래스를 활용해 MySQL 데이터베이스에 연결하는 기본적인 방법을 단계별로 살펴보겠습니다. 1. 데이터베이스 연결 URL 작성하기 MySQL 데이터베이스에 연결하려면 먼저 올바른 형식의 연결 URL과 사용자 인증 정보를 준비해야 합니다. 기본 문법은 다음과 같습니다. String MySQLURL = jdbc:mysql://localhost:3306/
MySQL에서 한 테이블에 데이터가 삽입(INSERT)될 때 트리거(TRIGGER)를 사용하면 다른 테이블을 자동으로 업데이트할 수 있습니다. 이번 글에서는 실제 예제를 통해 트리거 생성부터 동작 확인까지 단계별로 살펴보겠습니다.1. 첫 번째 테이블 생성먼저 트리거에서 데이터가 자동으로 입력될 대상 테이블을 생성합니다.mysql> create table DemoTable1 -> ( -> Id int,