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

우리는 데이터베이스와 SQL 언어를 분석합니다. (2부) - "Java 프로젝트 A부터 Z까지"

Random-KO 그룹에 게시되었습니다
Java 프로젝트 생성에 관한 시리즈 기사입니다(다른 자료에 대한 링크는 끝에 있습니다). 그 목표는 핵심 기술을 분석하는 것이고, 그 결과는 텔레그램 봇을 작성하는 것입니다. "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 1독자 여러분, 건강하세요. 오늘은 우리 손이 눈보다 훨씬 더 잘 기억하기 때문에 조금 이야기하고 더 많이 쓰겠습니다. 당신은 궁금할 것입니다: 우리가 MySQL을 사용하는 이유는 무엇입니까? 예를 들어 동일한 PostgreSQL 및 기타 솔루션이 있습니다. 여기에서는 모든 것이 간단합니다. 우선, 무료입니다. 둘째, 편리한 UI 인터페이스가 있습니다(별도의 기사에서 이에 대해 설명하겠습니다). 셋째, 그녀는 나에게 친숙하고 유쾌합니다. 위의 모든 것 외에도 MySQL도 매우 일반적입니다.

숙제 확인 중

지난번에 제가 작업을 주었던 것은 - 내 컴퓨터에 MySQL을 설치하고 로그인하는 것이었습니다. 콘솔을 통해 또는 다른 방법을 통해. 다 끝났나요? "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 2해보신분들 수고하셨어요! JavaRush의 수준은 중요하지 않으며, 설명서에 따라 작업에 필요한 도구를 설치하고 구성할 수 있는 것이 중요합니다. 그리고 나는 그들 중 많은 수가 있을 것이라고 확신합니다. 노력했지만 성공하지 못한 사람들도 두려워하지 않습니다. 이것이 항상 처음에 일어나는 것은 아닙니다. 때로는 휴식을 취하고 새로운 힘으로 다시 시도해야 할 때도 있습니다. MySQL을 직접 설치한 사람 - 누군가가 설치하고 있음을 알 수 있도록 댓글에 "+"를 쓰세요. 나도 이것을 할 것이다. 더 이상 Windows 노트북이 없기 때문에 MacBook에서 보여 드리겠습니다. 설치 과정은 크게 다르지 않을 것 같아요. 영문 매뉴얼을 이용하여 직접 설치를 원하시는 분은 여기를 클릭해주세요 .

MacOS에 MySQL 설치하기

우선, 다음 링크 로 이동하여 아래와 같이 Windows, Ubuntu 또는 MacOS 등 운영 체제를 선택합니다. "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 3다운로드 및 실행. 그러나 모든 것이 즉시 나에게 적합하지 않았습니다. Apple은 최신 버전 설치를 허용하지 않는 것으로 나타났습니다. "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 4물론 이를 비활성화할 수 있지만 MacBook은 작동하므로 설정을 건드리지 않겠습니다. 그래서 시행착오를 거쳐 설치할 수 있는 버전을 찾았습니다. 바로 5.7.21 입니다 . 다른 버전을 찾으려면 보관 탭으로 이동하여 원하는 버전을 선택하세요. "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 5그런 다음 다운로드한 파일을 실행하세요. 다음, 다음, 다음을 클릭하세요. 하지만 마지막에는 조심하세요! 데이터베이스에 로그인하기 위한 사용자 이름과 비밀번호가 있습니다. 나에게는 다음과 같이 보였습니다. 여기에는 이름이 root 이고 비밀번호가 Vac/zto=.24q"A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 6 인 사용자가 있을 것이라고 나와 있습니다 . 이것으로 설치가 완료됩니다.

MySQL 명령줄에 로그인

로그인하려면 MySQL 서버가 켜져 있는지 확인해야 합니다. 이렇게 하려면 시스템 환경 설정 으로 이동하여 MySQL 아이콘을 찾으십시오. 해당 아이콘 "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 7으로 이동하여 먼저 서버를 켜야 하는지 확인하십시오. 이렇게 하려면 MySQL 서버 시작을 클릭하기만 하면 됩니다. 예, 컴퓨터가 시작될 때마다 서버가 백그라운드에서 시작되도록 확인란을 선택할 수도 있습니다. 명확하게 하기 위해 $"A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 8 기호를 사용하여 터미널에서 모든 요청을 시작한다는 점에 유의하는 것이 중요합니다 . 다음으로 명령줄을 통해 MySQL 서버에 직접 연결해야 합니다. 이렇게 하려면 터미널을 열고 다음과 같이 작성하십시오. $ mysql 그리고 두 가지 옵션이 있습니다:
  1. 응답이 "ERROR 1045 (28000): Access failed for user 'roman_beskrovnyi'@'localhost' (using 비밀번호: NO" 이면 이는 서버가 설치되어 회수되고 있음을 의미합니다. 올바른 명령을 전달하기만 하면 됩니다. 그것에.
  2. 대답이 command notfound: mysql 이라면 괜찮습니다. 단지 서버에 대한 링크가 없을 뿐입니다. 이렇게 하려면 mysql 변수로 별칭을 만들어야 하므로 다음 줄을 작성합니다.

    $ 별칭 mysql=/usr/local/mysql/bin/mysql

    이는 이 터미널 세션에만 도움이 됩니다. 하지만 더 이상 필요하지 않습니다. 항상 터미널을 통해 작업하지는 않을 것입니다.

  3. MySQL이 설치되어 있지 않습니다. 컴퓨터를 속이지 마십시오.
다음으로, 설치 중에 제공된 이름과 비밀번호를 사용하여 다음을 작성합니다: $ mysql --user=root -p"A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 9 여기에서 비밀번호를 작성하면 다음과 같은 형식이 됩니다. "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 10마지막 줄만 MySQL에 로그인되어 있음을 나타냅니다. 터미널 서버. 그런데 이 루트 비밀번호는 일회용 비밀번호인 것으로 밝혀져 다른 비밀번호로 변경해야 합니다. 물론 보안상의 이유로요. 이를 변경하지 않고 서버에 새 데이터베이스를 생성하려고 하면 다음과 같은 응답을 받게 됩니다. ERROR 1820 (HY000): 이 문을 실행하기 전에 ALTER USER 문을 사용하여 비밀번호를 재설정해야 합니다 . "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 11말하자면 그들은 강제입니다. 글쎄요, 우리는 어렵나요? 비밀번호를 더 간단하게 만들어 보겠습니다(이것은 로컬 작업에만 해당됩니다. 실제 작업의 경우 비밀번호는 물론 복잡해야 합니다). 사용자 이름처럼 root∫ 이라고 가정해 보겠습니다 . 비밀번호를 변경하려면 다음 줄을 입력해야 합니다: ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; 대답은 다음과 같습니다. 모든 것이 올바르게 작동하는지 확인하려면 다음 구문을"A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 12 사용하여 새 데이터베이스를 만들어 보겠습니다 . $ CREATE DATABASE test_db; 해당 데이터베이스가 서버에 생성되었는지 확인하려면 다음 명령을 작성하십시오. $ SHOW DATABASES; 결과적으로 우리는 다음을 얻습니다: 그게 다입니다 :) 간단하고 빠르다고 말하는 것은 불가능합니다. 그러므로 누구든지 스스로 해낸 사람은 특별한 존경심을 가지고 있습니다. 아직 해보지 않은 분들도 걱정하지 마세요. 모든 유형의 설치에 대한 설명서가 있습니다."A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 13 거기에는 모든 것이 아주 건전하게 설명되어 있습니다. 유일한 것은 모든 것이 영어로 되어 있다는 것입니다. 이제 우리는 SQL로 첫 줄을 작성합니다.

SQL로 첫 줄 작성하기

위에서 알 수 있듯이 우리는 두 가지 명령을 알고 있습니다.
  1. CREATE DATABASE - 서버에 데이터베이스를 생성합니다.
  2. SHOW DATABASES - 서버에서 생성되고 사용 가능한 모든 데이터베이스를 표시합니다.
SQL은 명령을 대문자로 작성하든 아니든 상관하지 않습니다. 그러나 명령을 대문자로 쓰는 것은 좋은 매너로 간주됩니다. 다음으로, 데이터베이스를 삭제하려면 DROP DATABASE Database_name 명령을 작성해야 합니다 . 여기서 Database_name은 삭제하려는 데이터베이스의 이름입니다. test_db 라는 테스트 데이터베이스를 이미 만들었 으므로 삭제해 보겠습니다. 이를 위해 다음과 같이 작성합니다: $ DROP DATABASE test; 쿼리 확인, 영향을 받은 행 0개(0.02초) 응답은 요청이 성공했음을 확인하므로 매우 중요하다는 점은 주목할 가치가 있습니다 . 또한 이 쿼리가 변경된 테이블의 행 수와 시간을 알려줍니다. 일반적으로 DROP"A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 15 이라는 단어는 무언가를 제거하는 역할을 합니다. 이 경우 데이터베이스를 삭제했습니다. 그러나 이는 다른 목적으로도 사용될 수 있습니다(예: 테이블 삭제). 이제 저를 신뢰하기 위해 결과를 확인하고 남은 데이터베이스 수를 살펴보겠습니다. $ SHOW DATABASES; 보시다시피 test_db라는 데이터베이스가 없습니다. CHTD :D"A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 16

나만의 데이터베이스와 테이블 만들기

도시 데이터베이스 생성: $ CREATE DATABASE 도시; 특정 데이터베이스에서 작업하려면 해당 데이터베이스에 로그인해야 합니다. 이를 수행하려면 USE Database_name 명령을 사용하십시오 . 그러면 테이블 작업을 위한 모든 명령이 이 데이터베이스에서 수행됩니다. $ 도시를 사용하세요. 응답 - Databasechanged 에서 볼 수 있듯이 이 데이터베이스로의 전환이 성공적이었습니다. "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 17다음 단계는 테이블을 만드는 것입니다. 어느? 자, 먼저 국가가 포함된 테이블을 만들어 보겠습니다. 왜 그런 겁니까? 도시에는 도시가 위치한 국가에 대한 외래 키가 필요하기 때문입니다. 그리고 이러한 국가가 일반적으로 데이터베이스에 포함되기 시작한 후에 얻을 수 있습니다(이하 데이터베이스에서 약칭). 이전 기사 에서 기억했듯이 국가가 설명된 테이블에는 ID와 이름이라는 두 개의 필드가 있습니다. 여기서 ID는 고유 식별자이고 이름은 국가의 이름입니다. 따라서 이러한 데이터베이스를 만드는 것은 배를 까는 것만큼 쉽습니다. 우리는 다음과 같이 씁니다: $ CREATE TABLE country (id INT, name VARCHAR(30)); "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 18보시다시피 모든 것이 잘 진행되었습니다. SHOW DATABASES와 유사하게 테이블 목록을 볼 수 있습니다. $ SHOW TABLES; "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 19여기가 우리 테이블이에요. 이제 테이블을 삭제하는 방법을 알아 보겠습니다. 이를 위해 다음과 같이 작성합니다: $ DROP TABLE country; "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 20테이블이나 데이터베이스가 삭제되면 복원할 수 없다는 점에 유의하는 것이 중요합니다!

테이블 작업

생성한 테이블을 복원해 보겠습니다. 이렇게 하려면 이미 수행한 작업을 반복하면 됩니다. 테이블 구조를 보려면 다음 명령을 사용해야 합니다. DESC table_name : $ DESC country; "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 21보시다시피 테이블에 대한 모든 정보가 여기에 기록됩니다. 테이블에 무언가를 추가하려면 INSERT INTO table_name VALUES() 명령을 사용해야 합니다 . 3개 국가에 대한 3개 레코드를 추가해 보겠습니다. $ INSERT INTO country VALUES (1, 'Ukraine'); $ INSERT INTO 국가 VALUES(2, '러시아'); $ INSERT INTO 국가 VALUES(3, 'Belorus'); "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 22데이터베이스에 무엇이 저장되어 있는지 살펴보기 위해 간단한 요청을 사용하여 데이터를 얻습니다. 이를 위해 국가 테이블에서 모든 필드의 데이터를 가져오고 싶습니다. SQL 쿼리는 다음과 같으므로 이전 문장을 주의 깊게 기억하십시오. $ SELECT * FROM country; 여기서 *는 모든 필드를 입력해야 함을 의미합니다. "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 23이것이 우리가 얼마나 아름다운지입니다. 특정 필드만 가져오려는 경우에는 문제가 되지 않습니다. 별표 대신 쉼표로 구분해야 하는 필드 이름을 씁니다. 직접 시도해 보세요 ;) 이미 테이블을 만들었지만 정보가 충분하지 않습니다. 인구 규모는 확실히 해를 끼치 지 않을 것입니다. 그렇죠? 어떻게 해야 할까요?
  1. 테이블 스키마에 인구라는 새 필드를 추가합니다.
  2. 기존 항목을 업데이트합니다.
먼저 ALTER TABLE table_name ADD COLUMN 명령을 사용합니다 . 일반적으로 ALTER TABLE은 DDL 작업을 위한 명령 집합입니다(이것이 무엇인지 기억하시나요? 이전 기사에 있었습니다). 그런데 SELECT는 DML 작업을 의미합니다. 다음과 같이 작성해 보겠습니다. $ ALTER TABLE country ADD COLUMN Population INT; $ DESC 국가; "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 24그림에서 볼 수 있듯이 테이블에 새 필드를 성공적으로 추가하고 두 번째 명령으로 해당 필드가 스키마에 있는지 확인했습니다. 두 번째 단계는 테이블의 항목을 업데이트하고 값을 할당하는 것입니다. Wikipedia에서 번호를 가져와 보겠습니다. 나는 그들을 신뢰하지는 않지만 그럼에도 불구하고 이것이 가장 빠르고 쉬운 방법입니다. 이렇게 하려면 다른 DML 명령을 사용하십시오. 하지만 먼저 우리가 하고 싶은 일을 말해 보겠습니다. 국가 테이블을 업데이트하고 id = 1인 레코드에서 인구 필드를 41806221과 동일하게 만듭니다. 그리고 이 구성은 다음과 같습니다. UPDATE table_name SET table_row1 = value WHERE table_row2 = 값2; 이를 바탕으로 다음과 같이 작성합니다. $ UPDATE country SET 인구 = 41806221 WHERE id = 1; "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 25여기서는 처음으로 WHERE 키워드를 사용했습니다 . 필터링을 위한 값을 추가해야 합니다. 예를 들어, 이번에는 ID가 1인 필드(필드)에 대해서만 업데이트해야 한다고 말했습니다(SQL에 이것이 기본 키라고 말할 때까지 - 여러 개가 있을 수 있음). WHERE id > 2와 같은 조건을 지정할 수도 있습니다. 필터링을 전혀 지정하지 않았다면 이 값은 모든 테이블 레코드에 기록되었을 것입니다. 러시아, 벨로루시 및 기타 국가의 경우 직접 업데이트하세요. ;) 이제 id가 1보다 큰 경우 테이블에서 이름 및 인구 필드에 대한 데이터를 가져와 보겠습니다. $ SELECT name, 인구 FROM country WHERE id >1; "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 26따라서 우리는 우리가 원하는 분야만 받았습니다. INSERT INTO를 사용하면 추가할 필드와 비워 둘 필드를 지정할 수 있습니다. 이를 위해 다음과 같이 작성합니다: $ INSERT INTO 국가 (이름, 인구) VALUES('Georgia', 1234566); 무슨 일이 일어났는지 확인하기 위해 모든 필드 목록을 살펴보겠습니다. $ SELECT * FROM country; "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 27아이디가 없으면 항목도 불량이고, 인구는 물론 헤드부터 가져왔기 때문에 삭제해야 합니다. DELETE FROM table_name 명령을 사용하십시오 . $ DELETE FROM country WHERE name = 'Georgia'; "A부터 Z까지의 Java 프로젝트": 데이터베이스와 SQL 언어를 분석합니다.  파트 2 - 28이 방법으로 테이블에서 필드를 삭제하는 방법을 배웠습니다.

숙제

숙제는 다음과 같습니다.
  1. ID 필드의 기본 키(PRIMARY KEY)를 국가 테이블 스키마에 추가해야 합니다.
  2. 국가 테이블에 다른 국가인 몰도바를 추가합니다.
  3. 이전 기사의 구성표에 따라 설명된 모든 필드를 포함하는 테이블 도시를 만듭니다. 필드 이름은 id, name, country_id, 인구입니다.
  4. 도시 테이블에 기본 키를 추가합니다.
  5. city ​​테이블에 외래 키를 추가합니다.
이 작업은 흥미롭습니다. 아는 사람들에게는 빠르고 복잡하지 않을 것입니다. 그렇지 않은 사람들에게는 이 기사의 자료를 훌륭하게 보강하는 역할을 할 것입니다.

요약하자면

우리는 이 기사에서 많은 일을 했습니다. 먼저 MySQL 데이터베이스 서버를 설치하고 시작했습니다. 둘째, 이제 데이터베이스와 테이블을 생성/삭제할 수 있는 키워드 및 쿼리의 전체 목록을 배웠습니다. 테이블에 데이터를 추가하고 업데이트하고 삭제하는 방법을 배웠습니다. 다음은 설명과 함께 우리가 사용한 모든 명령입니다.
  • CREATE DATABASE 데이터베이스_이름; - 새로운 데이터베이스를 생성
  • 데이터베이스 표시; — 데이터베이스 목록 보기
  • DROP DATABASE 데이터베이스_이름; - 데이터베이스 삭제
  • USE 데이터베이스_이름; - 데이터베이스에서 작업
  • CREATE TABLE 테이블 이름(ID INT, ....); - 테이블을 생성
  • 테이블 표시; — 테이블 목록 보기
  • DESC TABLE 테이블_이름; — 테이블 다이어그램을 참조하세요
  • DROP TABLE 테이블_이름; - 테이블 삭제
  • INSERT INTO 테이블_이름 VALUES(); - 테이블에 필드 추가
  • SELECT * FROM table_name WHERE table_row = 값; — WHERE 이후의 조건에 따라 테이블의 필드를 가져옵니다.
  • SELECT * FROM 테이블_이름; - 테이블의 모든 필드를 가져옵니다.
  • ALTER TABLE 테이블_이름 ADD COLUMN 컬럼_이름 COLUMN_TYPE; — 테이블 스키마에 새 필드 필드를 추가합니다.
  • UPDATE talbe_name SET talbe_row1 = value1 WHERE table_row2 = value2; — 테이블의 레코드 업데이트: 다른 필드의 조건에 따라 한 필드의 값을 설정합니다.
  • DELETE FROM table_name WHERE table_row1 = value1; — 특정 조건에서 테이블에서 필드를 제거합니다.
나는 우리가 당신과 함께 훌륭한 일을 했다고 생각합니다. 내 작업을 좋아하는 모든 사람을 내 GitHub 계정 에 가입하도록 초대합니다 . 여기에서 내 경력에서 일어나는 흥미로운 프로젝트와 발전 사항을 게시합니다. 오픈 소스 작업에 관심이 있는 모든 사람을 내 프로젝트(저장소)에 참여하도록 초대합니다. 관심을 가져주셔서 감사합니다. 곧 나올 데이터베이스에 관한 다음 기사를 계속 지켜봐 주시기 바랍니다.

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

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