SQL 21

[SQL] 관리 구문

DMLData Manipulation Language란 의미로 DDL에서 정의한 대로 데이터를 입력하고, 입력된 데이터를 수정, 삭제, 조회하는 명령어이다. INSERT테이블에 데이터를 입력하는 방식이다.INSERT INTO 테이블명 (컬럼명1, 컬럼명2 ...) VALUES (데이터1, 데이터2 ...); UPDATE이미 저장된 데이터를 수정하고 싶을 때 사용하는 명령어이다. WHERE 절이 없으면 테이블의 모든 Row가 변경되니 주의해야 한다.UPDATE 테이블명 SET 컬럼명 = 새로운 데이터 (WHERE 수정할 데이터에 대한 조건); DELETE이미 저장된 데이터를 삭제하고 싶을 때 사용하는 명령어이다. WHERE 절이 없으면 테이블의 모든 Row가 삭제되니 주의해야 한다.DELETE FROM 테..

[SQL] SQL 활용

서브쿼리(Subquery)하나의 쿼리 안에 존재하는 또 다른 쿼리 서브쿼리는 위치에 따라 다음과 같이 나눌 수 있다.SELECT 절스칼라 서브쿼리(Scalar Subquery)FROM 절인라인 뷰(Inline View)WHERE 절, HAVING 절중첩 서브쿼리(Nested Subquery)  스칼라 서브쿼리(Scalar Subquery) 주로 SELECT 절에 위치하지만 칼럼이 올 수 있는 대부분 위치에 사용할 수 있다. 칼럼 대신 사용되므로 반드시 하나의 값만을 반환해야 하며 그렇지 않은 경우 에러를 발생시킨다.  인라인 뷰(Inline View) FROM 절 등 테이블명이 올 수 있는 위치에 사용 가능하다.  중첩 서브쿼리(Nested Subquery) WHERE 절과 HAVING 절에 사용할 수 ..

[MySQL] 내부 함수 - 시스템 정보 함수

시스템 정보 함수시스템의 정보를 출력하는 함수를 제공 USER(), DATEBASE() : 현재 사용자 및 현재 선택된 데이터베이스를 구함SELECT CURRENT_USER(), DATABASE(); -- 현재 사용자, 현재 선택된 데이터베이스 FOUND_ROWS() : 바로 앞의 SELECT 문에서 조회된 행의 개수를 구함USE sqldb;SELECT * FROM usertbl;SELECT FOUND_ROWS(); -- usertbl의 행 개수를 반환 ROW_COUNT() : 바로 앞의 INSERT, UPDATE, DELETE 문에서 입력, 수정, 삭제된 행의 개수를 구함. CREATE, DROP 문은 0을 반환하고 SELECT문은 -1을 반환USE sqldb;UPDATE buytbl SET price..

Database/MySQL 2024.09.11

[SQL] SQL 기본

데이터베이스데이터들을 저장하는 공간 관계형 데이터베이스흔히 RDB(Relational Database)라고 불리는 관계형 데이터베이스는 말 그대로 관계형 데이터 모델에 기초를 둔 데이터베이스이다. 설계는 모든 데이터를 2차원 테이블 형태로 표현한 뒤 각 테이블 간의 관계를 정의하는 것으로 시작된다. RDBMS는 이러한 RDB를 관리, 감독하기 위한 시스템이며, 우리가 익히 알고 있는 Oracle, SQL Server, MySQL 등이 이에 속한다. TABLE테이블은 관계형 데이터베이스의 기본 단위이고 일반적으로 데이터베이스는 여러 개의 테이블로 구성된다. 이렇게 데이터를 저장하는 주된 목적은 데이터를 활용하는 데에 있고 우리는 그것을 테이블 형태로 조회하고 변경하고 삭제할 수 있다. SQL(Structu..

[MySQL] 내장 함수 - 날짜 및 시간 함수

날짜 및 시간 함수ADDDATE(날짜, 차이), SUBDATE(날짜, 차이) : 날짜를 기준으로 차이를 더하거나 뺀 날짜를 구함SELECT ADDDATE('2025-01-01', INTERVAL 31 DAY), ADDDATE('2025-01-01', INTERVAL 1 MONTH);-- 2025-02-01, 2025-02-01SELECT SUBDATE('2025-01-01', INTERVAL 31 DAY), SUBDATE('2025-01-01', INTERVAL 1 MONTH);-- 2024-12-01, 2024-12-01 ADDTIME(날짜/시간, 시간), SUBTIME(날짜/시간, 시간) : 날짜/시간을 기준으로 시간을 더하거나 뺀 결과SELECT ADDTIME('2025-01-01 23:59:59'..

Database/MySQL 2024.09.11

[MySQL] 내장 함수 - 수학 함수

수학 함수ABS(숫자) : 숫자의 절대값을 계산SELECT ABS(-100); -- 결과는 100 CEILING(숫자), FLOOR(숫자), ROUND(숫자) : 올림, 내림, 반올림을 계산SELECT CEILING(4.7), FLOOR(4.7), ROUND(4.7); -- 5, 4, 5 CONV(숫자, 원래 진수, 변환할 진수) : 숫자를 원래 진수에서 변환할 진수로 계산SELECT CONV('AA', 16, 2), CONV(100, 10, 8); -- 10101010, 144 DEGREES(숫자), RADIANS(숫자), PI() : 라디안 값을 각도값으로, 각도값을 라디안 값으로 변환SELECT DEGREES(PI()), RADIANS(180); -- 180, 3.141592653589793 MOD..

Database/MySQL 2024.09.11

[SQL] 데이터 모델과 SQL

정규화(Normalization)데이터 정합성(데이터의 정확성과 일관성을 유지하고 보장)을 위해 엔터티를 작은 단위로 분리하는 과정이다. 정규화를 할 경우 데이터 조회성능은 처리조건에 따라 향상되는 경우도 있고 저하되는 경우도 있지만 입력, 수정, 삭제 성능은 일반적으로 향상된다고 볼 수 있다. 하지만 그렇다고 모든 엔터티를 무작정 분리하면 안 되기 때문에 정규화를 하기 위한 일정한 룰이 존재한다. 제1 정규형모든 속성은 반드시 하나의 값만 가져야 한다. 유사한 속성이 반복되는 경우도 1차 정규화의 대상이 된다. 제2 정규형엔터티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 한다. 주식별자가 단일식별자가 아닌 복합식별자인 경우 일반속성이 주식별자의 일부에만 종속될 수 있다. 제3 정규형주식별자가 ..

[SQL] 데이터 모델링의 이해

모델링(Modeling)현실 세계를 단순화하여 표현하는 기법 모델링이 갖춰야 할 조건현실세계를 반영해야 한다.단순화하여 표현해야 한다.관리하고자 하는 데이터를 모델로 설계한다.모델링의 특징추상화(Abstraction)현실 세계를 일정한 형식으로 표현하는 것. 즉 아이디어나 개념을 간략하게 표현하는 과정단순화(Simplification)복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현한다는 의미명확화(Clarity)불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다는 의미 모델링의 세 가지 관점데이터 관점(What, Data)어떤 데이터들이 업무와 얽혀있는지, 그리고 그 데이터 간에는 어떤 관계가 있는지에 대해서 모델링하는 방법프로세스 관점(How, Process)이 업무가 실제로 처리하고 있는..

[MySQL] 공통 테이블 식

공통 테이블 식(Common Table Expression)은 주로 데이터베이스에 없는 테이블이 필요할 때 사용하며, 바로 다음에 실행할 SELECT 문에만 사용해야 한다는 특징이 있다. 공통 테이블 식은 목적에 따라 일반 공통 테이블 식과 재귀 공통 테이블 식으로 나뉜다. 이를 줄여서 일반 CTE, 재귀 CTE라고 줄여서 부른다. 일반 CTEWITH [CTE_테이블 이름] (열 이름1, 열 이름2, ...)AS()SELECT [열 이름] FROM [CTE_테이블 이름]; 재귀 CTEWITH [CTE_테이블 이름] (열 이름1, 열 이름2, ...)AS( -- 쿼리 1(앵커 멤버)UNION ALL -- 쿼리 2(재귀 멤버))SELECT * FROM [CTE_테이블 이름]; 재귀 CTE의 실행 순서최초에 ..

Database/MySQL 2024.09.10

[MySQL] 서브 쿼리

서브 쿼리(Subquery)는 쿼리 안에 포함되는 또 다른 쿼리를 말한다. 서브 쿼리의 특징반드시 소괄호로 감싸 사용한다.주 쿼리를 실행하기 전에 1번만 실행된다.비교 연산자에 서브 쿼리를 사용하는 경우 서브 쿼리를 오른쪽에 기술해야 한다.내부에는 정렬 구문인 ORDER BY 문을  사용할 수 없다. WHERE 문에 서브 쿼리 사용하기서브 쿼리 중에서도 WHERE 문에 사용하는 서브 쿼리를 중첩 서브 쿼리라고 한다. 이것은 조건문의 일부로 사용한다. 그리고 서브 쿼리를 비교 연산자와 함께 사용할 때는 반드시 서브 쿼리의 반환 결과가 1건 이하 여야 한다. 2건 이상 반환할 경우 다중 행 연산자를 이용해야 한다.다중 행 연산자설명IN서브 쿼리의 결과에 존재하는 임의의 값과 같은 조건 검색ANY서브 쿼리의 ..

Database/MySQL 2024.09.10