MySQL에는 명령문을 서버로 전송해 실행하는 내장 명령인 \G와 \g가 있습니다. 두 명령은 모두 쿼리를 실행하지만, 결과 집합을 출력하는 형식이 서로 다릅니다. \G는 결과를 세로(수직) 형식으로, \g는 일반적인 표(테이블) 형식으로 보여줍니다.이 두 명령을 오류 없이 하나의 문장에서 함께 사용하려면, 쿼리 두 개를 연속해서 작성하면 됩니다. 즉, 첫 번째 쿼리 끝에는 \G를 붙이고, 두 번째 쿼리 끝에는 \g를 붙여 한 줄에 입력하는 것입니다.예제mysql> Select * from student\G select * f
MySQL의 내장 명령인 \G와 \g는 명령문을 MySQL 서버로 전송하여 실행하도록 하는 역할을 하며, 세미콜론(;)은 MySQL이 명령문의 끝을 판단하는 기준이 됩니다.세 가지 구분 기호를 모두 사용하면서 오류 없이 결과를 얻으려면 하나의 명령문 안에 세 개의 쿼리를 작성해야 합니다. 즉, 첫 번째 쿼리는 \G로 끝내고, 두 번째 쿼리는 \g로 끝내며, 마지막 쿼리는 세미콜론(;)으로 종료하면 됩니다.예제mysql> Select * from student\G select * from ratelist\g select NOW(
MySQL에서 NULL과의 산술 연산 결과MySQL에서는 산술 연산의 인수 중 하나라도 NULL이면 결과가 항상 NULL로 반환됩니다. 이는 NULL이 알 수 없는 값(unknown)을 의미하기 때문입니다. 알 수 없는 값과의 어떤 연산도 그 결과를 확정할 수 없으므로, MySQL은 해당 연산의 결과를 NULL로 처리합니다.사칙연산 예제다음 예제는 덧셈, 뺄셈, 곱셈, 나눗셈 각각에 NULL이 인수로 포함된 경우의 실행 결과를 보여줍니다.mysql> Select 10*NULL; +---------+ | 10*NULL | +--
MySQL에서 ALTER TABLE로 열 크기 변경하기MySQL에서 이미 생성된 테이블의 열(컬럼) 크기를 변경하려면 ALTER TABLE 문과 MODIFY 절을 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.ALTER TABLE 테이블명 MODIFY 열명 데이터타입(크기);예제: Student 테이블Student라는 테이블을 예로 들어 살펴보겠습니다. 먼저 DESCRIBE 명령으로 현재 테이블 구조를 확인합니다.mysql> DESCRIBE Student; +--------+-------------+------+-----
트랜잭션이 진행되는 도중 세션(DBA 또는 관리자에 의해) 강제로 종료되면, MySQL은 해당 트랜잭션을 자동으로 롤백(Rollback)하고 종료합니다. 이는 트랜잭션 내에서 수행된 모든 데이터베이스 변경 사항이 취소된다는 의미입니다. 이처럼 세션이 종료될 때 명시적인 ROLLBACK 명령 없이 자동으로 롤백이 일어나는 것을 암시적 롤백(Implicit Rollback)이라고 합니다.예제를 통한 확인먼저 marks 테이블에 다음과 같은 데이터가 저장되어 있다고 가정해 보겠습니다.mysql> Select * from marks;
트랜잭션이 진행 중인 상태에서 세션(session)이 종료되면, MySQL은 해당 트랜잭션을 자동으로 롤백(Rollback) 처리한 뒤 종료합니다. 이는 트랜잭션 내에서 수행된 모든 데이터베이스 변경 사항이 취소된다는 의미입니다. 이처럼 사용자가 명시적으로 ROLLBACK 문을 실행하지 않았는데도 세션 종료로 인해 변경 사항이 자동으로 되돌려지는 것을 암시적 롤백(Implicit Rollback)이라고 부릅니다.예제다음과 같은 데이터가 저장된 marks 테이블이 있다고 가정해 보겠습니다.mysql> Select * from m
MySQL 트랜잭션이란?MySQL에서 START TRANSACTION 명령어를 실행하면 새로운 트랜잭션을 시작할 수 있습니다. 이때 트랜잭션의 동작 방식은 SQL의 AUTOCOMMIT 모드 설정에 따라 달라집니다.1. AUTOCOMMIT ON 모드 (기본값)기본 모드인 AUTOCOMMIT ON 상태에서는 각각의 MySQL 문장이 하나의 완전한 트랜잭션으로 취급되며, 문장 실행이 끝나면 자동으로 커밋(commit)됩니다. 이 모드는 세션 변수 AUTOCOMMIT 값을 1로 설정하여 활성화할 수 있습니다.SET AUTOCOMMIT =
WITH ROLLUP과 명시적 정렬 순서의 관계MySQL에서 GROUP BY 목록의 열 이름에 ASC 또는 DESC와 같은 명시적 정렬 순서를 지정하고 WITH ROLLUP 수정자를 함께 사용하는 경우를 생각해 볼 수 있습니다. 이때 중요한 특징은, ROLLUP이 추가하는 요약(총계) 행은 정렬 순서가 어떻게 지정되었든 관계없이 항상 해당 요약을 계산하는 데 사용된 행들의 맨 뒤에 나타난다는 점입니다.기본 정렬(오름차순)에서의 출력MySQL의 기본 정렬 순서는 오름차순(ASC)입니다. 따라서 아래 예제처럼 별도의 정렬 순서를 지정하
ROLLUP과 ORDER BY는 함께 사용할 수 있을까?결론부터 말하면, MySQL에서 ROLLUP과 ORDER BY는 상호 배타적인 관계이기 때문에 하나의 쿼리에서 두 절을 함께 사용하는 것은 권장되지 않습니다.그럼에도 불구하고 ROLLUP과 함께 ORDER BY를 사용할 경우 가장 큰 문제점은 요약 행(summary row)이 일반 데이터 행들과 함께 정렬된다는 것입니다. 즉, 정렬 순서에 따라 요약 행의 위치가 달라지게 됩니다.정렬 순서에 따른 요약 행의 위치요약 행은 다음과 같은 규칙으로 배치됩니다.오름차순(ASC) 정렬 시
MySQL에서는 START TRANSACTION 문뿐만 아니라 BEGIN 문을 사용해서도 새로운 트랜잭션을 시작할 수 있습니다. 두 문장의 기능은 완전히 동일합니다.사용 예시mysql> BEGIN; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, Aarav,History,40); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(2, Harshit,History,
MySQL에서는 세미콜론(;) 종결 기호를 사용하지 않고도 쿼리를 실행할 수 있는 내장 명령어가 제공됩니다. 대표적인 명령어로 \G와 \g가 있으며, 이 두 옵션은 문장 끝에 세미콜론을 붙이지 않아도 MySQL이 자동으로 문장의 끝을 인식하고 서버에 전송해 실행합니다.\G (ego) 명령어 — 세로 형태로 결과 출력\G 옵션은 현재 입력한 SQL 문장을 서버로 전송해 실행하고, 그 결과를 세로(vertical) 형식으로 화면에 표시합니다. 한 줄 또는 여러 줄로 작성된 문장에서 세미콜론을 생략하고 \G만 입력하면, MySQL은 \G
WITH ROLLUP은 GROUP BY 절과 함께 사용되는 MySQL의 수정자(modifier)입니다. 이 수정자를 사용하면 그룹별 집계 결과 외에도, 전체 데이터를 대표하는 상위 수준의 요약(총계) 행이 결과에 자동으로 추가됩니다. WITH ROLLUP의 주요 특징 일반적인 GROUP BY 쿼리는 각 그룹별로 집계된 값만 반환하지만, WITH ROLLUP을 적용하면 다음과 같은 장점이 있습니다. 각 그룹의 소계와 함께 전체 합계가 마지막 행에 표시됩니다. 총계 행의 그룹 기준 컬럼 값은 NULL로 표시되어 일반 그룹 행과 구분됩
MySQL에서 테이블 형식 대신 세로 형식으로 출력하기MySQL 문장 끝에 \G를 붙이면 일반적인 테이블(표) 형식이 아닌 세로(vertical) 형식으로 결과를 출력할 수 있습니다. 이는 특히 컬럼 수가 많아 가로로 표시했을 때 화면이 복잡해지는 경우 결과를 한눈에 파악하는 데 매우 유용합니다.일반적인 테이블 형식 출력mysql> Select curdate(); +------------+ | curdate() | +------------+ | 2017-11-06 | +------------+ 1 row in set (0.0
MySQL에서 진행 중인 트랜잭션을 명시적으로 종료하는 방법은 크게 두 가지가 있습니다. 바로 COMMIT 명령어와 ROLLBACK 명령어입니다.1. COMMIT 명령어로 종료하기현재 실행 중인 트랜잭션에 대해 COMMIT 명령어를 실행하면 트랜잭션이 명시적으로 종료되며, 그동안 수행한 모든 변경 사항이 데이터베이스에 영구적으로 저장(커밋)됩니다.예제mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1
MySQL에서는 사용자가 명시적으로 COMMIT이나 ROLLBACK을 실행하지 않아도 특정 작업 수행 시 현재 트랜잭션이 자동으로, 즉 암시적으로 종료됩니다. 대표적인 경우는 다음과 같습니다. 1. DDL 문 실행 시 CREATE DATABASE, DROP DATABASE, CREATE TABLE, ALTER TABLE, DROP TABLE, 저장 프로시저나 함수 같은 저장 루틴(stored routine) 생성 등 DDL(Data Definition Language) 문을 실행하면 현재 트랜잭션이 암시적으로 종료되고, 그동안 쌓
MySQL에서 현재 트랜잭션 모드, 즉 AUTOCOMMIT 설정 상태를 확인하려면 SELECT @@AUTOCOMMIT 명령어를 사용하면 됩니다.AUTOCOMMIT이란?AUTOCOMMIT은 MySQL의 시스템 변수로, 각 SQL 문장이 실행될 때마다 자동으로 트랜잭션이 커밋(Commit)될지 여부를 결정합니다.값이 1인 경우: 자동 커밋 모드가 활성화되어 있으며, 각 문장이 실행되는 즉시 영구적으로 저장됩니다. 이것이 MySQL의 기본 설정입니다.값이 0인 경우: 자동 커밋이 비활성화되며, 변경 사항은 COMMIT을 실행해야 반영되고
MySQL에서는 IN 키워드와 함께 서브쿼리(subquery)를 사용하여 데이터를 효과적으로 필터링할 수 있습니다. 그 이유는 한 쿼리의 실행 결과를 마치 값의 목록처럼 활용하여, IN 연산자와 함께 다른 쿼리의 결과를 기반으로 데이터를 걸러낼 수 있기 때문입니다. 이때 서브쿼리는 IN 키워드 뒤에 오는 괄호 안에 작성됩니다.예제다음 두 개의 테이블 데이터를 사용하여 예제를 살펴보겠습니다.mysql> Select * from Customers; +-------------+----------+ | Customer_Id | Nam
MySQL에서는 WHERE 절에서 연산자와 함께 서브쿼리의 결과를 활용할 수 있는 것처럼, FROM 절에서도 서브쿼리를 하나의 테이블처럼 사용할 수 있습니다. 이를 파생 테이블(Derived Table) 또는 인라인 뷰라고 부르며, 복잡한 쿼리를 단계별로 나누어 처리할 때 매우 유용합니다.FROM 절 서브쿼리의 기본 문법FROM 절에 서브쿼리를 작성할 때는 반드시 별칭(Alias)을 붙여야 합니다. 별칭이 없으면 MySQL이 해당 결과 집합을 참조할 수 없어 오류가 발생합니다. 아래 예제에서는 C_car라는 별칭을 사용했습니다.예제
MySQL ORDER BY 절의 개요MySQL에서 ORDER BY 절은 쿼리 결과를 원하는 기준에 따라 정렬할 때 사용하는 구문입니다. ORDER BY 키워드 뒤에는 반드시 정렬하고자 하는 컬럼명을 지정해야 하며, 이를 통해 조회된 데이터를 가독성 있게 정리할 수 있습니다.예를 들어, 아래와 같은 ratelist라는 테이블이 있다고 가정해 보겠습니다. 이 테이블을 price(가격) 컬럼을 기준으로 정렬해 보겠습니다.mysql> Select * from ratelist; +----+------+-------+ | Sr | Ite
MySQL에서 테이블의 데이터를 특정 기준에 따라 정렬하려면 ORDER BY 절을 사용합니다. 일반적으로 ORDER BY 키워드 뒤에 정렬하고자 하는 열의 이름을 작성하면 됩니다.여기서 중요한 점은, ORDER BY 절에서 정렬 기준으로 사용한 열이 반드시 SELECT 문 뒤에 포함되어 있어야 하는 것은 아니라는 사실입니다. 즉, 쿼리 결과에 해당 열이 조회되지 않더라도 그 열을 기준으로 정렬할 수 있습니다.예제다음 예제는 ratelist 테이블에서 Sr과 Item 두 열만 조회하면서, SELECT 문에는 없는 Price 열을 기준