목록Database (20)
KoreanFoodie's Study
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 19. 트랜잭션 모드와 락 은행 시스템 같은 극도의 정밀성을 요구하는 작업의 경우, 속도보다 무결성이 더욱 중요할 수 있다. 트랜잭션은 DML 쿼리들을 모아 원자성(한꺼번에 실행되거나, 아니면 아예 실행되지 않거나), 일관성, 격리성, 영속성을 보장하는 명령의 묶음이다. 트랜잭션은 실행되면 먼저 임시 작업 영역에 데이터를 저장한 후, 커밋을 하면 실제 데이터베이스에 저장되는 식으로 작동하여 안전하다. 모드는 흔히 자동 커밋(Auto Commit)모드와 수동 커밋(Manual Commit Mode)가 있는데, SQL Server와 MariaDB는 자동, 오라클과 DB2는 수동이 디폴트이..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 18. 트리거(무결성, BEFORE/AFTER, 다중, 중첩, DLL) 트리거는 특정 사건이 발생했을 때 자동으로 호출되는 코드로, 직접 호출할 수 없으며 일정한 조건이 되면 자동으로 호출된다. 시스템이 호출하므로 인수를 전달할 수 없고 리턴값도 반환할 수 없다. 주로 테이블이나 데이터베이스에 변화가 발생할 때 실행할 코드를 트리거로 정의한다. 정의는 다음과 같다. CREATE [OR REPLACE] TRIGGER 트리거이름 BEFORE | AFTER | INSTEAD OF INSERT OR UPDATE OR DELETE [OF 컬럼] ON 테이블명 [FOR EACH ROW] BEGI..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 17. 커서와 동적쿼리 커서는 결과셋을 한 행씩 순회할 수 있다. 결과셋을 순회하려면 서버는 결과셋을 메모리에 저장해 두고 커서를 통해 한 줄씩 읽는다. 이런 처리를 하려면 내부적인 준비가 필요하고 다 사용한 후 정리도 해야 한다. 커서를 생성하고 사용하는 절차는 정형화되어 있다. 1. 어떤 결과셋을 순회할 것인지 커서를 정의 : CURSOR 커서 이름 IS SELECT... 2. OPEN 명령으로 커서를 연다. SELECT 문을 실행하여 결과셋을 만들고 커서를 첫 행 이전에 위치시켜 순회 준비를 한다. 3. FETCH 명령으로 다음 행을 읽어 변수에 대입하고 읽은 값으로 원하는 처리..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 16. 저장 프로시저, 인수, 함수 SQL 명령 열개를 모으면 코드가 되며, 이를 텍스트로 저장하면 스크리트, 서버에 저장하면 저장 프로시져가 된다. 형식은 다음과 같다. CREATE [OR REPLACE] PROCEDURE 이름(인수 목록) AS 또는 IS 변수선언 BEGIN 본체 END [이름]; 모든 DB오브젝트는 고유한 이름을 가져야 한다. 또한 프로시져를 Ctrl + Enter로 실행할 때는 코드 블락을 선택해서 실행하는 것이 안전하다. 추후 수정을 용이하게 하기 위해 OR REPLACE를 붙여 주는 것이 좋다. 프로시저 정의문은 항상 단독으로 실행하는 게 좋으며, 전역적으로..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 15. PL/SQL 제어문 (IF, LOOP...), 예외처리(EXCEPTION, RAISE) -- 다음 선언문으로 출력문을 쓰겠다는 선언부터 해야 한다. -- DBMS_OUTPUT.PUT_LINE(출력할 내용) 을 사용할 수 있게 함 SET SERVEROUTPUT ON; BEGIN DBMS_OUTPUT.PUT_LINE('안녕하세요'); END; BEGIN DBMS_OUTPUT.PUT_LINE('안녕하세요') END BEGIN DBMS_OUTPUT.PUT_LINE(2 + 3 * 4); DBMS_OUTPUT.PUT_LINE(POWER(2, 3)); END; -- DECLARE 문 안에 ..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 14. 테이블 관리 (테이블 수정, 필드 수정, SQL ALTER) 사실 테이블 컬럼 추가/삭제/변경 등의 작업은 GUI 도구를 사용해서 하는 것이 더 쉽다! 다만 스크립트 환경에서 ALTER 쿼리를 이용해야 하는 상황이 있을 수 있으니, 간단한 예제를 통해 어떤 쿼리가 있는지는 머릿속에 넣어두도록 하자. -- ADD를 통해 컬럼을 추가할 수 있다 ALTER TABLE tCity ADD mayor CHAR(12) NULL; UPDATE tCity SET mayor = '오륙도' WHERE name = '부산'; ALTER TABLE tCity ADD mayor CHAR(12) NOT ..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 13. 분석과 통계(소계, 순위, 통계, 피봇) CREATE TABLE tMonthSale ( year INT, month INT, salesINT ); INSERT INTO tMonthSale VALUES(2021, 9, 3650); INSERT INTO tMonthSale VALUES(2021, 10, 4120); INSERT INTO tMonthSale VALUES(2021, 11, 5000); INSERT INTO tMonthSale VALUES(2021, 12, 4420); INSERT INTO tMonthSale VALUES(2022, 1, 3800); INSERT INTO..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 12. 뷰 (임시 테이블, CTE) SELECT member, age, addr FROM tMember; -- 간단한 VIEW를 생성하는 예제 -- VIEW는 쿼리문으로 생성하는 가상적인 테이블이다. -- 뷰의 데이터를 수정하면 실제 테이블에도 영향을 끼친다 -- 뷰는 보기 전용으로 이용하는 것이 바람직하다. CREATE VIEW vMember AS SELECT member, age, addr FROM tMember; SELECT * FROM vMember; SELECT member, age FROM vMember; SELECT * FROM vMember WHERE addr LIKE ..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 11. 함수 (스칼라 함수, 문자열 함수, 데이터 타입, 날짜와 시간) 사실 DBMS마다 함수도 다르고 종류도 다르다. 그리고 모든 함수를 전부 외울 필요는 없다. 대략적으로 어떤 함수가 존재하는지를 파악해 둔 후, 필요한 함수를 그때 그때 찾아서 쓰는 방식이 더 효율적일 수도 있다! 이 글에서는 오라클을 기준으로 자주 나오는 함수 목록을 소개하며, 예시를 통해 설명한다. 수치함수 문자열 함수 데이터 타입 1. 수치형 2. 문자형 3. 날짜형 4. ANSI 표준 타입 -- AVG, TRIM, ROUND 등의 간단한 연산자는 직접 실습해보자. SELECT AVG(score) FROM t..
이 글은 '김상형의 SQL 정복'의 예제 코드를 설명하는 방식으로 SQL 쿼리 예제를 소개하고 있습니다. SQL 기초 - 10. 조인 (단순 조인, 외부 조인, 다중 조인 등 SQL 조인 예제) -- 실습을 위한 테이블들을 만들어 보자 CREATE TABLE tCar ( car VARCHAR(30) NOT NULL,-- 이름 capacity INT NOT NULL,-- 배기량 price INT NOT NULL,-- 가격 maker VARCHAR(30) NOT NULL-- 제조사 ); INSERT INTO tCar (car, capacity, price, maker) VALUES ('소나타', 2000, 2500, '현대'); INSERT INTO tCar (car, capacity, price, make..