숫자를 소수점 이하 두 자리까지만 표시하고 싶다면 PHP에서 제공하는 number_format() 함수를 사용하면 됩니다. 이 함수는 숫자를 천 단위 구분 기호와 함께 원하는 소수점 자릿수로 포맷팅해 주는 아주 유용한 내장 함수입니다.기본 사용 방법먼저 두 개의 변수를 선언하고 값을 초기화합니다.$number1=10.3423; $number2=10;이제 number_format() 함수를 사용하여 두 변수를 소수점 둘째 자리까지 표시하도록 포맷팅합니다. 두 번째 인자에 원하는 소수점 자릿수인 2를 지정하면 됩니다.$result1=n
MySQL에서 특정 문자로 시작하는 데이터를 조회할 때는 LIKE 연산자와 와일드카드(%)를 사용하면 됩니다. 아래 예제를 통해 자세히 살펴보겠습니다.select * from yourTableName where yourColumnName LIKE A%;여기서 %는 임의의 문자열을 의미하는 와일드카드이며, A%는 A로 시작하는 모든 값을 나타냅니다.1. 테이블 생성하기먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( StudentName varchar(100)
MySQL에서 UNION 대신 CASE 문을 사용해야 하는 이유MySQL에서 여러 조건의 결과를 하나의 순서로 합쳐서 조회하고 싶을 때 많은 개발자가 UNION을 떠올립니다. 하지만 UNION은 내부적으로 결과를 병합하면서 원래의 정렬 순서를 보장하지 않기 때문에, 의도한 순서대로 데이터가 출력되지 않는 문제가 발생할 수 있습니다.이런 경우 가장 좋은 해결책은 CASE 문과 ORDER BY를 함께 사용하는 것입니다. UNION을 쓰지 않고도 원하는 조회 순서를 깔끔하게 유지할 수 있습니다.아래에서 실제 예제를 통해 단계별로 살펴보겠
저장 프로시저(Stored Procedure) 안에서 조건에 따라 다른 쿼리를 실행해야 하는 경우가 종종 있습니다. MySQL에서는 IF ELSE 문을 활용하면 이러한 조건부 로직을 손쉽게 구현할 수 있습니다. 이번 글에서는 두 개의 테이블을 만들고, 저장 프로시저의 매개변수 값에 따라 서로 다른 테이블을 조회하는 예제를 단계별로 살펴보겠습니다. 1. 첫 번째 테이블 생성 및 데이터 입력 먼저 예제에 사용할 테이블 DemoTable1을 생성합니다. mysql> create table DemoTable1  
MySQL에서 특정 사용자가 지정된 스키마(데이터베이스)에 접근하지 못하도록 하려면 mysql.db 권한 테이블에서 해당 권한 행을 삭제하면 됩니다. 이때 DELETE 명령어를 사용합니다.기본 문법특정 스키마에 대한 사용자 접근을 차단하는 기본 문법은 다음과 같습니다.DELETE FROM mysql.db WHERE Db IN(스키마명, 스키마명\_%) AND User = 사용자명 AND Host = 호스트명;여기서 스키마명\_% 조건은 해당 이름으로 시작하는 모든 데이터베이스까지 함께 차단하
정규 표현식(REGEXP)으로 패턴 검색하기 MySQL에서 특정 패턴과 일치하는 데이터를 검색하려면 REGEXP(정규 표현식) 연산자를 사용하면 됩니다. 먼저 예제에 사용할 테이블을 생성해 보겠습니다. mysql> create table DemoTable ( UserId varchar(100) ); Query OK, 0 rows affected (1.28 sec) 1. 샘플 데이터 삽입 INSERT 명령어를 사용해 테이블에 몇 개의 레코드를 추가합니다. mysql> insert into DemoTa
MySQL에서 테이블을 생성할 때 기본 키(Primary Key)에 자동 증가(AUTO_INCREMENT) 속성을 설정하면, 레코드가 삽입될 때마다 해당 열의 값이 자동으로 1씩 증가합니다. 이는 회원 번호, 주문 번호처럼 고유한 식별자가 필요한 경우 매우 유용하게 활용됩니다.기본 문법MySQL 테이블의 기본 키를 자동 증가로 설정하려면 아래와 같은 문법을 사용합니다.CREATE TABLE yourTableName ( yourColumnName INT(6) ZEROFILL NOT NULL AUTO_INCREMENT,
MySQL에서 특정 연도와 월에 해당하는 레코드를 조회하려면 YEAR() 함수와 MONTH() 함수를 사용하면 됩니다. 먼저 예제로 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, CustomerName varchar(20), CustomerTotalBill int, PurchasingDate date ); Query OK, 0 rows affecte
MySQL에서 테이블에 저장된 실제 데이터 값과 해당 컬럼의 데이터 유형을 한 번에 조회하고 싶다면 INFORMATION_SCHEMA.COLUMNS를 활용할 수 있습니다. 이 메타데이터 뷰는 데이터베이스 내 모든 테이블과 컬럼의 구조 정보를 담고 있어, 일반 SELECT 쿼리와 조인하여 데이터 유형을 별도 열로 출력할 수 있습니다.1. 샘플 테이블 생성먼저 예제로 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PR
MySQL에서 DATE를 DATETIME으로 변경하는 방법MySQL에서 컬럼의 데이터 유형을 DATE(날짜)에서 DATETIME(날짜/시간)으로 변경하려면 ALTER 명령어와 CHANGE 절을 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.alter table 테이블이름 change 컬럼이름 컬럼이름 datetime;CHANGE 절은 기존 컬럼명 → 새 컬럼명 → 새 데이터 유형 순서로 지정하기 때문에 컬럼 이름이 두 번 등장합니다. 컬럼 이름을 그대로 유지하고 싶다면 같은 이름을 두 번 입력하면 됩니다.1단계: 테이블 생성먼
MySQL에서 COUNT와 함께 SELECT를 수행하려면 집계 함수인 COUNT()를 사용하면 됩니다. 이 함수는 지정된 컬럼의 값 개수를 세어 그룹별 결과를 반환합니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(100), Subject varchar(100) ); Query OK, 0 rows affected
개요 저장 프로시저 안에서 세션 변수(@변수)를 사용해 값을 할당하면, 이후 레코드가 업데이트될 때 변수를 다시 조회·할당하는 순간 값이 함께 바뀌어 버립니다. 이번 글에서는 이러한 현상을 예제로 확인하고, 변수 값이 변경되지 않도록 만드는 방법까지 살펴보겠습니다. 1. 테이블 생성 먼저 예제에 사용할 테이블을 생성합니다. mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value int ); Query OK,
MySQL에서 특정 행 선택하기MySQL에서 쉼표로 구분된 값 목록이 저장된 컬럼에서 특정 행을 선택하려면 FIND_IN_SET() 함수를 사용하면 됩니다. 이 함수는 값 목록 안에 검색하고자 하는 값이 존재하는지 확인하여, 존재하면 그 위치를 반환하고 존재하지 않으면 0을 반환합니다.먼저 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( ListOfValues varchar(200) );Query OK, 0 rows affect
MySQL에서 문자열과 숫자가 섞여 있는 데이터를 원하는 기준으로 정렬하려면 정규 표현식(REGEXP)과 CASE 문을 함께 사용하면 됩니다. 이 글에서는 알파벳 값이 먼저 오고, 그 뒤에 숫자 값이 오도록 정렬하는 방법을 예제와 함께 살펴보겠습니다.1. 예제 테이블 생성하기먼저 데모용 테이블을 생성합니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value varchar(20) ); Query OK, 0
MySQL에서 숫자 열을 올바르게 오름차순(ASC)으로 정렬하려면 CAST() 함수를 활용하면 됩니다. 특히 숫자가 문자열(VARCHAR)로 저장된 경우 일반적인 ORDER BY 절은 사전순으로 정렬되어 100이 11보다 앞에 오는 문제가 발생할 수 있는데, CAST()로 값을 정수형으로 변환하면 이러한 문제를 해결할 수 있습니다.실제 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( Id int NOT NULL
MySQL에서 그룹별로 모든 행을 하나로 나열하는 방법MySQL에서 GROUP BY를 사용할 때 각 그룹에 속한 여러 행의 값을 하나의 문자열로 합쳐서 보고 싶은 경우가 자주 있습니다. 이럴 때 유용하게 쓸 수 있는 함수가 바로 GROUP_CONCAT()입니다.이 글에서는 예제 테이블을 만들고, GROUP_CONCAT()을 활용해 그룹별로 모든 행을 나열하는 방법을 단계별로 살펴보겠습니다.1단계: 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( Id
데이터 타입으로 컬럼을 필터링해야 하는 이유MySQL을 운영하다 보면 수십 개, 수백 개의 테이블에 흩어져 있는 컬럼 중에서 특정 데이터 타입(TEXT, VARCHAR, INT 등)을 가진 컬럼만 한눈에 확인하고 싶은 경우가 자주 있습니다. 예를 들어, 전체 데이터베이스에서 TEXT 타입으로 선언된 컬럼을 찾아 용량을 점검하거나 스키마를 리팩토링할 때 이런 조회 기능이 매우 유용합니다.이럴 때는 MySQL이 기본적으로 제공하는 메타데이터 카탈로그인 INFORMATION_SCHEMA.COLUMNS 테이블을 활용하면 간단하게 해결할 수
MySQL에서 데이터를 특정 컬럼 기준으로 그룹화하면서도 그룹의 순서는 매번 무작위로 섞고 싶을 때가 있습니다. 예를 들어 같은 값을 가진 행들은 서로 붙여서 보여주되, 어떤 그룹이 먼저 나올지는 실행할 때마다 달라지도록 하는 것이죠. 이 글에서는 서브쿼리와 RAND() 함수를 활용해 이를 구현하는 방법을 단계별로 살펴봅니다.1. 예제 테이블 생성하기먼저 실습에 사용할 테이블을 만들어 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRI
MySQL 교착 상태(Deadlock)란? 교착 상태(deadlock)는 두 개 이상의 트랜잭션이 서로가 보유한 잠금(lock)을 기다리면서 어느 쪽도 진행하지 못하고 멈춰 있는 상황을 의미합니다. MySQL의 InnoDB 스토리지 엔진은 이러한 교착 상태를 자동으로 감지하여 한쪽 트랜잭션을 강제로 롤백시키지만, 문제의 근본 원인을 분석하고 애플리케이션 로직을 개선하려면 관련 로그를 반드시 확인해야 합니다. 1단계: innodb_print_all_deadlocks 활성화 먼저 innodb_print_all_deadlocks 시스템
MySQL에서는 CONCAT() 함수를 사용하여 여러 개의 필드(컬럼) 값을 하나의 문자열로 결합할 수 있습니다. 이 기능은 이름과 성처럼 분리되어 저장된 데이터를 하나로 합쳐 조회하거나 검색할 때 특히 유용합니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성하겠습니다.mysql> create table DemoTable ( ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY, ClientFirstName varchar(20), ClientLastName