전체 글
-
[Database]조인과 집합연산(MySQL)Web/Database 2021. 4. 11. 22:26
*조인(Join) -> 조인이란 둘 이상의 테이블에서 데이터가 필요한 경우, 여러 테이블을 조합하여 데이터를 사용하기 위해 사용되는 연산이다. -> 기본적으로 RDBMS는 중복 데이터를 최소화하기 위하여 데이터를 쪼개서 저장하기 때문에, 이러한 조인 연산이 필요하다. *MySQL Sample Database -> 아래 데이터베이스는 MySQL에서 기본적으로 제공해주는 연습용 SQL 테이블 데이터이다. 해당 데이터를 이용하여 쿼리를 연습해보도록 하겠다. www.mysqltutorial.org/mysql-sample-database.aspx/ MySQL Sample Database This page provides you with a MySQL sample database that helps you to p..
-
[Database]내장 함수, 집계 함수와 GROUP BY절(MySQL)Web/Database 2021. 4. 11. 17:40
*MySQL API -> 앞서 제시한 데이터 타입, 혹은 기존에 익숙한 프로그래밍 언어와 마찬가지로 MySQL의 자세한 문법이나 사용을 보고 싶으면 API문서를 참고하는 습관을 들이도록 하자. 내장 함수에 있어서도 마찬가지이다. dev.mysql.com/doc/refman/8.0/en/functions.html MySQL :: MySQL 8.0 Reference Manual :: 12 Functions and Operators Chapter 12 Functions and Operators Expressions can be used at several points in SQL statements, such as in the ORDER BY or HAVING clauses of SELECT statement..
-
[Database]DML(MySQL)Web/Database 2021. 4. 11. 16:50
*DML(Data Manipulation Language) : 데이터 조작어. 데이터베이스 객체에서 데이터를 CRUD(Create Read Update Delete : insert select update delete)한다. (1) 데이터 삽입(INSERT) -- 모든 열에 데이터를 삽입하는 경우 insert into table_name values (val1, val2, ...); -- 특정 열에 데이터를 삽입하는 경우(권장) insert into table_name (col_name1, col_name2, ...) values (val1, val2, ...); -- 여러 데이터(행)를 한 번에 삽입하는 경우 insert into table_name (col_name1, col_name2, ...) v..
-
[Database]DDL(MySQL)Web/Database 2021. 4. 11. 15:47
*DDL(Data Definition Language) : 데이터 정의어. *데이터베이스 : 생성, 변경, 삭제, 사용. -- 다국어 처리 create database db default character set utf8mb3 collate utf8mb3_general_ci; -- 이모지 문자까지 다국어 처리 create database db default character set utf8mb4 collate utf8mb4_general_ci; -- 변경 alter database db default character set utf8mb4 collate utf8mb4_general_ci; -- 삭제 drop database db; -- 데이터베이스 사용 use db; *테이블 (1) 데이터 타입 : de..
-
[Database]SQL 개요Web/Database 2021. 4. 11. 15:47
*RDBMS(Relational Database Management System) ->RDBMS란 관계형 데이터베이스 시스템을 지칭하는 약어이다. RDBMS는 테이블 기반의 DBMS로, 데이터를 테이블 단위로 관리한다. *SQL(Structured Query Language) ->SQL이란, 데이터베이스에 있는 정보를 사용할 수 있도록 지원하는 언어이다. 기본적으로 NoSQL을 제외한 모든 DBMS에서 사용이 가능하며, 데이터의 대소문자를 제외한 대소문자는 구별하지 않는다는 특징을 가지고 있다. *SQL 구문의 기본적인 구성 (1) DDL(Data Definition Language) : 데이터를 정의하는 언어이다. 데이터베이스 객체의 구조를 정의하는 역할을 하며, 테이블 생성, 삭제, 수정등의 기능을 ..
-
[Java]그래프의 표현Algorithm/그래프&최단경로 2021. 3. 12. 00:41
*그래프의 표현 ->프로그래밍을 하다보면 그래프를 만들어야 하는 경우가 발생할 수 있는데, 프로그래밍에서 그래프를 표현하는 방법은 크게 2가지(인접 행렬, 인접 리스트)로 나뉜다. ->인접 행렬 : 수학에서 행렬은 그래프를 표현하는데 사용되기도 하였다. 따라서 프로그래밍에서 2차원 배열은 행렬의 성질을 갖는다는 점을 활용하여 마찬가지로 그래프를 표현할 수 있다. 기본적으로 인접행렬을 이용한 그래프 표현은 각 인덱스를 정점이라고 생각하고, 정점이 교차하는 지점(좌표)을 연결된 상태라고 표시해주면 된다. (1) 무향 그래프 : 방향을 가지지 않는 그래프를 말한다. 따라서, 행렬이 대칭적으로 같은 값을 갖는 특징을 갖는다. (2) 유향 그래프 : 방향을 가지고 있는 그래프를 말한다. 따라서, 무조건 행렬이 대..
-
[Java]다익스트라 알고리즘(Dijkstra Algorithm)Algorithm/그래프&최단경로 2021. 3. 12. 00:40
*다익스트라 알고리즘(Dijkstra Algorithm) -> 다익스트라 알고리즘은 음의 가중치(음의 간선, 음의 값)가 없는 그래프의 한 노드에서 각 모든 노드까지의 최단거리를 구하는 알고리즘을 말한다. -> 초기 모델은 O(V^2)의 시간복잡도를 가졌다. 이후 우선순위 큐 등을 이용한 고안된 알고리즘이 탄생했고, 현재는 O((V+E)log V)의 시간복잡도를 가지고 있다(만일 연결 그래프라면 O(ElogV)까지 시간 복잡도를 줄일 수 있다고 한다). 일반적으로는 그래프가 희소 그래프인 경우에 우선순위 큐를 이용하는 것이 낫다고 한다. ※음의 가중치를 가지면 안되는 이유는 최소 비용의 음의 무한대 발산, 그리디 알고리즘 적용 불가능 등이 있다. 후자는 제일 아래에 있는 다익스트라 알고리즘 정당성 증명을..
-
[Java]순열과 다음 순열Algorithm/완전 탐색 2021. 2. 25. 23:10
*재귀를 이용한 순열 구하기 -> 처음에는, 재귀를 이용하여 모든 순열을 구하였다. 하지만 이전에 공부한 다음 순열을 이용하여도 모든 순열을 구할 수 있다. sskl660.tistory.com/48 [Java] 순열(Permutation) *순열(Permutation) -> 순열이란, 임의의 집합을 순서를 부여하여 차례로 나열하는 것을 말한다. Ex) 이를 테면 집합 {1, 2, 3}중 3개의 원소를 선택한 순열을 구하시오라고 하면, 결과는 {123, 132, 213, 231, sskl660.tistory.com sskl660.tistory.com/54 [Java]다음 순열(Next Permutation) *다음 순열(Next Permutation). -> 다음 순열이란, 말 그대로 해당 숫자의 다음에 ..
-
[Java]다음 순열(Next Permutation)Algorithm/완전 탐색 2021. 2. 25. 22:47
*다음 순열(Next Permutation). -> 다음 순열이란, 말 그대로 해당 숫자의 다음에 올 순열의 수를 의미한다. Ex) {1, 2, 3}에서 3개를 선택하는 경우 순열은 123, 132, 213, 231, 312, 321이 있다. 그렇다면 123 다음에 올 순열은 무엇일까? 132이다. 즉, 123의 다음 순열은 132임을 알 수 있다. *다음 순열 구하기 -> 다음 순열을 구하는 로직은 우리가 무의식적으로 다음 순열을 구하는 로직을 천천히 곱씹으며 구체화시켜보면 가능하다. 우리는 이미 다음 순열을 구하는 방법을 알고 있다!(다만 막상 논리적 순서로 나타내보려 하면 헷갈리고 어려울 뿐이다...) -> 규칙성을 찾기 위해서는, 작은 경우부터 침착하게 내가 어떻게 구하고 있는지 분석해보면 된다...
-
[Java]부분 집합(Subset)과 멱집합(Power Set)Algorithm/완전 탐색 2021. 2. 25. 21:36
*부분 집합(Subset) -> 부분 집합이란 쉽게 말해서 어떤 집합에 포함되는 집합을 말한다. 말 그대로 어떤 집합의 '부분'이 되는 집합이라고 생각하면 된다. Ex) {1, 2, 3}의 부분 집합은 공집합, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3} 이 있다. *멱집합(Power set) -> 멱집합이란, 해당 집합의 모든 부분 집합을 모아둔 것이다. Ex) {1, 2, 3}의 멱집합은 {공집합, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}} 이다. *부분 집합 구하기 -> 부분 집합은 기본적으로 조합을 이용하여 쉽게 구할 수 있다. 어떤 집합에서 개수가 전체 원소의 개수가 n개인 부분 집합을 구한다면, 해당 집합..