Database 정보를 git에 올라가지 않게 하기




데이터베이스 정보가 노출될 경우 손쉽게 정보들을 가져갈수 있게 된다.

따라서 git에 정보를 올리지 않고 별도로 관리가 필요하다.


또한 팀 프로젝트때 로컬에서 데이터베이스를 사용할 경우

테이블과 값이 같다고 하더라도 각자 데이터베이스의 정보가 다르므로

이를 분리하여 관리하는게 좋다.


예제는 Node JS 기준으로 설명한다.




1
2
3
4
5
6
{
  "HOST":"localhost",
  "user":"root",
  "password":"1234"
}
 
cs


우선 JSON 파일을 하나 만든다.

이 파일 안에 데이터베이스와 관련된 정보를 저장한다.

파일의 이름은 config.json으로 한다.

다른 이름으로 해도 상관은 없는데, gitignore에서 등록할때 동일하게만 설정해 주면된다.


이 후에 git 레파지토리가 있는 최상단의 루트로 올라가서 gitignore에 config.json을 등록해준다.

만약 gitignore파일이 없다면 텍스트 에디터나 vim을 통해 .gitignore 파일을 만들어준다.

등록할때는 특별한것 없이 그냥 gitignore파일 내부에 config.json이라고 적어주면

자동으로 git add 에서 제외된다.




1
2
3
4
5
var fs = require('fs'),
configPath = __dirname + '/config.json';
var parsed = JSON.parse(fs.readFileSync(configPath, 'UTF-8'));
exports.storageConfig =  parsed;
 
cs


다시 node로 돌아와서 option.js 파일을 생성해준다.

여기서 파일 시스템 모듈인 fs를 통해 방금전에 만든 json 파일을 불러온다.

불러온 파일을 JSON.parse하여 객체에 넣어주고

이 객체를 외부로 export시킨다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var options = require('./option');
 
var loginData = {
        host: options.storageConfig.HOST,
        user: options.storageConfig.user,
        password: options.storageConfig.password
};
 
var mysql = require('mysql');
var connection = mysql.createConnection({
  host: loginData.host,
  port:3306,
  user:loginData.user,
  password:loginData.password,
  database:'octodog'
})
connection.connect();
cs


방금 export 된 option 파일을 require시킨다.

option 파일 내부에 있는 데이터들을 객체화 시키기 위해서, loginData라는 객체에 옮겨담는다.


이제, mysql에 접속하기 위해서 loginData에 있는 값들을 차례차례 적어주면 된다.


저작자 표시
신고

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] Database 정보를 git에 올라가지 않게 하기  (0) 2017.04.19
[SQL] 데이터 정렬 조회  (0) 2017.04.18
[SQL] 데이터 그룹핑  (0) 2017.04.18
[SQL] 데이터 조회  (0) 2017.04.18
[SQL] 데이터 삭제  (0) 2017.04.18
[SQL] 데이터 변경  (0) 2017.04.18

데이터 정렬 조회




순서에 따라 데이터를 정렬하여 조회해야할 경우가 있다

이런경우 ORDER BY를 이용하여 데이터를 정렬후 조회한다.


1
SELECT * FROM 테이블명 ORDER BY 정렬의 기준으로 사용할 열 [DESC | ASC]                                               
cs


테이블을 선택 후 정렬기준을 ORDER BY로 설정한다.

이후 DESC나 ASC으로 오름/내림 차순을 결정한다.

(DESC - Descend, ASC -  Ascend)


데이터의 크기나 생성순서 등을 기준으로 정렬된다.






초기데이터는 다음과 같다





distance를 기준으로 내림차순으로 정렬했을때 모습이다. 




우선 distance를 기준으로 내림차순으로 정렬 후, 
같은 값이 있다면 address를 기준으로 오름차순으로 정렬한다.

- 소스 출처 : 생활코딩(opentutorials)


신고

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] Database 정보를 git에 올라가지 않게 하기  (0) 2017.04.19
[SQL] 데이터 정렬 조회  (0) 2017.04.18
[SQL] 데이터 그룹핑  (0) 2017.04.18
[SQL] 데이터 조회  (0) 2017.04.18
[SQL] 데이터 삭제  (0) 2017.04.18
[SQL] 데이터 변경  (0) 2017.04.18

데이터 그룹핑




데이터의 값을 특정한 값으로 묶기 위해서는 그룹핑이 필요하다.


1
SELECT * FROM 테이블명 GROUP BY 그룹핑 할 기준 칼럼명                                                              
cs


SELECT 명령이 기본이 되며 GROUP BY 뒤에 적힌 칼럼을 기준으로

데이터값이 출력이된다






데이터베이스에는 다음과 같은 데이터들이 저장되어 있다. 
전과 다른점은 집까지의 거리를 나타내는 distance 가 추가되었다



성별을 그룹으로 출력 했을때 성별에 있는 값 들의 중복이 제거된 후, 
그룹화 되어 출력된다.





sum()은 합계를 avg()는 평균을 출력한다. 
위의 예제는 성별에 따라 그룹화된 distance의 합계와 평균을 출력한다.

따라서 GROUP BY를 이용하면 데이터값의 중복을 제거하여 출력하거나, 
그룹화 된 값을 기준으로 계산된 다른값을 확인할 수 있다.

- 소스 출처 : 생활코딩(opentutorials)


 


신고

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] Database 정보를 git에 올라가지 않게 하기  (0) 2017.04.19
[SQL] 데이터 정렬 조회  (0) 2017.04.18
[SQL] 데이터 그룹핑  (0) 2017.04.18
[SQL] 데이터 조회  (0) 2017.04.18
[SQL] 데이터 삭제  (0) 2017.04.18
[SQL] 데이터 변경  (0) 2017.04.18

데이터 조회



데이터베이스에서 저장하고 있는 데이터가 많은 만큼 

효과적으로 데이터를 조회(검색)하는 방법도 중요하다.


1
2
3
4
5
SELECT 칼럼명1, 칼럼명2 
    [FROM 테이블명 ] 
    [GROUP BY 칼럼명] 
    [ORDER BY 칼럼명 [ASC | DESC]]                                                                             
    [LIMIT offset, 조회 할 행의 수]
cs

 


기본적으로 SELECT 명령으로 데이터 조회를 하며

컬럼으로 *를 사용한다면 모든 컬럼을 선택할 수있다. 

​FROM은 조회할 테이블을 선택하며 뒤에 나오는 명령들은 옵션이므로 

추후 설명하도록 하겠다.




모든 데이터 출력







SELECT * FROM student;

* 기호로 student 내부의 모든 컬럼을 선택하여 출력한다.



컬럼을 선택하여 출력



select name, birthday, FROM student;

이름과 생년월일을 선택하여 조회한다



조건을 사용한 출력


SELECT * FROM student WHERE id=3;

WHERE으로 id의 조건을 설정하여 student 테이블을 조회한다

id가 3인 결과값이 출력된다.





SELECT * FROM student WHERE sex = `남자` AND address=`서울`;

AND는 두가지 동시에 해당하는 조건을 나타낸다

student 테이블에서 성별이 남자고 서울에 사는 사람을 조회한다






SELECT * FROM student WHERE sex=`여자` OR address=`서울`

OR는 두가지 중 하나에 해당하는 조건을 나타낸다

student 테이블에서 성별이 여자이거나 서울에 사는 인원을 출력한다




LIMIT 옵션



SELECT * FROM student LIMIT 1;

LIMIT를 옵션으로 적용하면 LIMIT뒤에 적혀있는 숫자만큼 출력한다.

따라서 student 에서 1개 만큼의 데이터를 출력한다.




범위 지정 LIMIT


상단의 데이터부터 0번째 인덱스를 가진다,

LIMIT의 숫자가 2개 이면 다음과 같다.


LIMIT 시작 인덱스, 출력 할 개수


SELECT * FROM student LIMIT 1,1;

1번 인덱스에서부터 1개를 출력한다.






SELECT * FROM student LIMIT 2,1;

2번 인덱스에서부터 1개를 출력한다.




조건문과 LIMIT




SELECT * FROM student WHERE sex=`남자` LIMIT 2;

LIMIT는 옵션이므로 조건문과 함께 사용할 수 있다.

성별이 남자인 데이터를 2개 출력한다.


- 소스 출처 : 생활코딩(opentutorials)



신고

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] 데이터 정렬 조회  (0) 2017.04.18
[SQL] 데이터 그룹핑  (0) 2017.04.18
[SQL] 데이터 조회  (0) 2017.04.18
[SQL] 데이터 삭제  (0) 2017.04.18
[SQL] 데이터 변경  (0) 2017.04.18
[SQL] 데이터 삽입  (0) 2017.04.18

데이터 삭제




추가/변경 했던 데이터를 삭제할때 SQL 삭제 명령을 사용한다.


1
DELETE FROM 테이블명 [WHERE 삭제하려는 칼럼 명=값]                                                                
cs


DELETE로 원하는 테이블을 지정해주고 

WHERE로 삭제하려는 칼럼의 조건을 설정해준다








초기에 테이블 내에 있던 데이터이다

(id, 이름, 성별, 주소, 생일)




student 테이블을 선택하고 id가 2인 값을 삭제한다.

테이블에서 id가 2인 데이터가 삭제 되었다.




TRUNCATE


1
TRUNCATE 테이블명                                                                                                    
cs


TRUNCATE는 모든 테이블의 데이터를 삭제하는 명령어이다.

데이터를 삭제하지만 테이블은 남아있는것이 특징이다.

문법은 위와같이 아주 간단하다.



student 테이블에 TRUNCATE를 사용하면 모든 데이터들이 지워진다.




DROP


1
DROP TABLE 테이블명;                                                                                          
cs

 

DROP TABLE은 테이블 자체를 지우는 명령어이다.

물론, 테이블 내부의 데이터도 다 삭제되니 꼭 유의해서 사용해야한다.




DROP TABLE을 사용하여 student 테이블을 삭제했다.

데이터 베이스 내부에서 테이블이 삭제 되었다.


- 소스 출처 : 생활코딩(opentutorials)



신고

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] 데이터 그룹핑  (0) 2017.04.18
[SQL] 데이터 조회  (0) 2017.04.18
[SQL] 데이터 삭제  (0) 2017.04.18
[SQL] 데이터 변경  (0) 2017.04.18
[SQL] 데이터 삽입  (0) 2017.04.18
[SQL] 테이블 생성  (0) 2017.04.18

데이터 변경




데이터를 삽입 후 사용자의 요청, 또는 상황에 따라 기존의 데이터값을 변경 해야할 때 

변경 명령어를 사용한다.


1
UPDATE 테이블명 SET 컬럼1=컬럼1의 값, 컬럼2=컬럼2의 값 WHERE 대상이 될 컬럼명=컬럼의 값
cs


변경 명령어는 UPDATE이며 우선 데이터가 있는 테이블을 지정해준다.

다음으로 바뀌는 값을 SET 다음에 적고

WHERE로 대상이 될 컬럼에 대한 조건을 적는다.


그러면 설정한 테이블로 접근하여 WHERE로 설정된 조건에 맞는 데이터를 찾아

해당 데이터의 필드 값을 SET에 있는 값으로 바꾸어준다.






현재 student 테이블 내에 다음과 같은 정보들이 들어있다.

(이름, 성별, 주소, 생년월일)





UPDATE문으로 조건없이 address를 서울로 지정하면

모든 address 칼럼이 서울로 변경된다.





다음은 조건이 지정 되었을 때이다.

id가 1인 데이터의 이름을 이진경으로 변경하라고 했을 때

데이터값 name에 `이숙경`은 `이진경`으로 변경된다.





마지막으로 컬럼 두개를 동시에 바꾸는 예제이다

id가 3인 데이터의 이름과 생일을 `이만갑`과 `2001-4-1`로 바꾸었을 때, 

올바르게 바뀌는것을 확인할 수 있다. 


- 소스 출처 : 생활코딩(opentutorials)

신고

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] 데이터 조회  (0) 2017.04.18
[SQL] 데이터 삭제  (0) 2017.04.18
[SQL] 데이터 변경  (0) 2017.04.18
[SQL] 데이터 삽입  (0) 2017.04.18
[SQL] 테이블 생성  (0) 2017.04.18
[SQL] 데이터베이스 생성  (0) 2017.04.18

데이터 삽입



앞서 만든 테이블에 이제 직접 데이터를 삽입하도록 해보자 

우선 mysql에 접속하여 데이터베이스를 선택한다

데이터를 삽입하기 위한 SQL문법은 다음과 같다.



1
INSERT INTO table_name VALUES (value1, value2, value3,...)                                                 
cs


1
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
cs



데이터 삽입은 위에서 제시된 것과 같이 첫번째와 두번째 방법이 있다. 

둘의 차이점은 컬럼을 기술하느냐, 하지않느냐에 있다.

실제적으로 컬럼을 생략해도 데이터가 들어가지만 사용자도 모르는사이에

데이터 베이스의 컬럼이 변경되거나 하는 일이 있으므로 

이를 사전에 방지하는 2번째 방법을 추천한다.


2번째 방법을 사용했을 때, 테이블의 내용이 바뀌었다면

데이터가 밀려서 들어가지 않고 오류 메세지를 띄운다.







예제를 살펴보자

INSERT INTO 명령문으로 데이터 삽입이 성공했다면 

Query Ok라는 메세지가 출력된다.





데이터를 조회할수있는 select 명령문으로 테이블 내부를 조회해보면

앞서 삽입했던 데이터가 올바르게 출력된다.




만일 삽입 명령에 에러가 발생한다면 ERROR 메세지와

데이터 삽입이 실패하게 된다.


- 소스 출처 : 생활코딩(opentutorials)



신고

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] 데이터 삭제  (0) 2017.04.18
[SQL] 데이터 변경  (0) 2017.04.18
[SQL] 데이터 삽입  (0) 2017.04.18
[SQL] 테이블 생성  (0) 2017.04.18
[SQL] 데이터베이스 생성  (0) 2017.04.18
[SQL] 데이터베이스  (0) 2017.04.18

테이블 생성




데이터베이스 생성에서 말했듯이 여러개의 테이블이 데이터베이스가 된다.

그렇다면 테이블을 생성하기 위해서는 어떻게 해야할까


테이블은 사전에 형식을 정해 놓아야한다.

이는 프로그래밍에서 변수 선언시 자료형을 정하는것과 비슷하다고 볼 수있다.

이를 스키마(Schema)라고 한다.




테이블 생성


1
2
3
4
CREATE TABLE table_name (                                                                                                                                                                                                        
    칼럼명1 data_type,
    칼럼명2 data_type
)
cs


테이블을 생성하기 위해서는 CREATE TABLE 명령어를 사용한다

데이터 베이스의 생성과 비슷하지만 

내부에 칼럼과 데이터 형을 지정해야 한다는 것이 차이점이다.




1
2
3
4
5
6
7
8
9
CREATE TABLE `student` (
    `id`  tinyint NOT NULL ,
    `name`  char(4NOT NULL ,
    `sex`  enum('남자','여자'NOT NULL ,
    `address`  varchar(50NOT NULL ,
    `birthday`  datetime NOT NULL ,                                  
    PRIMARY KEY (`id`)
);
 
cs


예제로 student라는 테이블을 생성한다.

여기서 `id`, `name`, `sex` 등은 칼럼 명이며

뒤쪽에 tinyint char, varcahr 등은 데이터 형이다.

또한 NOT NULL은 필드의 값이 NULL이 아님을 제한하는 것이다.







터미널에서 use database를 이용하여 데이터베이스를 변경해준 후

테이블을 생성한다.

아래처럼 Query OK 가 출력되면 추가가 된것이다.




테이블 조회


1
SHOW tables;                                                                                              
cs


Show tables 명령어를 사용하면 현재 테이블들을 조회 할 수있다.



방금전에 만든 테이블을 확인하기 위하여 show 명령어를 사용하면

student 테이블이 출력된다.




테이블 스키마 열람


1
DESC `테이블명`                                                                                               
cs


DESC는 Description의 약자로서 스키마에 대한 명세가 기록되어있다



따라서 DESC를 사용한다면 field와 type 등,

스키마에 대한 명세를 확인 할 수있다.




테이블 제거


1
DROP TABLE `테이블명`                                                                                         
cs


DROP 명령어를 이용하여 테이블을 제거할수있다.

테이블을 제거하면 내부에 있던 데이터는 모두 사라지게 된다.



DROP을 사용하여 만들어두었던 student를 삭제하고

SHOW를 입력하여 현재 테이블을 출력해보면 테이블을 제거되었다.


- 소스 출처 : 생활코딩(opentutorials)


신고

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] 데이터 삭제  (0) 2017.04.18
[SQL] 데이터 변경  (0) 2017.04.18
[SQL] 데이터 삽입  (0) 2017.04.18
[SQL] 테이블 생성  (0) 2017.04.18
[SQL] 데이터베이스 생성  (0) 2017.04.18
[SQL] 데이터베이스  (0) 2017.04.18

데이터베이스 생성





데이터베이스는 여러 테이블을 관리하며, 테이블 내에서는 field 값들이 존재한다.

즉 데이터베이스는 폴더, 테이블은 파일의 역할을 하는것이다.


이러한 이유로 데이터를 저장하기전에 먼저 데이터베이스를 만들고 

그 안에 테이블을 생성해야한다.

관계형 데이터베이스는 SQL이라는 표준 문법을 사용하여 이러한 조작을

간편하게 할수 있는 장점이 있다.


먼저 데이터베이스 명령어부터 보도록 하자.





데이터베이스 생성


1
CREATE DATABASE `데이터베이스명` CHARACTER SET utf8 COLLATE utf8_general_ci;
cs


데이터베이스는 CREATE DATABASE 명령어로 생성할 수 있다.

여기서 `는 작은 따옴표(')가 아닌 그레이브 액센트이며 ~ 표시 밑에 있다.

뒤에 나오는 CHARACTER SET은 데이터를 인코딩 하는 양식을 기술하며

한글이 깨지지 않기 위해서는 utf8 을 사용한다.





터미널에서 mysql-monitor에 접속 후 위의 명령어를 입력할 경우

성공한다면 Query OK, 사인이 뜨며 데이터베이스 생성이 완료된다




데이터베이스 조회


1
SHOW DATABASES;
cs


 

이렇게 생성된 데이터 베이스를 확인 하기 위해서는 

SHOW DATABASES 명령어를 사용하는데, 

현재 생성된 모든 데이터베이스를 보여 준다.



방금 전 CREATE 명령어로 데이터베이스를 생성 후

SHOW 명령어를 입력하면 현재까지 생성된 데이터 베이스의 목록이 출력된다





데이터베이스 선택(사용)


1
USE `데이터베이스명`
cs

 

 

데이터베이스를 선택 하는 명령어는 USE이다

말 그대로 특정한 데이터베이스를 사용하겠다고 선언하는 명령어이다.

USE를 사용할경우 해당 데이터 베이스의 테이블들에게 쿼리문을 사용하여

데이터를 조작하거나 조회하는것이 가능해진다.



명령어를 입력 후 데이터베이스 변경이 성공적으로 완료되면

Database cahnged라는 텍스트가 출력된다.




데이터베이스 삭제



1
DROP DATABASE `데이터베이스명`;
cs


사용하지 않는 데이터베이스는 DROP DATABASE로 삭제한다.

DROP명령어를 사용하면 데이터베이스와 하위 테이블이 모두 삭제된다.



처음에 만든 데이터 베이스를 삭제했다

이 후 SHOW 명령어로 데이터베이스 목록을 출력하면

성공적으로 삭제된 것을 확인할 수 있다.


 소스 출처 : 생활코딩(opentutorials)



신고

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] 데이터 삭제  (0) 2017.04.18
[SQL] 데이터 변경  (0) 2017.04.18
[SQL] 데이터 삽입  (0) 2017.04.18
[SQL] 테이블 생성  (0) 2017.04.18
[SQL] 데이터베이스 생성  (0) 2017.04.18
[SQL] 데이터베이스  (0) 2017.04.18

데이터베이스





데이터베이스는 쉽게 말해 데이터 저장소라고 할 수 있다.

우리가 흔히 쓰는 엑셀도 일종의 데이터베이스라고 할 수 있다.


데이터베이스의 특징으로는 산발적인 데이터가 아닌 

구조화된 데이터를 저장한다는 것이다. 


또한 데이터 베이스의 장점은 언어적인 조작으로

정렬/검색/분류/보관 등이 가능하다는 점이 있다.


흔히 사용하는 데이터 베이스는 관계형 데이터 베이스와 NOSQL로 나뉜다.

관계형 데이터 베이스 :  MySQL, MSSQL, Oracle

 NOSQLMongoDB 




 


데이터베이스는 눈에 보이지 않는 데이터베이스 서버에서 동작하는데

우리는 데이터베이스 클라이언트로 이를 조작하여 

(조회/삽입/삭제/추가)등의 작업을 할수 있게 된다.





출처 : 생활코딩(Opentutorials)




이 중에서 mysql과 함께 설치되어있는 MySQL monitor를 사용하도록 하겠다.

(Mac 기준)





사용법






위와 같은 양식으로 터미널에 입력을 해준다




우선 MySQL을 동작 시키고 터미널에서 

mysql -u root -p를 입력한다.

하단에 비밀번호 입력 창이뜨는데 *가 뜨지 않아도 입력이 되므로

기존에 설정한 비밀번호를 입력해준다







도움말이 나오고 콘솔에 mysql>이 나온다면 데이터베이스에 접근완료이다. 


소스 출처 : 생활코딩(opentutorials)




 

신고

'프로그래밍 > SQL' 카테고리의 다른 글

[SQL] 데이터 삭제  (0) 2017.04.18
[SQL] 데이터 변경  (0) 2017.04.18
[SQL] 데이터 삽입  (0) 2017.04.18
[SQL] 테이블 생성  (0) 2017.04.18
[SQL] 데이터베이스 생성  (0) 2017.04.18
[SQL] 데이터베이스  (0) 2017.04.18

+ Recent posts

티스토리 툴바