MySQL 테이블 생성 시 CHAR_LENGTH() 함수 활용법MySQL에서는 CREATE TABLE 문을 작성하는 시점에 CHAR_LENGTH(컬럼명) 함수를 사용하여 문자열의 길이를 자동으로 저장하는 컬럼을 만들 수 있습니다. 이렇게 다른 컬럼의 값을 기반으로 자동 계산되는 컬럼을 생성 컬럼(Generated Column)이라고 부르며, 데이터가 입력될 때마다 별도의 연산 없이 값이 유지됩니다.테이블 생성 예제먼저 예제를 통해 테이블을 생성해 보겠습니다.mysql> create table DemoTable &nb
MySQL에서 특정 열(하나 또는 두 개)을 기준으로 중복된 행을 모두 조회하려면 서브쿼리(subquery)와 HAVING 절을 함께 사용하면 됩니다. 이 글에서는 예제 테이블을 만들고, 이름이 두 번 이상 나타나는 즉, 중복된 데이터를 찾아내는 과정을 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 학생 정보를 저장할 테이블을 생성합니다.mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFir
대량의 데이터를 다룰 때 전체 결과를 한꺼번에 가져오는 것은 비효율적입니다. MySQL에서는 LIMIT 절을 사용해 한 번에 원하는 개수(N개)의 행만 조회할 수 있습니다. 이 글에서는 LIMIT 절의 기본 문법부터 실전 예제까지 단계별로 살펴보겠습니다.LIMIT 절 기본 문법한 번에 N개의 행만 가져오려면 아래와 같이 LIMIT 연산자를 사용합니다.SELECT * FROM yourTableName LIMIT 0, N;여기서 첫 번째 숫자는 시작 위치(오프셋), 두 번째 숫자는 가져올 행의 개수를 의미합니다. 즉, LIMIT 0,
MySQL에서 별칭(Alias)은 컬럼이나 테이블에 임시 이름을 부여하는 기능입니다. 별칭을 지정할 때는 AS 키워드를 명시적으로 사용할 수도 있고, 생략하고 컬럼 이름만 나란히 적는 단축 문법을 사용할 수도 있습니다. 두 방식 모두 동일한 결과를 반환합니다.실제 예제를 통해 두 방법의 차이를 확인해 보겠습니다.1. 예제 테이블 생성먼저 실습에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
MySQL에서 레코드가 생성된(삽입된) 시간을 자동으로 저장하려면 DEFAULT CURRENT_TIMESTAMP 옵션을 사용하면 됩니다. 다만 이 방식은 레코드가 삽입되는 시점에만 적용되며, 이후 레코드를 수정해도 해당 값은 변경되지 않는다는 점을 유의해야 합니다.1. 테이블 생성하기먼저 TIMESTAMP 타입의 컬럼에 DEFAULT CURRENT_TIMESTAMP를 지정하여 테이블을 생성합니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRI
MySQL ELT()와 RAND() 함수로 목록에서 무작위 값 추출하기MySQL에서 미리 정의된 특정 값 목록 중 하나를 무작위로 선택하고 싶다면 ELT() 함수와 RAND() 함수를 함께 사용하면 됩니다. 이 조합은 간단하면서도 효과적으로 원하는 결과를 얻을 수 있습니다.기본 문법ELT(N, value1, value2, ...) 함수는 N번째 위치에 해당하는 값을 반환합니다. 여기에 RAND()를 곱해 인덱스를 무작위로 만들면 목록에서 임의의 값이 선택됩니다.mysql> SELECT ELT(FLOOR(RAND() * 10)
MySQL DROP TABLE과 TRUNCATE TABLE의 차이MySQL에서 DROP TABLE 명령어는 테이블을 완전히 제거하며, 테이블에 저장된 모든 데이터까지 함께 삭제합니다. 반면, 데이터는 모두 지우되 테이블 구조는 그대로 유지하고 싶다면 TRUNCATE TABLE 명령어를 사용하는 것이 좋습니다. TRUNCATE는 테이블의 데이터를 비운 후 테이블 구조를 다시 생성합니다.DROP TABLE 예제먼저 DROP TABLE의 동작을 확인해 보겠습니다. 우선 테이블을 생성합니다.mysql> create table Demo
정확한 단어 검색을 위한 기본 구문MySQL에서 문자열 안에 포함된 정확한 단어를 검색하려면 REGEXP 연산자와 함께 아래와 같은 구문을 사용하면 됩니다.select *from yourTableNamewhereyourColumnName regexp (^|[[:space:]])yourWord([[:space:]]|$);이 정규 표현식은 검색 대상 단어가 문자열의 시작(^), 공백([[:space:]])으로 구분되거나 문자열의 끝($)에 위치하는 경우에만 일치시킵니다. 덕분에 MySQL을 검색할 때 MySQLTutorial처럼 해당
MySQL에서는 SUM() 집계 함수를 사용하여 두 열을 곱한 값들의 합계를 손쉽게 구할 수 있습니다. 예를 들어, 상품별로 수량 × 가격을 계산한 뒤 상품 이름별로 그룹화하여 총 금액을 구하는 경우에 유용합니다.1. 샘플 테이블 생성먼저 실습용 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, &nb
MySQL에서 조회 결과 중 특정 조건에 일치하는 행을 가장 앞쪽에 표시하고 싶다면 ORDER BY 절을 활용하면 됩니다. 이 글에서는 실제 예제를 통해 그 방법을 단계별로 살펴보겠습니다.1. 테이블 생성하기먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( Value int ); Query OK, 0 rows affected (0.20 sec)2. 데이터 삽입하기INSERT 명령을 사용해 테이블에 여러 개의 레코
MySQL에서 CONCAT()으로 열을 결합한 후 LIKE로 검색하기MySQL에서는 CONCAT() 함수를 사용하면 여러 개의 열을 하나의 문자열로 결합한 뒤, LIKE 연산자와 함께 검색할 수 있습니다. 이 방법은 두 개 이상의 컬럼에 걸쳐 있는 값을 하나의 패턴으로 찾아야 할 때 매우 유용합니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMAR
SOUNDEX() 함수란 무엇인가?MySQL의 SOUNDEX() 함수는 문자열에 대한 사운덱(soundex) 코드를 반환하는 함수입니다. 사운덱은 영어 이름 등의 단어를 발음 기준으로 인코딩하는 알고리즘으로, 발음이 서로 비슷한 두 문자열은 동일한 사운덱 값을 갖게 됩니다. 이러한 특성 덕분에 철자는 다르지만 발음이 유사한 데이터를 검색할 때 매우 유용하게 활용됩니다.SOUNDEX() 쿼리 기본 문법MySQL에서 SOUNDEX()를 사용해 데이터를 조회하려면 아래와 같은 구문을 사용합니다.SELECT * FROM yourTableN
MySQL에서 부울 값 업데이트하기MySQL에서 부울(Boolean) 값은 내부적으로 TINYINT(1)로 저장되며, true는 1, false는 0으로 처리됩니다. 부울 값을 업데이트하려면 UPDATE 문의 SET 절을 사용하면 됩니다. 특히 NOT 연산자(!)를 활용하면 현재 값을 손쉽게 반전(토글)할 수 있습니다.먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMA
MySQL에서 음수 저장하기: TINYINT 데이터 타입MySQL에서 음수를 저장하려면 TINYINT 데이터 타입을 사용할 수 있습니다. TINYINT는 부호 있는(signed) 정수를 저장할 수 있으며, 저장 가능한 범위는 -128부터 127까지입니다.TINYINT 컬럼 생성 문법다음은 TINYINT 타입의 컬럼을 포함한 테이블을 생성하는 기본 문법입니다.CREATE TABLE yourTableName ( yourColumnName TINYINT ... );실습 예제: TINYINT 테이블 만들기먼저 TINYINT 타입
table_type 변수가 더 이상 작동하지 않는 이유MySQL 시스템 변수 table_type은 MySQL 5.5.3 버전부터 공식적으로 지원 중단(deprecated)되었기 때문에 더 이상 작동하지 않습니다. 이 변수 대신 default_storage_engine 변수를 사용해야 합니다.default_storage_engine 설정 방법기본 스토리지 엔진을 변경하는 구문은 다음과 같습니다.SET default_storage_engine = yourTableEngine;엔진 이름으로는 InnoDB 또는 MyISAM 등을 지정할 수
MySQL에서 조건을 판단하면서 동시에 수학 연산을 처리해야 하는 경우가 있습니다. 이럴 때 CASE 문을 활용하면 IF와 유사한 조건 분기 로직을 손쉽게 구현할 수 있으며, ELSE 절에서도 다양한 연산이 가능합니다.예제 테이블 생성하기먼저 실습에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FruitName varchar(100), FruitPrice int );
쉼표(,)로 구분된 여러 숫자가 저장된 열에서 특정 숫자를 포함하는 행을 조회하려면 FIND_IN_SET() 함수를 사용해야 합니다. 이 함수는 쉼표로 구분된 문자열 목록 안에서 원하는 값의 위치를 찾아주며, 값이 존재하면 해당 위치를 반환하고 존재하지 않으면 0을 반환합니다.1. 샘플 테이블 생성먼저 예제에 사용할 테이블을 생성해 보겠습니다.mysql> create table DemoTable ( CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, CustomerNam
MySQL UPDATE 쿼리에서 CASE 문 사용하기UPDATE 쿼리를 실행할 때 조건에 따라 서로 다른 값을 적용해야 하는 경우가 자주 있습니다. 이럴 때 CASE 문을 함께 사용하면 하나의 쿼리로 여러 조건 분기를 처리할 수 있어 매우 유용합니다.예를 들어, 점수 범위에 따라 다른 방식으로 값을 갱신하는 상황을 생각해 볼 수 있습니다. 이번 글에서는 실제 예제를 통해 UPDATE 쿼리와 CASE 문을 결합하는 방법을 단계별로 살펴보겠습니다.1단계: 테이블 생성먼저 예제에 사용할 테이블을 생성합니다. UserId는 자동 증가되는
MySQL에서 기존 테이블의 특정 열 뒤에 새로운 열을 추가하고, 해당 열에 기본값까지 정의하려면 ALTER 명령어를 사용해야 합니다. 열의 위치는 AFTER 절로 지정하고, 기본값은 SET DEFAULT 구문으로 설정할 수 있습니다.실제 동작 과정을 단계별로 살펴보겠습니다.1단계: 테이블 생성하기먼저 예제로 사용할 테이블을 생성합니다.mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstN
MySQL에서 이미 존재하는 레코드의 중복 삽입을 방지하려면 해당 컬럼에 UNIQUE INDEX(고유 인덱스)를 설정해야 합니다. 고유 인덱스가 적용된 컬럼에는 동일한 값을 다시 삽입할 수 없으며, 중복 데이터가 들어올 경우 MySQL은 오류를 반환합니다.1. 테이블 생성먼저 예제에 사용할 테이블을 생성합니다.mysql> create table DemoTable ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName varchar(20) ); Query OK,