저번 1장(데이터 선택하기 SELECT, WHERE)에 이어 이번에는 데이터를 수정,변경 하는 것에 대해 이야기해볼까 합니다.

 

목차
1. 데이터 선택하기 (SELECT, WHERE)
 -. 데이터 선택 SELECT
 -. 데이터 조건  WHERE
2. 데이터,레코드  수정하기(ALTER)
-. 테이블 이름 변경: RENAME
-. 테이블 칼럼, 조건 추가: ADD

-. 테이블 변경: MODIFY, CHANGE 

 

1. ALTER

ALTER문을 사용하여 데이터베이스(DB)와 테이블의 내용을 수정할 수 있습니다.

해당 글에서는 테이블 수정에 대해서만 논의 합니다. 

 

- ALTER DATABASE

- ALTER TABLE 


ALTER TABLE

ALTER TABLE은 테이블에 필드를 추가, 삭제하거나 필드의 타입을 변경할 수 있도록 해줍니다.

테이블 변경에서는 아래와같은 일을 할 수 있습니다. 

 

1) 테이블 이름 변경 (RENAME)

2) 테이블 칼럼, 제약조건 추가(ADD)

3) 테이블 변경 (CHANGE, MODIFY)

4) 테이블 제약 조건 제거 (DROP)

 

1) RENAME - 테이블 이름 변경

ALTER TABLES문과 함께  RENAME문을 사용하면, 테이블 이름을 변경할 수 있습니다.

ALTER TABLE 테이블이름
RENAME 변경할 테이블이름

먼저 기존에 테이블 상태를 확인해보겠습니다.

 

< 현재 테이블 상태 >

'Customer'라고 지정되어있는 테이블명을 'User'라고 변경해보겠습니다.

 

< 테이블명 변경 후 상태 >

테이블명이 'Customer'에서 'User'로 변경된 것을 확인할 수 있습니다. 

 


 

2) ADD - 테이블 칼럼, 제약조건 추가 

ADD문을 사용하면, 테이블 필드를 추가하거나 제약조건을 추가할 수 있습니다. 

ALTER TABLES 테이블이름
ADD 필드이름 필드타입

먼저 기존 'User'의 필드를 확인해보겠습니다. (DESC User;)

<'User' 필드 상태>

'User' 테이블의 Field 값 'Phone'을 추가해보겠습니다. 

< 필드 추가 후 상태 >

'User'테이블 필드에 'Phone' 필드가 추가된 것을 확인할 수 있습니다. 

 


 

3. 테이블 필드타입 변경 -CHANGE, MODIFY

ALTER TABLE 문과 함께 MODIFY 문을 사용하면, 테이블의 필드 타입을 변경할 수 있습니다.

MODIFY와 CHANGE 모두 테이블 칼럼 상태를 변경하는 공통점이 있는데, CHANGE는 칼럼의 이름도 변경이 가능합니다. 

ALTER TABLE 테이블이름
MODIFY COLUMN 필드이름 필드타입 

ALTER TABLE 테이블이름
CHANGE COLUMN 필드이름 필드타입

먼저, 'User'의 테이블 필드를 확인해 보겠습니다.

'Age' 필드의 타입을 INT → BIGINT로 바꾸고 'Default' 값을 1,000으로 변경해보겠습니다. 

< 필드 수정 후 상태 >

'Age'필드의 타입이 BIGINT(20)으로, 'Default'값은 1,000으로 수정 된 것을 확인할 수 있습니다. 


이번에는 'CHANGE'를 이용해 필드명과 타입을 바꿔보도록 하겠습니다.

<필드와 타입 수정 후 상태>

'Phone'필드값이 'Rating'으로 변경되었고, Default값이 NULL에서 100으로 변경 된 것을 확인할 수 있습니다. 


테이블명과 필드값을 수정하는 기능들을 공부해보았습니다. 

내일은 테이블, 필드값을 삭제하는 기능에 대해서 알아보겠습니다. 

 

 

 

 


 

300x250

 

기획자는 기존 회사 DB 데이터를 꺼내 정제하는 업무가 대부분일 것으로 DB생성과 테이블 생성은 별도로 다루기로합니다. 

DB데이터와 예제는 TCP School 의 테이블을 참고하였다. (테스트할 수 있는 곳을 이곳저곳 뒤지다가 간단히 테스트할 수 있는 곳을 찾았습니다.) 

 

목차
1. 데이터 선택하기 (SELECT, WHERE)
 -. 데이터 선택 SELECT
 -. 데이터 조건  WHERE

 

기본적으로 MySQL에서 작업 명령은 SQL 구문을 이용하여 처리됩니다. 

일반적인 구문 뒤에는 세미콜론(;)을 붙여 종료합니다.

구문과 키워드의 경우 대소문자를 구분하지는 않지만 구분을 위해 구문은 대문자, 키워드는 소문자로 작성하는 것이 좋습니다. 


1. SELECT 

SELECT 문을 사용하여 테이블의 레코드를 선택할 수 있습니다. 

SELECT 할때 * 를 사용하면 특정 테이블의 모든 데이터를 가져올 수 있고,

SELECT *
FROM Reservation;

SELECT 필드명 FROM 테이블명 을 입력하여 원하는 데이터를 가지고 올 수 있습니다. 

SELECT Name
FROM Reservation;

읽는 순서는 영문을 해석하는 순서와 같습니다. "예약 테이블의 이름 필드를 가지고와."


2. WHERE

SELECT와 함께 WHERE(조건문)을 사용하면 조건을 설정하여 더 좁게 데이터를 가지고 올 수 있습니다. 

WHERE절은 테이블의 크기가 크거나, 특정 조건에 맞는 데이터를 찾을 때 유용합니다.

 

전체 데이터예약 테이블에서 이름 필드에 '홍길동'이 있는 데이터를 찾아줘.

SELECT *
FROM Reservation
WHERE Name='홍길동'

또한, 조건은 연산도 가능합니다. OR, AND, < >(관계연산자) 등

전체 데이터예약 테이블에서 예약날짜가 2016-01-31 이전 데이터를 찾아줘.

SELECT *
FROM Reservation
WHERE ReserveDate < '2016-01-31';

전체 데이터예약 테이블에서 예약날짜가 2016-01-31 이전인 '홍길동'을 찾아줘.

SELECT *
FROM Reservation
WHERE ReserveDate < '2016-01-31' AND Name='홍길동';

참고로 문자와 숫자를 작성할때는 반드시 '작은따옴표' 로 묶어줘야합니다. 

 


간단하게 데이터를 SELECT하고 조건에 맞게 조회하는 기초적인 방법에 대해서 공부했습니다.

다음에는 테이블을 추가하거나 삭제 또는 수정하는 방법에 대해 알아보겠습니다. 

300x250

서비스 기획자의 우대조건 

 

최근 기획자 채용공고를 보게 되면 우대조건 중(필수는 아니다.)  MySQL 사용가능, GA활용 가능, 데이터 분석을 통한 의사결정 능력데이터를 기반으로 한 서비스기획 능력을 많이 보는 것 같다. 아마도 아무 이유 없이 찍어내듯 "그냥" 서비스를 만들고 구축하는 것이 아니라 데이터를 기반으로 "이유" 있는 서비스를 만들어나가기 위해 필요한 능력이 아닐까?

이제는 더이상 "직감"에 의한 서비스 기획이 아닌 정량적인 데이터와 숫자를 기반으로 하는 서비스 기획자를 필요로 하는 것 같다. 

 


MySQL이 뭔데?

기획자에게 있으면 좋을 능력인 MySQL은 도대체 뭘까?

MySQL은 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템(RDBMS: Relational DBMS)입니다.  

MySQL의 장점으로는

1. 오픈 소스 라이센스를 따르기 때문에 무료로 사용할 수 있습니다.
2. 다양한 운영체제에서 사용할 수 있으며, 여러 가지의 프로그래밍 언어를 지원합니다.
3. 크기가 큰 데이터 집합도 아주 빠르고 효과적으로 처리할 수 있습니다.
4. 널리 알려진 표준 SQL 형식을 사용합니다.
5. MySQL 응용 프로그램을 사용자의 용도에 맞게 수정할 수 있습니다
(출처: TCP School)

 


그래서 기획자에게 왜 필요한건데?

서비스를 운영하다 보면 회원 정보부터 구매정보 등 정말 많은 로우데이터들이 데이터베이스(디비)에 저장되고 누적된다.

이 데이터는 요리조리 조합하고 정제해서 프로젝트의 성과 분석과 개선이 필요한 부분을 알려주는 중요한 길라잡이가 될 수 있다.

 

물론, 개발자 혹은 사이언티스트(팀이 별도로 존재한다면)에게 원하는 데이터를 부탁할 수 있지만

매번 부탁하기도 그렇고 내가 원하는 데이터를 직접 쿼리를 날려 조회하여 기획에 도움이 되는 데이터를 뽑아낼 수 있을 것이다. 

 

나도 이제 막 MySQL을 써보고 두드리는 단계이다. 

지금보다 더 나은 서비스 기획을 해보고자 그리고 서비스 기획자로서 더 성장하고자 그 기록들을 남겨보려고 한다. 

 

관련 업계 혹은 관심 있는 분들의 많은 피드백과 정보공유는 언제든 환영입니다. 

300x250

+ Recent posts