SHOW FULL COLUMNS로 더 자세한 컬럼 정보 확인하기MySQL에서 기존 테이블의 컬럼에 대한 더 자세한 정보가 필요하다면 일반적인 SHOW COLUMNS 문 대신 SHOW FULL COLUMNS 문을 사용해야 합니다.SHOW COLUMNS는 필드명, 데이터 타입, NULL 여부, 키, 기본값 등 기본적인 정보만 반환합니다. 반면 SHOW FULL COLUMNS는 여기에 다음과 같은 추가 정보를 함께 제공합니다.Collation(콜레이션): 문자열 컬럼의 정렬 및 비교 규칙Privileges(권한): 현재 사용자에게 부여된
MySQL에서 이미 생성되어 있는 테이블의 CREATE TABLE 문(테이블 정의문)을 확인하려면 SHOW CREATE TABLE 쿼리를 사용하면 됩니다. 이 명령은 해당 테이블의 구조를 그대로 재현할 수 있는 완전한 DDL 문장을 반환해 주기 때문에, 스키마 백업이나 다른 데이터베이스 환경으로 테이블을 복제할 때도 유용하게 활용됩니다. 구문(Syntax) SHOW CREATE TABLE table_name; table_name 자리에는 정의를 확인하고자 하는 테이블의 이름을 입력합니다. 예제(Example) mysql> Sh
MySQL에서 INSERT INTO 문을 실행할 때 열 이름과 값을 모두 지정하지 않으면, MySQL은 테이블의 해당 열들에 NULL을 저장합니다. 아래 예시를 통해 자세히 살펴보겠습니다.테이블 생성하기먼저 다음 쿼리를 사용하여 Student 테이블을 생성합니다.mysql> Create table Student(RollNO INT, Name Varchar(20), Class Varchar(15));Query OK, 0 rows affected (0.17 sec)열 이름과 값 없이 INSERT INTO 실행하기이제 열 이름과 값
MySQL은 YEAR 데이터 유형을 지원하며, 이를 활용하면 테이블의 특정 컬럼에 연도 값을 간편하게 저장할 수 있습니다. 저작권 연도처럼 연도 정보만 필요한 경우, 전체 날짜(DATE) 유형 대신 YEAR 유형을 사용하면 저장 공간을 절약하고 데이터 관리도 더욱 효율적으로 할 수 있습니다.YEAR 유형 컬럼 생성하기아래 예제는 YEAR 유형의 컬럼을 가진 테이블을 생성하는 과정을 보여줍니다.mysql> Create table year1 (Year_Copyright YEAR); Query OK, 0 rows affected (
MySQL에서 YEAR 유형의 컬럼에 현재 연도를 자동으로 삽입하려면 쿼리문 안에서 CURDATE() 또는 NOW() 함수를 사용하면 됩니다.기본 원리YEAR 타입은 날짜·시간 값을 입력받으면 MySQL이 자동으로 그 값에서 연도 부분만 추출하여 저장합니다. 따라서 CURDATE()(현재 날짜)나 NOW()(현재 날짜 및 시간)를 전달해도 결과적으로 현재 연도만 저장되는 것입니다.CURDATE() 사용 예제mysql> Insert into year1(Year_Copyright) values (CURDATE()); Query O
결론부터 말하자면, MySQL에는 공식적으로 권장되는 명명 규칙(naming convention) 표준이 없습니다. 다만 선택한 이름이 논리적이고 일관성 있다면 충분히 좋은 이름이라고 할 수 있습니다.기억해야 할 두 가지 핵심 사항MySQL에서 테이블이나 데이터베이스 이름을 정할 때 반드시 기억해야 할 두 가지가 있습니다.1. 동일한 이름 중복 불가같은 데이터베이스 안에서 두 개의 테이블이 동일한 이름을 가질 수 없으며, 마찬가지로 두 개의 데이터베이스가 같은 이름을 가질 수도 없습니다. 이름은 해당 범위 내에서 고유해야 합니다.2
CREATE 명령어는 MySQL에서 가장 기본이 되는 DDL(Data Definition Language, 데이터 정의 언어) 명령 중 하나로, 새로운 데이터베이스나 테이블을 생성할 때 사용합니다. 이 글에서는 CREATE 명령어의 개념과 함께 데이터베이스 및 테이블을 실제로 생성하는 방법을 예제와 함께 자세히 살펴보겠습니다. 1. CREATE 명령어란? CREATE 명령어는 데이터베이스 구조를 정의하는 DDL 명령어입니다. 주로 다음 두 가지 용도로 사용됩니다. 새로운 데이터베이스(Database) 생성 새로운 테이블(Table
MySQL에서 기존 테이블을 그대로 복제해 새 테이블을 만들고 싶다면 CTAS(Create Table As Select) 구문을 사용하면 됩니다. CTAS는 CREATE TABLE ... AS SELECT 형태로 작성되며, 원본 테이블의 구조(컬럼 정의)와 데이터를 한 번에 복사해 줍니다.CTAS 기본 문법CREATE TABLE 새_테이블명 AS SELECT * FROM 원본_테이블;예제: Employee 테이블 백업하기먼저 원본 테이블 Employee에 저장된 데이터를 확인해 보겠습니다.mysql> Select * from
MySQL에서 이번 달의 첫날 구하기MySQL에서는 LAST_DAY() 함수와 DATE_SUB() 함수를 조합하면 이번 달의 첫날을 손쉽게 구할 수 있습니다. 아래 쿼리를 살펴보겠습니다.mysql> SELECT DATE_SUB(LAST_DAY(NOW()), INTERVAL DAY(LAST_DAY(NOW())) - 1 DAY) AS FIRST DAY OF CURRENT MONTH; +----------------------------+ | FIRST DAY OF CURRENT MONTH | +--------------------
MySQL에서 지난달 첫째 날 구하기MySQL에서는 DATE_FORMAT() 함수와 CURDATE() 함수, 그리고 INTERVAL 표현식을 조합하면 지난달 첫째 날을 아주 간단하게 구할 수 있습니다.기본 쿼리mysql> SELECT DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, %Y-%m-01) AS FIRST DAY OF PREVIOUS MONTH;+-----------------------------+| FIRST DAY OF PREVIOUS MONTH |+--------------------
MySQL에서 다음 달 1일 구하기MySQL에서 다음 달의 첫째 날을 구하려면 DATE_FORMAT() 함수와 CURDATE() 함수, 그리고 INTERVAL 키워드를 함께 사용하면 됩니다.핵심 아이디어는 현재 날짜에 한 달을 더한 뒤, 날짜 형식을 %Y-%m-01로 지정하여 일(day) 부분을 강제로 01로 만드는 것입니다.기본 쿼리mysql> SELECT DATE_FORMAT(CURDATE() + INTERVAL 1 MONTH, %Y-%m-01) AS FIRST DAY OF NEXT MONTH; +--------------
MySQL에서 이번 달의 마지막 날 조회하기MySQL에서는 LAST_DAY() 함수를 사용하면 특정 날짜가 속한 달의 마지막 날을 아주 간단하게 구할 수 있습니다. 이 함수에 NOW()를 인자로 전달하면 현재 날짜가 포함된 달의 마지막 날짜를 반환합니다.기본 쿼리 예제아래와 같은 쿼리를 실행하면 이번 달의 마지막 날을 확인할 수 있습니다.mysql> SELECT LAST_DAY(NOW()) AS LAST DAY OF CURRENT MONTH;+---------------------------+| LAST DAY OF CURRE
MySQL에서는 CTAS(Create Table As Select) 스크립트를 사용하면 기존 테이블의 데이터와 구조를 그대로 복사하여 새 테이블을 만들 수 있습니다. 만약 다른 테이블에서 특정 열만 선택하고 싶다면, SELECT 절 뒤에 원하는 열 이름을 명시하기만 하면 됩니다.특정 열만 복사하는 CTAS 예제아래 예제는 기존 Employee 테이블에서 name 열 하나만 선택하여 새로운 테이블 EMP_BACKUP1을 생성하는 과정을 보여줍니다.mysql> Create table EMP_BACKUP1 AS Select name
MySQL NOW()와 CURDATE() 함수란?MySQL에서 현재 날짜나 시간을 조회할 때 자주 사용되는 함수가 바로 CURDATE()와 NOW()입니다. 두 함수는 이름은 비슷하지만 반환하는 값에 중요한 차이가 있습니다.CURDATE() 함수 – 현재 날짜만 반환CURDATE() 함수는 이름 그대로 현재 날짜만을 반환합니다. 즉, 시간 정보는 포함되지 않고 YYYY-MM-DD 형식의 날짜 값만 출력됩니다.mysql> select CURDATE(); +------------+ | CURDATE() | +-----------
MySQL에서 모든 데이터베이스 크기 확인하기MySQL에서는 information_schema의 TABLES 테이블을 조회하면 서버에 존재하는 모든 데이터베이스의 크기를 한 번에 확인할 수 있습니다. 각 테이블의 실제 데이터 용량(data_length)과 인덱스 용량(index_length)을 합산한 뒤, 데이터베이스별로 그룹화하면 됩니다.기본 조회 쿼리아래 쿼리를 실행하면 모든 데이터베이스의 크기를 MB 단위로 확인할 수 있습니다.mysql> SELECT table_schema Database, -> SUM(da
MySQL에서 실제로 존재하지 않는 날짜(예: 2월 30일)에 INTERVAL 키워드를 사용해 날짜 연산을 수행하면 어떤 일이 일어날까요? 그 답은 allow_invalid_dates 모드의 활성화 여부에 따라 달라집니다.모드가 비활성화된 경우: NULL 반환이 모드가 꺼져 있는 기본 상태에서는 MySQL이 잘못된 날짜를 허용하지 않습니다. 따라서 날짜 연산이 수행되지 않고 결과로 NULL이 출력됩니다. mysql> select 2017-02-30 + INTERVAL 7 day; +-------------------------
앞서 MySQL 데이터베이스 전체의 크기를 확인하는 방법을 살펴보았습니다. 같은 원리로 특정 데이터베이스에 속한 개별 테이블의 크기도 손쉽게 조회할 수 있습니다. 이때 활용하는 것이 바로 information_schema.TABLES 뷰입니다.테이블 크기 조회 쿼리아래 쿼리는 SAMPLE 데이터베이스에 포함된 모든 테이블의 크기를 MB 단위로 계산하여 보여줍니다.mysql> SELECT -> table_name AS Table, -> round(((data_length + index_length) /
MySQL의 INTERVAL 키워드는 날짜 값의 시간(time), 날짜(date), 날짜시간(datetime) 단위와 함께 사용할 수 있으며, NOW() 및 CURDATE() 함수와도 동일한 방식으로 활용할 수 있습니다.INTERVAL 키워드를 사용하면 현재 시점을 기준으로 특정 기간만큼 더하거나 뺀 값을 손쉽게 계산할 수 있습니다. 이는 일정 관리, 만료일 계산, 로그 필터링 등 실무에서 매우 유용하게 쓰입니다.NOW() 함수에 INTERVAL 적용하기NOW() 함수는 현재 날짜와 시간을 반환하므로, INTERVAL과 함께 사용하
CURDATE() 함수와 시간 단위 INTERVAL의 조합CURDATE() 함수는 날짜 값만 반환하기 때문에, 시간 단위의 INTERVAL과 함께 사용하면 다소 모호하게 느껴질 수 있습니다. 하지만 MySQL은 현재 날짜를 항상 00:00:00이라는 기본 시간과 함께 내부적으로 표현합니다. 따라서 CURDATE()에 시간 단위의 INTERVAL을 적용하면, 해당 시간 연산은 이 기본 시간(00:00:00)을 기준으로 계산됩니다.다음 예제를 통해 실제 동작 방식을 확인해 보겠습니다.mysql> Select CURDATE() +
MySQL에서는 특정 사용자에게 고정적으로 지정되는 기본 데이터베이스라는 개념이 존재하지 않습니다. 다만 현재 세션(current session)에 한해서는 기본 데이터베이스가 설정될 수 있습니다. 현재 세션에서 어떤 데이터베이스가 기본으로 지정되어 있는지는 다음 쿼리로 간단히 확인할 수 있습니다. mysql> SELECT DATABASE(); +------------+ | DATABASE() | +------------+ | sample | +------------+ 1 row in set (0.00 sec) 위 결과