SQL

이동근·2021년 6월 21일
1

백엔드

목록 보기
2/3

데이터 : 컴퓨터 안에 기록되어 있는 숫자를 의미

데이터베이스

  • 넓은 의미 : 컴퓨터 안에 기록된 모든 것
  • 일반적인 의미 : 특정 데ㅣ터를 확인하고 싶을 때 간단하게 찾아낼 수 있도록 정리된 형태
  • db 내의 데이터는 영구적으로 보존되어져야 합니다. db의 데이터는 하드디스크나 플래시메모리(SSD) 등 비휘발성 저장장치에 저장합니다.

DBMS : 데이터베이스 관리 시스템, DataBase Management System

왜 DBMS가 필요한가

  • 생산성 : 시스템 개발 과정에서의 생산성 향상, C.R.U.D과 같은 기본 기능을 DBMS가 지원합니다.
  • 기능성 : 데이터베이스를 만드는 기능을 많이 제공합니다.
    (복수 유저의 요청에 대응하거나, 대용량의 데이터를 저장하고 고속으로 검색하는 기능)
  • 신뢰성 : 대규모 DB는 많은 요청에 대응할 수 있도록 만들어 졌습니다. 이를 위해 하드웨어를 여러 대로 구성하여 신뢰성을 높이는 동시에 성능 향상을 꾀하기도 합니다. 실제로 일부 DBMS는 컴퓨터 여러대를 두고, 소프트웨어를 통해 확장성(Scalability)와 부하분산(Load balancing)을 구현 합니다.

확장성(Scalability)과 부하분산(Load balancing)
서버에 과부하가 걸리게 되면 가장 쉬운 방법은 서버의 성능을 업그레이스 시키는 것이다. 서버의 성능을 올리는 것을 가리켜 '스케일 업(Scale Up)' 이라고 한다. 하지만 하드의 성능을 스케일 업 시키는 데에는 한계가 명확하게 보이게 된다. 그래서 한 개의 서버에 가해지는 부하를 여러개의 서버로 분산 시키는데 이를 'Load Balancing(로드 로드밸런싱)' 다른 말로 부하분산 이라고 한다.

SQL

SQL : 관계형 데이터베이스 RDBMS를 조작할 떄 사용하는 언어
DML : Data Manipulation Language, 데이터베이스에 새롭게 데이터를 추가하거나 삭제하거나 내용을 갱신하는 등, 데이터를 조작할 때 사용합니다.
DDL : Data Definition Language의 약자로 데이터를 정의하는 명령어. 데이터베이스 객체를 만들거나 삭제하는 명령어 입니다.
DCL : Data Control Language, 데이터를 제어하는 명령어, 트랜잭션을 제어하는 명령과 데이터 접근 권한을 제어하는 명령이 포함되어 있다.

데이터베이스의 종류

계층형 데이터베이스 : 역사가 오래된 DBMS로 폴더와 파일 등의 계층 구조로 데이터를 저장하는 방식, DVD, 하드디스크가 이러한 계층형 데이터베이스라고 할 수 있다.
관계형 데이터베이스 : 표 형식 데이터를 다루는 것이 관계형 데이터 베이스 나중에 자세히 다룰 예정
객체지향 데이터베이스 : 객체라는 것을 중심으로 프로그래밍하는 언어 가능하면 객체 그대로를 데이터베이스의 데이터로 저장하는 것
XML 데이터베이스 : XML이란 자료 형식을 가리키는 용어로, 태그를 이용해 마크업 문서를 작성할 수 있게 정리한 것을 말한다.
key-value 스토어(KSV) : 키와 그에 해당하는 값이라는 단순한 형태의 데이터를 저장하는 데이터베이스입니다.(해시테이블) NoSQL(Not only SQL)이라는 슬로건으로부터 생겨난 데이터베이스로, 열 지향 데이터베이스라고도 불리운다.

데이터베이스 서버

클라이언트/서버 모델 : 사용자 조작에 따라 요청을 전달하는 클라이언트 와 해당요청ㅇ르 받아 처리하는 서버로 소프트웨어를 나누고, 복수의 컴퓨터 상에 하나의 모델을 구현하는 시스템을 말합니다.

웹 시스템에서의 클라이언트/서버

브라우저와 웹 서버로 구성되는 클아이언트/서버 모델의 시스템을 말합니다.

  • 클라이언트가 보내는 요구사항 - Request
  • 서버의 응답 - Response

클라이언트의 요청을 받은 웹 서버는 우선 DNS에 가서 IP 주소를 찾고 사용자가 입력한 URL을 가지고 리턴이 됩니다. 그리고 IP 주소는 HTTP 요청을 통해 HTTP요청 메세지를 생성 합니다. 생성된 HTTP 메세지는 TCP 프로토콜을 실시해 인터넷을 거쳐 IP주소의 컴퓨터 서버로 전송이 됩니다. 서버는 클라이언트의 요청을 승인하고, 응답메세지를 전송합니다. 도착한 HTTP 응답메세지에는 HTTP 프로토콜을 사용해서 웹 페이지의 데이터로 변환이 되고 웹 브라우저의 출력에 의해 사용자가 보게 됩니다.

RDBMS의 클라이언트/서버

웹 시스템과 마찬가지로 클라이언트/서버 모델로 시스테이 구성됩니다. 하지만 단순히 요청과 응답을 되풀이 하는 것은 아닙니다.

웹 시스템에는 없었떤 사용자 인증이 필요합니다. RDBMS는 사용자 별로 데이터베이스 접근을 제한 할 수 있습니다. 이 때문에 데이터베이스를 사용하기 위해서는 사용자 인증을 거쳐야 합니다. 사용자 인증은 사용자 ID와 비밀번호로 실행됩니다. 만약인증에 실패하면 데이터베이스에 접근할 수 없습니다.

실패한 경우

성공한 경우

mysql -u (사용자) -p

데이터베이스의 설계

데이터베이스의 스키마 내에 테이블, 인덱스, 뷰 등의 데이터베이스 객체를 정의하는 것을 말합니다. 스키마 내에 정의 한다는 뜻에서 '스키마 설계'라 불리기도 합니다.

  • 데이터베이스 설계의 주된 내용은 테이블의 이름이나 열, 자료형을 결정하는 것입니다.

논리명과 물리명

테이블을 설계할 때는 테이블 이름이나 열 이름을 지정하는데, 하나의 테이블에 대해 두 개의 이름을 지정할 때도 있습니다.

  • 물리명 : 데이터베이스에서 아용될 이름,
    - 데이터베이스 시스템 규칙에 따랄 길이에 제한이 있거나 공백문자를 사용할 수 없는 등의 제약이 따릅니다.
    - 일상에서 사용하는 단어로는 이름을 지정하는 데에는 한계가 있다.
    - 전통적으로 알파벳을 사용해서 이름을 지정합니다.
  • 논리명 : 테이블의 '설계상 이론', 길이도 제한되다 보니 생략하거나 약자로 이름을 붙히는 경우가 많다.
    - 해당 테이블을 실제로 부를 때 사용하는 이름이라는 점입니다.
    - 물리명은 잘못 정하면 변경하기 힘들지만, 논리명은 언제나 바꿀 수 있다.

물리명은 CREATE TABLE에 지정하는 테이블 이름이나 열 이름이다!

논리명은 설계상의 이름이다!

이러한 이유로 물리명과 놀리명이 함께 기재된 설계도나 정의서도 있다. 경우에 따라서는 별도의 논리명 기입 항목을 지정하지 않고 비고란에 기재하는 경우도 있습니다.

논리명이 기재된 테이블 정의서 사례

열명논리명자료형NULL기본값비고
item_code상품코드CHAR(4)NO
item_name상품명VARCHAR(30)YES
price가격INTEGERYes

자료형 : 데이터베이스에 저장해야 할 데이터의 type을 정해주는 것이다. 위의 VARCHAR는 문자 INTEGER는 숫자 데이터가 들어간다는 것을 의미한다.
고정길이와 가변길이 : 어느 쪽으로 지정할 것인지는 저장할 데이터를 고려해 결정합니다. 제조번호 처럼자리수가 이미 정해져 있는 경우에는 고정길이로, 비고란 처럼 자주 입력되지도 않지만 입력되는 문자열의 길이의 변동 폭이 큰 경우에는 가변길이가 맞음
기본키(Primary Key) : 기본키는 테이블에서 유일한 키로 Null 값을 가질 수 없습니다.

<테이블1>

학번주민번호성명성별
1001812222-44124김형석
1002552115-1515151김현천
1003855151-5455544류기선
1004551515-4515441홍영선

<테이블 2>

학번과목명
1001영어
1001전산
1002영어
1003수학
1004영어
1004전산

이런식으로 두 개의 테이블이 있다고 하면

  • 테이블 1에서 학번과 주민번호가 기본키(pk)가 될 수 있다.
  • 테이블 2에서는 학번 , 과목명이 기본키(pk)가 될 수 없다. 유일한 데이터가 아니기 때문이다. 그래서 학번+과목명 해서 pk를 지정해줘야 한다.

<테이블2 수정>

id학번과목명
11001영어
21001전산
31002영어
41003수학
51004영어
61004전산

이런식으로 테이블을 만들게 되면 id값을 pk로 설정할 수 있게 된다.

profile
하루하루 1cm 자라는 개발자

0개의 댓글