MySQL에서 오늘 날짜에 해당하는 데이터만 조회하고 싶다면 내장 함수 CURDATE()를 활용하면 됩니다. CURDATE()는 현재 시간은 제외하고 오늘 날짜만 반환하는 함수입니다. 이 함수와 DATE() 함수를 조합하면 특정 날짜 컬럼의 값이 오늘과 일치하는 레코드만 손쉽게 추출할 수 있습니다.기본 쿼리 문법오늘 날짜와 동일한 레코드를 조회하는 기본 문법은 다음과 같습니다.SELECT yourColumnName1, yourColumnName2, ......, yourColumnNameN, DATE_FORMAT(yourDateCo
MySQL에서 공백 앞 문자열 추출하기MySQL에서 특정 컬럼 값 중 공백 앞에 있는 모든 문자를 가져오려면 LEFT() 함수와 LOCATE() 함수를 함께 사용하면 됩니다. 기본 문법은 다음과 같습니다.SELECT LEFT(컬럼명, LOCATE( , 컬럼명) - 1) AS 별칭 FROM 테이블명;LOCATE() 함수는 문자열 내에서 공백( )이 처음 나타나는 위치를 반환하고, LEFT() 함수는 그 위치보다 한 글자 앞까지의 문자열을 잘라내어 반환합니다. 이 두 함수를 조합하면 공백 앞부분만 깔끔하게 추출할 수 있습니다.예제 테이
MySQL에서 <> 기호는 같지 않음(not equal to)을 의미하는 비교 연산자로, != 연산자와 완전히 동일한 역할을 합니다. 두 연산자 모두 결과를 불리언(boolean), 즉 tinyint(1) 형태로 반환하며, 조건이 참(true)이면 1, 거짓(false)이면 0을 출력합니다.!= 연산자와 <> 연산자 비교케이스 1: != 연산자 사용다음 쿼리처럼 != 연산자를 사용할 수 있습니다.mysql> select 3!=5;실행 결과는 다음과 같습니다.+------+ | 3!=5 | +------+ | 1
MySQL에서 자동 증분(AUTO_INCREMENT) 카운터는 기본적으로 0이 아닌 1부터 시작합니다. 하지만 경우에 따라 특정 숫자부터 증분을 시작해야 할 필요가 있습니다. 예를 들어 기존 데이터를 마이그레이션하거나, 번호 체계를 맞춰야 하는 상황 등이 그렇습니다.AUTO_INCREMENT 시작 값 변경 문법자동 증분 시작 값을 원하는 숫자로 변경하려면 아래와 같은 ALTER TABLE 구문을 사용합니다.ALTER TABLE 테이블명 auto_increment=시작할숫자;예제 테이블 생성위 문법을 실제로 이해하기 위해 먼저 테이블
MySQL에서 기존 테이블의 원하는 위치에 새로운 열을 추가하려면 ALTER TABLE 문과 함께 AFTER 절을 사용하면 됩니다. 이 방법을 사용하면 컬럼 순서를 직접 지정할 수 있어 테이블 구조를 더 깔끔하게 관리할 수 있습니다.기본 문법ALTER TABLE yourTableName ADD COLUMN yourColumnName data type AFTER yourExistingColumnName;예제 테이블 생성하기먼저 예제에 사용할 테이블을 만들어 보겠습니다. 아래 쿼리는 세 개의 컬럼을 가진 테이블을 생성합니다.mysql&
MySQL에서 DATETIME 타입의 데이터를 DATE 타입으로 변환하고 싶다면 CAST() 함수를 사용하면 됩니다. 이 함수는 하나의 데이터 타입을 다른 타입으로 손쉽게 변환해 주는 표준 SQL 함수로, 날짜와 시간이 함께 저장된 값에서 날짜 부분만 추출할 때 매우 유용합니다.CAST() 함수 기본 문법SELECT CAST(컬럼명 AS DATE) AS 별칭 FROM 테이블명;위 문법에서 yourColumnName 자리에 DATETIME 타입의 컬럼 이름을 넣고, AS Date를 지정하면 해당 컬럼의 값이 날짜 형식으로 변환됩니다.
MySQL 같지 않음 연산자란?MySQL에서 특정 값과 일치하지 않는 데이터를 조회하려면 <> 연산자를 사용하면 됩니다. 참고로 != 연산자도 동일한 기능을 수행하므로, 둘 중 편한 것을 선택해 사용할 수 있습니다.기본 문법은 다음과 같습니다.SELECT * FROM yourTableName WHERE yourColumnName <> anyValue;예제 테이블 생성하기문법을 실제로 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.mysql> create table No
MySQL에서 VARCHAR 타입으로 저장된 숫자 데이터를 단순히 ORDER BY로 정렬하면 문자열 기준으로 비교되기 때문에 의도한 숫자 크기순으로 정렬되지 않습니다. 예를 들어 9.59가 124.50보다 뒤에 위치해야 하지만 문자열 비교에서는 앞에 오는 문제가 발생합니다.이러한 문제를 해결하려면 CAST() 함수를 사용하여 문자열을 숫자(DECIMAL) 타입으로 변환한 뒤 정렬해야 합니다. 기본 문법은 다음과 같습니다.SELECT * FROM yourTableName ORDER BY CAST(yourColumnName AS DEC
MySQL DATE() 함수로 특정 날짜 데이터 조회하기MySQL에서는 DATE() 함수를 사용하면 datetime 타입 컬럼에서 특정 날짜에 해당하는 레코드를 간단하게 조회할 수 있습니다. 기본 문법은 다음과 같습니다.SELECT * FROM yourTableName WHERE DATE(yourDateColumnName) = anyDate;DATE() 함수는 datetime 값에서 날짜 부분만 추출해 주기 때문에, 시간 정보가 포함된 컬럼이라도 원하는 날짜와 정확히 일치하는 레코드를 찾을 수 있습니다.예제 테이블 생성하기먼저 실습
MySQL에서 BETWEEN 절을 사용하면 특정 날짜와 시간에 해당하는 레코드를 손쉽게 조회할 수 있습니다. BETWEEN 절은 시작 값과 끝 값을 모두 포함하는 범위 조건으로 동작하기 때문에, DATETIME 타입의 컬럼에서 원하는 기간의 데이터를 추출할 때 매우 유용합니다.BETWEEN 절의 기본 문법SELECT * FROM 테이블명 WHERE 컬럼명 BETWEEN 시작날짜시간 AND 종료날짜시간;이제 실제 예제를 통해 위 문법이 어떻게 동작하는지 단계별로 살펴보겠습니다.1. 예제 테이블 생성먼저 입학 날짜 정보를 저장할 테이블
MySQL에서 INT 컬럼에 NULL 값 삽입하기MySQL의 INT 타입 컬럼에 NULL 값을 삽입하는 것은 가능합니다. 단, 한 가지 조건이 있습니다. 해당 컬럼에 NOT NULL 제약조건이 설정되어 있지 않아야 합니다.기본 문법NULL 값을 삽입하는 기본적인 문법은 다음과 같습니다.INSERT INTO yourTableName(yourColumnName) values(NULL);예제 테이블 생성실제 동작을 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다. 아래 쿼리로 테이블을 만들 수 있습니다.mysql> create
MySQL에서는 MONTHNAME() 함수를 사용하여 월 번호(1~12)를 해당하는 월 이름으로 변환해 표시할 수 있습니다. 이 함수를 단독으로 사용하면 날짜 값이 필요하기 때문에, 숫자 형태의 월 번호를 먼저 날짜로 변환해 주는 STR_TO_DATE() 함수와 함께 사용하는 것이 핵심입니다.기본 문법SELECT MONTHNAME(STR_TO_DATE(yourColumnName, %m)) AS anyVariableName FROM yourTableName;여기서 STR_TO_DATE(yourColumnName, %m)은 월 번호를
MySQL 데이터베이스의 제약 조건 목록 한 번에 조회하는 방법MySQL에서 특정 데이터베이스에 정의된 모든 제약 조건(Constraint)을 확인하고 싶다면 information_schema.table_constraints 테이블을 조회하면 됩니다. 이 테이블에는 PRIMARY KEY, UNIQUE, FOREIGN KEY 등 각 테이블에 설정된 제약 조건 정보가 메타데이터 형태로 저장되어 있습니다.기본 문법제약 조건 목록을 가져오는 기본 쿼리 문법은 다음과 같습니다.SELECT *FROM information_schema.tabl
데이터베이스를 관리하다 보면 특정 스키마에 정의된 PRIMARY KEY, UNIQUE, FOREIGN KEY 같은 제약 조건들이 어떤 테이블의 어떤 컬럼에 적용되어 있는지 한눈에 파악해야 할 때가 많습니다.예를 들어 여러 개의 테이블을 가진 business라는 데이터베이스가 있다고 가정해 보겠습니다. 이 데이터베이스의 각 제약 조건에 포함된 필드(컬럼) 정보를 확인하려면 MySQL의 시스템 뷰인 information_schema.key_column_usage를 조회하면 됩니다.제약 조건별 필드 조회 쿼리아래 쿼리는 business
MySQL에서 1~3 사이의 난수로 컬럼 값 업데이트하기 MySQL에서 특정 컬럼의 값을 1부터 3 사이의 난수로 일괄 업데이트해야 하는 경우가 종종 있습니다. 이럴 때는 RAND() 함수와 FLOOR() 함수를 조합하면 아주 간단하게 처리할 수 있습니다. 기본 구문 UPDATE yourTableName SET yourColumnName = FLOOR(1 + RAND() * 3); RAND()는 0 이상 1 미만의 실수를 반환합니다. 여기에 3을 곱하고 1을 더한 뒤 FLOOR()로 소수점을 버리면 최종적으로 1, 2, 3 중 하
MySQL에는 오라클이나 SQL Server와 같은 || 연산자가 기본적으로 제공되지 않습니다. 대신 내장 함수인 CONCAT()을 사용하면 여러 컬럼의 값을 하나의 문자열로 손쉽게 연결할 수 있습니다.CONCAT() 함수 기본 문법SELECT CONCAT((, yourColumnName1, ,, yourColumnName2, ,, yourColumnName3, ...N, )) AS anyVariableName FROM yourTableName;CONCAT() 함수는 인자로 전달된 모든 값을 순서대로 이어 붙여 하나의 문자열을 반환
MySQL UNION 결과에 COUNT(*) 적용하기두 개 이상의 테이블을 UNION으로 합친 뒤 전체 행 개수를 구하려면, 서브쿼리로 감싸서 외부에서 COUNT(*)를 실행해야 합니다. 기본 문법은 다음과 같습니다.SELECT COUNT(*) FROM ( SELECT yourColumName1 FROM yourTableName1 UNION SELECT yourColumName1 FROM yourTableName2 ) anyVariableName;핵심은 UNION 결과에 반드시 별칭(alias)을 붙여야 한다는
MySQL에서는 IN() 함수와 GROUP BY 절을 함께 사용하면, 여러 개의 행에 각각 흩어져 있는 조건들을 모두 동시에 만족하는 값을 손쉽게 조회할 수 있습니다. 예를 들어 특정 그룹이 A, B, C 세 가지 값을 모두 가지고 있는지를 확인해야 하는 경우에 유용합니다.기본 문법SELECT yourColumnName1 FROM yourTableName WHERE yourColumnName2 IN(value1, value2, .....N) GROUP BY yourColumnName1 HAVING COUNT(DISTINCT your
MySQL에서 SELECT 쿼리를 실행하면서 행마다 1씩 증가하는 카운터를 표시하고 싶다면, 사용자 정의 변수(user-defined variable)를 활용하면 됩니다. 핵심은 쿼리 실행 전에 변수를 선언하고 초기화한 뒤, SELECT 문 안에서 해당 변수의 값을 하나씩 증가시키는 것입니다.기본 문법증분 카운터를 만드는 기본적인 문법은 다음과 같습니다.set @변수명=0; select 컬럼명, @변수명:=@변수명+1 as 별칭 from 테이블명;예제 테이블 생성실제 동작을 확인하기 위해 먼저 간단한 테이블을 만들어 보겠습니다.my
MySQL에는 UNIX 시스템에서 현재 사용자를 확인하는 whoami와 같은 전용 함수가 존재하지 않습니다. 하지만 걱정하지 않으셔도 됩니다. MySQL에서는 동일한 목적으로 USER() 또는 CURRENT_USER() 함수를 사용하면 됩니다.MySQL 버전 확인먼저 이 글에서 사용된 MySQL 버전은 다음과 같습니다.+-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec)방법 1: CURRENT_USER() 함수 사용하기