데이터베이스 12

[데이터베이스] 12장 - stored procedure를 백엔드 실무에서 쓰기에 조심스러운 이유!

✅ 3-tier architecture 에서 stored procedure의 의미 : 오늘날의 IT회사들은 일반적으로 client-server architecture 의 한 종류인 three-tier architecture 모델로 서비스를 개발한다. 그럼, 비즈니스 로직이란 무엇일까? 당근마켓을 예로 들어보자. 이런 비즈니스 로직들을 통해 파생되는 데이터들이 있을 텐데, 그러한 데이터들이 데이터 티어에 저장된다. 10장에서 Stored Procedure 는 RDBMS에 저장되고 사용된다고 했는데, 주된 사용 목적은 비즈니스 로직 구현이라고 했다. 즉, stored procedure을 사용한다는 것은 data tier에 비즈니스 로직이 존재할 수 있다는 의미이다! 즉, 비즈니스 로직이 Logice 티어에도..

[데이터베이스] 11장 - stored procedure + 프로시저의 동작 방식과 특징, stored function과의 차이

✅ stored procedure 의 뜻과 예제 : 사용자가 정의한 프로시저 : RDBMS에 저장되고 사용되는 프로시저 : 구체적인 하나의 task(태스크)를 수행한다. stored procedure를 만들 때도, delimiter 라는 키워드를 사용한다. delimiter 는 구분자를 의미하는데, 기본적으로 SQL 에서 사용되는 delimiter는 (;)세미콜론이다. 하지만, stored program의 정의를 서버로 보내기 위해서는 delimiter를 일시적으로 재정의 해주어야만 한다. 이 때, 주의해야 할 점은 DELIMITER를 재정의하고 stored program을 정의한 후에 delimiter를 기존의 세미콜론(;)으로 바꿔주는 것이 좋다. (계속해서 DELIMITER를 사용자가 재정의한 것으..

[데이터베이스] 10장 - SQL 에서 stored function 이란? + 언제 사용하면 좋을지에 대해

✅ stored function 의 뜻과 예제 : 사용자가 정의한 함수 : DBMS에 저장되고 사용되는 함수 : SQL의 select, insert, update, delete statement에서 사용할 수 있다. stored function을 만들 때, delimiter 라는 키워드를 사용한다. delimiter 는 구분자를 의미하는데, 기본적으로 SQL 에서 사용되는 delimiter는 (;)세미콜론이다. 하지만, stored program의 정의를 서버로 보내기 위해서는 delimiter를 일시적으로 재정의 해주어야만 한다. 이 때, 주의해야 할 점은 DELIMITER를 재정의하고 stored program을 정의한 후에 delimiter를 기존의 세미콜론(;)으로 바꿔주는 것이 좋다. (계속해서..

[데이터베이스] 9장 - SQL 로 데이터 조회하기! Group by, Aggregation function, Order by

✅ Order by : 조회 결과를 특정 attribute 기준으로 정렬하여 가져오고 싶을 때 사용한다. : default 정렬 방식은 오름차순이다. : 오름차순 정렬은 ASC 로 표기하고, 내림차순 정렬은 DESC 로 표기한다. 바로 예를 살펴보자. statement 는 아래와 같다. - 임직원들의 정보를 연봉 순서대로 정렬해서 알고 싶다. 임직원의 정보를 "연봉" 순서대로 알고 싶으므로, salary 속성을 오름차순으로 정렬해주면 된다. SELECT * FROM EMPLOYEE ORDER BY salary; 기본 정렬 방식은 ASC 으로 오름차순을 따른다. 그럼, 내림차순으로 정렬하고 싶을 떄는 어떻게 해야 할까? DESC 키워드를 써주면 된다. SELECT * FROM EMPLOYEE ORDER B..

[데이터베이스] 8장 - SQL 로 데이터 조회하기! JOIN

✅ JOIN : SQL 에서 JOIN 이란 두 개 이상의 table 들에 있는 데이터를 한 번에 조회하는 것 입니다. : 여러 종류의 JOIN 이 존재합니다. ✅ Implicit JOIN vs Explicit JOIN 먼저, implicit join 과 explicit join 에 대해 알아봅시다. 아래와 같은 statement가 있을 때, 쿼리는 아래와 같습니다. id 가 1 인 임직원이 속한 부서 이름은? SELECT D.name FROM EMPLOYEE AS E, DEPARTMENT AS D WHERE E.id = 1 AND E.dept_id = D.id; SELECT 문에 대한 포스팅에서도 JOIN 이 동작하는 것을 다뤘는데요, 이렇게 WHERE 절에 join_condition이 같이 있는 것을 ..

[데이터베이스] 7장 - SQL 로 데이터 조회하기! NULL 의 의미와 three-valued logic

✅ NULL의 의미 : unknown - 알려지지 않음 : unavailable or withheld - 이용할 수 없음(공개하지 않아서) : not applicable - 적용할 수 없음 → 상황에 따라 다르게 해석된다. 그렇기 때문에 NULL 끼리의 같다, 다르다를 비교할 수가 없는 것이다. 예시를 살펴보자. =(등호)를 사용해서 NULL 비교를 하면, 아무것도 나오지 않는다. 이렇게 작성하고 "birth_date 가 NULL 인 사람이 아무도 없구나~" 라고 이해하면 안 된다. 실제로 JEFF 의 생년월일은 NULL 값을 가진다. IS 를 사용해서 NULL 값 비교를 하면 제대로 NULL 인 속성이 잘 추출된다. 반대로 값이 다른지 아닌지 표현하고 싶으면 != 대신에 'IS NOT' 을 사용해야 ..

[데이터베이스] 6장 - SQL 로 데이터 조회하기! SubQuery, IN, EXISTS, ANY, ALL

✅ SubQuery statement 는 아래와 같다. - ID가 14인 임직원보다 생일이 빠른 임직원의 ID, 이름, 생일을 알고 싶다. : 여기서 임직원의 ID 와 이름과 생일을 알고 싶다고 했으니까, employee 테이블이 필요한 건 확실해 보인다. : 그럼, 우선 ID 가 14인 직원을 뽑아낸 뒤, 그 직원의 생일을 알아내고, 다시 조건에 그 생일보다 빠른 직원들을 찾으면 될 것 같다. : 어떻게 하면 좋을까? 먼저, 현재 EMPLOYEE 테이블은 아래와 같다. 그럼, 먼저 ID 가 14인 직원의 생일(birth_date)을 뽑아내보면, 아래와 같다. SELECT birth_date FROM EMPLOYEE WHERE id = 14; ID가 14인 직원의 생일이 '1992-08-04' 라는 ..

[데이터베이스] 5장 - SQL 로 데이터 조회하기! SELECT 를 활용해서 데이터를 읽어오는 기본적인 문법과 관련 키워드들

✅ SELECT 로 데이터 조회하기 SELECT statement 는 아래와 같다. - ID 가 9인 임직원의 이름과 직군을 알고 싶다. : 현재 Employee 테이블은 아래와 같다. SELECT name, position FROM employee WHERE id = 9; 여기서 SELECT 뒤에 오는 COLUMN(속성,열) 들을 projection attributes 라고 한다. 즉, 내가 관심있는 속성만 투영해서 가지고 온다는 의미이다. 즉, 우리가 원하는 컬럼인 name 과 position 에 해당하는 값들만 뽑아서 가져온다. 그리고, WHERE 이하를 selection condition 이라고 하는데, 이는 행을 결정해 준다고 생각하면 된다. (여기서는 id=9인 행) 다시말해, 이 projec..

[데이터베이스] 4장 - SQL로 DB에 데이터를 추가(insert)하고 수정(update)하고 삭제(delete)하는 방법

✅ 데이터 추가하기 : Employee 테이블부터 데이터를 추가해보자. INSERT INTO 테이블 VALUES () 키워드로 데이터를 추가한다. 이 때, VALUES 에 넣어주는 값 순서는 테이블을 생성할 때, attribute를 넣어준 순서대로 값을 넣어주면 된다. create table EMPLOYEE( id INT PRIMARY KEY, name VARCHAR(30) NOT NULL, birth_date DATE, sex CHAR(1) CHECK(sex in ('M','F')), position VARCHAR(10), salary INT DEFAULT 50000000, dept_id INT, FOREIGN KEY (dept_id) references DEPARTMENT(id) on delete S..

[데이터베이스] 3장 - SQL 개념과 SQL로 데이터베이스를 정의하는 법

✅ SQL 뜻? : Structured Query Language 로, 현업에서 쓰이는 relational DBMS 의 표준 언어이다. : 종합적인 database 언어 : DDL + DML + VDL ✅ SQL 기본 개념 및 용어 relational data model SQL relation table attribute column tuple row domain domain - SQL 에서 relation 은 multiset(=bag) of tuples 를 허용한다. 즉, 중복된 tuple을 허용한다는 뜻이다. 기존 relaional data model 의 relation 과는 다른 점이다. - SQL은 RDBMS 의 표준 언어이지만, 실제 구현에 강제가 없기 때문에 RDBMS마다 제공하는 SQL의 스..

반응형