반응형

Rookiss 142

Part 5-2-17. SQL 입문 : TRANSACTION, COMMIT/ROLLBACK

💅 SQL 입문  지난 시간에는 JOIN을 통해 복수의 테이블에서 공통 열을 통해 테이블 정보를 살펴보는 내용에 대해서 알아보았다. 이번 시간에서는 TRANSACTION과 COMMIT, ROLLBACK 등 개념을 통해 테이터 처리 및 취소 여부에 대해 알아보는 시간을 가지자.   📨 TRANSACTION 트랜잭션이란 무엇일까? 검색해보니 '더 이상 쪼갤 수 없는 업무 처리의 최소 단위이다.'라고 나와 있다. 개념적으로 학습하기에는 쉽게 이해가 되지 않으므로 예시를 통해 알아보자.  예를 들어, A라는 사람이 B라는 사람에게 1,000원을 지급하고 B가 그 돈을 받은 경우, 이 거래 기록은 더 이상 작게 쪼갤 수가 없는 하나의 트랜잭션을 구성한다. 그러나 A는 돈을 지불했으나 B는 돈을 받지 못했다면 ..

Part 5-2-16. SQL 입문 : JOIN, CROSS/INNER/LEFT/RIGHT JOIN

💅 SQL 입문  지난 시간에는 UNION을 통해 복수의 테이블을 다루는 내용에 대해서 알아보았다. 이번 시간에서는 INDEX와 같이 정말 너무나도 중요한 JOIN에 대해서 알아보는 시간을 가진다.  ❌ JOIN 우리가 배우고 있는 RDBMS에서는 1~6 정규화를 통해 테이블을 적절히 나누어서 관리한다. 따라서 나누어서 관리하는 이러한 테이블들을 합치기 위해서는 JOIN 연산을 통해 이를 처리한다. JOIN 연산에는 크게 다음과 같은 종류가 있다. CROSS JOININNER JOINOUTER JOIN (LEFT/RIGHT)  ❌ CROSS JOIN CROSS JOIN이라고 명칭하는 걸 보니 무엇인가를 '교차' 시키는 느낌을 받을 수 있다. 저번에 생성했던 GameDB를 이용하여 다음과 같은 테이블과 ..

Part 5-2-15. SQL 입문 : UNION, INTERSECT, EXCEPT

💅 SQL 입문 지난 시간에는 정말 너무나도 중요하고 중요한 INDEX의 개념과 INDEX의 종류 등에 대해서 알아보았다. 이번 시간에는 UNION, INTERSECT, EXCEPT 개념을 통해 복수의 테이블을 다루는 개념에 대해서 알아보는 시간을 가진다. ➕ UNION 커리어 평균 연봉이 3백만달러 이상인 선수들의 ID와 평균을 출력해보자. 각 선수들의 평균 연봉이어야 하므로, AVG, Group By와 Having 등을 이용하여 출력할 수 있다. SELECT playerID, AVG(salary) FROM salaries Group BY playerID HAVING AVG(salary) >= 3000000; 이번엔 간단하게 12월에 태어난 선수들의 ID를 출력해보자. SELECT playerID, b..

Part 5-2-14. SQL 입문 : INDEX

💅 SQL 입문 지난 시간에는 정규화를 통해 데이터베이스 내 중복된 데이터를 분리하여 관리하는 방법에 대해서 알아보았다. 이번 시간에는 INDEX(=색인) 이라는 개념을 통해 데이터베이스 내 엄청나게 많은 데이터속에서 보다 빠르게 조회하는 방법과 인덱스의 종류인 클러스터, 논 클러스터형에 대해서 알아보는 시간을 가진다. 📖 INDEX 인덱스는 중요도를 평가할 수 없을 정도로 데이터베이스에서 매우 중요한 개념이다. 애시당초 인덱스를 이해 못한다고 하면 데이터베이스 자체를 사용하는게 큰 의미가 없을 정도로 인덱스는 굉장히 중요하다. 이러한 중요성 덕분에 데이터베이스 관련 면접을 본다고하면 0번째 질문이 인덱스에 관한 내용일 정도로 인덱스는 매우 중요하다. 위키백과에 따르면 인덱스(영어: index)는 데이터..

Part 5-2-13. SQL 입문 : 정규화

💅 SQL 입문 지난 시간에는 새로운 데이터베이스를 직접 만들어보고, 열도 생성하며 데이터를 삽입하고, 수정하고, 삭제하는 것과 제약(CONSTRAINT)에 대해서 알아보았다. 이번 시간에는 정규화라는 개념을 통해 데이터베이스 내 중복된 데이터를 분리하며 설계하는 방법에 대해서 알아보는 시간을 가진다. ➗ 정규화 정규화는 테이블을 올바르게 올바르게 변경하고 분할하기 위해서 존재한 개념이다. 사실 SQL 챕터는 정보처리기사 자격증을 준비하면서 학습했던 내용이라 강의를 듣는데 큰 어려움이 없다. 자격증 내에서 정규화는 크게 1~6 정규화까지 존재하는데 강의에서는 모든 정규화 유형에 대해서 굳이 외울 필요는 없고, 나중에 데이터베이스 설계시 저절로 알게 된다고 말씀해주셨다. 예를 들어 임의의 데이터베이스가 위..

Part 5-2-12. SQL 입문 : 데이터베이스 작성

💅 SQL 입문 지난 시간에는 SUBQUERY를 통해 "하나의 SQL문에 또 다른 SQL문"을 작성하여 보다 편리하게 데이터를 조회하는 방법에 대해서 알아보았다. 이번 시간에는 데이터베이스를 새롭게 만들어보며 데이터를 추가, 삭제, 수정하는 등 데이터베이스를 작성하는 시간을 가져본다. 🎀 DataBase 지금까지는 기존에 존재하던 BaseBall 데이터에 쿼리를 실행하였다면, 이번에는 우리가 직접 데이터베이스를 작성하는 시간을 가져보자. 우리는 MMORPG 게임을 개발할 예정이니 게임과 관련덴 데이터베이스를 새롭게 만들어보자. 이러한 데이터베이스를 '스키마'라고 부르기도하니 참고하도록 하자. 🎀 CREATE 데이터베이스를 만드는 행위는 아주 간단하다. 다음과 같은 형식을 띈다. CREATE DATABAS..

Part 5-2-11. SQL 입문 : SUBQUERY

💅 SQL 입문 지난 시간에는 INSERT, DELETE, UPDATE를 통해 데이터를 검색뿐만 아니라, 추가, 삭제, 수정에 대해서 알아보았다. 이번 시간에는 SUBQUERY라는 개념에 대해서 학습하고 어떠한 상황에서 무슨 목적으로 사용하는지 알아보는 시간을 가져보도록 한다. ⛷️ SUBQUERY(서브쿼리, 하위쿼리) 서브쿼리를 한 줄로 요약한다면 "하나의 SQL문에 포함되어 있는 또 다른 SQL문"을 뜻한다. 정의로만 설명을 들으면 무슨 말인지 어렵기때문에 간단한 예시를 통해 서브쿼리에 대해서 알아가보도록 하자. ⛷️ WHERE 절에서의 SUBQUERY 활용 간단한 예를 들어보자. "연봉이 역대급으로 가장 높은 선수의 정보"를 출력한다고 가정하자. 지금까지 학습한 내용을 토대로 해당 선수의 정보를 출..

Part 5-2-10. SQL 입문 : INSERT, DELETE, UPDATE

💅 SQL 입문 지난 시간에는 그룹화(GROUP BY)를 통해 데이터를 새롭게 검색하는 방법에 대해서 알아보았다. 또한 GROUP BY를 사용할 때에는 HAVNING 이라는 키워드까지 함께 사용하여 WHERE 절과 동일한 느낌으로 조건을 추가하는 것 까지 알 수 있었다. 이번 시간에는 SELECT가 아닌 INSERT, DELETE, UPDATE를 통해 검색뿐만 아니라, 데이터 추가, 수정, 삭제에 대해서 알아보는 시간을 가져보도록 한다. 🐲 테이블 변경 기존에 사용하던 Players 테이블이 아닌 salaries 테이블을 이용하여 실습을 진행할 것이다. salaries 테이블 정보 salaries 테이블 정보는 크게 yearID(연도), teamID(팀 ID), lgID(리그 ID), playerID(선..

Part 5-2-9. SQL 입문 : GROUP BY

💅 SQL 입문 지난 시간에는 이전까지 알아본 내용을 토대로 간단한 연습 문제를 풀어보았다. 오늘은 새로운 명령어인 GROUP BY에 대해서 알아보는 시간을 가져보도록 한다. 👻 GROUP BY GROUP BY는 컬럼을 그룹화 할 때 사용한다. 예를 들어 2004년도 보스턴 팀 소속으로 출전한 선수들의 타격 정보는 알아보고 싶다면 다음과 같이 작성하면 될 것이다. SELECT * FROM batting WHERE yearID = 2004 AND teamID = 'BOS' 그렇다면 만약 2004년도에 가장 많은 홈런을 날린 팀이 어딘지 알고 싶다면 어떻게 해야할까? 지금까지는 위와 같이 WHERE 절에 teamID등을 명시하여 작성했지만, 이젠 명시를 할 수 없으니 참 곤란하다. 어떻게 처리해야 할 지 과..

Part 5-2-8. SQL 입문 : 연습문제

💅 SQL 입문 지난 시간에는 집계 함수(COUNT, SUM, MIN, MAX 등)를 이용하여 데이터베이스에서 내가 필요한 정보만 추출하는 방법에 대해서 알아보았다. 오늘은 이전까지 알아본 내용을 토대로 간단한 연습 문제를 풀어볼 것이다. 😈 테이블 변경 이번 시간에서는 연습 문제를 풀어볼 것이지만, 기존에 사용하던 players 테이블이 아닌 batting 테이블을 이용하여 문제를 풀이할 것이다. 문제를 풀기 전, 테이블의 사전정보를 살펴보면 다음과 같다. batting 테이블 정보 playerID(플레이어id), yearID(시즌 년도), teamID(팀 명칭), G_batting(출전경기+타석) AB(타수), H(안타), R(출루), 2B(2루타), 3B(3루타), HR(홈런), BB(볼넷) 다음은..

Part 5-2-7. SQL 입문 : 집계함수 (COUNT, SUM, AVG, MAX, MIN, DISTINCT)

💅 SQL 입문 지난 시간에는 CASE를 이용하여 C#에서 사용하는 것과 같이 if-else if-else를 이용하여 처리하는 법, 비교를 이용하여 처리하는 방법 등 관련된 다양한 내용에 대해서 알아보았다. 오늘은 집계함수에 대해서 학습해 볼 것이다. 🧮 COUNT 행의 개수를 세는 집계 함수이다. SELECT COUNT(*) --모든 행의 개수 FROM Players; *은 모든 행의 개수를 뜻한다. 이렇게 *을 파라미터로 받을 수 있는 집계 함수는 COUNT가 유일하다. SELECT COUNT(birthYear) --null 은 제외하고 카운팅 FROM Players; COUNT를 비롯한 집계 함수들은 기본적으로 null 값은 제외하고 값을 카운팅 다. 즉, 위 코드는 null 값을 가진 birthY..

Part 5-2-6. SQL 입문 : CASE

💅 SQL 입문 지난 시간에는 DATETIME을 이용하여 시간, 시간 연산, 시간 범위 등 시간과 관련된 다양한 내용에 대해서 알아보았다. 오늘은 CASE문에 대해서 학습해 볼 것이다. 🧑‍⚖️ 첫 번째 방법 C#에서 사용하는 switch-case문과 같은 방법이다. SELECT birthMonth, CASE birthMonth -- 여기서부터 WHEN 1 THEN N'겨울' WHEN 2 THEN N'겨울' WHEN 3 THEN N'봄' WHEN 4 THEN N'봄' WHEN 5 THEN N'봄' WHEN 6 THEN N'여름' WHEN 7 THEN N'여름' WHEN 8 THEN N'여름' WHEN 9 THEN N'가을' WHEN 10 THEN N'가을' WHEN 11 THEN N'가을' WHEN 12..

Part 5-2-5. SQL 입문 : DATETIME

💅 SQL 입문 지난 시간에는 수치(사칙연산)와 문자열에 대해서 알아보았다. 오늘은 수치를 날짜에 대해서 학습해 볼 것이다. 현재 시간, 시간 연산, 시간 범위 등 시간과 관련된 다양한 자료를 학습하고 알아보도록 한다. 📅 날짜 데이터 타입 시간은 '2024년 02월 05일'와 같이 문자열 타입으로 데이터를 관리할 수 있지만, 문자열 타입으로 데이터를 관리한다면 시간끼리의 연산이 필요할 경우 이를 계산하기가 까다로울 것이다. 따라서 SQL에서는 날짜에 관련된 전용 데이터 타입을 지원하니 이를 사용하도록 하자. 날짜 및 시간과 관련된 데이터 타입 1️⃣ date (연/월/일) 2️⃣ time (시/분/초) 3️⃣ datetime (연/월/일/시/분/초) 📅 시간 출력 SELECT CAST('20210418..

Part 5-2-4. SQL 입문 : 수치와 문자열

💅 SQL 입문 지난 시간에는 ORDER BY와 TOP, OFFSET에 대해서 알아보았다. 오늘은 수치를 표현하는 방법과 문자열에 학습하고, 문자열 관련 함수등을 알아보도록 한다. 🛺 수치 단순 특정 열들을 가진 행을 조회하는 것이 아닌, 연산된 결과를 SELECT하면 해당 값이 ‘열 없이’ 출력할 수 있다. 대신 여기서도 AS를 사용하면 열의 이름을 붙여줄 수 있다. SELECT 2021 - birthYear + 1 AS koreanAge FROM players WHERE deathYear IS NULL AND birthYear IS NOT NULL AND koreanAge

Part 5-2-3. SQL 입문 : ORDER BY, TOP, OFFSET

💅 SQL 입문 지난 시간에는 SELECT와 FROM, WHERE에 대해서 알아보았다. 오늘은 추가적으로 오름차순, 내림차순, 상위 N개 등 다양한 정렬에 대해서 알아보도록 한다. 🤳 ORDER BY : 정렬 ✝️ ASC : 오름차순 정렬 SELECT nameFirst, birthYear FROM players WHERE birthYear IS NOT NULL ORDER BY birthYear; SELECT nameFirst, birthYear FROM players WHERE birthYear IS NOT NULL ORDER BY birthYear ASC; ORDER BY의 순서는 WHERE 다음에 작성되며. 오름차순 ASC의 값이 디폴트 값을 가진다. 또한 생략할 경우 자동으로 오름차순 정렬로 진행된..

Part 5-2-2. SQL 입문 : SELECT FROM WHERE

💅 SQL 입문 지난 시간에는 SSMS 프로그램의 형태와 필수 명령어, 테이블 추가, 주석 등의 사용법을 간략하게 알아보았다. 오늘은 SSMS를 통해 실질적으로 데이터베이스에 질의를 남기고, 결과를 살펴보는 시간을 가져본다. 🤶 SQL 쿼리 (= SQL문) * 쿼리를 작성한 후 실행 버튼을 누르면 된다. (F5) * SQL문은 소문자로 써도 상관없다. 즉 대소문자 상관이 없다. → 그렇지만, 예약어를 대문자로 쓰고 나머지를 소문자로 쓰는게 가독성이 좋다! * SQL 문장 하나가 끝나면 세미콜론을 붙여준다. → SQL문이 한 문장 밖에 없으면 세미콜론 생략해도 됨 * 전체 쿼리문의 일부분인 특정 SQL 문을 드래그 하고 실행하면 전체 쿼리문이 아닌, 드래그한 해당 쿼리문만 실행된다! 🐑 SELECT : 조..

Part 5-2-1. SQL 입문 : SSMS 입문

💪 SQL 입문 지난 시간에는 학습 자료 OT와 환경설정을 위한 설치를 진행했다. 오늘은 간략하게 SSMS를 입문하는 시간을 가지어 어떻게 동작하고, 어떠한 프로그램인지 간략하게 알아보는 시간을 가져본다. 🦧 SSMS 입문 SSMS는 위 사진과 같이 크게 쿼리, DB 테이블로 나뉘어져있다. 이 때 쿼리에서는 SQL문을 입력하는데, SQL은 DBMS를 조작하기 위한 명령어와 같다. * 새 쿼리를 누르면 SQL 문을 작성할 수 있다. * 왼쪽에 나열되어 있는 하나 하나가 모두 테이블이다. (엑셀 Sheet와 같다) * 원하는 폴더 우클릭 - 테이블 - 추가할 경우, 테이블을 새롭게 생성할 수 있다. * Ctrl + S로 테이블을 저장한다. * Refresh(=새로고침)을 해주어야 개체 탐색기에서 새 테이블 ..

Part 5-1-1. 개론 : OT 및 환경 설정

👻 OT 데이터베이스는 크게 RDBMS와 NOSQL로 나뉜다. RDBMS는 관계형 데이터베이스(Relational DataBase Management System)의 약자로 MMORPG 게임 제작에 적합한 데이터베이스이다. → 정보들이 제각각 따로 있는 것이 아닌, 관계있는 것 끼리 서로 묶어 저장하기 때문에 RDBMS가 적합하다. NOSQL은 비관계형 데이터베이스(Non-Relational Operational DataBase)의 약자로 빅 데이터에 적합한 데이터베이스이다. ⛳ 환경설정 설치하기. 1. Microsoft SQL Server 2022 2. SSMS 🦧 SSMS 입문 SSMS는 위 사진과 같이 크게 쿼리, DB 테이블로 나뉘어져있다. 이 때 쿼리에서는 SQL문을 입력하는데, SQL은 DBM..

Part 4-6-4. 유니티 연동 : 유니티 연동 #4

유니티 연동 지난 시간에는 단순 채팅이 아니라, 실제로 플레이어가 움직이는 것과 같이 이동하는 메서드를 콘솔에서 구현하였다. 이 때에 이동하는 패킷을 만들기 위해 PDL 파일을 수정하고, 그에따라 클라이언트/서버에서 추가적으로 로직을 수정해 주었다. 이 떄 Enter, Leave, Move, Player List 등 다양한 메서드들 또한 같이 구현하는 시간을 가져보았다. 오늘은 유니티 연동의 마지막 강의로 콘솔을 이용해 구현하는 것이 아닌 실제로 유니티를 이용해 구현하는 시간을 가진다. 🐛 유니티 버그 잡기 유니티를 구동해서 실행하면, 아래 이미지와 같이 콘솔창에 여러 에러가 우리를 반겨줄 것이다. 하나씩 에러 메시지를 클릭해보며, 이를 수정해보자. 😥 📜 ClientPacketManager.cs Cli..

반응형