mysql 54

[MySQL] SQL Error [1486] [HY000]: Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed

개요 아래와 같은 구조의 product 테이블이 존재한다고 하자. CREATE TABLE product ( id INT NOT NULL, name TEXT, crt_date varchar(30) NOT NULL, PRIMARY KEY(ID, crt_date) ); 테이블의 crt_date는 "YYYY-MM-DD HH:MM:SS" 형식의 데이터로, 다음 SQL을 실행하여 crt_date을 기준으로 수평 파티셔닝(range)을 하려고 한다. ALTER TABLE product PARTITION BY RANGE(TO_DAYS(crt_date))( PARTITION p20201230 VALUES LESS THAN (TO_DAYS('2020-12-31')), PARTITION p20201231 VALUES LES..

Database 2022.07.08

[MySQL] DML (INSERT, UPDATE, DELETE)

DML 데이터 조작 언어 (Data Manipulation Language) 데이터를 조회하거나 삽입, 갱신, 삭제할 수 있다. 데이터를 조작하여 저장하는 과정은 트랜잭션(Transaction)이라고 하며, DML은 트랜잭션을 다루는 명령어라고 할 수 있다. INSERT 테이블에 새로운 행을 삽입할 때 사용한다. INSERT INTO table_name [(column1, column2, …)] VALUES (val1, val2, …); -- 예시 INSERT INTO departments (department_id, department_name, manager_id, location_id) VALUES (271, 'Sample_Dept', 200, 1700); 예시 실행 결과 SELECT * FROM ..

Database 2022.06.21

[MySQL] DDL (CREATE, ALTER, DROP, TRUNCATE)

DDL 데이터 정의어 (Data Definition Language) 데이터베이스 스키마와 데이터를 어떻게 저장해야 하는지 정의한다. Commit하지 않아도 데이터베이스에 즉각 반영되며 데이터 사전에 기록된다. DDL은 여러 객체에 대해 실행할 수 있지만 이 글에서는 테이블을 대상으로 각 명령어를 알아본다. CREATE CREATE TABLE은 새로운 테이블을 생성할 때 사용한다. CREATE TABLE tablename ( column1 datatype, column2 datatype, ... ); -- 예시 CREATE TABLE sample_product ( product_id INT, product_name VARCHAR(20), manu_date DATE ); 예시 실행 결과 SHOW COLUM..

Database 2022.06.20

[MySQL] 조건문 (IF, CASE WHEN)

조건문 MySQL에서 조건문에 해당하는 IF, CASE WHEN에 대해 정리한다. IF 첫 번째 매개변수로 전달된 조건이 참이면 두 번째 매개변수로 전달된 값을 반환한다. 거짓이면 세 번째 매개변수로 전달된 값을 반환한다. IF(condition, value_if_true, value_if_false) 세 개의 매개 변수 전부 필수값이다. 예시 ) SELECT IF(500 30 THEN 'The quantity is greater than 30' WHEN Quantity = 30 THEN 'The quantity is 30' ELSE 'The quantity is under 30' END AS QuantityText FROM OrderDetails; JAVA의 Switch Case문과 비슷한데, WHEN..

Database 2022.06.17

[MySQL] NULL 처리 (IS NULL, IFNULL, COALESCE)

NULL 값이 없는 데이터인 경우 NULL로 채워진다. NULL은 결측치(Missing Value)이므로 데이터 조회, 처리 시 NULL이 없는 데이터만 조회하거나 NULL이 아닌 다른 값으로 치환하는 경우가 발생한다. 💡 결측치 Missing Value. 데이터에 값이 없는 것을 뜻한다. 줄여서 NA 또는 Null로 표현된다. 이 글에서는 NULL을 처리하는 몇 가지 방법을 정리한다. IS NULL / IS NOT NULL =, 와 같은 비교 연산자로는 NULL을 조회할 수 없다. 따라서 NULL을 조회할 때에는 IS NULL, IS NOT NULL연산자를 사용해야 한다. IS NULL은 NULL인 데이터를, IS NOT NULL은 NULL이 아닌 테이터를 조회한다. IS NULL SELECT colu..

Database 2022.06.16

[MySQL] NOW, DATE_FORMAT

날짜 / 시간 데이터 타입 MySQL은 다섯 가지 종류의 날짜 / 시간 데이터 타입을 사용한다. 타입 정보 범위 형식 바이트수 DATE 날짜 정보 1000-01-01 ~ 9999-12-31 YYYY-MM-DD 3 Byte DATETIME 날짜와 시간 정보 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 8 Byte TIMESTAMP 1970-01-01 00:00:00 UTC을 기준으로 한 초수 * MySQL 버전과 서버의 SQL 실행모드에 따라 동작이 다르다. 4 Byte TIME 시각 정보 -838:59:59 ~ 838:59:59 HH:MM:SS 3 Byte YEAR 2자리수 또는 4자리수의 년도 정보. 기본적으로 4자리수를 사용한다. 2자..

Database 2022.06.15

[MySQL] UNION

UNION 여러 개의 SELECT문의 결과를 하나의 테이블로 표현할 때 사용한다. 각 SELECT문으로 선택한 필드의 개수와 타입, 순서는 모두 동일해야 한다. 용법 SELECT column_list UNION [DISTINCT | ALL] SELECT column_list UNION [DISTINCT | ALL] SELECT column_list ... UNION 뒤의 연산자를 지정하지 않으면 기본적으로 DISTINCT로 동작하여 중복 행을 모두 제거한다. 예시 ) 아래와 같이 student1, student2 테이블이 존재한다고 하자. TABLE student1 TABLE student2 두 테이블에서 도시 이름을 한 번에 출력하고 싶다면 아래와 같이 UNION을 사용할 수 있다. SELECT Cit..

Database 2022.06.13

[MySQL] JOIN

JOIN 데이터베이스 내 여러 테이블에서 가져온 데이터를 조합하여 하나의 테이블로 표현한다. 방식에 따라 INNER JOIN, LEFT JOIN, RIGHT JOIN으로 구분한다. JOIN은 크게 아래와 같은 방식으로 사용하며, ON 절의 조건에 따라 여러 테이블을 하나의 테이블로 합쳐 표현할 수 있다. JOIN ON INNER JOIN ON 절을 만족하는 데이터만을 가져오며, 두 테이블 모두 값이 있는 레코드를 선택한다. 따라서 기준 테이블과 참조 테이블의 순서가 바뀌어도 결과에 영향을 미치지 않는다. MySQL에서 JOIN, INNER JOIN, CROSS JOIN 모두 INNER JOIN을 의미한다. 사용법 SELECT * FROM table1 INNER JOIN table2 ON table1.ke..

Database 2022.06.12

[MySQL] GROUP BY

GROUP BY 특정 컬럼을 그룹화한 데이터를 조회할 때 사용한다. 예시 ) SELECT ANIMAL_TYPE FROM ANIMAL_INS GROUP BY ANIMAL_TYPE; HAVING GROUP BY로 그룹화한 데이터는 HAVING 키워드를 사용하여 조건을 걸 수 있다. 💡 WHERE VS HAVING WHERE : 그룹화하기 전의 데이터에 대한 조건문 HAVING : 그룹화한 데이터에 대한 조건문 예시 ) SELECT NAME, count(NAME) FROM ANIMAL_INS WHERE NAME IS NOT NULL GROUP BY NAME HAVING count(NAME) > 1; 이 SQL는 FROM -> WHERE -> SELECT -> GROUP BY -> HAVING 순서로 실행된다...

Database 2022.06.11

[MySQL] MAX, MIN, COUNT, DISTINCT

집계함수 MySQL의 대표적인 집계함수 몇 가지를 간단히 정리한다. MAX 지정한 컬럼 데이터의 최댓값을 가져온다. 문자나 숫자가 대상이며 해당하는 값이 없으면 NULL을 반환한다. SELECT MAX(DATETIME) FROM ANIMAL_INS; MIN 지정한 컬럼 데이터의 최솟값을 가져온다. 문자나 숫자가 대상이며 해당하는 값이 없으면 NULL을 반환한다. SELECT MIN(DATETIME) FROM ANIMAL_INS; count 지정한 컬럼 데이터의 수를 가져온다. SELECT count(*) FROM ANIMAL_INS DISTINCT 지정한 컬럼 데이터에서 중복된 값을 제거한다. SELECT count(DISTINCT NAME) FROM ANIMAL_INS; 참고 문서 https://pro..

Database 2022.06.10
1 2 3 4 5 6