JavaRush /Java Blog /Random-KO /데이터베이스와 SQL 언어를 분석합니다 - "Java 프로젝트 A부터 Z까지"
Roman Beekeeper
레벨 35

데이터베이스와 SQL 언어를 분석합니다 - "Java 프로젝트 A부터 Z까지"

Random-KO 그룹에 게시되었습니다
Java 프로젝트 생성에 관한 시리즈 기사입니다. 그 목표는 핵심 기술을 분석하는 것이고, 그 결과는 텔레그램 봇을 작성하는 것입니다. 소개 부분은 여기에 있습니다 . 안녕하세요, 소프트웨어 엔지니어 여러분. 오늘 우리는 데이터베이스와 SQL 언어에 대해 이야기하고 있습니다. “A부터 Z까지의 Java 프로젝트”: 데이터베이스 및 SQL 언어 분석 - 1이 글은 누구를 위한 글인가요? 네, 관심 있는 모든 분들. 어떤 사람들은 이 기사로 여행을 시작할 수도 있고, 다른 사람들은 흥미로운 사실에 대한 기억을 되살릴 수도 있을 것입니다. 이 부분은 순전히 이론적입니다. 데이터베이스와 SQL 구문이 무엇인지 설명하기 전에 이를 연구하는 이유를 이해하고 결정해야 합니다. 이 단계 에서는 SQL 데이터베이스에 대해서만 설명합니다 . 이 기사 시리즈에서는 NoSQL을 고려하지 않습니다.

데이터베이스: 그게 뭐야?

“Java-проект от А до Я”: разбираем базы данных и язык SQL - 2데이터베이스(이하 DB)란 질의어를 이용하여 얻을 수 있는 정형화된 데이터가 저장되어 있는 곳을 말한다. 데이터베이스는 대용량의 정보를 저장할 뿐만 아니라 처리하고 변경할 수도 있습니다. 참고 사항: 일부 기준에 따라 Excel에서 값 집합을 빠르게 변경해 보세요. 원칙적으로 복잡한 것은 없습니다. 디지털화되지 않은 현실 세계와는 다릅니다. 예를 들어 차선, 거리, 도시의 이름을 바꾸는 것입니다. 모든 것이 가상이고 데이터베이스에 입력되면 정규화되며 몇 가지 사소한 일이 될 것입니다. 그렇기 때문에 많은 저장 매체가 자동으로 변경될 수 없기 때문에 어려움을 겪고 있습니다. 이러한 맥락에서 데이터베이스용 SQL은 데이터베이스가 그에 따라 이해하고 응답하는 언어입니다. 예를 들어, 도시의 이름을 바꾸는 것은 어렵지 않을 것입니다. Dnepropetrovsk의 이름을 Dnipro로 바꾸는 것은 다음과 같습니다.
UPDATE city SET name = “Днипро” WHERE id = 1231;
시스템에 대한 모든 후속 요청은 이미 필요한 이름을 생성합니다.

데이터베이스는 왜 필요한가요?

이미 말했듯이 데이터베이스를 사용하면 데이터를 저장할 수 있습니다. 그런데 이 데이터는 무엇일까요? 실제 사례를 사용하여 이해하기 위해 몇 가지 응용 프로그램에 대해 이야기할 수 있습니다. 예를 들어, 동일한 전보 봇에 대해. 우리는 얼마나 많은 사람들이 봇을 사용하고 있는지 알고 싶습니다. 이것을 어떻게 구현할 수 있습니까? 일반 Java 애플리케이션에서는 사용자의 닉네임이나 채팅 ID를 저장하는 Set이라는 고유한 요소를 많이 생성할 수 있습니다. 이것이 작동할까요? 할 것이다. 정확히 Java 애플리케이션이 중지될 때까지, 그리고 다시 시작되자마자 고유 요소 세트는 비어 있게 됩니다. 즉, 실행 중인 애플리케이션에 저장되어 있던 데이터가 그대로 사라졌습니다. 이에 대해 무엇을 할 수 있나요? Java 애플리케이션의 시스템 상태(데이터) 저장소를 다른 곳으로 이동할 수 있습니다. 이를 CSV 형식으로 컴퓨터의 일반 파일에 저장할 수 있습니다. 별도의 파일에서 한 줄로 수행할 수 있습니다. 이를 수행한 다음 Java 애플리케이션이 중지되기 전에 이 데이터를 덮어쓸 수 있습니다. 녹화 성공을 보장하는 것은 100%에 가깝지 않지만, 서버의 전원 코드만 뽑으면 녹화가 되지 않기 때문입니다. 이 접근 방식에는 심각한 단점이 있습니다. 즉, 파일 수준에서 정보를 얻고, 집계하고, 검색하는 기능이 없습니다. 예, 물론 파일을 읽고 그에 대한 개체를 생성할 수 있지만 매번 모든 데이터를 애플리케이션에 펌핑해야 합니다. 예를 들어 몇 기가바이트와 같이 많을 수 있습니다. 이는 데이터베이스에 데이터를 저장하면 방지할 수 있습니다. 어떻게? 테이블과 테이블 간의 관계를 통해. 이것이 모든 관계형 데이터베이스의 기반입니다.

SQL: 데이터베이스가 이해하는 언어

데이터베이스 관리 시스템(이하 DBMS)이 있는데 그들이 이해하는 언어는 SQL이다. SQL은 데이터베이스를 조작하고 관리하기 위한 프로그래밍 언어입니다. 이것이 어떻게 작동하는지 이해하기 위해 그림을 살펴보겠습니다. “Java-проект от А до Я”: разбираем базы данных и язык SQL - 3사용자가 DBMS에 SQL 쿼리를 보내고, DBMS는 수행해야 할 작업을 이해하고 수행하며, 요청이 데이터를 얻기 위한 것이라면 이를 반환합니다. 따라서 개발자로서 우리는 SQL 쿼리 언어를 마스터해야 합니다. “아, 또 다른 언어구나.”라고 생각할 수도 있습니다. 하나님의 도움으로 저는 여기서 자바를 거의 이해하지 못했는데 당신은 즉시 다른 언어를 제공하고 계십니다.” 이는 사실이 아닙니다. SQL은 일반적으로 데이터베이스 및 프로그래밍과 거리가 먼 회계사가 이 언어로 작성할 수 있도록 DBMS의 사양 언어로 발명되었습니다. 이것은 배우는 것이 그렇게 어렵지 않을 것임을 의미합니다. 가장 중요한 것은 연습-연습-연습입니다. 오늘은 이론이 있지만 다음 기사는 실습에 관한 것입니다. 관계형 데이터베이스는 2차원 배열 테이블과 이들 사이의 관계 집합이므로 작업은 이를 해결합니다. 예를 들어 보면 "국가"와 "도시"라는 두 테이블이 어떻게 연결되어 있는지 보여줄 수 있습니다. “Java-проект от А до Я”: разбираем базы данных и язык SQL - 4이 단계에서는 테이블의 레코드가 Java 세계의 일부 개체에 대한 데이터라는 것을 이해하는 것이 중요합니다. 예를 들어, 이 두 테이블은 Java에서 다음과 같이 설명할 수 있습니다.
public class Country {
   private Long id;
   private String name;
}

public class City {

   private Long id;
   private String name;
   private Country country;
   private Integer population;
}
글쎄요, 아름답지 않나요? 데이터베이스는 원하는 수의 테이블을 저장할 수 있습니다. 우리의 경우에는 두 가지가 있습니다.

테이블 구조

나는 모든 사람이 어떤 방식으로든 Excel 표를 접해 봤고 이라는 용어를 이해하고 있다고 생각합니다 . 데이터베이스의 맥락에서 우리는 레코드와 필드에 대해 더 많이 이야기합니다. “Java-проект от А до Я”: разбираем базы данных и язык SQL - 5따라서 City 클래스의 각 객체는 데이터베이스 테이블의 레코드라는 것이 밝혀졌습니다.

기본 키

“Java-проект от А до Я”: разбираем базы данных и язык SQL - 6데이터베이스의 필드가 동일한 값을 갖는 경우가 종종 있습니다. 예를 들어 이름, 성, 심지어는 부칭으로 두 명 이상의 사람을 찾을 수 있는 소셜 네트워크가 있습니다. 그리고 관계형 데이터베이스에는 레코드에 액세스하는 데 사용할 수 있는 고유한 필드가 필요합니다. 이를 첫 번째 키 또는 기본 키라고 합니다. 일반적으로 ID(id) 필드는 이러한 키로 사용됩니다. 이는 식별자의 약어입니다. 이것이 모든 테이블에 ID 필드를 추가해야 하는 이유입니다 .“Java-проект от А до Я”: разбираем базы данных и язык SQL - 7

외부 키

이 예에서 이러한 필드는 Country의 키를 사용하는 City 테이블에 있습니다. 이는 다음과 같이 작동합니다. 각 도시는 해당 국가에 대한 고유한 정보 식별자를 알고 있으며, 이를 가져와 데이터베이스에 쿼리를 생성하면 해당 국가에 대한 포괄적인 정보를 받게 됩니다. 그림에서 볼 수 있듯이 두 테이블 사이에는 관계가 있습니다. “Java-проект от А до Я”: разбираем базы данных и язык SQL - 8여기에는 외래 키의 원리가 나와 있습니다.

SQL에는 어떤 섹션이 있나요?

그런데 인터뷰 중에 SQL에 어떤 작업이 있는지 묻는 경우가 많습니다.
  • DDL(Data Definition Language)은 테이블, 테이블의 구조 등을 변경/생성하는 연산자 그룹입니다. 즉, 테이블 생성, 삭제, 테이블의 필드 생성/삭제; 새로운 기본 키 생성 등
  • DML(Data Manipulation Language)은 데이터 수정을 관리하는 연산자 그룹입니다. 데이터베이스의 데이터를 변경하는 모든 작업은 추가, 가져오기, 변경 및 삭제입니다.
  • DCL(Data Control Language)은 작업을 수행할 수 있는 사용자 권한을 확인하는 수단입니다. DDL/DML 작업을 수행할 수 있도록 특정 사용자에게 액세스 및 권한을 제공하는 작업입니다.

SQL에는 어떤 데이터 유형이 있습니까?

테이블은 특정 유형의 데이터를 저장하고 처리할 수 있습니다. 여기에 있는 모든 내용은 Java에서 사용하는 것과 유사합니다. 주요 내용에 대해 이야기합시다. 그 중 세 개만 있으며 필요에 따라 다른 것을 추가할 것입니다. “Java-проект от А до Я”: разбираем базы данных и язык SQL - 9그림에서 볼 수 있듯이 다음과 같습니다.
  • INT - 정수 값. 고유 식별자 및 단순 정수에 사용됩니다.
  • VARCHAR 은 문자열 입니다 .
  • DATE 는 LocalDate입니다.
지금까지는 모든 것이 간단했습니다. 그렇죠? 필드 유형은 테이블을 생성할 때 지정됩니다. 필드에 다른 유형의 값을 쓰는 것이 불가능하다는 것은 분명합니다.

SQL 연산자란 무엇입니까?

연산자는 일부 작업을 수행하는 별도의 명령입니다. 연산자는 문장으로 구성되며, 문장은 쿼리에 사용되는 키워드로 구성됩니다. 예를 살펴보겠습니다. “Java-проект от А до Я”: разбираем базы данных и язык SQL - 10여기서는 더 흥미롭습니다. 여기에 쿼리가 이미 작성되어 있습니다. 그들은 거기서 무엇을 하고 있나요? 방법은 간단합니다. "Clients 테이블에서 세 개의 필드(Name, Age 및 CreatedDate)를 선택하고 이름이 Roman과 같은 레코드만 선택하세요."

결론

이 기사에서 우리는 데이터베이스를 연구하기 시작했습니다. 우리는 그것이 무엇인지, 왜 필요한지 이해했습니다. 다음으로 우리는 SQL의 첫 번째 징후를 살펴보았는데, 이에 대해서는 다음 기사에서 더 자세히 설명하겠습니다. 평소와 마찬가지로 GitHub에 등록하고 내 계정을 팔로우하여 이 시리즈와 내가 그곳에서 작업하는 다른 프로젝트를 팔로우하는 것이 좋습니다.

숙제

JRTB에 관한 이 기사 시리즈에 흥미를 더하기 위해 때때로 숙제가 주어질 것입니다. 예를 들어, 오늘의 과제가 없으면 다음 기사는 연습이 많기 때문에 이해하기가 훨씬 더 어려울 것입니다. 따라서 작업은 컴퓨터에 MySQL DBMS를 설치하고 콘솔이나 다른 솔루션을 통해 데이터베이스에 로그인하는 것입니다. 읽어주신 모든 분들께 감사드립니다. 곧 만나요!

시리즈의 모든 자료 목록은 이 기사의 시작 부분에 있습니다.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION