MySQL에서 목록에 포함된 일부 ID 레코드를 제외한 나머지 데이터만 조회하려면 NOT IN() 연산자를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 NOT IN()의 사용법을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 간단한 테이블을 생성합니다.mysql> create table DemoTable ( Id int ); Query OK, 0 rows affected (0.64 sec)2. 샘플 데이터 삽입하기INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다.mysql> in
MySQL에서 테이블의 구조(schema)가 변경되었는지 확인하려면 SHOW CREATE TABLE 명령어를 활용하면 됩니다. 이 명령어는 테이블의 현재 구조를 CREATE TABLE 문 형태로 출력해 주기 때문에, 변경 전후의 구조를 비교하여 어떤 변화가 있었는지 쉽게 파악할 수 있습니다.1. 예제 테이블 생성먼저 예제로 사용할 테이블을 하나 만들어 보겠습니다.mysql> CREATE TABLE DemoTable( StudentId int NOT NULL AUTO_INCREMENT PRIMARY
MySQL에서 특정 날짜의 자정(00:00:00)부터 현재 시각까지의 데이터를 조회해야 하는 경우가 자주 있습니다. 예를 들어 현재 시간이 2019-09-14 08:50:10이라면, 이때 우리가 원하는 결과는 2019-09-14 00:00:00부터 2019-09-14 08:50:10 사이에 해당하는 레코드입니다.실제 예제를 통해 확인해 보겠습니다. 먼저 테이블을 생성합니다.mysql> create table DemoTable ( DueDate datetime ); Query OK, 0 rows affected (0.66
MySQL에서 저장 프로시저(Stored Procedure)를 생성할 때 DELIMITER 개념을 사용하지 않으면 BEGIN/END 문 관련 오류가 자주 발생합니다. 그 이유는 MySQL 클라이언트가 기본적으로 세미콜론(;)을 문장의 끝으로 인식하기 때문입니다. 저장 프로시저 내부에는 여러 개의 SQL 문이 세미콜론과 함께 포함되므로, 구분 기호를 변경하지 않으면 프로시저가 중간에 잘려서 오류가 발생하게 됩니다.DELIMITER를 사용한 올바른 저장 프로시저 생성다음은 DELIMITER를 활용하여 오류 없이 저장 프로시저를 생성하는
MySQL 테이블을 자바(Java)에서 업데이트하려면 PreparedStatement를 사용하는 것이 가장 안전하고 효율적입니다. 이 글에서는 테이블 생성부터 데이터 수정, 결과 확인까지 전 과정을 단계별로 살펴보겠습니다. 1. 테이블 생성하기 먼저 예제에 사용할 테이블을 생성합니다. mysql> create table DemoTable( Id int, FirstName varchar(40) ); Query OK, 0 rows affected (0.62 sec) 2. 샘플 데이터 삽입하기 insert 명령어
MySQL 테이블에서 중복 없이 무작위로 행 선택하기MySQL 테이블에서 행을 무작위로 선택하려면 ORDER BY RAND()와 LIMIT을 함께 사용하면 됩니다. 여기에 중복을 제거한 고유한 값만 가져오고 싶다면 DISTINCT 키워드를 추가하면 됩니다.먼저 예제를 통해 테이블을 생성해 보겠습니다.mysql> create table DemoTable( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name var
MySQL에서 조건에 따라 같은 열의 값을 다른 열로 나누어 표시하기MySQL에서 하나의 열(Score)에 저장된 값들을 특정 조건에 따라 구분하여 각각 다른 열에 표시하려면 CASE 문을 활용하면 됩니다. CASE 문은 조건을 평가한 뒤, 조건이 참일 때만 해당 값을 반환하고 그렇지 않으면 NULL을 출력하기 때문에 이런 작업에 매우 유용합니다.실제 예제를 통해 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 만듭니다.mysql> create table DemoTable ( Id int NOT
MySQL에서 여러 조건을 검색할 때 OR 문을 반복해서 사용하면 쿼리가 길어지고 가독성이 떨어지며, 유지보수도 어려워집니다. 이런 경우 IN() 연산자를 사용하면 훨씬 간결하고 효율적인 쿼리를 작성할 수 있습니다.실제 예제를 통해 살펴보겠습니다. 먼저 테이블을 생성합니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(40) ); Query OK, 0 rows affected (0.89 sec)샘플 데
MySQL에서 특정 열의 가장 낮은 값을 구할 때는 MIN() 함수를, 가장 높은 값을 구할 때는 MAX() 함수를 사용합니다. 이 두 집계 함수를 서브쿼리와 결합하면 최솟값이나 최댓값을 가진 전체 행 데이터를 손쉽게 조회할 수 있습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( CustomerName varchar(20), ProductAmount int ) ; Query OK, 0 rows affected (1.03 sec)2. 샘플
MySQL UNION으로 두 테이블 데이터를 단일 쿼리로 조회하기MySQL에서는 UNION 연산자를 사용하면 여러 SELECT 문의 결과를 하나의 결과 집합으로 합쳐서 반환할 수 있습니다. 이번 글에서는 두 개의 테이블을 생성한 뒤, 단일 쿼리로 두 테이블의 데이터를 동시에 조회하는 방법을 단계별로 살펴보겠습니다.1. 첫 번째 테이블 생성먼저 DemoTable1이라는 이름의 테이블을 생성합니다.mysql> create table DemoTable1 ( Id int NOT NULL AUTO_INCREMENT PRIMARY
MySQL에서 우편번호 필드의 -XXX 제거하기우편번호(ZipCode) 컬럼에 52533-909처럼 하이픈(-) 뒤에 붙은 숫자(-XXX)가 함께 저장되어 있고, 이 부분을 제거하고 싶다면 MySQL의 SUBSTRING_INDEX() 함수를 사용하는 것이 가장 간단한 방법입니다.SUBSTRING_INDEX(문자열, 구분자, 개수)는 지정한 구분자를 기준으로 문자열을 나눈 후, 개수만큼의 앞부분(음수일 경우 뒷부분)을 반환합니다. 따라서 SUBSTRING_INDEX(ZipCode, -, 1)을 적용하면 하이픈 앞쪽의 값만 남길 수 있
MySQL에서 특정 열의 값이 1인 행만 골라 여러 개의 값을 하나의 문자열로 연결하고 싶다면 GROUP_CONCAT() 함수와 WHERE 절을 함께 사용하면 됩니다. 아래 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성먼저 데모용 테이블을 생성합니다.mysql> create table DemoTable ( PlayerName varchar(40), PlayerStatus tinyint(1) ); Query OK, 0 rows affected (0.60 sec)2. 샘플 데이터 삽입INSERT 명령어를 사용
MySQL에서 쉼표로 구분된 값에서 특정 숫자 검색하기 네, 가능합니다. MySQL에서 제공하는 FIND_IN_SET() 함수를 사용하면 하나의 열에 쉼표(,)로 구분되어 저장된 여러 개의 숫자 중에서 원하는 값을 손쉽게 검색할 수 있습니다. 이 함수는 두 번째 인수로 전달된 쉼표 구분 문자열 목록에서 첫 번째 인수의 위치를 반환하며, 값이 존재하지 않으면 0을 반환합니다. 1단계: 테이블 생성 먼저 예제에 사용할 테이블을 만들어 보겠습니다. mysql> create table DemoTable ( ListOfNumb
MySQL에서 오늘 날짜(CURDATE())부터 이번 달의 마지막 날(LAST_DAY()) 사이에 해당하는 레코드만 조회하는 방법을 알아보겠습니다. 핵심은 BETWEEN 연산자와 함께 CURDATE(), LAST_DAY() 함수를 사용하는 것입니다.1. 테이블 생성하기먼저 예제로 사용할 테이블을 생성합니다.mysql> create table DemoTable ( BookingDate date ); Query OK, 0 rows affected (0.67 sec)2. 샘플 데이터 삽입하기INSERT 명령을 사용해 여러 날
MySQL에서 NAND/NOR 연산 개요MySQL에는 NAND나 NOR 같은 복합 논리 연산자가 기본적으로 제공되지 않지만, NOT과 AND/OR 연산자를 조합하면 손쉽게 구현할 수 있습니다. 각 연산의 개념은 다음과 같습니다.NAND = NOT(컬럼명1 AND 컬럼명2) NOR = NOT(컬럼명1 OR 컬럼명2)즉, NAND는 두 값이 모두 참일 때만 거짓을 반환하고, NOR는 두 값 중 하나라도 참이면 거짓을 반환합니다. 실제 예제를 통해 확인해 보겠습니다.1. 테이블 생성먼저 BOOLEAN 타입의 컬럼 두 개를 가진 테이블을
MySQL에서 열(column)에 저장된 문자열에 특정 문자열이 포함되어 있는지 확인하려면 CONCAT() 함수와 LIKE 연산자를 함께 사용하면 됩니다. 먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Name varchar(40) ); Query OK, 0 rows affected (0.56 sec)insert 명령을 사용하여 테이블에 여러 개의 레코드를 삽입합니다.mysql> insert into DemoTable values('J
MySQL에서 선택적으로 여러 레코드 삭제하기MySQL에서 조건에 맞는 여러 레코드를 한 번에 삭제하려면 IN() 연산자와 DELETE 쿼리를 함께 사용하면 됩니다. IN()은 삭제할 대상 레코드를 선택하는 역할을 하고, DELETE가 실제로 해당 레코드를 제거합니다.실제 동작 과정을 예제를 통해 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( ClientId varchar(40), ClientName varchar(50)
MySQL에서 특정 숫자로 시작하는 레코드를 조회할 때 가장 효율적인 방법은 LIKE 연산자를 사용하는 것입니다. LIKE 연산자와 와일드카드(%)를 조합하면 원하는 패턴으로 시작하는 데이터를 손쉽게 필터링할 수 있습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( ClientId bigint, ClientName varchar(40) ); Query OK, 0 rows affected (0.82 sec)2. 샘플 데이터 삽입하기INSERT
MySQL에서 최근 60분 이내의 레코드 조회하기MySQL에서 특정 시간 범위(예: 최근 60분)에 해당하는 레코드를 조회하려면 INTERVAL 키워드를 사용하면 됩니다. 기본 문법은 다음과 같습니다.SELECT * FROM yourTableNameWHERE yourColumnName > now() - interval 60 minute;이제 실제 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable(
MySQL에서 기존 int 열의 값에 문자를 추가하려면 CONCAT() 함수를 사용하면 됩니다. CONCAT()은 여러 문자열이나 값을 하나로 연결해 주는 함수로, 숫자 값 앞뒤에 원하는 텍스트를 붙일 때 매우 유용합니다.1. 샘플 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( Amount int ); Query OK, 0 rows affected (1.44 sec)2. 데이터 삽입INSERT 명령을 사용하여 몇 개의 레코드를 삽입합니다.mysql> in