MySQL에서 여러 열 값을 계산하는 방법MySQL에서 여러 열에 걸쳐 값을 계산하려면 GROUP BY 절과 집계 함수인 SUM()을 함께 사용하면 됩니다. 예를 들어, 상품 가격과 무게를 곱한 결과를 특정 기준(여기서는 Id)별로 합산할 수 있습니다.기본 문법다음은 여러 열의 값을 계산하는 기본적인 쿼리 문법입니다.SELECT yourColumnName1, SUM(yourColumnName2 * yourColumnName3) AS anyAliasNameFROM yourTableNameGROUP BY yourColumnName1;예
데이터베이스에서 중복된 레코드만 선택하고 그 개수를 함께 표시하려면 HAVING 절과 집계 함수인 COUNT()를 함께 사용하면 됩니다. GROUP BY로 데이터를 그룹화한 뒤, HAVING 조건을 통해 중복 건수가 1보다 큰 값만 필터링하는 방식입니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table duplicateRecords -> ( -> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> ClientName va
MySQL에서 특정 열에 저장된 NULL 레코드를 제거하려면 DELETE 명령어와 IS NULL 조건을 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.DELETE FROM yourTableName WHERE yourColumnName IS NULL;IS NULL 연산자는 해당 열의 값이 NULL인 행만 정확히 찾아내는 역할을 합니다. 주의할 점은 = NULL이 아닌 반드시 IS NULL을 사용해야 한다는 것입니다. NULL은 값 자체가 아니라 값이 없음을 의미하기 때문에 일반적인 비교 연산자로는 판별할 수 없습니다.예제 테이블
MySQL에서 특정 사용자에게 부여된 권한을 확인하고 싶다면 SHOW GRANTS 명령어를 사용하면 됩니다. 기본 문법은 다음과 같습니다.SHOW GRANTS FOR 사용자이름@호스트이름;SHOW GRANTS 문법 설명위 문법은 지정한 사용자가 가지고 있는 모든 권한 목록을 조회합니다. 특정 사용자의 권한을 확인할 때는 반드시 FOR 키워드를 함께 사용해야 하며, 사용자 이름과 호스트를 사용자@호스트 형식으로 지정합니다.실제 사용 예제예를 들어, 사용자 이름이 JOHN이고 호스트가 %(모든 호스트 허용)인 계정의 권한을 확인하려면
MySQL에서 NULL 값 삽입하기MySQL에서 특정 컬럼에 NULL 값을 삽입하려면 UPDATE 명령문을 사용하면 됩니다. 기본 문법은 다음과 같습니다.UPDATE 테이블이름 SET 컬럼이름 = NULL;이제 실제 예제를 통해 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table insertNullValue -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> ClientName
MySQL에서 열의 모든 공백 제거하기MySQL에서 특정 열에 저장된 데이터의 모든 공백을 제거하려면 REPLACE() 함수를 사용하면 됩니다. REPLACE() 함수는 문자열 내에서 지정한 문자를 다른 문자로 치환해 주는 함수로, 공백을 빈 문자열()로 바꾸면 모든 공백이 제거됩니다.기본 문법UPDATE yourTableNameSET yourColumnName = REPLACE(yourColumnName, , );위 쿼리는 해당 테이블의 지정된 열에서 모든 공백( )을 찾아 빈 문자열로 대체합니다.실습 예제1. 테이블 생성먼저
MySQL에서 문자열 일부를 교체하는 방법MySQL 테이블의 특정 열에 저장된 문자열 중 일부를 다른 값으로 바꾸고 싶다면 REPLACE() 함수를 사용하면 됩니다. UPDATE 문과 함께 사용하면 기존 데이터를 손쉽게 수정할 수 있습니다.기본 문법update yourTableName set yourColumnName = REPLACE(yourColumnName ,yourOldValue,yourNewValue);위 문법에서 각 인자는 다음과 같은 의미를 가집니다.yourTableName : 수정할 테이블 이름yourColumnNam
MySQL에서 소수점 이하 자릿수가 2개를 초과하는 행 선택하기소수점 이하 자릿수가 2개보다 많은 행을 조회하려면 MySQL의 SUBSTR() 함수를 INSTR(), LENGTH() 함수와 함께 활용하면 됩니다. 먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table selectRows2DecimalPlacesDemo -> ( -> Amount varchar(100) -> );Query OK, 0 rows affected (0.73 sec)다음은 INSERT 명령을 사
MySQL에서 일반적인 오름차순이나 내림차순 정렬이 아닌, 특정 값들을 우선적으로 배치하고 싶을 때가 있습니다. 이럴 때 ORDER BY 절과 IF() 함수를 함께 사용하면 원하는 순서대로 데이터를 손쉽게 정렬할 수 있습니다.ORDER BY IF() 기본 문법SELECT * FROM yourTableNameORDER BY IF(yourColumnName=yourValue1 OR yourColumnName=yourValue2 OR yourColumnName=yourValue3,yourColumnName, ~yourColumnName)
MySQL에서 DECIMAL 타입 컬럼에 저장된 값은 소수점 자릿수가 고정되어 있어 10.7890, 89.9000처럼 끝에 불필요한 0이 붙어 출력되는 경우가 많습니다. 이런 후행 0(trailing zeros)을 제거하고 싶다면 trim() 함수를 활용하면 간단하게 해결할 수 있습니다.기본 문법trim() 함수로 공백을 제거한 뒤 +0을 더해주면 문자열이 다시 숫자로 변환되면서 후행 0이 자동으로 사라집니다.select trim(yourColumnName)+0 As anyAliasName from yourTableName;예제로
MySQL NOT IN 연산자로 일부 행을 제외하고 삭제하기MySQL에서 대량의 데이터를 다루다 보면 테이블의 모든 행을 지우되, 특정 값만 남겨두고 싶은 경우가 자주 발생합니다. 이럴 때 NOT IN 연산자를 사용하면 간단하게 해결할 수 있습니다.기본 문법삭제하지 않고 유지하고 싶은 행의 값을 NOT IN 뒤에 나열하면, 해당 값을 가진 행을 제외한 나머지 모든 행이 한 번에 삭제됩니다.DELETE FROM yourTableNameWHERE yourColumnName NOT IN (yourValue1, yourValue2, you
MySQL에서 열이 AUTO_INCREMENT인지 확인하기MySQL에서 특정 테이블의 열이 AUTO_INCREMENT 속성을 가지고 있는지 확인하고 싶다면, information_schema.columns 뷰를 활용하면 됩니다. 이 시스템 뷰는 데이터베이스 내 모든 테이블과 열의 메타데이터 정보를 담고 있어, EXTRA 컬럼에 저장된 속성 정보를 조회하는 것만으로 간단하게 확인할 수 있습니다.기본 문법아래 쿼리를 사용하면 해당 데이터베이스와 테이블에서 AUTO_INCREMENT로 설정된 열의 이름을 조회할 수 있습니다.SELECT
MySQL에서 트리거나 저장 프로시저의 실행에 지연 시간을 주고 싶다면 SLEEP() 함수를 사용하면 됩니다. SLEEP() 함수는 지정한 초(seconds)만큼 실행을 일시 정지하는 역할을 하며, 이를 프로시저 내부에 넣으면 원하는 만큼 실행 지연을 구현할 수 있습니다.1. 지연 기능이 포함된 저장 프로시저 생성먼저 SLEEP() 함수를 포함한 저장 프로시저를 만들어 보겠습니다. 아래 예제는 20초간 대기한 후 메시지를 출력하는 프로시저입니다.mysql> DELIMITER //mysql> CREATE PROCEDURE
MySQL에서 VARCHAR 타입 필드에 저장된 숫자 값의 최대값을 구하려면 MAX() 함수와 CAST() 함수를 함께 사용해야 합니다. VARCHAR는 문자열 타입이므로 CAST 없이 MAX()만 사용하면 숫자 크기가 아닌 문자열 기준으로 비교되어 엉뚱한 결과가 반환될 수 있습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 만들어 보겠습니다.mysql> create table findMaxValueInVarcharField -> ( -> Id int NOT NULL AUTO_INCREMENT PRI
테이블에 데이터를 삽입하는 저장 프로시저(Stored Procedure)를 작성하려면 먼저 데이터가 저장될 테이블을 생성해야 합니다. 아래 예제에서는 학생 정보를 담을 테이블을 만든 뒤, 해당 테이블에 데이터를 삽입하는 저장 프로시저를 단계별로 살펴보겠습니다. 1단계: 테이블 생성하기 저장 프로시저를 작성하기 전에 데이터를 삽입할 대상 테이블을 먼저 만들어야 합니다. mysql> create table insertDataUsingStoredProcedure -> ( ->
MySQL에서 테이블 존재 여부 확인하기MySQL에서 특정 테이블이 실제로 존재하는지 확인하려면 INFORMATION_SCHEMA.TABLES 뷰를 활용하는 것이 가장 확실한 방법입니다. 이 시스템 뷰에는 데이터베이스 서버에 있는 모든 테이블의 메타데이터가 저장되어 있어, 테이블 이름을 조건으로 조회하면 존재 여부를 바로 알 수 있습니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table Client_information-> (-> Id int,-> Name varchar(10)-
MySQL에서 데이터를 정렬하다 보면 0인 값은 맨 뒤로 밀어내고, 0보다 큰 값들만 오름차순으로 정렬해야 하는 경우가 종종 있습니다. 단순히 ORDER BY를 사용하면 0이 가장 앞에 위치하게 되는데, 이번 글에서는 이 문제를 간단한 쿼리 한 줄로 해결하는 방법을 알아보겠습니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table gettingAndOrderingRowsDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMAR
MySQL에서 생성 날짜 기준으로 데이터베이스 목록 정렬하기 MySQL에서 SHOW DATABASES 명령어는 데이터베이스 목록을 항상 알파벳 순서로 출력하며, 생성 날짜 정보는 함께 제공되지 않습니다. 따라서 데이터베이스를 생성 시점 기준으로 정렬해서 확인하려면 INFORMATION_SCHEMA.TABLES 뷰와 ORDER BY 절을 조합한 별도의 쿼리가 필요합니다. 1단계: 전체 데이터베이스 목록 확인 먼저 서버에 존재하는 모든 데이터베이스를 조회해 보겠습니다. mysql> show databases; 실행하면 아래와 같
날짜가 varchar 데이터 타입으로 저장되어 있어서, 즉 올바른 날짜 형식이 아니라고 가정해 보겠습니다. 이런 경우 MySQL의 STR_TO_DATE() 함수를 사용하면 문자열을 날짜 형식으로 손쉽게 변환할 수 있습니다.테이블 생성하기먼저 테이블을 생성하겠습니다. 다음은 CREATE TABLE 쿼리입니다.mysql> create table convertDateDemo -> ( -> AdmissionDate varchar(200)&nb
MySQL에서 GROUP BY와 ORDER BY로 같은 이름 학생 점수 합산하기동일한 이름을 가진 여러 학생의 점수를 하나로 합산하려면 GROUP BY 절과 ORDER BY 절을 함께 사용하면 됩니다. GROUP BY는 같은 이름끼리 행을 그룹으로 묶어 점수를 집계하고, ORDER BY는 집계된 결과를 오름차순 또는 내림차순으로 정렬하는 역할을 합니다.먼저 학생 이름과 수학 점수를 저장할 테이블을 생성해 보겠습니다.mysql> create table countRowValueDemo-> (-> StudentId int