MySQL에서는 CONCAT() 함수와 ROUND() 함수를 조합하면 점수 데이터를 기반으로 학생의 백분율을 손쉽게 계산할 수 있으며, 결과값에 백분율 기호(%)까지 함께 붙여서 출력할 수 있습니다. 아래에서 단계별로 살펴보겠습니다.1. 테이블 생성먼저 점수를 저장할 테이블을 생성합니다.mysql> create table DemoTable ( Marks int ); Query OK, 0 rows affected (0.62 sec)2. 샘플 데이터 삽입INSERT 명령을 사용하여 테이블에 학생별 점수 레코드를 입력합니다.
소수점 이하 값이 없는 레코드, 즉 12.00, 35.00처럼 소수 부분이 정수인 데이터만 골라내고 싶다면 MySQL의 FLOOR() 함수를 활용하면 됩니다. 예를 들어 5.23, 8.76, 12.00, 22.68 같은 값이 섞여 있는 목록에서 정수 형태의 값만 추출할 수 있습니다.핵심 원리는 간단합니다. 컬럼 값과 그 값을 내림한 결과(FLOOR(Value))가 서로 같다면, 해당 값은 소수 부분이 없는 정수라는 의미입니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table Demo
결론부터 말씀드리면, 아니요. MySQL에서 ^ 연산자는 거듭제곱 연산자가 아니라 비트 단위 XOR(Bitwise XOR) 연산자입니다. 따라서 어떤 숫자를 다른 숫자의 거듭제곱으로 계산하려면 MySQL에서 제공하는 POW() 또는 POWER() 함수를 사용해야 합니다.예제 테이블 생성하기먼저 실습에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( BaseValue int, PowerValue float ); Query OK, 0 rows affected (0.48 se
MySQL에서 자동 증가(AUTO_INCREMENT) 값을 초기화하는 방법MySQL에서 테이블의 AUTO_INCREMENT 값을 1부터 다시 시작하도록 설정하려면 TRUNCATE 명령어를 사용해 테이블을 비우면 됩니다. 먼저 예제 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY ); Query OK, 0 rows affected (1.44 sec)INSERT 명령어를 사용해 몇 개의 레코드를 삽입
MySQL에서는 문자열로 저장된 날짜 데이터를 STR_TO_DATE() 함수로 파싱한 뒤, DATE_FORMAT() 함수를 사용해 원하는 형식으로 손쉽게 변환할 수 있습니다. 이 글에서는 August 04,2019처럼 텍스트로 저장된 날짜 값을 2019-08-04 형식의 표준 날짜로 바꾸는 과정을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 날짜 문자열을 저장할 테이블을 생성합니다.mysql> create table DemoTable ( DueDate varchar(100) ); Query OK, 0 rows aff
MySQL 텍스트 필드에서 숫자만 추출하기데이터베이스 작업을 하다 보면 텍스트 필드에 숫자와 함께 하이픈(-), 쉼표(,), 공백, 따옴표 같은 불필요한 문자가 섞여 있는 경우를 자주 만나게 됩니다. 이럴 때 MySQL의 REPLACE 함수를 중첩해서 사용하면 손쉽게 숫자만 깔끔하게 추출할 수 있습니다.1. 테스트용 테이블 생성먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Number text ); Query OK, 0 rows affected (0.49 sec)
개요MySQL에서 이름(FirstName)과 성(LastName)이 하나의 컬럼에 함께 저장되어 있을 때, 특정 조합의 이름을 찾고 싶은 경우가 있습니다. 이때 LIKE 절을 두 번 사용하고 AND 연산자로 연결하면 원하는 레코드를 정확하게 조회할 수 있습니다.예를 들어, John이라는 이름과 Doe라는 성을 모두 포함하는 학생을 찾는 방법을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( StudentId int NOT NULL
테이블에서 가장 최근의 날짜를 조회하려면 ORDER BY DESC를 사용해 날짜 레코드를 내림차순으로 정렬하면 됩니다. 그리고 날짜 3개만 필요하므로 LIMIT 3을 함께 사용합니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( AdmissionDate date ); Query OK, 0 rows affected (0.56 sec)2. 샘플 데이터 삽입하기insert 명령을 사용해 테이블에 여러 개의 레코드를 삽입합니다. 이때 의도적으로 중복된 날짜도
MySQL의 COALESCE() 함수는 인자 목록에서 가장 먼저 만나는 NULL이 아닌(NON-NULL) 값을 즉시 반환합니다. 첫 번째 인자가 NULL이 아니라면 그 값을 그대로 돌려주고, NULL이라면 다음 인자로 넘어가 NULL이 아닌 값을 찾을 때까지 왼쪽에서 오른쪽으로 순서대로 확인합니다.데모 테이블 생성하기먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Number1 int, Number2 int ); Query OK, 0 rows affected
단일 MySQL 쿼리로 두 테이블의 행 수 계산하기MySQL에서 여러 테이블의 행(row) 수를 확인할 때 각각 별도의 쿼리를 실행할 수도 있지만, 스칼라 서브쿼리(scalar subquery)를 활용하면 단 하나의 쿼리로 두 테이블의 행 수를 동시에 조회할 수 있습니다. 아래 예제를 통해 단계별로 살펴보겠습니다.1단계: 첫 번째 테이블 생성먼저 DemoTable1이라는 이름의 테이블을 생성합니다.mysql> create table DemoTable1 ( Name varchar(40) ); Query OK, 0 rows
MySQL에서 특정 값(사용자 정의 변수)과 수치상 가장 가까운 레코드를 조회해야 하는 경우가 종종 있습니다. 이럴 때 ABS() 함수와 ORDER BY, LIMIT 절을 조합하면 간단하게 해결할 수 있습니다. 아래 예제를 통해 단계별로 살펴보겠습니다.1. 테이블 생성먼저 데모용 테이블을 생성합니다.mysql> create table DemoTable ( CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, ProductAmount int ); Query OK, 0 rows
개요MySQL에서는 사용자 정의 변수에 SUM() 함수의 결과(합계)를 저장한 뒤, UPDATE 명령으로 테이블을 갱신하여 계산된 합계를 마지막 열 값으로 표시할 수 있습니다. 아래 예제를 통해 전체 과정을 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 CREATE TABLE 문으로 데모용 테이블을 생성합니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value int ); Query OK, 0 rows affected
단일 MySQL 쿼리로 임시 테이블에 여러 값 삽입하기MySQL에서는 INSERT 문 하나만으로 임시 테이블(Temporary Table)에 여러 개의 값을 동시에 삽입할 수 있습니다. VALUES 절에 값들을 쉼표(,)로 구분하여 나열하면 되는데, 이 방식은 쿼리 실행 횟수를 크게 줄여주기 때문에 대량의 데이터를 입력할 때 성능 면에서 매우 유용합니다.1. 임시 테이블 생성먼저 CREATE TEMPORARY TABLE 문을 사용해 임시 테이블을 생성합니다. 임시 테이블은 현재 세션에서만 유효하며 세션이 종료되면 자동으로 삭제되므로
MySQL에서 열 값이 문자열인지 숫자인지 확인하는 방법MySQL에서 특정 열의 값이 순수하게 문자열로만 이루어져 있는지, 아니면 숫자로만 구성되어 있는지 확인해야 할 때가 있습니다. 이런 경우 REGEXP(정규 표현식) 연산자를 활용하면 손쉽게 원하는 데이터만 조회할 수 있습니다.기본 문법문자열 값만 조회하려면 다음과 같은 쿼리를 사용합니다.select *from yourTableName where yourColumnName NOT regexp '^[0-9]+$';반대로 숫자 값만 조회하려면 아래와 같이 작성합니다.
MySQL에서는 CREATE TABLE ... LIKE 구문을 사용하면 기존 테이블의 구조(컬럼 정의, 데이터 타입, 인덱스, PRIMARY KEY 등)를 그대로 복제한 새로운 빈 테이블을 손쉽게 만들 수 있습니다. 아래에서 실제 예제와 함께 단계별로 살펴보겠습니다.1. 원본 테이블 생성하기먼저 예제로 사용할 테이블을 생성합니다.mysql> create table DemoTable1 ( EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY, EmployeeName varcha
MySQL에서 INSERT INTO yourTableName VALUE(yourValue1, yourValue2, ...); 구문을 실행할 때 오류가 발생한다면, 그 원인은 바로 문법 오류입니다. MySQL에서는 VALUE()라는 키워드가 아니라 VALUES()를 사용해야 합니다. 단어 끝의 S 하나 차이지만, 이것이 없으면 쿼리는 정상적으로 실행되지 않습니다.올바른 INSERT 구문INSERT 쿼리의 정확한 기본 문법은 다음과 같습니다.INSERT INTO yourTableName VALUES(yourValue1,yourValue
MySQL에서는 DELIMITER 개념을 활용하면 여러 개의 SELECT 쿼리를 한 번에 실행할 수 있습니다. 이 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다. 1. 첫 번째 테이블 생성 및 데이터 삽입 먼저 예제에 사용할 테이블을 생성합니다. mysql> create table DemoTable1 ( Title text )ENGINE=MyISAM; Query OK, 0 rows affected (0.30 sec) INSERT 명령을 사용해 테이블에 샘플 데이터를 입력합니다. mysql> in
개요MySQL에서 두 개의 테이블에 분산되어 있는 문자열 값들의 개수를 하나로 합쳐서 집계해야 하는 경우가 있습니다. 이럴 때는 COUNT(*) 함수와 UNION ALL을 함께 사용하면 됩니다. UNION ALL은 두 테이블의 결과를 중복 제거 없이 그대로 합쳐주기 때문에, 각 문자열이 두 테이블에 걸쳐 총 몇 번 등장했는지 정확하게 계산할 수 있습니다.1. 첫 번째 테이블 생성 및 데이터 입력먼저 첫 번째 테이블을 생성합니다.mysql> create table DemoTable1( Name varchar
결론부터 말씀드리면, MySQL의 UPDATE는 값이 기존과 완전히 동일한 경우 해당 값을 덮어쓰지 않습니다.MySQL은 UPDATE 문을 실행할 때 새로 설정하려는 값과 현재 저장된 값을 비교합니다. 두 값이 같다면 실제 변경 작업을 수행하지 않기 때문에 Rows matched는 1로 표시되더라도 Changed는 0이 됩니다. 아래 예제를 통해 직접 확인해 보겠습니다.1. 테스트용 테이블 생성먼저 학생 정보를 저장할 테이블을 만들어 보겠습니다.mysql> create table DemoTable ( StudentId
MySQL에서 날짜 데이터가 포함된 테이블을 다룰 때, 특정 월에 해당하는 레코드만 골라서 열 값을 합산해야 하는 경우가 자주 있습니다. 예를 들어 12월 매출 합계만 구하고 싶다면 MONTH() 함수와 SUM() 함수를 함께 활용하면 됩니다.1. 테이블 생성하기먼저 예제로 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, PurchaseDate date, SalePrice int );