Database Relational Algebra - Additional ,Extended Operations r의 맨 윗줄의 값과 s의 1,3줄의 값이 일치하기 때문에 합쳐서 하나의 튜플을 만들 수 있다. 이처럼 반복하여 아래와 같은 테이블을 생성할 수 있고 해당 테이블이 natural join 연산자의 output이 된다. Natural Join의 경우 스키마를 하나의 집합으로 만드는데 그 과정에서 속성에 해당하는 값이 같지 않다면 해당 튜플을 무시 하지만, Outer Join 에서는 같지 않아도... DatabaseDatabase TIL# 157 ubuntu에서 mariadb 버전 바꾸기 로컬에서는 잘 동작했던 recursive 쿼리가 동작하지 않아 원인을 찾아보니 ubuntu의 마리아디비가 버전이 더 낮아 호환되지 않아서 에러가 발생했던 거였다. 현재 로컬에서 사용하고 배포하여도 사용할 마리아디비 버전은 10.6이었고 연습용으로 설치했던 라이트세일의 우분투에 깔린 버전은 10.1이었다. 그래서 디비를 싹 다 날리고 다시 설치하려고 하였는데 계속 의존성 에러가 뜨면서 설치가 ... ubuntuDatabaseMariaDBTILDatabase OracleDB - VIEW, SEQUENCE, INDEX -> 테이블 모양을 하고는 있지만, 실제 값을 저장하고 있진 않다. 2) VIEW를 이용한 DML(INSERT, UPDATE, DELETE)가 가능한 경우도 있지만 3) VIEW를 이용한 INSERT 시 원본 테이블에 삽입이 된다. 원본테이블 삽입 시 VIEW INSERT 구문에 미포함된 컬럼에는 NULL이 저장된다. -> VIEW를 이용한 INSERT 실패 ✏ VIEW 작성법 ✏ 여러 옵션... DatabaseoracleDatabase Database 시간 기본 값 RDBS를 사용하면서 Mongoose를 사용할 때와 다르게 일단 직접 쿼리문을 작성하고 있다. Insert문을 작성할 때, 작성 시간과 수정 시간을 저장하기 위해 NOW()를 통해 현재 시간을 작성했다. 하지만 매번 Insert문을 작성하고, Update문을 작성할 때마다 쿼리에 NOW()를 써야할까? Insert, Update에서 무의식적으로 NOW()를 통해 시간 값을 생성했는데, 생각해... serverDatabaseDatabase [Database] cmarket 데이터베이스 구축 view를 서버가 맡게되면 server side rendering (SSR) 이고 클라이언트가 맡게되면 client side rendering (CSR) 이다. 프로그램을 통해 어떤 문제를 해결할 것인가? 수도코드 -> 기능 -> 비즈니스 로직 -> 컨트롤러 이번 스프린트에서의 비즈니스 로직은 다음과 같다. 데이터베이스에서 아이템 가져오기 GET 요청이 들어온다 ⚙️ controller Ro... OrganizingJavaScriptDatabaseDatabase PostgreSQL을 Spring Data JPA 로 다루기 일반적으로 많이 사용하는 Mysql과 다르게 PostgreSQL은 다양한 데이터 타입을 지원한다. 예를들면 배열 타입, JSON 타입, JSON Binary 타입 등을 지원한다. 하지만 JPA의 구현체인 Hibernate에서 해당 데이터 타입에 대한 컬럼 타입을 기본으로 지원하지 않기 때문에 사용하기 위해서는 컬럼 타입을 정의하여 사용할 컬럼 타입과 매핑해주어야 한다. 컬럼 타입을 정의하려면... DatabaseJPADatabase [SQL] Contest Leaderboard(hackerrank) group by 와 서브쿼리 활용. 대회에서 유저들이 여러 컨테스트에서 제출한 최고점수의 합계를 출력하는 문제. 추가 조건(0이상인 것만 출력)을 걸어주어야 해서 좀 더 어려웠음. group by 를 여러번 해야 한다면 전체 select~ from 절을 하나의 table로 놓고, mysql에서는 as t 처럼 이름도 명명해주어야 오류가 나지 않는다. group by 를 쓴 상태에서 where... DatabasedbsqlDatabase Database_SQL_CRUD CRUD 테이블 생성 및 삭제 데이터베이스에서 테이블 생성 데이터베이스에서 테이블 제거 테이블 생성 실습해보기 다음과 같은 스키마를 가지고 있는 classmates 테이블을 만들고 스키마를 확인해보세요. column INSERT 테이블에 단일 행 삽입 모든 열에 데이터가 있는 경우 column을 명시하지 않아도됨 여러개 행 삽입 SELECT SELECT 문은 SQLite에서 가장 복잡한 문이... DatabasedbsqliteDatabase Database_SQL_Function 집계함수 값 집합에 대한 계산을 수행하고 단일 값을 반환 여러 행으로부터 하나의 결과값을 반환하는 함수 SELECT 구문에서만 사용됨 예시 테이블 전체 행 수를 구하는 COUNT(*) age 컬럼 전체 평균 값을 구하는 AVG(age) Overview of SQLite aggregate functions COUNT 그룹의 항목 수를 가져옴 AVG 모든 값의 평균을 계산 MAX 그룹에 있는 모... DatabasedbsqlitesqlDatabase [Database] 관계형 데이터베이스 SQL, MySQL 데이터가 필요할 때마다 전체 파일을 매번 읽어야 한다. 데이터베이스 내에서 일어나는 하나의 트랜잭션(transaction)의 안전성을 보장하기 위해 필요한 성질이다. 예를 들어 은행에서 예금을 송금를 하는 트랜젝션일 경우 금액이나 고객의 이름 등 모든 연산이 성공해서 송금하거나 하나의 연산이라도 실패하면 모두 실패해 송금을 막아야 한다. 하나의 트랜잭션에 속해있는 모든 작업이 전부 성공하거나... mysqlTILsqlACIDDatabaseACID Database_SQL_Function2 "query data based on pattern matching" 패턴 일치를 기반으로 데이터를 조회하는 방법 SQLite는 패턴 구성을 위한 2개의 wildcards를 제공 파일을 지정할 때, 구체적인 이름 대신에 여러 파일을 동시에 지정할 목적으로 사용하는 특수 기호 주로 특정한 패턴이 있는 문자열 혹은 파일을 찾거나, 긴 이름을 생략할 때 쓰임 텍스트 값에서 알 수 없는 문자를 사용... DatabasedbsqlitesqlDatabase OracleDB - DDL 데이터 정의 언어(객체 생성, 수정, 삭제) 객체(OBJECT)를 만들고(CREATE), 수정(ALTER)하고, 삭제(DROP) 등 데이터의 전체 구조를 정의하는 언어로 주로 DB관리자, 설계자가 사용한다. 테이블이나 인덱스, 뷰 등 다양한 데이터베이스 객체를 생성하는 구문으로 테이블로 생성된 객체는 DROP 구문을 통해 제거 할 수 있다. ✏ 테이블 생성하기 ✏ 컬럼에 주석 달기 데이터 무... DatabaseoracleDatabase Prisma - Database with Planet scale 하나의 번역기 텍스트같은 역할을 해주기에 매우 편리하게 사용할 수 있다. pscale connect carrot-market 으로 connect을 하였다면, 성공적으로 자신의 서버 주소가 나오는데 그것을 env 파일의 url에 적음으로써 성공적인 연결을 할 수 있게 만들어 놓는다. 이를 통해 prisma schema 에서는 성공적으로 테이블이 짜여져 있는 것을 확인 할 수 있다. 명렁어를 통... mysqlDatabaseprismapscaleplanet scaleDatabase H2 준비하기 개발 스터티...1일차. 1년동안 개발은 멀리했다.. 처음부터 다시 해봅시다. JPA 실전 준비.~ 전에 db 설치 부터~! DataBase 설치하기 로컬PC에서 DataBase 연동 시에 가벼운 H2 를 사용하는것을 권장합니다. 가볍게 테스트하기에 좋습니다.!! 자신의 개발 PC에 맞는 운영체제의 것을 설치합니다. Mac은 All Platforms 설치~~!!! 맛보기 실행... H2DatabaseDatabase [MYSQL] 웹 앱 제작하기 - 글 목록 그렇다면 이제 이를 통해 간단한 웹 어플리케이션을 만들어보자. 생활코딩 egoing 님의 [nodejs 강좌] Node.js 를 이용해 웹애플리케이션 만들기 시리즈 강의를 통해 웹 앱 애플리케이션을 직접 제작할 수 있다. (인프런 혹은 을 참조) 우리는 이를 기반으로 웹 앱을 만들 것이다. 위와 같이 각 항목을 클릭하면 클릭한 항목에 대한 설명이 뜨고, new를 누르게 되면 리스트에 새로운 ... mysqlnodejsDatabaseDatabase [DB] 군대로 알아보는 트랜잭션 - 3. 독립성 편 트랜잭션의 격리 수준은 크게 4가지로 나뉩니다. Read Uncommitted Read Committed Repeatable Read Read Uncommitted Read uncommitted는 커밋되지 않은 정보까지도 읽는 것을 허용합니다 Dirty Read, Non-repeatable read, Phantom read가 발생할 수 있습니다 그런데 Uncommitted Read로 격리 수... DatabaseDatabase [DB] 군대로 알아보는 트랜잭션 - 1. 원자성 편 2022년 봄, CC였던 여자친구와 헤어진 Jake는 입대를 결심합니다. Jake가 살고 있는 나라의 군대 시스템은 절대적입니다. 모든 행정업무의 기준은 시스템이 되고 이에 항의하는 민원은 일절 받아들여지지 않습니다. 원자성의 사전적 정의는 다음과 같습니다. 하나의 원자 트랜잭션은 모두 성공하거나 또는 실패하는 데이터베이스 운용의 집합이다. 원자성의 보증은 데이터베이스의 부분적인 갱신으로 더... DatabaseDatabase [MYSQL] 웹 앱 제작하기 - 추가 app_mysql.js 에서 항목을 추가하는 부분은 app.get('/topic/new', function(req, res){...} 를 살펴보면 된다. app_mysql.js 조금 더 직관화하기위해 new보다는 add로 하는게 나을 것 같다. new로 설정한 부분을 모두 add로 바꾸자. (views_mysql 폴더의 new.pug 파일도 add.pug 로 바꿔야한다.) 위의 코드는 fs.... mysqlnodejsDatabaseDatabase [MYSQL] 웹 앱 제작하기 - 글 상세보기 Nodejs와 MySql을 통해 간단한 웹 앱을 제작하는 과정 중에 있다. 지난 포스팅에서 DB에 담긴 id값에 해당하는 글 목록을 띄워보았고, id값이 없을 때 즉, 메인 화면에서 환영 문구도 삽입해보았다. 그러나 아직 동적으로 리스트 아이템을 클릭했을 때, 그에 따른 상세 내용이 출력되는 기능은 구현하지 않았다. 따라서 오늘은 이에 대한 것을 구현할 예정이다. app_mysql.js 에서... mysqlnodejsDatabaseDatabase [Node.js] Database - MongoDB SQL의 '스키마' 처럼 정해진 형태가 있는게 아니기 때문에, 데이터를 유동적으로 변경하고 관리할 수 있다. 하지만 이 때문에 데이터가 복잡해질 수도 있고, SQL에 비해 데이터베이스에 대한 이해가 어려워질 수 있다. 대표적으로는 MongoDB, Hadoop 이 있다. MongoDB를 사용하기 위해, MongoDB, Robo3T를 설치하고 Mongoose 라이브러리를 사용할 예정이다. 우선,... node.jsmongodbDatabaseDatabase
Relational Algebra - Additional ,Extended Operations r의 맨 윗줄의 값과 s의 1,3줄의 값이 일치하기 때문에 합쳐서 하나의 튜플을 만들 수 있다. 이처럼 반복하여 아래와 같은 테이블을 생성할 수 있고 해당 테이블이 natural join 연산자의 output이 된다. Natural Join의 경우 스키마를 하나의 집합으로 만드는데 그 과정에서 속성에 해당하는 값이 같지 않다면 해당 튜플을 무시 하지만, Outer Join 에서는 같지 않아도... DatabaseDatabase TIL# 157 ubuntu에서 mariadb 버전 바꾸기 로컬에서는 잘 동작했던 recursive 쿼리가 동작하지 않아 원인을 찾아보니 ubuntu의 마리아디비가 버전이 더 낮아 호환되지 않아서 에러가 발생했던 거였다. 현재 로컬에서 사용하고 배포하여도 사용할 마리아디비 버전은 10.6이었고 연습용으로 설치했던 라이트세일의 우분투에 깔린 버전은 10.1이었다. 그래서 디비를 싹 다 날리고 다시 설치하려고 하였는데 계속 의존성 에러가 뜨면서 설치가 ... ubuntuDatabaseMariaDBTILDatabase OracleDB - VIEW, SEQUENCE, INDEX -> 테이블 모양을 하고는 있지만, 실제 값을 저장하고 있진 않다. 2) VIEW를 이용한 DML(INSERT, UPDATE, DELETE)가 가능한 경우도 있지만 3) VIEW를 이용한 INSERT 시 원본 테이블에 삽입이 된다. 원본테이블 삽입 시 VIEW INSERT 구문에 미포함된 컬럼에는 NULL이 저장된다. -> VIEW를 이용한 INSERT 실패 ✏ VIEW 작성법 ✏ 여러 옵션... DatabaseoracleDatabase Database 시간 기본 값 RDBS를 사용하면서 Mongoose를 사용할 때와 다르게 일단 직접 쿼리문을 작성하고 있다. Insert문을 작성할 때, 작성 시간과 수정 시간을 저장하기 위해 NOW()를 통해 현재 시간을 작성했다. 하지만 매번 Insert문을 작성하고, Update문을 작성할 때마다 쿼리에 NOW()를 써야할까? Insert, Update에서 무의식적으로 NOW()를 통해 시간 값을 생성했는데, 생각해... serverDatabaseDatabase [Database] cmarket 데이터베이스 구축 view를 서버가 맡게되면 server side rendering (SSR) 이고 클라이언트가 맡게되면 client side rendering (CSR) 이다. 프로그램을 통해 어떤 문제를 해결할 것인가? 수도코드 -> 기능 -> 비즈니스 로직 -> 컨트롤러 이번 스프린트에서의 비즈니스 로직은 다음과 같다. 데이터베이스에서 아이템 가져오기 GET 요청이 들어온다 ⚙️ controller Ro... OrganizingJavaScriptDatabaseDatabase PostgreSQL을 Spring Data JPA 로 다루기 일반적으로 많이 사용하는 Mysql과 다르게 PostgreSQL은 다양한 데이터 타입을 지원한다. 예를들면 배열 타입, JSON 타입, JSON Binary 타입 등을 지원한다. 하지만 JPA의 구현체인 Hibernate에서 해당 데이터 타입에 대한 컬럼 타입을 기본으로 지원하지 않기 때문에 사용하기 위해서는 컬럼 타입을 정의하여 사용할 컬럼 타입과 매핑해주어야 한다. 컬럼 타입을 정의하려면... DatabaseJPADatabase [SQL] Contest Leaderboard(hackerrank) group by 와 서브쿼리 활용. 대회에서 유저들이 여러 컨테스트에서 제출한 최고점수의 합계를 출력하는 문제. 추가 조건(0이상인 것만 출력)을 걸어주어야 해서 좀 더 어려웠음. group by 를 여러번 해야 한다면 전체 select~ from 절을 하나의 table로 놓고, mysql에서는 as t 처럼 이름도 명명해주어야 오류가 나지 않는다. group by 를 쓴 상태에서 where... DatabasedbsqlDatabase Database_SQL_CRUD CRUD 테이블 생성 및 삭제 데이터베이스에서 테이블 생성 데이터베이스에서 테이블 제거 테이블 생성 실습해보기 다음과 같은 스키마를 가지고 있는 classmates 테이블을 만들고 스키마를 확인해보세요. column INSERT 테이블에 단일 행 삽입 모든 열에 데이터가 있는 경우 column을 명시하지 않아도됨 여러개 행 삽입 SELECT SELECT 문은 SQLite에서 가장 복잡한 문이... DatabasedbsqliteDatabase Database_SQL_Function 집계함수 값 집합에 대한 계산을 수행하고 단일 값을 반환 여러 행으로부터 하나의 결과값을 반환하는 함수 SELECT 구문에서만 사용됨 예시 테이블 전체 행 수를 구하는 COUNT(*) age 컬럼 전체 평균 값을 구하는 AVG(age) Overview of SQLite aggregate functions COUNT 그룹의 항목 수를 가져옴 AVG 모든 값의 평균을 계산 MAX 그룹에 있는 모... DatabasedbsqlitesqlDatabase [Database] 관계형 데이터베이스 SQL, MySQL 데이터가 필요할 때마다 전체 파일을 매번 읽어야 한다. 데이터베이스 내에서 일어나는 하나의 트랜잭션(transaction)의 안전성을 보장하기 위해 필요한 성질이다. 예를 들어 은행에서 예금을 송금를 하는 트랜젝션일 경우 금액이나 고객의 이름 등 모든 연산이 성공해서 송금하거나 하나의 연산이라도 실패하면 모두 실패해 송금을 막아야 한다. 하나의 트랜잭션에 속해있는 모든 작업이 전부 성공하거나... mysqlTILsqlACIDDatabaseACID Database_SQL_Function2 "query data based on pattern matching" 패턴 일치를 기반으로 데이터를 조회하는 방법 SQLite는 패턴 구성을 위한 2개의 wildcards를 제공 파일을 지정할 때, 구체적인 이름 대신에 여러 파일을 동시에 지정할 목적으로 사용하는 특수 기호 주로 특정한 패턴이 있는 문자열 혹은 파일을 찾거나, 긴 이름을 생략할 때 쓰임 텍스트 값에서 알 수 없는 문자를 사용... DatabasedbsqlitesqlDatabase OracleDB - DDL 데이터 정의 언어(객체 생성, 수정, 삭제) 객체(OBJECT)를 만들고(CREATE), 수정(ALTER)하고, 삭제(DROP) 등 데이터의 전체 구조를 정의하는 언어로 주로 DB관리자, 설계자가 사용한다. 테이블이나 인덱스, 뷰 등 다양한 데이터베이스 객체를 생성하는 구문으로 테이블로 생성된 객체는 DROP 구문을 통해 제거 할 수 있다. ✏ 테이블 생성하기 ✏ 컬럼에 주석 달기 데이터 무... DatabaseoracleDatabase Prisma - Database with Planet scale 하나의 번역기 텍스트같은 역할을 해주기에 매우 편리하게 사용할 수 있다. pscale connect carrot-market 으로 connect을 하였다면, 성공적으로 자신의 서버 주소가 나오는데 그것을 env 파일의 url에 적음으로써 성공적인 연결을 할 수 있게 만들어 놓는다. 이를 통해 prisma schema 에서는 성공적으로 테이블이 짜여져 있는 것을 확인 할 수 있다. 명렁어를 통... mysqlDatabaseprismapscaleplanet scaleDatabase H2 준비하기 개발 스터티...1일차. 1년동안 개발은 멀리했다.. 처음부터 다시 해봅시다. JPA 실전 준비.~ 전에 db 설치 부터~! DataBase 설치하기 로컬PC에서 DataBase 연동 시에 가벼운 H2 를 사용하는것을 권장합니다. 가볍게 테스트하기에 좋습니다.!! 자신의 개발 PC에 맞는 운영체제의 것을 설치합니다. Mac은 All Platforms 설치~~!!! 맛보기 실행... H2DatabaseDatabase [MYSQL] 웹 앱 제작하기 - 글 목록 그렇다면 이제 이를 통해 간단한 웹 어플리케이션을 만들어보자. 생활코딩 egoing 님의 [nodejs 강좌] Node.js 를 이용해 웹애플리케이션 만들기 시리즈 강의를 통해 웹 앱 애플리케이션을 직접 제작할 수 있다. (인프런 혹은 을 참조) 우리는 이를 기반으로 웹 앱을 만들 것이다. 위와 같이 각 항목을 클릭하면 클릭한 항목에 대한 설명이 뜨고, new를 누르게 되면 리스트에 새로운 ... mysqlnodejsDatabaseDatabase [DB] 군대로 알아보는 트랜잭션 - 3. 독립성 편 트랜잭션의 격리 수준은 크게 4가지로 나뉩니다. Read Uncommitted Read Committed Repeatable Read Read Uncommitted Read uncommitted는 커밋되지 않은 정보까지도 읽는 것을 허용합니다 Dirty Read, Non-repeatable read, Phantom read가 발생할 수 있습니다 그런데 Uncommitted Read로 격리 수... DatabaseDatabase [DB] 군대로 알아보는 트랜잭션 - 1. 원자성 편 2022년 봄, CC였던 여자친구와 헤어진 Jake는 입대를 결심합니다. Jake가 살고 있는 나라의 군대 시스템은 절대적입니다. 모든 행정업무의 기준은 시스템이 되고 이에 항의하는 민원은 일절 받아들여지지 않습니다. 원자성의 사전적 정의는 다음과 같습니다. 하나의 원자 트랜잭션은 모두 성공하거나 또는 실패하는 데이터베이스 운용의 집합이다. 원자성의 보증은 데이터베이스의 부분적인 갱신으로 더... DatabaseDatabase [MYSQL] 웹 앱 제작하기 - 추가 app_mysql.js 에서 항목을 추가하는 부분은 app.get('/topic/new', function(req, res){...} 를 살펴보면 된다. app_mysql.js 조금 더 직관화하기위해 new보다는 add로 하는게 나을 것 같다. new로 설정한 부분을 모두 add로 바꾸자. (views_mysql 폴더의 new.pug 파일도 add.pug 로 바꿔야한다.) 위의 코드는 fs.... mysqlnodejsDatabaseDatabase [MYSQL] 웹 앱 제작하기 - 글 상세보기 Nodejs와 MySql을 통해 간단한 웹 앱을 제작하는 과정 중에 있다. 지난 포스팅에서 DB에 담긴 id값에 해당하는 글 목록을 띄워보았고, id값이 없을 때 즉, 메인 화면에서 환영 문구도 삽입해보았다. 그러나 아직 동적으로 리스트 아이템을 클릭했을 때, 그에 따른 상세 내용이 출력되는 기능은 구현하지 않았다. 따라서 오늘은 이에 대한 것을 구현할 예정이다. app_mysql.js 에서... mysqlnodejsDatabaseDatabase [Node.js] Database - MongoDB SQL의 '스키마' 처럼 정해진 형태가 있는게 아니기 때문에, 데이터를 유동적으로 변경하고 관리할 수 있다. 하지만 이 때문에 데이터가 복잡해질 수도 있고, SQL에 비해 데이터베이스에 대한 이해가 어려워질 수 있다. 대표적으로는 MongoDB, Hadoop 이 있다. MongoDB를 사용하기 위해, MongoDB, Robo3T를 설치하고 Mongoose 라이브러리를 사용할 예정이다. 우선,... node.jsmongodbDatabaseDatabase