Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL

  1. MySQL 값 저장, BOOLEAN vs TINYINT(1): 무엇을 선택해야 할까?

    MySQL에서 BOOLEAN과 TINYINT의 관계MySQL에서 BOOLEAN과 BOOL 데이터 타입은 모두 TINYINT(1)와 완전히 동일합니다. BOOLEAN이나 BOOL로 컬럼을 생성하면 MySQL이 내부적으로 이를 자동으로 TINYINT(1)로 변환하는데, 그 이유는 BOOLEAN과 BOOL이 사실상 TINYINT(1)의 동의어(synonym)에 불과하기 때문입니다.또한 MySQL에서 TRUE는 1, FALSE는 0의 상수 리터럴로 처리되므로, 실질적인 참/거짓 판단은 0이 아닌 모든 값을 참으로 간주하는 방식으로 이루어집

  2. MySQL에서 현재 구성 변수(시스템 변수)를 확인하는 방법 – SHOW VARIABLES 완벽 가이드

    MySQL에서 현재 서버에 적용된 구성 변수(시스템 변수)의 목록과 값을 확인하고 싶다면 SHOW 명령어를 사용하면 됩니다. 이 명령어 하나만으로 서버 운영에 관여하는 수백 개의 시스템 변수와 그 설정값을 한눈에 파악할 수 있습니다. 기본 문법: 모든 구성 변수 조회하기 현재 설정된 모든 구성 변수를 표시하는 기본 문법은 다음과 같습니다. show variables; LIKE 연산자로 특정 변수만 필터링하기 MySQL의 시스템 변수는 매우 많기 때문에, 실무에서는 LIKE 연산자를 함께 사용해 원하는 변수만 골라서 조회하는 것

  3. MySQL CASE 문 완벽 가이드: 작동 원리와 두 가지 문법 총정리

    MySQL의 CASE 문은 프로그래밍 언어의 switch 문과 유사하게 작동합니다. 여러 조건을 순차적으로 평가하여 해당하는 결과값을 반환하는 제어 흐름 함수로, SELECT 문에서 조건별로 다른 값을 출력해야 할 때 매우 유용합니다.CASE 문법 1 — 비교 조건문 방식첫 번째 문법은 다양한 비교 조건을 평가하는 방식입니다. 각 WHEN 절에 비교문을 작성하고, 모든 조건이 거짓일 경우 ELSE 절의 기본값을 반환합니다.Casewhen anyCompareStatement then value1when anyCompareStateme

  4. MySQL 자동 증가(AUTO_INCREMENT) 기본 키가 있을 때 데이터 삽입하는 방법

    테이블의 컬럼에 자동 증가(auto_increment) 기본 키가 설정되어 있다면 큰 장점이 있습니다. 바로 INSERT 명령 실행 시 해당 컬럼에 값을 직접 지정하지 않아도 된다는 점입니다. MySQL이 자동으로 그 값을 생성해 주기 때문입니다.이 개념을 이해하기 위해 먼저 예제 테이블을 만들어 보겠습니다. 아래 쿼리로 테이블을 생성할 수 있습니다.mysql> create table AutoIncrementedPrimary-> (-> Id int auto_increment,-> Name varchar(100)

  5. MySQL에서 CASE WHEN/THEN/ELSE 구문으로 대량 업데이트 수행하기

    MySQL에서 여러 행의 데이터를 한 번의 쿼리로 조건에 따라 다르게 수정해야 할 때, CASE WHEN/THEN/ELSE 구문을 활용하면 효율적으로 대량 업데이트를 수행할 수 있습니다. 이 방식은 개별 UPDATE 문을 여러 번 실행하는 것보다 성능 면에서 유리합니다.CASE WHEN/THEN/ELSE를 사용한 대량 업데이트 기본 문법UPDATE yourTableName SET yourColumnName = CASE WHEN yourColumnName = Value1 THEN anyUpdatedValue1 WHEN

  6. MySQL UPDATE에서 datetime = NOW() 사용 시 모든 행이 동일한 날짜/시간을 갖는 이유

    MySQL에서 UPDATE 문에 NOW() 함수를 사용해 datetime 컬럼을 갱신하면, 업데이트된 모든 행은 동일한 날짜/시간 값을 갖게 됩니다. 그 이유는 NOW()가 쿼리(문장)가 실행되기 시작한 시점의 시간을 상수처럼 반환하기 때문입니다.반면 SYSDATE() 함수는 MySQL 5.0.13부터 해당 함수가 실제로 실행되는 정확한 시각을 반환합니다. 즉, 트리거나 저장 프로시저 안에서 NOW()로 datetime을 갱신하는 경우, 트리거나 저장 프로시저가 실행을 시작한 시점의 시간이 반환됩니다.실습 예제: 테이블 생성NOW(

  7. MySQL에서 테이블의 모든 행을 반복 처리하는 방법 – 저장 프로시저 완벽 가이드

    MySQL에서 테이블의 모든 행을 하나씩 반복(loop) 처리하려면 저장 프로시저(Stored Procedure)를 활용하면 됩니다. 저장 프로시저 안에서 변수를 선언하고 WHILE 문을 사용해 전체 행 수만큼 순회하는 방식입니다.기본 문법delimiter //CREATE PROCEDURE yourProcedureName()BEGINDECLARE anyVariableName1 INT DEFAULT 0;DECLARE anyVariableName2 INT DEFAULT 0;SELECT COUNT(*) FROM yourTableName1

  8. MySQL에서 특정 셀의 데이터만 변경하는 방법

    MySQL에서 테이블 전체가 아닌 한 개의 셀(특정 행의 특정 컬럼 값)만 수정하려면 UPDATE 명령어를 사용하면 됩니다. 기본 문법은 다음과 같습니다.UPDATE yourTableName SET yourColumnName=yourNewValue WHERE yourColumnName=yourOldValue;위 문법을 실제로 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다.1. 테이블 생성테이블을 생성하는 쿼리는 다음과 같습니다.mysql> create table changeCellsData -> ( -

  9. MySQL에서 오늘 로그인한 사용자 조회하기 – STR_TO_DATE와 CURDATE 활용법

    MySQL에서 오늘 로그인한 사용자를 조회하려면 아래의 문법을 사용하면 됩니다. 여기서는 날짜(datetime) 필드가 문자열 타입으로 저장되어 있다고 가정합니다.SELECT yourColumnName1, yourColumnName2, yourColumnName3, ...N FROM yourTableName WHERE STR_TO_DATE(yourColumnName1, format) = CURDATE();예제 테이블 준비설명을 위해 사용자의 이름과 성, 그리고 로그인 날짜를 저장하는 DateEqualToday 테이블이 있다고 가정해

  10. MySQL에서 DD/MM/YYYY 형식 날짜 기준 내림차순 정렬 쿼리 사용법

    MySQL에서 날짜가 DD/MM/YYYY 형식의 문자열(예: 20/10/2016)로 저장되어 있으면, 단순히 ORDER BY만 사용할 경우 문자열 기준으로 정렬되어 올바른 날짜 순서가 나오지 않습니다. 이럴 때 STR_TO_DATE() 함수를 활용하면 문자열을 실제 날짜 값으로 변환한 뒤 정확하게 정렬할 수 있습니다.기본 문법DD/MM/YYYY 형식의 날짜를 기준으로 내림차순(Descending) 정렬하려면 다음과 같은 구문을 사용합니다.SELECT * FROM yourTableName WHERE yourDatetimeColumnN

  11. MySQL 저장 프로시저에서 FOR LOOP(반복문)를 사용하는 방법

    MySQL의 저장 프로시저(Stored Procedure)에는 다른 프로그래밍 언어처럼 FOR 문이 직접 제공되지 않습니다. 대신 LOOP, LEAVE, ITERATE 구문을 조합하여 FOR LOOP와 동일한 반복 처리를 구현할 수 있습니다.기본 문법MySQL 저장 프로시저에서 FOR LOOP 형태의 반복문을 작성하는 기본 문법은 다음과 같습니다.delimiter //CREATE procedure yourProcedureName()wholeblock:BEGIN   DECLARE anyVariableName

  12. MySQL에서 DECIMAL 타입으로 소수점 숫자 저장하기 – 문법과 예제 완벽 정리

    MySQL에서 소수점이 있는 숫자를 저장하려면 DECIMAL 데이터 타입의 두 가지 매개변수를 정확히 이해해야 합니다. 기본 문법은 다음과 같습니다. DECIMAL(총_자릿수, 소수점_이하_자릿수); DECIMAL 매개변수의 의미 예를 들어 DECIMAL(4,2)라고 선언하면 다음과 같은 규칙이 적용됩니다. 첫 번째 매개변수(4): 소수점을 포함한 전체 자릿수가 최대 4자리입니다. 즉, 소수점 앞에는 최대 2자리까지만 저장할 수 있습니다. 두 번째 매개변수(2): 소수점 아래는 최대 2자리까지만 저장됩니다. 유효한 값과 유효

  13. MySQL로 지난 1시간 동안 추가된 행 조회하기 – date_sub()와 now() 활용법

    MySQL에서 지난 1시간 내에 추가된 행 가져오기MySQL에서는 date_sub() 함수와 now() 함수를 함께 사용하면 현재 시간을 기준으로 지난 한 시간 동안 추가된 행을 간단하게 조회할 수 있습니다. 로그 기록 분석, 실시간 모니터링 등 최근 데이터만 다뤄야 할 때 매우 유용한 방법입니다.기본 문법기본적인 쿼리 문법은 다음과 같습니다.select * from yourTableName where yourDateTimeColumnName >= date_sub(now(), interval 1 hour);date_sub(no

  14. MySQL TINYINT(1)는 최대 127까지 저장할 수 있을까?

    MySQL에서 TINYINT 타입에 대해 알아야 할 핵심 사항을 먼저 정리해 보겠습니다.TINYINT 타입은 1바이트, 즉 8비트를 차지합니다.TINYINT(N)에서 N은 표시하고자 하는 디스플레이 폭(display width)을 의미합니다.예를 들어, TINYINT(1)는 디스플레이 폭이 1이라는 뜻일 뿐입니다.TINYINT의 최솟값과 최댓값그렇다면 TINYINT가 저장할 수 있는 값의 범위는 어떻게 될까요?TINYINT의 최댓값 = (2^(8-1) - 1) = 127 TINYINT의 최솟값 = -(2^(8-1)) = -128즉,

  15. MySQL에서 특정 길이의 문자열 필드 조회하기: char_length()와 length() 완벽 가이드

    MySQL에서 특정 길이를 가진 문자열 필드를 조회하려면 char_length() 함수 또는 length() 함수를 사용하면 됩니다. 두 함수는 비슷해 보이지만 측정 단위가 다르다는 점에서 중요한 차이가 있습니다.기본 문법Case 1: char_length() 사용문자열의 길이를 문자 수 기준으로 측정할 때 사용합니다. 한글처럼 멀티바이트 문자를 다룰 때도 글자 수 그대로 계산되므로 직관적입니다.select * from yourTableName where char_length(yourColumnName) = anySpecificLe

  16. MySQL에서 관련성(Relevance) 기준으로 결과를 정렬하는 방법

    MySQL에서 검색어와의 관련성을 기준으로 결과를 정렬하려면 CASE 문을 활용할 수 있습니다. CASE 문은 조건에 따라 우선순위를 부여하여, 검색어가 이름의 시작 부분에 있는 경우를 가장 높은 관련성으로 처리하는 식으로 유연한 정렬이 가능합니다.개념을 이해하기 위해 실제 예제 테이블을 만들어 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 사용자 정보를 저장할 테이블을 생성합니다.mysql> create table OrderByRelevance-> (-> UserId int,-> UserName varch

  17. MySQL에서 두 날짜 간의 시간 차이를 시간(Hour) 단위로 구하는 방법

    MySQL에서 두 날짜·시간(datetime) 값 사이의 차이를 시간 단위로 구하고 싶다면 TIMESTAMPDIFF() 함수를 사용하면 됩니다. 여기에 ABS() 함수를 함께 사용하면 시작 시간과 종료 시간의 순서와 관계없이 항상 양수인 절대값을 얻을 수 있습니다.기본 문법SELECT ABS(TIMESTAMPDIFF(HOUR,yourColumnName1,yourColumnName2)) as anyVariableName from yourTableName;문법을 제대로 이해하기 위해 실제 테이블을 만들어 예제를 살펴보겠습니다.1. 테이

  18. MySQL에서 문자열 내 마지막 부분 문자열의 위치(인덱스) 구하는 방법

    MySQL에서 주어진 문자열 안에서 마지막 부분 문자열(substring)의 위치를 찾으려면 CHAR_LENGTH() 함수와 LOCATE() 함수를 함께 활용하면 됩니다.핵심 원리는 간단합니다. 먼저 전체 문자열의 길이를 구한 뒤, 문자열을 뒤집어(REVERSE) 구분자가 처음 나타나는 위치를 찾으면 그 차이가 곧 마지막 부분 문자열의 시작 인덱스가 됩니다.기본 문법사용하는 문법은 다음과 같습니다.SELECT CHAR_LENGTH(yourColumnName) - LOCATE(yourDelimiter, REVERSE(yourColum

  19. BIGINT(8)은 MySQL이 저장할 수 있는 가장 큰 정수일까?

    BIGINT(8)의 숫자 8의 의미많은 개발자가 BIGINT(8)의 숫자 8을 저장 크기로 오해하곤 하지만, 실제로 이 숫자는 표시 너비(display width)를 나타냅니다. 즉, 데이터가 화면에 어떻게 출력될지를 결정할 뿐, 실제 저장 용량이나 값의 범위에는 아무런 영향을 주지 않습니다.BIGINT의 실제 크기와 값 범위BIGINT는 항상 8바이트(64비트)를 차지합니다. 따라서 괄호 안의 숫자와 관계없이 저장 공간은 동일하게 유지됩니다.부호 있는(SIGNED) 범위: -9,223,372,036,854,775,808 ~ 9,2

  20. MySQL에서 INT를 DATETIME으로 변환하는 방법 (FROM_UNIXTIME 함수 활용)

    MySQL에서 INT를 DATETIME으로 변환하는 방법MySQL에서는 내장 함수인 FROM_UNIXTIME()을 사용하여 INT 타입의 유닉스 타임스탬프 값을 DATETIME 형식으로 간편하게 변환할 수 있습니다. 유닉스 타임스탬프란 1970년 1월 1일 00:00:00 UTC부터 경과한 초(second)를 나타내는 정수 값입니다.기본 문법은 다음과 같습니다.SELECT FROM_UNIXTIME(yourColumnName,%Y-%m-%d) as AnyVariableName from yourTableName;1. 예제 테이블 생성먼

Total 4564 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:160/229  20-컴퓨터/Page Goto:1 154 155 156 157 158 159 160 161 162 163 164 165 166