Database 34

[삽잡이::sql] 내가 작성한 Query는 어떻게 실행되려나... EXPLAIN !

EXPLAIN is used to obtain a query execution plan (that is, an explanation of how MySQL would execute a query).(출처_ MySQL) EXPLAIN은 쿼리 실행에 대한 계획을 알고 싶을 때 사용합니다.우와 삽잡이~~ 영어좀 하는데~~~ 하하하... 혼자놀기... 어떻게 DB가 실행될지 즉, 어떻게 Data를 가져올지에 대한 실행 계획을 확인할 수 있다는 것입니다. MySQL에서는 쿼리 옵티마이저(Optimizer)를 통해 빠르고 효율적으로 수행할 Query를 만들기 위해 최적화 작업을 시행합니다.이에 잘 구조화 된 SQL Query를 작성하여 Query문 변경 없이 잘! 사용하면 DBMS의 내부 엔진에 있는 옵티마이저가 ..

[삽잡이::sql] 여러 테이블을 가지고 놀자! JOIN

관계형 DB를 가지고 놀 때(?)하나의 테이블을 통해서 데이터를 가공하고 추출하는 경우도 있지만, 여러 테이블들과 Join하여 데이터를 가공하여 추출해야할 때가 있습니다. 데이터를 얻기 위해 하나의 테이블만으로는 부족할 수가 있기 때문입니다. 다들 아시는 영어 단어입니다.join~ 너와 나의 연결 고리 예 그렇습니다 JOIN 입니다~ 여러분~ 둘이 합쳐서 이쁜 데이터를 추출합니다~ SQL에서 JOIN은 '집합'으로 바라보시고 이해하시면 쉽습니다! 집합이라면, 교집합, 합집합 이런거겠구나!!! 우선 INNER JOIN에 대해서 알아봅시다. 여기... 삽질의 명성! 삽질과에 학부 명단이 있습니다. 이번에 삽질 평가를 했는데, 제대로 삽질을 하지 못한 F 학점을 받은 학생들을 추리려합니다. 아이고 '화석' 님..

[삽잡이::sql] 데이터베이스를 편하게 관리하고 다루자! SQLyog

MySQL과 같은 데이터베이스를 사용해보신 분들은 CMD 창을 사용해보셨을 것입니다. 그런데, 아주 이쁘게! DB를 관리하고 조작하는 등등을 도와주는 프로그램 친구를 소개해드리려고 합니다. 안녕 난 SQLyog라는 프로그램이야. 돌고래같이 생겼지우와 돌고래 아니니? 아니야 ^^;; 나를 잘 알고 싶으면 공식 사이트(https://www.webyog.com/)를 확인해볼래? 난 MySQL 서버의 데이터들을 관리하고 모니터링 할 수 있는 Tool이야! 너 참 좋은 녀석이구나!? 설치를 하게 되면 이와 같은 화면이 반겨줄 것입니다. DB 안의 Data를 사용하기 위해서는 DB 저장소가 어디있는지 명시해줘야겠지요.또한, 관리하기 위해 사용자 이름과 비밀번호 등이 필요할 것입니다. 이런식으로 Query문을 작성하..

#095_닷넷(.NET)_ ADO.NET - 비연결 계층 LINQ

안녕하세요 삽잡이입니다. 몇일 전부터 ADO.NET에 대해서 알아보고 있습니다.이번 시간에는 ADO.NET의 마지막으로써비 연결 계층에서 LINQ를 사용하는 기능에 대해서 알아보려고 합니다. LINQ 문법은 쿼리 문법으로써SQL과 마찬가지로 많은 데이터를 대상으로 때립니다. 이전에는 객체들인 objects 형식에 때렸던 것이었습니다.그런데 ADO.NET에서 보셨으면 아시겠지만,DataSet을 대상으로도 LINQ가 가능하다는 놀라운 사실을 알 수 있습니다. 지금까지 데이터를 조작하는 방법은 총 세가지였습니다.1. Tables, Rows, Colums 컬렉션을 사용.2. DataReader 객체를 사용.3. 강력한 타입의 데이터 클래스를 사용. 그리고 이번에 알아볼 LINQ까지 합치면 이제는 총 네가지이군요..

#093_닷넷(.NET)_ ADO.NET - 비연결 계층 코드

안녕하세요 삽잡이입니다. 지난 시간에는 ADO.NET에서 제공하는 비연결 계층에 대해서 알아봤습니다.개념을 중점적으로 알아봤었지요. 이제부터는 실제 코드를 보며, 어떻게 비연결 계층을 다루는지에 대해서 알아보겠습니다. 데이터 컬럼을 만드는 방법은 이와 같습니다. Primary Key는 오직 읽기만 가능하고, 누구나 가지고 있으며, Uniqe해야합니다.따라서, 이와 같이 상태에 대한 설정을 해주고 Primary Key로 Column을 지정해줄 수 있습니다. 또한, Column들을 따로 따로 만들 필요 없이AddRange()를 통해 여러개의 Column들을 한꺼번에 만들 수 있습니다. 물론, DB에서 자동적으로 만들어주지만,공부를 위해 수동적으로 만드는 방법에 대해서 알아보는 것입니다. DataRow는 각각..

#092_닷넷(.NET)_ ADO.NET - 비연결 계층 개념

안녕하세요 삽잡이입니다. 이번 시간 부터는 '비 연결 계층'에 대해서 알아보려고합니다. 연결 계층에서는 DB와 연결해좋지 않은 상태에서는DB 프로그램을 할 수 없었습니다.즉, DB에 대해서 가져오거나 수정등을 할 때에는 직접 테이블에 있는 내용에 명령을 내렸었다 이겁니다.모든 것을 다 데이터 원본을 대상으로 동작했었죠. 비 연결계층은 DB와 연결해놓지 않은 상태에서 DB 프로그램을 하는 것을 말합니다. 개념적으로 표현해보겠습니다. 비 연결 계층은쉽게 말하면, 원본 DB Source를 APP에 복사본을 뜨는 것입니다.즉, DB를 DB 그대로의 메모리상에 DB로 옮긴다는 것이죠.따라서, DB 프로그램을 할 때에는 DB 원본과 이야기를 하는 것이 아닙니다.왜냐? 메모리상에 DB와 이야기할 것이기 때문이지요. ..

#092_닷넷(.NET)_ ADO.NET - 트랙잭션 (Transaction)

안녕하세요 삽잡이입니다. 이번 시간에는 Transaction 에 대해서 알아보려고합니다. 트랜잭션은 DB 뿐만 아니라 다른 곳에서도 많이 사용됩니다.이는 '성공 아니면 실패'. 단 두가지의 상태만을 가질 수 있는 '단위'를 의미합니다. 어중간한 상태가 없습니다.이를 뚜렷하게 하기 위해 만든 단위가 바로 트랜잭션입니다.DB에서는 딱 '두가지 상태만을 갖는 명령어 집합'을 의미합니다. 트랙잭션에 사용되는 명령에는Insert, Delete, Update가 있지요. 돈뽑으러 간다고 생각해봅시다.ATM기에서 돈을 뽑았는데 오류가 발생했습니다.그래서 돈을 못뽑았습니다.그런데, 은행 기록을 보니 이미 돈은 뽑혀있었습니다... 이게 말이 됩니까? 결론적으로,무조건 성공하던가 실패하던가...실패를 했다면, 한번도 시도하..

#091_닷넷(.NET)_ ADO.NET - DB 모델링

안녕하세요 삽잡이입니다. 이번 시간은 DataBase 설계즉, 데이터 베이스 모델링에 대해서 알아보려고합니다. DB 모델링은DB가 규칙성있는 구조를 갖는 데이터 집합을 말합니다.즉, 데이터 모델링이라는 것은 말 그대로 데이터를 모델화 하는 것이지요. 기존에 객체 지향개념에 입각하여해결하고자하는 문제에 대해서 추상화를 사용합니다. DB 모델을 만드는것 또한 추상화를 하는 것입니다. DB 용어에서는 일반적으로, DB 테이블들을 Entity라고 부를 수 있습니다.즉, 어떤 표현하고자하는 문제 내에서 모델을 가지고 와서DB에 표현하면 하나의 Entity가 되는 것이지요. 우리는 사용자가 원하는 문제에 대해서 데이터 베이스로 표현할 수 있습니다. 그런데, 사용자의 요구사항을 DB 테이블로 표현하고자할 때하나의 테..

#089_닷넷(.NET)_ ADO.NET - DB 라이브러리

안녕하세요 삽잡이입니다. DB를 사용할 때에는즉, DB를 읽고 쓰는 것들은 어플리케이션과 분류하여 사용할 수 있습니다. 어플리케이션이 직접 DB를 읽고 쓰기를 할 수 있는 코드를 넣을 수는 있습니다.하지만, 별로 좋지 않은 코드가 됩니다.DB의 유무를 떠나서 어플리케이션이 동작할 수 있어야하기 때문이죠.따라서, DB 전용 라이브러리를 하나 만듭니다.이를 통해 DB에 접근하게 되면...즉, DB 라이브러리 형식의 객체를 사용하게 되면,어플리케이션은 DB를 사용하는지 모르게 됩니다. DB를 직접 지원할 수도 있지만,어플리케이션에서 만약 DB가 아닌 다른 무언가로 사용하겠다고 한다면,이때는 코드를 전면적으로 수정을 해야합니다. 그런데, DB라이브러리를 사용한다면,똑같은 인터페이스 기능을 지원하되, 메모리상에 ..