MySQL에서 GROUP BY와 함께 문자열을 연결하려면 GROUP_CONCAT() 함수를 사용해야 합니다. 이때 SEPARATOR 매개변수를 지정하면 콤마(,), 공백( ) 등 원하는 구분 기호를 자유롭게 설정할 수 있습니다.기본 문법SELECT yourColumnName1, GROUP_CONCAT(yourColumnName2 SEPARATOR yourValue) AS anyVariableName FROM yourTableName GROUP BY yourColumnName1;예제 테이블 생성위 문법을 이해하기 위해 예제 테이블을
Windows 환경에서 데이터베이스 작업을 하다 보면 MySQL 명령줄(Command Line)을 직접 열어야 하는 경우가 자주 있습니다. CMD(명령 프롬프트)에서 MySQL 명령줄에 접속하려면 사용자 이름(root)과 비밀번호를 입력해야 합니다.이 글에서는 Windows 10에서 MySQL 명령줄을 여는 방법을 단계별로 자세히 안내합니다.기본 명령어 문법CMD에서 MySQL 명령줄을 실행하는 기본 문법은 다음과 같습니다.cd \> (Enter 키 입력) cd Program Files\MySQL\MySQL Server 8.0
MySQL 쿼리의 출력 결과를 UTF-8로 변환하려면 CAST() 또는 CONVERT() 함수를 사용해야 합니다. 이 글에서는 MySQL 8.0.12 버전을 기준으로 설명합니다.MySQL 버전 확인먼저 현재 사용 중인 MySQL 버전을 확인해 보겠습니다.mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec)주의: utf8 대신 utf8mb4를 사용하세요MySQL 8.0부터
MySQL에서 특정 문자열을 검색할 때 흔히 와일드카드 %를 사용하지만, 이는 0개 이상의 임의 문자를 모두 일치시킵니다. 만약 정확히 한 글자만 일치시키고 싶다면 언더스코어(_)를 사용해야 합니다.기본 문법SELECT * FROM yourTableName WHERE yourColumnName LIKE yourString_;문자열 끝에 붙인 언더스코어(_)가 해당 위치의 단 하나의 문자와 일치합니다. 실제 예제를 통해 살펴보겠습니다.예제 테이블 생성먼저 졸업 연도(PassoutYear)를 저장하는 테이블을 생성합니다.mysql>
SQL Server SCOPE_IDENTITY()에 해당하는 MySQL 함수SQL Server의 SCOPE_IDENTITY() 함수와 동일한 역할을 하는 MySQL 함수는 바로 LAST_INSERT_ID()입니다. 기본 문법은 다음과 같습니다.SELECT LAST_INSERT_ID();이 함수는 현재 세션에서 가장 마지막에 삽입된 레코드의 AUTO_INCREMENT ID 값을 반환합니다.이번 글에서는 기본 키(Primary Key) 컬럼이 있는 테이블을 활용해 LAST_INSERT_ID() 함수의 실제 동작 방식을 예제와 함께 살펴
MySQL에서 조회 결과의 각 행마다 일련번호를 매기는 새 열을 추가하려면 SELECT 문에서 사용자 정의 변수(전역 변수)를 활용하면 됩니다. 이 방법은 테이블 구조를 변경하지 않고도 쿼리만으로 순번을 부여할 수 있어 매우 유용합니다.1. 예제 테이블 생성하기먼저 실습에 사용할 테이블을 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다:mysql> create table addColumnToCountAsSerialNumber -> (  
MySQL에서 각 그룹별로 상위 2개의 행을 선택해야 하는 경우가 종종 있습니다. 이럴 때는 WHERE 조건과 서브쿼리를 함께 활용하면 손쉽게 해결할 수 있습니다. 이 글에서는 실제 예제를 통해 단계별로 방법을 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다. 아래 쿼리는 이름(Name)과 총 점수(TotalScores) 두 개의 컬럼을 가진 테이블을 만듭니다.mysql> create table selectTop2FromEachGroup -> ( -> Name varchar(2
MySQL에서 빈 문자열을 NULL로 변환하는 방법 MySQL에서는 NULLIF() 함수를 사용하여 빈 문자열()을 NULL로 손쉽게 변환할 수 있습니다. 데이터 정제 작업이나 데이터 분석 시 빈 문자열과 NULL을 구분해야 하는 경우 이 방법이 특히 유용합니다. NULLIF() 함수 기본 문법 SELECT NULLIF(컬럼명, ) AS 별칭 FROM 테이블명; NULLIF(expr1, expr2) 함수는 두 인자가 서로 같으면 NULL을 반환하고, 다르면 첫 번째 인자의 값을 그대로 반환합니다. 즉, 위 문법에서 컬럼 값이 빈 문
MySQL에서 컬럼 타입을 INT에서 DOUBLE로 변경하는 방법MySQL에서 기존 테이블의 컬럼 데이터 타입을 int에서 double로 변경하려면 ALTER TABLE 명령어와 함께 MODIFY COLUMN 절을 사용하면 됩니다. 이 글에서는 실제 예제를 통해 변경 과정을 단계별로 살펴보겠습니다.기본 문법NULL 값을 허용하지 않으려면 다음과 같이 NOT NULL 제약 조건을 함께 지정합니다.ALTER TABLE yourTableName MODIFY COLUMN yourColumnName DOUBLE NOT NULL;반대로 NUL
결론부터 말씀드리면, MySQL에서는 정규 표현식(REGEXP)을 사용한 UPDATE를 지원하지 않습니다. 따라서 정규 표현식 대신 LIKE 연산자와 REPLACE 함수를 조합하여 원하는 문자열을 치환해야 합니다.LIKE 연산자를 활용한 UPDATE 기본 문법UPDATE yourTableNameSET yourColumnName = REPLACE(yourColumnName, yourValue, )WHERE yourColumnName LIKE %yourValueThatWillReplace%;위 문법은 특정 열에서 지정한 값이 포함된 행
MySQL에서는 LENGTH() 함수와 CASE 문을 함께 사용하면 긴 텍스트를 원하는 길이만큼 잘라내고, 잘린 자리 뒤에 특정 문자를 덧붙이는 처리를 할 수 있습니다. 예를 들어 값의 길이가 7자리를 초과하면 앞 7자리만 남기고 나머지를 잘라낸 후 지정한 숫자를 붙이고, 7자리 이하라면 원래 값을 그대로 출력하는 방식입니다. 1. 예제 테이블 생성 먼저 실습에 사용할 테이블을 만들겠습니다. 다음 쿼리를 실행해 TruncateText 테이블을 생성합니다. mysql> create table TruncateText -&g
MySQL에서 조건부 NOT NULL 조건을 처리할 때는 <>(같지 않음)나 = 연산자를 사용하면 안 됩니다. NULL은 MySQL에서 특수한 값으로 취급되기 때문에, 반드시 IS NULL과 IS NOT NULL 속성을 사용해야 합니다.테스트용 테이블 생성하기조건부 NOT NULL의 동작 방식을 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table ConditionalNotNullDemo -> ( -> Id int NOT NULL
시스템 변수(System Variables)시스템 변수는 MySQL 서버의 동작 방식을 제어하는 강타입(strongly typed) 변수입니다. 전역(Global) 변수라고도 불리며, 데이터 타입이 미리 정해져 있어 임의로 타입을 바꿀 수 없습니다.시스템 변수는 서버 시작 시 전역 범위에서 초기화되며, 그 값은 MySQL 서버가 재시작될 때까지 유지됩니다. 즉, 서버를 재시작하면 설정했던 값은 사라지고 기본값으로 되돌아갑니다(설정 파일 my.cnf/my.ini에 명시하지 않은 경우). 시스템 변수는 @@ 기호가 접두사로 붙는 것이
MySQL에서 로컬 변수(지역 변수)는 특정 문장 집합 또는 하나의 블록 안에서만 유효한 범위(scope)를 가집니다. 해당 문장 집합이나 블록의 실행이 끝나면 로컬 변수는 자동으로 범위를 벗어나 더 이상 사용할 수 없습니다.로컬 변수란?로컬 변수는 주로 저장 프로시저(stored procedure)나 함수(function) 내부에서 사용되며, 반드시 DECLARE 키워드로 선언해야 합니다.로컬 변수를 선언하는 기본 문법은 다음과 같습니다.DECLARE yourVariableName dataType;예를 들어 다음과 같이 선언할 수
PHP와 MySQL에서 불리언(Boolean) 값 처리하기MySQL에서 불리언 값을 다루는 방법을 예제와 함께 자세히 알아보겠습니다. 이 글에서 사용한 MySQL 버전은 8.0.12입니다.1. MySQL 버전 확인먼저 현재 사용 중인 MySQL 버전을 확인해 보겠습니다.mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec)2. MySQL에서 불리언 타입의 실체: TINYI
MySQL에서 한 번의 쿼리로 여러 레코드를 삽입하거나 일괄 삽입(batch insert)을 수행하려면 VALUES()를 콤마(,)로 구분하여 사용해야 합니다. 이 방식은 INSERT 실행 시 잘못된 MySQL 쿼리가 발생하는 것을 방지하며, 개별 INSERT 문을 반복 실행하는 것보다 성능 면에서도 훨씬 유리합니다.일괄 삽입 기본 문법INSERT INTO yourTableName VALUES(yourValue1),(yourValue2),(yourValue3),(yourValue4),(yourValue5),.......N;각 값 묶
MySQL에서 특정 날짜 범위를 기준으로 조건부 선택을 수행하면서 테이블에 저장된 가격의 최솟값과 최댓값을 구하려면 CASE 문을 활용해야 합니다. 핵심은 CASE 문을 집계 함수인 MIN()과 MAX()로 감싸는 것입니다.기본 문법아래는 오늘 날짜(CURDATE())가 시작일과 종료일 사이에 있으면 하한가(LowerPrice)를, 그렇지 않으면 상한가(HigherPrice)를 반환하도록 처리하는 문법입니다.SELECT MIN(CASE WHEN CURDATE() BETWEEN yourStartDateColumnName AND you
MySQL(InnoDB)에서 전역 잠금을 확인하려면 SHOW 명령어를 사용하면 됩니다. 아래 쿼리는 현재 걸려 있는 잠금의 현황뿐만 아니라 잠금을 보유하고 있는 소유자(owner)와 대기 중인 세션(waiter)까지 한눈에 파악할 수 있게 해줍니다. 또한 트랜잭션 ID를 비롯하여 InnoDB 엔진의 내부 동작 상태에 대한 다양한 정보도 함께 출력됩니다.전역 잠금 확인 쿼리InnoDB의 잠금 및 트랜잭션 상태를 조회하는 쿼리는 다음과 같습니다:mysql> SHOW ENGINE INNODB STATUS\G실행 결과위 쿼리를 실행하
MySQL에서 NULL과 빈 문자열()은 서로 다른 개념입니다. 두 값은 겉보기에 비슷해 보이지만 실제로는 완전히 별개의 상태이며, 이를 구분하지 못하면 데이터 조회나 조건 처리에서 예상치 못한 오류가 발생할 수 있습니다.필드가 빈 문자열인지, 아니면 NULL인지 확인하려면 IS NULL 속성과 함께 CASE 문을 활용하는 것이 가장 효과적입니다. CASE 문을 사용하면 여러 조건을 한 번의 쿼리로 모두 처리할 수 있습니다.CASE 문 기본 문법필드가 빈 문자열인지 또는 NULL인지 판별하는 기본적인 문법은 다음과 같습니다.SELE
MySQL에서 AND와 &&의 차이점은 무엇일까? AND와 && 사이에는 단 하나의 차이점만 존재합니다. 바로 AND는 SQL 표준 문법이라는 점이고, &&는 MySQL 고유의 전용 문법이라는 점입니다. 이 부분을 제외하면 두 연산자 간에 어떠한 차이도 없습니다. 아래에서 다양한 조건별로 하나씩 살펴보겠습니다. AND와 &&의 기본 동작 방식 AND와 &&의 연산 결과는 항상 1 또는 0으로 반환됩니다. 두 연산자 모두 논리 연산자(logical operator)이기 때문에, 피연산자가 여러 개 있을 때 그중 하나라도 0이면 결과