728x90
반응형

서버 개발 19

MySQL - (4) 윈도우 함수

MySQL 포스팅 (1) SELECT (2) 집계함수 (3) VIEW (4) 윈도우 함수 (5) 데이터 갱신 (6) 조건 분기 (7) JOIN SQL 집계함수 SQL에서는 집계함수를 많이 사용합니다. GROUP BY와 함께 COUNT, SUM 등을 많이 사용하게 됩니다. 집계의 예제를 다시 살펴보겠습니다. 다음은 GROUP BY와 COUNT를 사용해, 나라별 인원 집계를 내려본 것입니다. SELECT Country, COUNT(*) FROM customers GROUP BY Country; 위 쿼리의 실행 결과 중 상위 5개는 다음과 같습니다. 만약 데이터에 숫자인 컬럼이 있었다면, SUM이나 AVG도 사용해 볼 수 있을 것입니다. 윈도우 함수 윈도우 함수는 이 GROUP BY와 비슷하지만, 집계가 없는..

서버 개발/MySQL 2019.08.10

MySQL - (3) VIEW

MySQL 포스팅 (1) SELECT (2) 집계함수 (3) VIEW (4) 윈도우 함수 (5) 데이터 갱신 (6) 조건 분기 (7) JOIN VIEW SQL에서 VIEW란 SELECT문을 내장하는 가상 테이블을 만드는 것입니다. 실제 데이터를 저장하고 있는 것이 아니라, SELECT문을 저장하는 구조 입니다. VIEW를 만드는 기본 문법은 다음과 같습니다. CREATE VIEW 뷰이름 AS SELECT문 예제 지난번에 사용했던 데이터를 사용해 View를 만들어보도록 하겠습니다. 아래의 쿼리는 Customer데이터에서 이름과 나라를 골라 View를 만드는 예제입니다. CREATE VIEW NameAndCountry(cname, country) AS (SELECT CustomerName, country F..

서버 개발/MySQL 2019.08.09

MySQL - (2) 집계함수

MySQL 포스팅 (1) SELECT (2) 집계함수 (3) VIEW (4) 윈도우 함수 (5) 데이터 갱신 (6) 조건 분기 (7) JOIN 집계함수 모든 분석 언어들이 그렇듯, 기술통계적 집계 함수들이 존재합니다. 이번 포스팅에서는 MySQL에서 제공하는 기본 집계나 정렬 함수들을 알아보겠습니다. ORDER BY ORDER BY는 이름에서도 알 수 있듯이 정렬하는 함수 입니다. ORDER BY의 기본 문법은 다음과 같습니다. SELECT [컬럼명 ...] FROM 테이블명 ORDER BY 컴럼명 ASC|DESC; 테이블 전체의 레코드를 여러가지 방식으로 정렬해 보도록 하겠습니다. 다음은 id를 사용해 모든 레코드를 내림차순으로 정렬하는 쿼리 입니다. SELECT * FROM customers ORDE..

서버 개발/MySQL 2019.08.08

MySQL - (1) SELECT

MySQL 포스팅 (1) SELECT (2) 집계함수 (3) VIEW (4) 윈도우 함수 (5) 데이터 갱신 (6) 조건 분기 (7) JOIN 환경 제가 사용할 환경은 다음과 같습니다. MySQL Ubuntu 5.7.27 MySQL Workbench 데이터 Select문을 사용해보기 전에 데이터를 준비하겠습니다. 다음 테이블의 데이터는 w3school에서 가져왔습니다. 링크는 아래에 있습니다. https://www.w3schools.com/sql/sql_select.asp 실습을 해보기 위해 위의 링크의 데이터를 조금 변경 했습니다. (인코딩 문제 해결) 아래는 상위 5개의 샘플 데이터 입니다. CustomerID CustomerName ContactName Address City PostalCode C..

서버 개발/MySQL 2019.08.08

JPA - (2) 객체 매핑

객체 생성 지난번 포스팅에 이어 셋팅된 프로젝트에 객체를 추가하겠습니다. h2 web console에서 다음과 같은 테이블을 생성했습니다. CREATE TABLE MEMBER ( ID VARCHAR(255) NOT NULL, NAME VARCHAR(255), AGE INTEGER, PRIMARY KEY (ID) ); 위의 테이블을 자바의 객체로 만들어 주도록 하겠습니다. Member.java 프로젝트 디렉토리 (src/java/com.jyoon.study.hello-jpa)밑에 jpa라는 디렉토리를 상성하고, Member.java클래스를 생성해줍니다. import lombok.Getter; import lombok.Setter; import javax.persistence.Entity; import ja..

서버 개발/JPA 2019.08.06

JPA - (1) 프로젝트 생성

JPA JPA란 Java Persistence API의 약자로, Java 객체와 관계형 DB를 맵핑해주는 ORM 프레임워크입니다. 개발환경 앞으로의 포스팅을 통해 JPA를 사용해볼 것인데, 이에 사용할 환경은 다음과 같습니다. IDE: IntelliJ Community 빌드툴: Gradle 언어: Java Database: H2 프레임워크: Spring Boot Spring Boot를 왜 사용하는지 의아해 하실 수 있지만, H2를 별도로 설치하지 않아도 되어서 사용하는 것입니다. 프로젝트 설정 Spring Initializr 먼저 아래 링크를 통해 스프링 부트 어플리케이션을 생성해 다운받겠습니다. https://start.spring.io/ 프로젝트는 아래와 같이 설정해 주었습니다. Gradle Proj..

서버 개발/JPA 2019.08.05

Java Thread - (3) 동기화

동기화 Thread는 독자적입니다. 이 말은 즉 보통은 다른 Thread를 신경쓰지 않고 자신의 작업을 수행한다는 의미입니다. 멀티프로세서 기반의 시스템에서는 보통 여러개의 CPU에서 각각 많은 양의 Thread들이 동시다발적으로 작업을 수행합니다. 이번 포스팅에서는 이 많은 양의 Thread들이 어떻게 협업하고, 동기화 되는지, 그리고 공유 자원을 접근할 때에는 어떤 방식으로 할 수 있는지에 대해 알아보겠습니다. Lock Thread들을 동기화 할때는 락이라는 개념을 사용합니다. 이 Lock은 보통 자원을 하나의 Thread만 접근 가능하게 잠궈놓는다는 의미로 쓰입니다. 하나의 Thread가 자원을 접근하고 있을 때, 다른 Thread가 같은 자원에 접근한다면, 이 자원은 의도하지 않은대로 변경이 될 ..

Java Thread - (2) 제어

Thread 제어 Thread 일종의 생명주기 (LifeCycle)을 가집니다. 보통은 start()메소드를 호출해 쓰레드가 작업을 시작하게 합니다. 이번 포스팅에서는 몇가지 Thread를 제어하는 메소드들을 알아보고자 합니다. Thread.sleep() - static메소드로 현재 이 메소드를 호출하는 Thread가 일정 시간동안 멈춰있게 합니다. wait() / join() - 2개 혹은 그 이상의 Thread들을 기다리거나 협업할 수 있게 합니다. interrupt() - sleep중이거나 wait중인 Thread들을 재가동 시킵니다. 위의 메소드들에 대한 예제를 구현해보겠습니다. sleep sleep중인 Thread는 아무것도 하지 않고 기다리는 상태 (IDLE상태)입니다. 이 작업은 일정 시간동..

Java Thread - (1) 기본 개념

Thread란 개념적으로 Thread는 프로그램 내의 Control Flow의 일종입니다. 이는 Process와 비슷한 개념인데, 차이점은 한 어플리케이션의 Thread끼리는 OS Process끼리의 관계보다 더 가까운 개념입니다. Thread는 기본적으로 프로그램의 모든 객체, 인스턴스, static변수들에 접근이 가능합니다. 하지만 Thread들은 각각 다른 local변수들을 가지고 있게 됩니다. Runnable 인터페이스 자바의 모든 실행기능은 Thread와 연관되어있습니다. 기본적으로는 main Thread가 작업들을 수행합니다. 이 Thread는 생성될 때 매개변수를 통해 수행할 작업을 전달받습니다. 이 작업이 바로 Runnable 입니다. 아래는 Runnable 인터페이스의 정의입니다. pub..

728x90
반응형