분류 전체보기

    [SQL] Subquery

    Subquery 하나의 SQL 쿼리 안에 또다른 SQL 쿼리가 있는 것 kakaopay로 결제한 유저들의 정보 보기 -- 1 -- select u.user_id , u.name , u.email from users u inner join orders o on u.user_id = o.user_id where o.payment_method = 'kakaopay' -- 2 -- select u.user_id , u.name , u.email from users u where u.user_id in ( select user_id from orders where payment_method = 'kakaopay' ) where 안에 들어가는 subquery select * from users u where u.u..

    [SQL] Inner Join, Left Join, Union

    inner join select * from users u inner join point_users p on u.user_id = p.user_id '오늘의 다짐' 정보에 과목 정보를 연결해 과목별 '오늘의 다짐' 갯수를 세어보자! select co.title, count(co.title) as checkin_count from checkins ci inner join courses co on ci.course_id = co.course_id group by co.title 유저의 포인트 정보가 담긴 테이블에 유저 정보를 연결해서, 많은 포인트를 얻은 순서대로 유저의 데이터를 뽑아보자! select * from point_users p inner join users u on p.user_id = u.us..

    [SQL] Group by, Order by

    1. Group by Group by 는 동일한 데이터를 묶어주는 기능입니다. select field1, count(*) from users_table group by field1 쿼리 실행순서 from ➤ group by ➤ select 예제 field1 별로 묶어서 각 데이터별 개수 구하기 select field1, count(*) from table1 group by field1 field1 별로 묶인 데이터별 최소값 구하기 select field1, min(field2) from table1 group by field1 field1 별로 묶인 데이터별 최대값 구하기 select field1, max(field2) from table1 group by field1 field1 별로 묶인 데이터별 평..

    [WIL] ORM, noSQL vs SQL

    ORM(Object-Relation Mapping)이란? 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말합니다. 기존에는 DB의 값을 뽑아오기 위해서는 쿼리라는 명령문으로 값을 가져와야 했습니다. 물론 값을 추출하는 것 뿐만 아니라 삽입, 삭제, 수정 등의 구문도 있습니다. 서버 개발자가 DB에 접근하기 위해서 쿼리문을 써야했지만 ORM을 사용함으로서 어플리케이션에서 기존의 언어로도 DB에 접근이 가능해졌습니다. ORM은 Object modeling과 Relational modeling을 이해해야합니다. 객체를 만드는 클래스와 관계형 DB사이의 차이가 존재하기 때문에 ORM을 사용하여 연결합니다. 장점 1. 쿼리문을 직접 사용하지 않고 entity를 객체로 표현할 수 있습니다. 2. 객..

    [JavaScript] call, apply, bind

    1. call 아래 코드를 실행시켜보면 this.name 에는 아무것도 나오지 않습니다. const mike = { name: "Mike" } const tom = { name: "Tom" } function showThisName() { console.log(this.name); } showThisName(); 이 때 call() 을 사용해서 this가 무엇인지 정의해줄 수 있습니다. showThisName.call(mike); showThisName에 call로 mike라는 객체를 받으면 this는 mike를 가리키게 됩니다. 따라서 this.name은 Mike가 출력되겠죠. call로 업데이트해 줄 객체를 지정해서 값을 바꿀 수도 있습니다. const mike = { name: "Mike" } co..

    [NodeJS] require() 함수 동작원리

    require()는 대략적으로 다음과 같은 구조라고 합니다. var require = function(src){ var fileAsStr = readFile(src) //line 2 var module.exports = {} //line 3 eval(fileAsStr) //line 4 return module.exports //line 5 } const express = require('express') 1. express라는 것을 function의 src인자로 넣습니다. 2. fileAsStr이라는 변수에 파일을 읽어와 저장합니다. 3. module.exports라는 빈 객체를 만듭니다. 4. fileAsStr을 실행합니다. 기본적으로 module.exports 와 require를 사용할 수 있는 이유..

    [Database] ORM과 DB의 차이

    ORM(Object Relational Mapping)이란 객체 - 관계 매핑입니다. OOP에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB에서 쓰이는 데이터인 테이블을 자동으로 매핑하는 것을 말합니다. 그러나 클래스와 테이블은 서로가 기존부터 호환가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하는데, 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결합니다. 따라서 ORM을 이용하면 따로 SQL문을 짤 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 됩니다. 장점: 1. 완벽한 객체지향적인 코드 ORM을 이용하면 SQL문이 아닌 클래스의 메서드를 통해 데이터베이스를 조작할 수 있어, 개발자가 객체 모델만 이용해서 프로그래밍을 하는 데 집중할..