여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합
몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료구 구조화하여 기억시켜 놓은 자료의 집합체
데이터베이스는 ACID 를 만족해야 한다.
트랜잭션 : 하나의 논리적 단위를 구성하는 데이터베이스 연산의 모임
원자성(Atomicity)
한 트랜잭션의 모든 작업이 수행되던지, 하나도 수행되지 않아야 한다. 트랜잭션이 제대로 실행되지 않았다면 롤백한다.
일관성(Consistency)
모든 트랜잭션은 데이터베이스에서 정한 무결성 조건을 만족해야 한다.
격리성(Isolation)
두 개의 트랜잭션이 서로에게 영향을 미칠 수 없다. 트랜잭션이 실행되는 동안의 값은 다른 트랜잭션이 접근할 수 없어야 한다.
내구성(Durability)
트랜잭션이 성공적으로 끝난 뒤에는 그 결과가 데이터베이스에 계속 유지되어야 한다.
데이터 조작 언어(DML - Data Manipulation Language)
SELECT, INSERT, DELETE, UPDATE 등
데이터 제어 언어(DCL - Data Control Language)
GRANT, REVOKE, COMMIT, ROLLBACK 등
테이블, 행, 열의 정보를 구조화하는 방식의 데이터베이스, 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있고 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있다.
스프레드시트 파일 모음이라 생각하면 편함
행(레코드 or 튜플), 열(속성)
테이블 형식 방식으로 데이터를 저장하지 않음
데이터를 연결되지 않은 개별 파일로 저장, 문서 또는 리치 미디어 파일과 같은 복잡하고 구조화하지 않은 데이터 유형에 사용
NoSQL은 유연한 데이터 모델을 가지고 있기 때문에 자주 변경되는 데이터를 저장하거나 다양한 유형의 데이터를 처리하는 애플리케이션에 적합
데이터베이스에 정보를 요청하는 일
DB에서 원하는 조건에 맞는 데이터를 조작할 수 있는 SQL 문장의 집합
질의문
응용 프로글매에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스
정의가 어렵게 보이지만 쉽게 말하면 애플리케이션을 서로 연결하여 서로 통신할 수 있게 해주는 것( ex)식당의 서빙 직원, 고객(A)-직원-주방(B))
Open Source Software
소스 코드를 공개해 누구나 특별한 제한 없이 그 코드를 보고 사용할 수 있는 오픈 소스 라이선스를 만족하는 소프트웨어
ex) Swift, Kotlin, Python, R, Tensorflow, Pytorch
비용 절감
특성상 공유를 목적으로 제작 -> 독점 소프트웨어에 비해 개발 비용을 줄일 수 있다.
네트워킹 지원
커뮤니티가 존재하기 때문에 유연한 개발이 가능하고 시장 변화에 대응하기 수월, 어려운 부분, 지원이 필요한 경우 커뮤니티에서 도움을 받을 수 있다.
Software Development Kit
특정한 소프트웨어 꾸러미, 프레임워크, 하드웨어 플랫폼, 시스템, 게임기, 운영 체제 등을 위한 응용 프로그램 등을 만들 수 있게 해주는 개발 도구의 집합
API, IDE, 문서, 라이브러리, 코드 샘플, 기타 유틸리티가 포함될 수 있다.
API는 SDK의 일부가 될 수 있다는 점에서 SDK가 API보다 큰 개념
Integrated Development Environment
코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업의 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어
단어가 생소할 수도 있지만 사용하고 있는 vsc도 이 중 하나
그 외에도 이클립스, intelliJ 등이 있다.
Operating System
컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
처리능력 향상 (Throughput)
일정 시간 내에 시스템이 처리하는 일의 양
반환 시간 단축 (Turn Around Time)
시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
사용 가능도 향상 (Availability)
시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
신뢰도 향상 (REliability)
시스템이 주어진 문제를 정확하게 해결하는 정도
위 네가지 항목은 OS의 성능을 평가하는 기준
교육 및 연구 기관에서 즐겨 사용되는 범용 다중 사용자 방식의 대화식, 시분할 처리 시스템용 운영 체제
Linux, Mac OS, 모바일 운영체제 등
UNIX에서 파생된 운영 체제, Linux는 UNIX와 다르게 Linux OS 소스코드를 무료로 배포(UNIX는 독점 운영 체제)
정확하게 말하면 Linux라는 용어는 Linux Kernel만을 뜻하지만, Linux kernel과 GNU 프로젝트의 라이브러리와 도구들이 포함된, 전체 운영 체제를 나타내는 말로 쓰임
Ubuntu, Radhat, Debian 등
DELETE FROM 테이블명
WHERE 조건문
DELETE와 FROM 사이에 아무것도 없는 것이 default
WHERE 절이 없으면 해당 테이블에 저장된 모든 데이터가 삭제
delete from person
where id not in (
select min(id) id
from person
group by email
)
위 SQL로 코드를 돌리면 소제목의 에러가 발생
구글링을 통해 알아본 내용은 MySQL의 특징으로 데이터를 추가하거나 갱신할 경우 동일한 테이블로 Subquery를 사용할 수 없도록 되어 있기 때문이라 한다. (Oracle, PostgreSQL에서는 문제 없이 동작한다고...)
delete from person
where id not in (
select *
from (
select min(id) id
from person
group by email
) a
)
위 코드로 코드를 수정하니 문제가 해결되었다.
GROUP BY를 사용하면 기준 컬럼에 대한 그룹화가 일어나고 기준 컬럼이 아닌 데이터는 결과 테이블에서 사라지는 경우가 있다.
GROUP_CONCAT 함수는 그룹화되는 데이터를 ","으로 구분하여 하나의 문자열로 만들어 그룹화되는 데이터를 모두 확인할 수 있다.
COL1 | COL2 |
---|---|
1 | 2 |
1 | 3 |
1 | 4 |
COL1 | COL2 |
---|---|
1 | 2,3,4 |
GROUP_CONCAT(컬럼) ----- default
GROUP_CONCAT(컬럼 SEPARATOR '|') -----'구분자'
구분을 ","이 아닌 다른 구분자를 사용하고 싶다면 지정할 수 있다.