Database 34

[삽잡이::sql] 다 삭제해버리겠다! DROP, DELETE, TRUNCATE TABLE

DB를 관리하며 가끔 눈에 거슬리는 데이터를 삭제하고자 할 때가 있습니다. 저장한 데이터를 삭제할 때에는? 예 그렇습니다. 바로 DELETE 문을 사용하여 삭제를 진행하게 되지요.DELETE란 단어 자체가 '삭제'를 의미하니깐요. 간단하게 DELETE문 사용법을 살펴보겠습니다. 1DELETE FROM 테이블명 WHERE 조건cs 간단하지요 하하하...물론, 조건이 없다면 테이블에 있는 데이터가 전체 삭제되겠지요. 그런데, DROP이라는 녀석도 있습니다. 12DROP DATABASE 데이터베이스명DROP TABLE 테이블명cs 테이블 자체를 날려버리는 것입니다. Db를 날릴 수 도 있습니다. 참고로 Data를 관리할 때이렇게 위험한(?) 명령어는 조심하게 써야됩니다. 조심조심 사용해요~ 그렇다면, DELE..

[삽잡이::DB] 중복을 없애고 테이블을 최소화하라! 정규화(normalization)

학부생 때는 잘 느끼지 못했는데 지금 와서 느끼는것은 Query문도 잘못 실행하면 오랫동안 기다려야하는 사실입니다. 진짜 한번 잘못 실행했다가....언제까지 하나 보자 하고 화장실을 다녀오고도 무려 10분을 더 기다렸던 기억이.... 오버같죠? 진짜입니다. 그래서 저는 이제 Query문을 실행하기전에항상 EXPLAIN 을 붙여 어떤식으로 Query문이 실행될지 살펴본답니다. Index를 타나 안타나 살펴보는건데.... 아무튼... 왜 이런 썰을 풀었을까요? 예 그렇습니다.이번 시간에는 정규화(Normalization)에 대해서 알아보려고 하기 때문입니다. 사실 위의 썰과 정규화는 뭐... 그다지 정확히! 관련이 있다고 말씀드리긴 힘든데요.... 그냥 말하고 싶었던 것이구요... 아무튼... 정신차려! 삽..

[삽잡이::DB] 데이터 모델링 과정

저는 프로그래밍 세계와 일상 세계는 다르지 않다고 생각합니다.일상 세계를 프로그래밍 세계로 옮겨 놓을 수 있지요. 현실 세계에 있는 무언가를분석하여 요구조건을 명세하고 개념적으로 설계(ER Model)를 할 수 있습니다. ER Model이란, Entity 즉, 개체들간의 Relation이라는 관계를 도식화 한 Model을 의미합니다.개체들간의 관계! 이 개체는 '사람'이 될 수 도 있고, '사물'이 될 수도 있고이 세상에 존재하는 고유하게 식별할 수 있는 무언가를 개체라고 부릅니다! 이 개체들간의 관계를 도식화하면 ER Model이라고 부르는 것이지요. 예를 들어 이런거에요 아~ 이런거구나~! 이렇게 개념적으로 설계를 한 내용으로 모델을 만들면개념적 스키마라고 부르게 됩니다. 이제 이렇게 설계한 모델을 ..

[삽잡이::sql] 데이터를 그룹핑해보자! group by

진정한 개발자가 되기위해!!! DB는 필수!!!! 그렇다는 것은 Query도 잘 작성해야겠지!?!? 예 그렇습니다.개발의 고수 삽잡이가 되기 위해!!!!이번에는GROUP BY에 대해서 살펴보았습니다 굳~ GROUP BY 구문을 사용하게 되면데이터들을 원하는 그룹으로 나눠줍니다. GROUP BY 구문에 작성된 컬럼은 기준이 되어 하나의 결과로 Groupping 시켜줍니다. 다음은 삽질의 명문 삽질고에 학생 DB입니다. 삽질고에서 사건 사고를 일으키는 학우들에게는어마무시한 벌점을 준다네요 어느날 삽질고에 교육청에서 직원이 오신다고하네요...그래서 평소 지저분했던 창고를 정리하기 위해 인력이 필요한 교장선생님은 벌점 평균이 가장 높은 반 학우들을 부르려고 하십니다. 교장 선생님은 과감하게 Qeury문을 작성하..

[삽잡이::sql] 데이터를 다른 테이블에 INSERT하자! INSERT INTO SELECT

INSERT INTO SELECT 구문은 한 테이블로부터 데이터를 복사하여 다른 테이블에 값을 Insert할 때 사용합니다. 단, 조건이 있지요.복사를 하기 위해서는 두 테이블에 존재하는 컬럼들이 같아야합니다. 123456789INSERT INTO sap_db_A SELECT * FROM sap_db_B WHERE name = "삽잡이" cs 이런식으로 sap_db_A 라는 Table에 sap_db_B Table에 있는 레코드들 중 name이 삽잡이인 레코드를 INSERT 할 수 있습니다. 물론, 모두 동일하지 않더라고 INSERT INTO SELECT 구문 사용이 가능합니다. 123456789INSERT INTO sap_db_A (idx, name, age, sex) SELECT idx, name, a..

[삽잡이::sql] 없으면 Insert 있으면 Update! DUPLICATE ON KEY UPDATE

기존에 값이 있는 레코드를 중복해서 Insert 하게 되면 어떻게 될까요!? 저는 스포츠를 좋아하니까!축구로 예를 들어봅시다. 슛~ 골은 나의 친구~ 자... 명문구단 삽질 FC 에서 '삽질'이라는 이름의 선수를 영입했습니다.포지션은 공격수이고, 아주 유능한 선수 같습니다. 이 선수가 입단하면서 자기는 에이스가 될 것이니등번호를 10번으로 받겠다고 합니다. 멋도 모르고 알겠다고 했습니다.그리고 선수 등록을 위해 DB에 등록을 시도했습니다. 그리고 느끼죠.... 우리에게 친숙한....그래 맞습니다. ERROR... 오류코드가 1062 입니다.그리고 그 아래를 보시면 Duplicate entry '10' for key 'PRIMARY' 라는 Error 발생 이유가 찍혀있습니다. 등번호는 삽질 FC에서 유일성..

[삽잡이::sql] Table의 Index를 살펴보자! SHOW INDEX

DB에서 원하는 데이터를 추출하기 위해서Query문을 작성합니다. 이 때 대용량으로 데이터를 가져온다고 생각해봅시다.여러 테이블들을 join 하고 sub로 두고 웩~ 조금이나마 빠르게 Query문을 수행하기 위해서index의 중요성을 지난번에 언급한 적이 있었습니다. 이 테이블에서의 Index 정보를 확인하겠다! 할 때에는과감하게 SHOW INDEX 을 사용하십시요 index에 대한 정보가 잘 나옵니다. SHOW INDEX returns table index information. The format resembles that of the SQLStatistics call in ODBC. This statement requires some privilege for any column in the tabl..

[삽잡이::sql] 보여줘 보여줘 너의 테이블~ SHOW CREATE TABLE

여러분은 당신의 출생의 비밀을 아십니까!?예~ 황새가 물고 왔대요~ 그렇다면 여러분이 사용하시고 계신 Database에 속한!Table의 출생 비밀을 아십니까! 뭐라고~ table의 출생비밀!? 우와 신기하네요~! 어떻게 그럴 수 있지!? 예 별거 아닙니다 여러분 1SHOW CREATE TABLE sap_db;cs한 문장이면 끝납니다. 간단하지요!? Table을 Create 할 때의 그 CREATE TABLE 문을 출력하는 것입니다.이건 무슨 말장난~ 이런식으로 볼 수 있게 됩니다.신기하지요!? 굳~

[삽잡이::sql] 테이블의 설명을 알아보자! DESC

DB를 접하고 계신 많은 분들은 desc을 내림차순으로 이해하시고 계십니다.예 그렇습니다. 맞습니다. 1SELECT idx, name, grade FROM students_db ORDER BY idx DESC;cs 이렇게 ORDER BY 정렬기준을 명시하여 정렬할 수 있습니다. DESC는 내림 차순을 의미하고ASC는 오름 차순을 의미합니다. 그런데 말입니다...DESC에는 다른 기능도 있다는 사실을 혹시 아시는지요... 어머나 놀라워라~ 하하....우리는 설명이라는 단어를 영어로 description 이라고들 부릅니다.우리가 잘 쓰는 줄임말!그리하여!!!! 예 그렇습니다.테이블에 대한 설명을 알아낼 수 있습니다. 이를 위해 테이블의 이름 앞에 사용하게 됩니다. 1DESC students_db;cs 이런식..

[삽잡이::sql] Primary Key 그리고 Unique Key

오늘은 어떤 제목을 쓸까 하다가..... Primary Key 그리고 Unique Key라고 작성했습니다. 이와 비슷하게 '소호대' 의 사랑 그리고 추억이라는 노래가 있군요. (출처_ youtube)푸하하 그러면 신나게 한번 알아봅시다 DB안에 있는 테이블에는 컬럼과 값들로 가득(?)합니다. 이런식으로 데이터들이 저장되어있습니다. 여기서 Primary Key란, Key에 해당하는 컬럼을 의미합니다. 만능 열쇠 키~ 예 맞습니다. 그 유명한 만능 열쇠 키는테이블의 각 레코드를 구별할 수 있는 역할을 하고 있습니다. 세계적인 Foot Ball Club!Shovel FC가 있다고 해봅시다. 예 그렇습니다. shovel은 우리나라 말로 삽을 말하죠 하하하 아무튼....소속팀에 등번호가 중복되는 팀은 없을 것입니..