MySQL에서는 REPEAT() 함수를 사용하면 문자열을 지정한 횟수만큼 손쉽게 반복(복제)할 수 있습니다. 구분선이나 패턴 문자를 생성할 때 특히 유용하게 활용됩니다.REPEAT() 함수 문법REPEAT(Str, No.)매개변수 설명Str: 반복하고자 하는 원본 문자열입니다.No.: 문자열을 몇 번 반복할지 지정하는 숫자 값입니다.사용 예시아래 예시에서는 #* 문자열을 5번 반복하여 출력합니다.mysql> Select REPEAT(#*,5); +----------------+ | REPEAT(#*,5) | +---------
값이 할당되지 않은 MySQL 사용자 변수의 반환값MySQL에서 명시적으로 값을 할당하지 않은 사용자 변수를 참조하면 NULL이 반환됩니다. 즉, 해당 변수의 값은 NULL로 처리됩니다.사용자 변수는 SET 문이나 SELECT ... := 구문을 통해 값을 할당할 수 있으며, 한 번도 값이 대입된 적이 없는 변수는 초기화되지 않은 상태로 존재하게 됩니다. 이러한 변수를 조회하면 에러가 발생하지 않고 조용히 NULL을 돌려주기 때문에, 쿼리 작성 시 주의가 필요합니다.예제mysql> Select @X, @Y, @Z, @S, @G
여러 개의 행을 반환하는 명령문을 사용해 사용자 변수(user variable)에 값을 할당하면 어떤 결과가 나올까요? 결론부터 말하면, 사용자 변수에는 단 하나의 값만 저장할 수 있기 때문에 결과 집합 중 마지막 행의 값만 변수에 남게 됩니다.예제: Tender 테이블 데이터 확인아래 예제는 Tender라는 테이블의 데이터를 사용하여 이 동작을 보여줍니다.mysql> select * from Tender; +----+---------------+--------------+ | Sr | CompanyName | Tender
SET 문으로 SELECT 결과를 사용자 변수에 할당하기MySQL에서 SET 문을 사용하여 SELECT 쿼리의 결과를 사용자 변수에 할당하려면, SELECT 문을 괄호(())로 감싼 서브쿼리 형태로 작성해야 합니다.이때 반드시 지켜야 할 조건이 있습니다. 바로 해당 SELECT 문이 단일 값(single value)만 반환해야 한다는 것입니다. 여러 행이나 여러 열을 반환하는 쿼리는 SET 문에 할당할 수 없습니다.예제 테이블: Tender설명을 돕기 위해 다음과 같은 Tender 테이블의 데이터를 사용하겠습니다.mysql>
MySQL의 사용자 변수(User Variable)는 세션 내에서 값을 저장하고 재사용할 수 있는 편리한 기능입니다. 하지만 효과적으로 활용하려면 몇 가지 중요한 속성을 반드시 이해해야 합니다. 지금부터 MySQL 사용자 변수가 가진 네 가지 핵심 속성을 예제와 함께 자세히 살펴보겠습니다.1. 대소문자를 구분하지 않음MySQL 사용자 변수는 대소문자를 구분하지 않습니다. 즉, @A와 @a는 동일한 변수로 취급됩니다. 다만 MySQL 5 버전 이전에는 대소문자가 구분되었으므로, 레거시 시스템을 다룰 때는 이 점에 유의해야 합니다.예제
mysqldump를 사용해 생성한 백업 파일은 기존에 존재하는 데이터베이스에 복원할 수도 있고, 새로운 데이터베이스를 만든 후 그곳에 복원할 수도 있습니다. 이때 MySQL의 SOURCE 명령문을 활용하면 손쉽게 복원 작업을 수행할 수 있습니다.복원 예제다음 예제에서는 query라는 데이터베이스에서 mysqldump로 백업해 둔 student_info.sql 파일을 tutorials라는 이름의 다른 데이터베이스로 복원하는 과정을 살펴보겠습니다.먼저 복원할 대상 데이터베이스를 선택한 뒤, SOURCE 명령어로 덤프 파일을 실행합니다.
MySQL에서는 mysqldump 클라이언트 프로그램을 사용하여 데이터베이스에 있는 특정 테이블만 골라서 백업할 수 있습니다. 백업 결과는 확장자가 .sql인 파일로 저장되며, 이 파일에는 테이블 구조와 데이터를 복원하는 데 필요한 SQL 문이 모두 포함됩니다.다음 예시를 통해 구체적인 사용 방법을 살펴보겠습니다.예시이 예시에서는 mysqldump 클라이언트 프로그램을 사용하여 query 데이터베이스에 있는 student_info 테이블을 student_info.sql이라는 파일로 백업합니다. 아래 명령어를 실행하면 됩니다.C:\m
MySQL ORD() 함수란?MySQL의 ORD() 함수는 문자열에서 가장 왼쪽에 있는 문자가 멀티바이트(multi-byte) 문자일 경우, 해당 문자의 코드를 다음 공식을 사용하여 반환합니다.(첫 번째 바이트 코드) + (두 번째 바이트 코드 × 256) + (세 번째 바이트 코드 × 256²)반면 ASCII() 함수는 주어진 문자열에서 가장 왼쪽 문자의 ASCII 값을 그대로 반환합니다.ORD()와 ASCII()의 차이점두 함수의 차이는 가장 왼쪽 문자가 멀티바이트 문자인지 여부에 따라 결정됩니다. 만약 가장 왼쪽 문자가 멀티바
MySQL OCTET_LENGTH() 함수란?MySQL의 OCTET_LENGTH() 함수는 문자열의 길이를 바이트(옥텟) 단위로 계산하여 반환하는 함수입니다. 기본적으로 LENGTH() 함수와 동일한 역할을 하며, 사실상 LENGTH() 함수의 동의어(synonym)라고 볼 수 있습니다.함수 이름의 OCTET은 8비트 데이터 단위인 옥텟을 의미합니다. 싱글바이트 문자 집합에서는 문자 수와 바이트 수가 일치하지만, UTF-8처럼 멀티바이트 문자 집합을 사용하는 경우 한글 등의 문자가 여러 바이트로 계산될 수 있으므로 주의가 필요합니다
MySQL에서 데이터 열(column)에 저장된 문자 수를 계산하려면 OCTET_LENGTH() 함수의 인수로 해당 열 이름을 전달하기만 하면 됩니다. 이 함수는 SELECT 절에서 참조하면 각 행의 길이를 결과에 함께 표시해 주며, WHERE 절에서 사용하면 비교 값으로 활용되어 특정 조건을 만족하는 행만 반환할지 여부를 판단할 수도 있습니다.OCTET_LENGTH() 함수의 기본 개념OCTET_LENGTH() 함수는 인수로 전달된 문자열 또는 열 값의 옥텟(바이트) 길이를 반환합니다. latin1과 같은 단일 바이트 문자 집합을
MySQL에서 mysqldump 클라이언트 프로그램을 사용하면 서버에 존재하는 모든 데이터베이스를 확장자가 .sql인 단일 파일로 손쉽게 백업할 수 있습니다. 이 파일에는 테이블 구조와 데이터를 복원할 수 있는 덤프 정보가 모두 포함됩니다.모든 데이터베이스 백업하기모든 데이터베이스를 한 번에 백업하려면 --all-databases 옵션을 사용합니다. 아래 예시를 통해 확인해 보겠습니다.예제다음 명령어는 mysqldump 클라이언트 프로그램을 이용해 모든 데이터베이스의 백업을 alldatabases.sql이라는 파일 하나에 저장합니다
mysqldump로 데이터베이스 전체를 백업(덤프)한 후, 이를 다시 복원해야 하는 상황이 자주 발생합니다. 이 경우 mysql 명령어를 사용하면 간단하게 복원할 수 있습니다. 덤프 파일로 데이터베이스 복원하기 다음 예시처럼 명령어를 실행하면 덤프 파일의 내용을 데이터베이스로 복원할 수 있습니다. C:\mysql\bin>mysql -u root query < tutorials.sql 명령어 동작 방식 위 명령어는 tutorials.sql 파일에 저장된 tutorials 데이터베이스의 덤프 내용을 query라는 이름의 다른
MySQL LOCATE(), POSITION(), INSTR() 함수의 공통점과 차이점MySQL에서 LOCATE(), POSITION(), INSTR() 함수는 모두 하나의 문자열 안에서 특정 부분 문자열(substring)이 위치한 자리를 반환하는 데 사용됩니다. 세 함수는 기본적으로 동일한 역할을 수행하지만, LOCATE() 함수는 나머지 두 함수와 몇 가지 중요한 차이점을 가지고 있습니다.1. 검색 시작 위치 지정 가능 여부가장 큰 차이점은 LOCATE() 함수만 선택적 인수를 통해 검색을 시작할 위치를 지정할 수 있다는 점입
mysqldump 덤프 파일로 데이터베이스 복원하기mysqldump를 사용해 여러 개의 데이터베이스 또는 서버의 모든 데이터베이스를 백업(덤프)해 두었다면, 이를 손쉽게 다시 복원할 수 있습니다. 복원 작업은 mysql 클라이언트 명령어와 리다이렉션(<)을 이용해 덤프 파일을 MySQL 서버에 그대로 적용하는 방식으로 진행됩니다.여러 데이터베이스 복원하기예를 들어 tutorials와 query1이라는 두 개의 데이터베이스를 하나의 덤프 파일인 tutorials_query1.sql에 저장해 둔 경우, 아래와 같은 명령어로 한 번
한 MySQL 서버에서 다른 MySQL 서버로 테이블이나 데이터베이스를 복사해야 할 때는 mysqldump 유틸리티를 사용하는 것이 가장 일반적이고 안정적인 방법입니다. mysqldump는 데이터베이스 이름과 테이블 이름을 인자로 받아 해당 내용을 SQL 문 형태의 덤프 파일로 출력해 줍니다.방법 1: 덤프 파일을 이용한 복사1단계 — 원본 서버에서 데이터 덤프 생성먼저 원본 데이터베이스가 있는 호스트에서 아래 명령어를 실행합니다. 이 명령은 지정한 테이블의 전체 내용을 dump.txt 파일로 저장합니다.$ mysqldump -u
MySQL의 TRIM() 함수에서 첫 번째 인수(BOTH, LEADING, TRAILING)를 명시적으로 지정하지 않으면, MySQL은 기본값으로 BOTH를 적용합니다. 이는 문자열의 앞쪽과 뒤쪽 양쪽 끝에서 지정된 문자를 모두 제거한다는 의미입니다. 다음 예제를 통해 이 동작을 확인해 보겠습니다.예제mysql> SELECT TRIM(A FROM ABCDAEFGAA); +-----------------------------+ | TRIM(A FROM ABCDAEFGAA) | +----------------------------
MySQL SUBSTRING() 함수란?MySQL에서는 SUBSTRING() 함수를 사용하여 문자열에서 원하는 부분 문자열(substring)을 손쉽게 추출할 수 있습니다. 이 함수는 지정한 위치부터 시작하여 주어진 길이만큼의 부분 문자열을 반환하며, 다음과 같은 네 가지 형태로 사용할 수 있습니다.SUBSTRING(str, pos)SUBSTRING(str FROM pos)SUBSTRING(str, pos, len)SUBSTRING(str FROM pos FOR len)각 형태의 동작 방식길이(len) 인수가 없는 형태는 문자열 s
MySQL의 TRIM() 함수를 사용하려면 원본 문자열에서 제거하고자 하는 문자열이 무엇인지 미리 알고 있어야 합니다. 이것이 TRIM() 함수의 가장 큰 한계점으로, 제거하려는 문자열의 값이 행마다 서로 다른 경우에는 활용하기 어렵습니다. 예를 들어, 여러 문자열의 마지막 두 문자를 잘라내고 싶은데 각 문자열마다 마지막 두 글자가 모두 다르다면 TRIM() 함수로는 일괄 처리할 수 없습니다.예시mysql> Select * from Employee; +------+----------------+------------+----
MySQL의 MAKE_SET() 함수는 10진수를 비트(2진수)로 변환한 뒤, 해당 수에서 설정된(set) 모든 비트에 대응하는 문자열을 쉼표로 구분된 집합 형태로 반환하는 함수입니다. 이때 첫 번째 문자열은 최하위 비트에, 두 번째 문자열은 그다음 비트에 순서대로 매핑됩니다.문법(Syntax)MAKE_SET(bits, str1, str2,…)bits: 10진수 또는 2진수 값을 가질 수 있는 표현식입니다.str1, str2…: 각 비트에 대응되는 문자열 목록입니다.동작 원리MAKE_SET() 함수는 전달받
MySQL에서 테이블 열(column)에 저장된 값에서 부분 문자열(substring)을 추출하려면 SUBSTRING(), MID(), SUBSTR() 함수 중 하나를 사용할 수 있습니다. 이 세 함수는 기능적으로 완전히 동일하며, 어떤 것을 사용해도 결과는 같습니다.중요한 점은 문자열 대신 열 이름을 함수의 첫 번째 인수로 전달해야 한다는 것입니다. 즉, 일반적인 문자열 위치에 추출하고자 하는 열의 이름을 지정하면 됩니다.기본 문법SELECT 열이름, SUBSTRING(열이름, 시작위치, 길이) FROM 테이블이름;시작위치: 추출