MySQL에서 테이블에 데이터가 전혀 없는 경우, 즉 테이블이 비어 있을 때만 INSERT 문을 실행하고 싶다면 서브쿼리(subquery)와 NOT EXISTS 조건을 함께 사용하면 됩니다.기본 문법아래 문법은 오직 테이블이 비어 있을 때만 레코드를 삽입합니다. 만약 테이블에 이미 데이터가 하나라도 존재한다면 아무런 레코드도 추가되지 않습니다.INSERT INTO yourTableName(yourColumnName) SELECT anyValue WHERE NOT EXISTS (SELECT * FROM yourTableName);예제
MySQL에서 쿼리를 작성할 때 테이블 이름이나 컬럼 이름 주위에 따옴표를 항상 붙여야 할까요? 결론부터 말하면 항상 필요한 것은 아니지만, 예약어(reserved word)를 사용하는 경우에는 반드시 필요합니다. 백틱(`)이 필요한 이유 테이블 이름이나 컬럼 이름이 MySQL의 예약어와 겹친다면, 해당 이름을 백틱(backtick, `)으로 감싸주어야 합니다. 그렇지 않으면 MySQL이 이를 SQL 문법으로 해석하여 오류가 발생합니다. 기본 문법은 다음과 같습니다. SELECT * FROM `table` WHERE `where`
MySQL에서 기존 테이블을 복사해 새 테이블 생성하기MySQL에서는 CREATE TABLE ... LIKE 문법을 사용하면 기존 테이블의 구조를 그대로 복제한 새 테이블을 간단하게 만들 수 있습니다. 컬럼 정의, 데이터 타입, PRIMARY KEY, 인덱스까지 모두 동일하게 복사되므로 백업용 테이블이나 테스트용 테이블을 만들 때 매우 유용합니다.1. 기본 문법CREATE TABLE 새_테이블_이름 LIKE 기존_테이블_이름;LIKE 키워드 뒤에 원본 테이블 이름을 지정하면 해당 테이블과 완전히 같은 구조의 빈 테이블이 생성됩니다.
MySQL에서 16진수를 10진수로 변환하는 방법MySQL에서 16진수를 다루려면 CONV() 함수를 사용하면 됩니다. 이 함수는 서로 다른 진법 사이의 변환을 손쉽게 처리해 줍니다. 기본 문법은 다음과 같습니다.SET anyVariableName = CONV(yourHexValue, 16, 10);위 문법을 더 잘 이해하기 위해 실제 예제로 저장 프로시저(Stored Procedure)를 하나 만들어 보겠습니다. 저장 프로시저를 생성하는 쿼리는 다음과 같습니다.mysql> DELIMITER //mysql> CREATE
MySQL에서 SELECT 문을 사용해 NULL 값을 다른 값으로 대체하는 방법은 여러 가지가 있습니다. 대표적으로 CASE 문, IFNULL(), COALESCE() 세 가지 함수를 활용할 수 있습니다. 각 방법의 문법과 실제 사용 예제를 자세히 살펴보겠습니다. 1. IFNULL() 함수로 NULL 값 대체하기 IFNULL()은 첫 번째 인자가 NULL일 경우 두 번째 인자로 지정한 값을 반환하는 함수입니다. 기본 문법: SELECT IFNULL(yourColumnName, yourValue) AS anyVariableName
MySQL에서 전체 행을 업데이트하는 기본 개념MySQL에서 테이블의 특정 행(row) 전체를 한 번에 수정하려면 UPDATE 명령어를 사용합니다. 이때 가장 중요한 것은 해당 행을 정확히 식별할 수 있는 기본 키(Primary Key) 컬럼입니다. WHERE 절에서 기본 키를 조건으로 지정하면 원하는 행만 안전하게 수정할 수 있습니다.전체 행 업데이트 기본 문법UPDATE yourTableNameSET yourColumnName1 = yourValue1, yourColumnName2 = y
MySQL에서 쉼표로 구분된 필드의 값 개수 세기MySQL에서는 CHAR_LENGTH() 함수를 활용하면 쉼표로 구분된 필드에 저장된 값의 개수를 손쉽게 계산할 수 있습니다.핵심 원리는 간단합니다. 전체 문자열 길이에서 쉼표를 제거한 문자열의 길이를 빼면 쉼표의 개수가 나오고, 여기에 1을 더하면 실제 값의 개수가 됩니다.기본 문법SELECT *,(CHAR_LENGTH(yourColumnName) - CHAR_LENGTH(REPLACE(yourColumnName, ,, )) + 1) AS anyVariableNameFROM your
MySQL에서 트리거(Trigger)를 삭제하려면 DROP 명령어를 사용합니다. 기본 문법은 다음과 같습니다.DROP TRIGGER IF EXISTS yourTriggerName;트리거 삭제 전 확인 사항위 문법을 실습해 보려면 먼저 현재 데이터베이스에 트리거가 존재해야 합니다. 트리거가 있는지 여부는 아래 쿼리로 간단히 확인할 수 있습니다.mysql> show triggers;실행 결과는 다음과 같습니다.+-------------+--------+---------------+----------------------------
MySQL에서 보안을 강화하기 위해 기본 루트(root) 계정의 사용자 이름을 다른 이름으로 변경하고 싶은 경우가 있습니다. 이 작업은 UPDATE와 SET 명령을 사용하여 간단하게 처리할 수 있습니다.기본 문법UPDATE user SET user = 새로운사용자이름 WHERE user = root;1단계: mysql 데이터베이스로 전환MySQL의 사용자 정보는 mysql 데이터베이스의 user 테이블에 저장되어 있습니다. 먼저 USE 명령으로 해당 데이터베이스에 접속합니다.mysql> use mysql; Database ch
MySQL에서 모음(A, E, I, O, U)으로 시작하지 않는 도시 이름 목록을 조회하려면 DISTINCT 키워드와 RLIKE 연산자를 함께 사용하면 됩니다. RLIKE는 정규 표현식 기반의 패턴 매칭 연산자로, 도시 이름의 첫 글자가 모음인지 아닌지를 손쉽게 판별할 수 있습니다.기본 문법모음으로 시작하지 않는 도시 이름을 조회하는 기본 문법은 다음과 같습니다.SELECT DISTINCT yourCityColumnName FROM yourTableName WHERE yourCityColumnName NOT RLIKE ^[AEIOU
MySQL에서 문자열의 마지막 쉼표 뒤의 모든 문자 제거하기문자열에서 마지막 쉼표 뒤에 있는 모든 문자를 제거하려면 SUBSTRING_INDEX() 함수를 사용하면 됩니다.만약 마지막 쉼표의 위치를 미리 알 수 없다면, LENGTH() 함수를 활용해 마지막 쉼표의 위치를 동적으로 찾아야 합니다.기본 문법UPDATE yourTableNameSET yourColumnName = SUBSTRING_INDEX(yourColumnName, ,,LENGTH(yourColumnName) - LENGTH(REPLACE(yourColumnName,
특정 테이블의 특정 필드(컬럼)에 저장된 모든 NULL 값을 다른 값으로 일괄 변경하려면 UPDATE 문과 IS NULL 조건을 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.UPDATE yourTableName SET yourColumnName=yourValue WHERE yourColumnName IS NULL;예제 테이블 생성문법을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table Employee_Information_Table
MySQL \G 수정자란 무엇인가?MySQL에서 \G 수정자는 쿼리 결과를 세로(수직) 형태로 출력해 주는 기능을 합니다. 반면 \g 수정자는 결과 표시 방식에 아무런 영향을 주지 않으며, 세미콜론(;)과 똑같은 구문 종결자(statement terminator) 역할만 수행합니다.즉, 두 수정자의 차이를 정리하면 다음과 같습니다.- ; 또는 \g : 일반적인 테이블(표) 형태로 결과 출력- \G : 각 행을 세로로 나열하여 가독성을 높여 출력실제 예제를 통해 차이를 확인해 보겠습니다.1단계: 테스트용 테이블 생성먼저 예제에 사용할
MySQL auto_increment의 한계란?MySQL에서 auto_increment 컬럼이 가질 수 있는 최대값은 해당 컬럼의 데이터 타입에 따라 결정됩니다. 즉, 정수형 타입이 표현할 수 있는 범위가 곧 auto_increment의 한계가 됩니다.데이터 타입별로 저장할 수 있는 최대값은 다음과 같습니다.데이터 타입최대값TINYINT127UNSIGNED TINYINT255SMALLINT32,767UNSIGNED SMALLINT65,535MEDIUMINT8,388,607UNSIGNED MEDIUMINT16,777,215INT2,1
MySQL에서 여러 값을 하나의 문자열로 연결할 때는 CONCAT() 함수를 사용하고, 연결 대상 값이 NULL일 경우에는 IFNULL() 함수를 함께 사용하면 됩니다. CONCAT() 함수에 NULL이 포함되면 결과 전체가 NULL로 반환되기 때문에, IFNULL()로 NULL 값을 다른 문자열로 대체해 주는 것이 핵심입니다.기본 문법값을 연결하면서 NULL을 처리하는 기본적인 쿼리 문법은 다음과 같습니다.SELECTCONCAT(anyStringValue:, IFNULL(yourColumnName, anyStringValue))
MySQL에서 현재 날짜는 CURDATE() 함수로, 전날은 DATE_SUB() 함수에 INTERVAL 1 DAY를 조합하여 손쉽게 구할 수 있습니다. 이 두 함수를 활용하면 오늘과 어제의 데이터를 한 번의 쿼리로 조회할 수 있습니다.기본 문법먼저 현재 날짜에서 하루 전 날짜를 구하는 기본 쿼리는 다음과 같습니다.SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY);테이블에서 현재 날짜 또는 전날에 해당하는 레코드를 조회하려면 아래와 같이 WHERE 절에 OR 조건을 사용합니다.SELECT * FROM you
MySQL에서 현재 타임스탬프 기준 10분 이내의 레코드 조회하기MySQL에서 현재 시간(NOW())으로부터 10분 이내에 해당하는 모든 레코드를 조회하려면 DATE_SUB() 함수를 WHERE 절과 함께 사용하면 됩니다. DATE_SUB()는 특정 날짜나 시간에서 지정한 간격을 빼는 함수로, NOW()에서 10분(MINUTE)을 빼면 정확히 10분 전 시점을 구할 수 있습니다.기본 문법은 다음과 같습니다.SELECT * FROM yourTableNameWHERE yourColumnName >= DATE_SUB(NOW(), I
MySQL에서 일부 조건만 일치하는 결과 가져오기MySQL에서 WHERE 절은 기본적으로 모든 조건이 일치해야(AND) 또는 하나라도 일치하면(OR) 결과를 반환합니다. 하지만 여러 조건 중 일정 개수 이상만 일치하는 레코드를 찾고 싶다면 어떻게 해야 할까요? 예를 들어 4개의 표현식 중 3개 이상이 일치하는 행만 조회하고 싶은 경우가 그렇습니다.이럴 때 CASE 문을 활용하면 간단하게 해결할 수 있습니다. 각 조건이 참일 때는 1, 거짓일 때는 0을 반환하도록 작성한 뒤, 그 합계가 원하는 개수(예: 3)보다 크거나 같은지 비교하
네, MySQL에는 NOT EQUAL(같지 않음) 연산자가 존재하며, <> 연산자 형태로 사용할 수 있습니다. 참고로 != 연산자도 동일한 기능을 수행합니다.NOT EQUAL 기본 문법SELECT * FROM yourTableName WHERE yourColumnName <> yourValue;예제 테이블 생성하기위 문법을 실제로 이해하기 위해 예제 테이블을 먼저 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table DoesNotEqualDemo -> (
STR_TO_DATE() 함수란? MySQL에서 날짜 형식을 변환하려면 STR_TO_DATE() 함수를 사용하면 됩니다. 이 함수는 11.01.2019처럼 문자열로 저장된 날짜 데이터를 해석하여 실제 DATE 타입 값으로 바꿔 주며, 형식 지정자(format specifier)를 통해 입력 문자열의 구조를 지정합니다. 모든 형식 지정자는 % 기호로 시작합니다. SELECT STR_TO_DATE(yourDateColumnName,%d.%m.%Y) as anyVariableName FROM yourTableName; 여기서 사용된 형식