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

MySQL

  1. MySQL NOT NULL 컬럼에 빈 문자열(Empty String)을 넣을 수 있을까?

    MySQL에서 빈 문자열과 NULL은 다르다PHP에서는 빈 문자열(empty string)과 NULL이 사실상 같은 값으로 취급되지만, MySQL에서는 상황이 다릅니다. 즉, 빈 문자열은 NULL과 동일하지 않습니다. 따라서 NOT NULL 제약 조건이 설정된 컬럼에도 빈 문자열은 정상적으로 삽입할 수 있습니다.이를 실제 예제를 통해 확인해 보겠습니다.1. 테스트 테이블 생성먼저 Name 컬럼에 NOT NULL 제약 조건이 적용된 테이블을 생성합니다.mysql> create table EmptyStringNotNullDemo

  2. MySQL LIKE 검색에서 와일드카드(%) 위치가 성능을 좌우하는 이유

    선행 와일드카드는 MySQL 검색 성능을 향상시키지 못합니다결론부터 말씀드리면, 아니요. LIKE 조건에서 와일드카드(%)가 문자열 앞쪽에 위치하는 패턴(예: %John)을 사용하면 MySQL은 해당 컬럼에 설정된 인덱스를 활용할 수 없습니다. 인덱스는 기본적으로 값의 앞부분부터 정렬된 구조(B-Tree)이기 때문에, 시작 부분을 알 수 없는 선행 와일드카드 검색은 결국 테이블 전체를 스캔하는 풀 스캔(Full Table Scan)으로 이어져 성능이 크게 저하됩니다.반면 와일드카드가 문자열 뒤쪽에 오는 후행 와일드카드 패턴(예: J

  3. phpMyAdmin에서 MySQL 데이터베이스의 DECIMAL 소수점 자릿수와 스케일 지정 방법

    phpMyAdmin에서 DECIMAL 타입의 정밀도와 스케일 설정하기MySQL에서 테이블을 생성할 때 숫자 데이터의 소수점 이하 자릿수(스케일)를 정확하게 지정해야 하는 경우가 많습니다. phpMyAdmin을 사용하면 별도의 SQL 명령 없이도 화면에서 간편하게 설정할 수 있습니다. 이 글에서는 DECIMAL 데이터 타입에 정밀도(Precision)와 스케일(Scale)을 지정하는 방법을 단계별로 살펴보겠습니다.1단계: 데이터베이스 선택 및 테이블 생성테이블을 만들기 전에 먼저 사용할 데이터베이스를 선택해야 합니다. 여기서는 예제용

  4. MySQL에서 IF 문과 WHILE 루프를 함께 구현하는 방법 – 저장 프로시저 완벽 가이드

    MySQL에서 IF 문으로 WHILE 루프 구현하기 MySQL에서는 저장 프로시저(Stored Procedure) 안에서 WHILE 루프와 IF 문을 조합하여 반복 처리 로직을 손쉽게 구현할 수 있습니다. 이번 글에서는 현재 달의 모든 날짜를 하루씩 검사하면서 주말을 제외한 평일(월요일~금요일)의 개수를 계산하는 실전 예제를 통해 그 방법을 단계별로 살펴보겠습니다. 1. 저장 프로시저 생성하기 아래는 WHILE 루프와 IF 문을 함께 사용하는 저장 프로시저를 생성하는 쿼리입니다: mysql> DELIMITER // mysql

  5. MySQL 테이블에서 대문자로만 구성된 문자열을 찾는 방법

    MySQL 테이블에서 모든 문자가 대문자로 되어 있는 문자열만 조회하려면 BINARY 키워드와 UPPER() 함수를 함께 사용해야 합니다. 기본적인 문법은 다음과 같습니다.SELECT * FROM yourTableName WHERE yourColumnName = BINARY UPPER(yourColumnName);여기서 BINARY를 사용하는 이유는 중요합니다. MySQL은 기본적으로 문자열 비교 시 대소문자를 구분하지 않기 때문에, 단순히 UPPER() 함수와 비교만 하면 소문자가 포함된 값도 함께 반환될 수 있습니다. BINAR

  6. MySQL에서 오늘 날짜가 두 DATE 열 사이에 있는 행을 선택하는 방법

    두 개의 날짜(DATE) 열 사이에 오늘 날짜가 포함되는 MySQL 행을 조회하려면 AND 연산자를 사용해야 합니다. 기본 구문은 다음과 같습니다.SELECT * FROM yourTableName WHERE yourDateColumnName1 <= yourDateValue AND yourDateColumnName2 >= yourDateValue;즉, 시작 날짜 열이 조회하려는 날짜보다 작거나 같고, 동시에 종료 날짜 열이 그 날짜보다 크거나 같은 조건을 모두 만족하는 행만 반환됩니다.예제 테이블 생성구문을 실제로 이해하기

  7. MySQL에서 두 SELECT 쿼리의 차이 구하는 방법 – NOT IN 서브쿼리 활용하기

    MySQL에서 두 개의 SELECT 문 사이의 차이를 구하고 싶다면 서브쿼리(subquery)를 활용하는 것이 가장 간단한 방법입니다. 바깥쪽 쿼리에서 NOT IN 연산자와 함께 서브쿼리를 사용하면, 특정 조건에 해당하지 않는 레코드만 손쉽게 추출할 수 있습니다.기본 문법두 SELECT 결과의 차이를 구하는 기본적인 문법은 다음과 같습니다.SELECT * FROM yourTableName WHERE yourColumnName NOT IN (SELECT yourColumnName FROM yourTableName WHERE yourC

  8. MySQL에서 TIMEDIFF 결과를 일·시·분·초 형식으로 변환하는 방법

    MySQL에서 TIMEDIFF() 함수의 출력 결과를 일(DAYS), 시간(HOURS), 분(MINUTES), 초(SECONDS) 형식으로 변환하려면 CONCAT() 함수를 활용해야 합니다. 이 글에서는 실제 예제를 통해 단계별로 변환 과정을 살펴보겠습니다.1. 샘플 테이블 생성하기먼저 시작 시간과 종료 시간을 저장할 테이블을 만듭니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table convertTimeDifferenceDemo -> ( -> Id int NOT NULL AUTO_IN

  9. MySQL DECIMAL을 소수점 이하 10자리 정밀도로 설정하는 방법

    MySQL DECIMAL을 소수점 이하 10자리 정밀도로 설정하는 방법MySQL의 DECIMAL() 자료형은 두 개의 매개변수를 받습니다. 첫 번째 매개변수는 저장할 숫자의 전체 자릿수를 의미하고, 두 번째 매개변수는 소수점 이하 자릿수를 나타냅니다. 따라서 DECIMAL(10,10)으로 선언하면 소수점 이하 10자리만 사용할 수 있으며, 정수 부분은 저장할 수 없게 됩니다.예를 들어 DECIMAL(20,10)을 사용하면 전체 20자리 중 소수점 이하 10자리까지 정확하게 저장할 수 있습니다. 즉, 0.9999999999처럼 소수점

  10. MySQL ERROR 1406 해결 방법: 열에 비해 데이터가 너무 깁니다(Data too long for column)

    MySQL ERROR 1406, 왜 발생할까요?ERROR 1406 (22001): Data too long for column 오류는 열에 허용된 크기보다 더 긴 데이터를 저장하려고 시도할 때 발생합니다. 대표적인 사례가 바로 BIT 타입 열입니다. BIT 타입은 비트 값만 저장할 수 있는데, 여기에 일반 문자열을 그대로 넣으려고 하면 varchar나 문자열 데이터가 BIT 데이터 타입보다 크기를 차지하기 때문에 이 오류가 나타납니다.해결 방법: b 접두사 붙이기BIT 타입 열에는 반드시 아래와 같은 문법으로 값을 지정해야 합니다.

  11. MySQL에서 열의 n번째로 높은 값 찾는 방법 (ORDER BY + LIMIT 활용)

    MySQL에서 열(column)의 n번째로 높은 값을 찾으려면 ORDER BY ... DESC와 LIMIT 절을 함께 사용하면 됩니다. 내림차순으로 정렬한 뒤 원하는 순번의 행 하나만 가져오는 방식입니다.예를 들어 어떤 열에서 두 번째로 높은 값을 구하고 싶다면 아래와 같이 작성합니다.SELECT * FROM yourTableName ORDER BY yourColumnName DESC LIMIT 1,1;네 번째로 높은 값을 구하려면 다음과 같이 합니다.SELECT * FROM yourTableName ORDER BY yourColu

  12. MySQL REPLACE() 함수로 데이터베이스 필드에서 특수 문자 제거하기

    MySQL에서 특수 문자를 제거하는 방법MySQL의 REPLACE() 함수를 사용하면 데이터베이스 필드에 포함된 특수 문자를 손쉽게 제거할 수 있습니다. 큰따옴표(" "), 샵 기호(#), 달러 기호($), 퍼센트(%) 같은 특수 문자들이 대표적인 예입니다.기본 문법데이터베이스 필드에서 특수 문자를 제거하는 기본 문법은 다음과 같습니다.UPDATE yourTableNameSET yourColumnName = REPLACE(yourColumnName, yourSpecialCharacters, );이 문법은 지정한 열

  13. MySQL 저장 프로시저에서 문자열 분할 후 반복문으로 값 처리하기

    MySQL 저장 프로시저(Stored Procedure)에서 문자열을 특정 구분자로 분할하고 각 값을 순회하며 처리해야 하는 경우가 종종 있습니다. 이때 REPLACE() 함수를 사용할 필요 없이 SUBSTRING_INDEX()와 LOOP 문을 활용하면 손쉽게 구현할 수 있습니다.1. 저장 프로시저 생성먼저 쉼표(,)로 구분된 문자열을 받아 개별 값으로 분할한 뒤 테이블에 삽입하는 저장 프로시저를 만들어 보겠습니다.mysql> DELIMITER //mysql> CREATE PROCEDURE SP_SplitString(Va

  14. MySQL에서 대용량 SELECT 결과를 청크 단위로 나누어 조회하는 방법

    MySQL에서 대용량 데이터를 청크로 조회하는 이유테이블에 수천, 수만 건의 레코드가 저장되어 있을 때 전체 데이터를 한 번에 SELECT하면 메모리 부하와 응답 지연이 발생할 수 있습니다. 이럴 때 ORDER BY와 LIMIT 절을 조합하면 데이터를 원하는 크기의 청크(chunk) 단위로 나누어 효율적으로 조회할 수 있습니다.기본 문법: ORDER BY와 LIMIT 활용하기대용량 SELECT 결과를 청크 단위로 가져오려면 다음과 같은 기본 문법을 사용합니다.SELECT * FROM yourTableName ORDER BY your

  15. MySQL 트리거로 INSERT·UPDATE 작업 중단하기 – SIGNAL SQLSTATE 완벽 가이드

    MySQL에서 트리거로 삽입·수정 작업을 막는 방법MySQL에서 특정 조건을 만족하지 않는 데이터의 삽입(INSERT)이나 수정(UPDATE) 작업을 강제로 중단하려면 SIGNAL SQLSTATE 명령어를 사용해야 합니다. 이 명령어는 트리거 내부에서 오류를 발생시켜 해당 작업을 즉시 중단하고, 사용자에게 원하는 오류 메시지를 전달할 수 있게 해줍니다.SIGNAL SQLSTATE 트리거 기본 문법트리거를 작성할 때는 먼저 구분자(Delimiter)를 변경한 뒤, BEFORE INSERT 또는 BEFORE UPDATE 시점에 조건을

  16. MySQL 저장 프로시저에서 값 반환하기 – OUT 파라미터와 세션 변수 활용법

    MySQL에서 저장 프로시저(Stored Procedure)의 실행 결과를 외부로 반환하려면 사용자 정의 세션 변수(User-defined Session Variable)를 활용해야 합니다. 핵심은 변수 이름 앞에 @ 기호를 붙이는 것입니다. 세션 변수(@)란 무엇인가? MySQL에서 @ 기호가 붙은 변수는 현재 연결(세션) 동안만 유효한 사용자 정의 변수입니다. 저장 프로시저 내부에서 계산된 값을 이 변수에 담아두면, 프로시저 호출이 끝난 후에도 SELECT 문으로 값을 꺼내 확인할 수 있습니다. 예를 들어 valido라는 변수의

  17. MySQL에서 다른 열의 고유 값별로 합계 구하는 방법 – SUM()과 GROUP BY 완벽 정리

    MySQL에서 특정 열의 고유(distinct) 값별로 다른 열의 합계를 구하려면 집계 함수인 SUM()과 GROUP BY 절을 함께 사용하면 됩니다. 이 조합은 그룹별 통계를 낼 때 가장 기본이 되면서도 강력한 기법입니다.1. 예제 테이블 생성하기먼저 개념을 이해하기 위해 간단한 테이블을 만들어 보겠습니다. 아래 쿼리로 테이블을 생성합니다.mysql> create table SumOfEveryDistinct-> (-> Id int not null,-> Amount int-> );Query OK, 0 ro

  18. MySQL에서 값에 캐리지 리턴(줄바꿈) 추가하는 방법 – CONCAT_WS() 함수 활용 가이드

    MySQL에서 값에 캐리지 리턴 추가하기MySQL에서 값에 캐리지 리턴(carriage return)이나 줄바꿈을 추가하려면 CONCAT_WS() 함수를 사용해야 합니다. 특히 새 줄(new line)을 만들고 싶다면 함수의 첫 번째 매개변수로 \n을 지정하면 됩니다.기본 문법SELECT CONCAT_WS(\n, yourColumnName) AS anyVariableName FROM yourTableName;CONCAT_WS()는 Concatenate With Separator의 약자로, 여러 문자열을 지정한 구분자로 하나로 연결해

  19. MySQL에서 행을 삽입하고 즉시 내용을 조회하는 방법

    MySQL에서 행을 삽입하는 동시에 그 내용을 바로 가져오려면 저장 프로시저(Stored Procedure)를 활용하는 것이 가장 효과적입니다. 먼저 데이터를 저장할 테이블을 생성한 후, 행을 삽입하고 결과를 사용자에게 반환하는 저장 프로시저를 만들어야 합니다.1단계: 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다. 아래 쿼리를 실행하면 자동 증가(AUTO_INCREMENT) 기본키와 이름 컬럼을 가진 테이블이 만들어집니다.mysql> create table InsertRecord_SelectTable ->

  20. MySQL 구분 기호(Delimiter) 오류 원인과 해결 방법

    MySQL 구분 기호 오류란?MySQL에서 구분 기호(delimiter) 오류는 주로 파이프(|)를 세미콜론(;)과 함께 사용할 때, 그리고 MySQL 8.0.12 미만 버전에서 발생합니다.MySQL은 파이프(|)와 세미콜론(;)을 서로 다른 두 개의 구분 기호로 인식합니다. 따라서 저장 프로시저(stored procedure) 작성 시 이 두 기호를 혼동하지 않도록 주의해야 합니다.참고: 본문 예제는 MySQL 8.0.12 버전을 기준으로 작성되었습니다. 이 버전에서는 파이프 구분 기호가 세미콜론과 함께 정상적으로 동작합니다. 반

Total 4564 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:142/229  20-컴퓨터/Page Goto:1 136 137 138 139 140 141 142 143 144 145 146 147 148