DELIMITER //란 무엇인가?MySQL에서 DELIMITER //는 기본 문장 구분자인 세미콜론(;)을 슬래시 두 개(//)로 변경하는 명령어입니다. 이렇게 구분자를 변경하면 트리거 내부에서 세미콜론으로 끝나는 여러 개의 SQL 문장을 하나의 블록으로 작성할 수 있습니다.트리거 본문 안에는 IF문, SET문 등 세미콜론으로 끝나는 문장이 여러 개 포함되는데, 구분자를 변경하지 않으면 MySQL이 중간에 있는 세미콜론을 만나는 순간 문장이 끝났다고 판단하여 오류가 발생합니다. 따라서 트리거를 정의하기 전에 구분자를 //로 바꾸고
MySQL에서는 INSERT 문의 VALUES 절에 각 행의 값을 괄호로 묶어 쉼표(,)로 구분해 나열함으로써, 단 하나의 쿼리만으로 여러 행(row)을 동시에 삽입할 수 있습니다.기본 문법여러 행을 삽입하는 기본 문법은 다음과 같습니다.insert into yourTableName values(value1,value2,...N),(value1,value2,...N),(value1,value2,...N),(value1,value2,...N),(value1,value2,...N),(value1,value2,...N)..........
MySQL TYPE=MyISAM 오류, 간단하게 해결하는 방법MySQL에서 테이블을 생성할 때 ERROR 1064 (42000) 구문 오류가 발생한 적이 있으신가요? 이 오류는 대부분 저장 엔진을 지정할 때 TYPE이라는 예전 문법을 사용했기 때문에 발생합니다. 다행히 해결 방법은 아주 간단합니다.해결 방법: TYPE을 ENGINE으로 변경하기오래된 MySQL 버전에서 사용되던 TYPE 키워드는 현재 지원되지 않습니다. 이를 최신 문법인 ENGINE으로 바꿔주기만 하면 오류가 사라집니다. 올바른 문법은 다음과 같습니다.ENGINE
MySQL에서 LIKE 절과 함께 사용자 변수(User Variable)를 사용하려면 CONCAT() 함수를 활용하면 됩니다. 검색 조건을 동적으로 구성해야 할 때 매우 유용한 기법입니다.기본 문법SET @변수명 = 검색값;SELECT 컬럼명1, 컬럼명2, 컬럼명3, ...NFROM 테이블명WHERE 컬럼명 LIKE CONCAT(%, @변수명, %);예제 테이블 생성먼저 예제에 사용할 테이블을 만들어 보겠습니다.mysql> CREATE TABLE UserVariableInLike-> (-> id INT,-> N
PHP 등 다른 언어에 익숙한 개발자라면 문자열 치환 함수인 str_replace가 익숙할 것입니다. 하지만 MySQL에는 str_replace라는 이름의 함수가 없으며, 대신 동일한 기능을 수행하는 REPLACE() 함수를 제공합니다. 이번 글에서는 REPLACE() 함수의 사용법을 실제 예제와 함께 단계별로 살펴보겠습니다. 1. 테이블 생성하기 REPLACE() 함수의 동작을 확인하기 위해 먼저 간단한 테이블을 생성하겠습니다. mysql> create table StringReplaceDemo -> ( -
MySQL에서는 CHAR_LENGTH() 함수를 활용하면 문자열의 글자 수를 기준으로 데이터를 정렬할 수 있습니다. 이 함수는 문자열에 포함된 문자 개수를 반환하며, 예를 들어 아래 문자열의 경우 결과값은 4입니다.AMIT기본 문법문자열을 글자 수 기준으로 정렬하려면 다음과 같은 형식의 쿼리를 사용합니다.select *from yourTableName order by CHAR_LENGTH(yourColumnName);예제 테이블 생성개념을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.mysql
MySQL에서 SELECT 쿼리 결과에 문자열을 연결하고 싶다면 CONCAT() 함수를 사용하면 됩니다. CONCAT() 함수는 여러 개의 문자열이나 컬럼 값을 하나로 합쳐서 반환하는 MySQL의 내장 함수입니다.CONCAT() 함수 기본 문법아래와 같이 컬럼 이름과 연결하고 싶은 문자열을 함께 전달하면 됩니다.SELECT CONCAT(yourColumnName1, anyConcatenationString), CONCAT(yourColumnName2, anyConcatenationString), ....N FROM
MySQL BETWEEN 절로 날짜 구간 조회하기MySQL에서 특정 기간 사이의 데이터를 조회하려면 BETWEEN 문을 사용하면 됩니다. BETWEEN 절은 시작 날짜와 종료 날짜 사이에 포함된 모든 레코드를 손쉽게 필터링할 수 있는 강력한 도구입니다.기본 문법BETWEEN을 사용한 날짜 범위 조회의 기본 문법은 다음과 같습니다.SELECT * FROM yourTableNameWHERE yourColumnName BETWEEN yourStartingDate AND curdate();여기서 curdate() 또는 now() 함수를 사
MySQL 쿼리 결과에서 n번째 레코드를 가져오려면 LIMIT 절을 사용하면 됩니다. LIMIT은 오프셋(offset)과 반환할 행 수를 지정하여 원하는 위치의 레코드만 손쉽게 추출할 수 있게 해주는 강력한 기능입니다.기본 문법select * from yourTableName order by yourColumnName limit n,1;여기서 limit n,1의 의미는 다음과 같습니다.n: 건너뛸 레코드 수(오프셋). 즉, 앞에서부터 n개의 행을 제외합니다.1: 오프셋 이후 반환할 레코드 수. 여기서는 딱 한 개의 행만 가져옵니다.
MySQL에서 프로그래밍 방식으로 max_connections 설정하기MySQL에서 최대 연결 수(max_connections)를 프로그래밍 방식으로 설정하려면 SET 명령어를 사용하면 됩니다. 기본 문법은 다음과 같습니다.SET GLOBAL max_connections=설정할정수값;실제로 위 쿼리를 실행하여 최대 연결 수를 1000으로 설정해 보겠습니다.mysql> SET GLOBAL max_connections = 1000;Query OK, 0 rows affected (0.04 sec)설정 결과 확인하기최대 연결 수가 제
MySQL에서 문자열 형태의 날짜 데이터를 실제 DATE 타입으로 변환하려면 STR_TO_DATE() 함수를 사용하면 됩니다. 이 함수는 지정된 형식에 맞춰 문자열을 해석하고, 이를 날짜 값으로 반환해 줍니다.STR_TO_DATE() 기본 문법STR_TO_DATE() 함수의 기본적인 사용 문법은 다음과 같습니다.SELECT str_to_date(yourColumnName, format) AS anyVariableName FROM yourTableName;위 문법에서 format 자리에는 %d-%b-%y와 같은 형식 지정자가 들어갑니
MySQL에서 기존 값을 점진적으로 증가시키며 업데이트하려면 SET 명령을 이용해 사용자 변수를 먼저 생성해야 합니다. 변수를 만드는 기본 문법은 다음과 같습니다.set @anyVariableName := 0;1. 테이블 생성하기값을 업데이트하려면 UPDATE 명령을 사용합니다. 실습을 위해 먼저 테이블을 생성해 보겠습니다.mysql> create table UpdateValueIncrementally -> ( -> ProductId int -> ); Query OK, 0 rows affecte
MySQL에서 특정 필드(컬럼)에 저장된 문자열의 마지막 단어를 추출하고 싶다면, 내장 함수인 SUBSTRING_INDEX()를 사용하면 간단하게 해결할 수 있습니다.SUBSTRING_INDEX() 기본 문법마지막 단어를 추출하는 기본 문법은 다음과 같습니다.SELECT SUBSTRING_INDEX(yourColumnName, , -1) AS anyVariableName FROM yourTableName;여기서 핵심은 세 번째 인자에 -1을 지정하는 것입니다. 구분자(delimiter)를 기준으로 오른쪽에서부터 첫 번째 요소, 즉
MySQL에서 insert, add처럼 이미 문법상 특별한 의미로 쓰이는 예약어(Reserved Word)를 테이블명이나 컬럼명으로 그대로 사용하면 SQL 구문 오류가 발생합니다. 이 글에서는 오류가 발생하는 원인과 백틱(backtick)을 활용한 해결 방법을 살펴봅니다.오류가 발생하는 원인예약어는 MySQL 내부에서 이미 특정 기능을 수행하도록 정의된 키워드입니다. 따라서 별도의 처리 없이 테이블명이나 컬럼명으로 사용하면 MySQL은 이를 일반적인 식별자가 아닌 명령어로 해석하여 ERROR 1064 구문 오류를 반환합니다.Case
MySQL에서 이미 존재하는 컬럼의 VARCHAR 크기를 늘릴 때는 ALTER TABLE 문과 CHANGE 명령어를 사용하면 됩니다. 이 방법의 가장 큰 장점은 테이블 구조만 변경될 뿐, 기존에 저장된 데이터는 전혀 손상되지 않는다는 점입니다.기본 문법alter table yourTableName change yourColumnName yourColumnName dataType;컬럼 이름을 두 번 반복해서 작성하는 이유는 CHANGE 명령어가 컬럼 이름 변경과 데이터 타입 변경을 동시에 처리하기 때문입니다. 이름을 그대로 유지하고
MySQL에서 두 타임스탬프 사이의 차이를 일(day) 단위로 계산하려면 내장 함수인 DATEDIFF()를 사용하면 됩니다. 이 함수는 첫 번째 날짜에서 두 번째 날짜를 뺀 결과를 일수로 반환합니다.DATEDIFF() 기본 문법select datediff(yourColumnName1,yourColumnName2) as anyVariableName from yourTableName;첫 번째 인자에서 두 번째 인자를 빼는 방식으로 동작하기 때문에, 인자의 순서에 따라 결과값의 부호가 달라질 수 있다는 점을 유의해야 합니다.예제 테이블
MySQL에서 DATETIME 값에 분을 더하고 싶다면 DATE_ADD() 함수를 사용하면 됩니다. 참고로 PHP 환경에서는 strtotime() 함수를 활용해 같은 작업을 수행할 수 있습니다.DATE_ADD() 함수 기본 문법MySQL에서 특정 DATETIME 컬럼에 30분을 추가하는 기본 문법은 다음과 같습니다.SELECT DATE_ADD(컬럼명, INTERVAL 30 MINUTE) FROM 테이블명;실습 예제: 테이블 생성하기문법을 직접 확인해 보기 위해 먼저 테스트용 테이블을 생성해 보겠습니다. 아래 쿼리로 테이블을 만들 수
MySQL에서는 IN 문을 활용하면 ID를 기준으로 테이블의 여러 행을 한 번의 쿼리로 손쉽게 삭제할 수 있습니다. 개별적으로 DELETE 문을 반복 실행할 필요 없이, 삭제하고자 하는 값들을 나열하기만 하면 됩니다.기본 문법IN 절을 사용한 다중 행 삭제의 기본 문법은 다음과 같습니다.DELETE FROM yourTableName WHERE yourColumnName IN(value1, value2, ..... valueN);예제 테이블 생성문법을 실제로 이해하기 위해 먼저 예제용 테이블을 만들어 보겠습니다. 아래는 테이블 생성
MySQL에서 IFNULL() 함수를 사용하면 쿼리 결과가 존재하지 않는 경우에도 원하는 기본값을 반환할 수 있습니다. 이는 검색 조건에 해당하는 데이터가 없을 때 NULL 대신 사용자에게 의미 있는 메시지를 보여주고 싶을 때 매우 유용합니다.예제 테이블 생성먼저 실습용 테이블을 생성해 보겠습니다. 아래 쿼리로 테이블을 만들 수 있습니다.mysql> create table IfNullDemo -> ( -> Id int,
MySQL 테이블에 저장된 모든 레코드(데이터)를 한 번에 삭제하려면 TRUNCATE 문을 사용하는 것이 가장 간단하고 효율적인 방법입니다.TRUNCATE 기본 문법TRUNCATE TABLE yourTableName;위 구문을 실행하면 해당 테이블의 모든 레코드가 즉시 삭제됩니다. 실제 동작 과정을 이해하기 위해 예제 테이블을 만들어 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 다음 쿼리로 테이블을 생성합니다.mysql> create table DeleteAllFromTable -> ( -> Pers