미래학자
[MySQL] 2장 데이터 변경, 삭제 (ALTER, SELECT, DROP, DELETE) 본문
저번 1장(DB와 테이블 생성, Link : SELECT http://futurists.tistory.com/11)에 이어 이번 시간에는 테이블을 변경 시키는 것에 대해
이야기 해볼까 합니다.
- 조건 검색, 효율적인 방법 (BETWEEN, IN)
- 데이터 베이스, 테이블, 데이터 삭제 (DROP, DELETE)
- 테이블 변경 (UPDATE, CHANGE)
- 데이터 변경
- 생성문 보기 (SHOW)
1. 조건 검색, 효율적인 방법 (BETWEEN, IN)
저번 시간에 배웠던 WHERE 절을 AND 또는 OR로 연결하는 것을 기억할 것이다.
아래와 같은 student 테이블이 있을 때
저번에 배웠던 조건절을 리마인딩 해보자.
그렇다면 2009 ~ 2010 학번인 학생을 구할 때는 어떻게 하는 것이 좋을까?
아래의 두 예를 보자.
두 쿼리 모두 같은 결과를 내놓는다. 그러나 두 쿼리의 성능은 다르다. '2009'보다 큰 값을 모두 구하고, '2011' 보다 작은 값을 모두 구하여 교집합을 다시 구하는 연산과,
'2009' 부터 시작하여 '2011'보다 작을 때 까지 순차적으로 구하는 것과는 차이가 있을 것이기 때문이다.
또, 아래의 예도 살펴 보자.
이 둘 또한 같은 결과를 내놓는다. 그러나 아래의 예가 더욱 좋다. 간단히 말 해 첫 번 째 쿼리는 for 문을 총 3번 돈다면, 아래의 쿼리는 for문을 한 번 도는 것이기 때문이다.
2. 데이터 베이스, 테이블 삭제
데이터 베이스와 테이블을 제거할 때는 DROP을, 테이블의 데이터를 제거할 때는 DELETE를 사용한다. 데이터가 한 번 삭제되면 복구할 수 없으므로 삭제할 때는
조심히 해야 한다.
5 : 데이터를 삭제할 때는 원하는 데이터를 SELECT 할때와 마찬가지로 조건을 주어 삭제할 수 있다. (삭제할 때 SELECT를 통해 결과를 확인 후 DELETE하는 습관
을 가지는 것이 좋다)
3. 테이블 변경 (ALTER)
테이블 변경에서는 아래의 일을 할 수 있다.
- 테이블 이름 변경 (RENAME)
- 테이블 칼럼 , 제약조건 추가 (ADD)
- 테이블 변경 (CHANGE, MODIFY)
- 테이블 제약 조건 제거 (DROP)
A. 테이블 이름 변경 (RENAME)
1 : student라는 테이블을 변경
2 : hero라는 새로운 이름으로 변경
B. 테이블 칼럼 , 제약조건 추가 (ADD)
start 라는 새로운 칼럼이 추가가 되었고, _id가 기본키로 변경되었다. 특이한 점은 AFTER _id 로 추가될 칼럼의 위치를 선정하는 점이다.
MySQL에서는 FIRST를 사용하면 첫 번째 칼럼으로 추가된다. (첫 번째 칼럼은 보통 기본키다.) 그런데 책에서는 SECOND, THIRD, LAST, BEFORE 등의
키워드도 사용할 수 있다고 했는데, 해본 결과 되지 않았다.
C. 테이블 변경 (CHANGE, MODIFY)
MODIFY와 CHANGE 모두 테이블의 칼럼의 상태를 변경하는 공통점이 있다. 그러나 CHANGE는 칼럼의 이름도 변경이 가능 하다.
D. 테이블 제약 조건 제거 (DROP)
테이블에서 star 칼럼을 제거하고, 기본키를 제거 한다.
4. 데이터 변경 (UPDATE)
첫 번째 쿼리는 status 값이 0인 레코드의 belong을 'ZER'로 바꾼다.
두 번째 쿼리는 _id 가 '2009'로 시작하는 레코드의 status 값을 현재 값에서 200만큼 더한 값으로 변경한다.
5. 생성문 보기 (SHOW)
각 테이블, 칼럼 이름 사이에 `로 감싸진 것을 볼 수 있다. 지금은 변수를 `로 감싸는 구나 하고 생각하자. 저 구문을 복사하여 그대로 `가 있는 상태로
사용해도 상관없고, 제거해서 사용해도 좋다.
3, 4 구문은 지금은 나도 잘 모르고, 차차 공부해야 겠다.
'DataBase' 카테고리의 다른 글
[MySQL] 6장 외래 키 설정하기, 1NF (테이블 쪼개기), (1) | 2016.11.21 |
---|---|
[MySQL] 5장 정규화 (1NF, 2NF, 3NF) (3) | 2016.11.19 |
[MySQL] 4장 키(Primary Key, Foreign Key)의 종류와 함수적 종속 (7) | 2016.11.19 |
[mySQL] 3장 내부 함수, 그룹 묶기 (SUM, COUNT, SUBSTRING, GROUP BY) (2) | 2016.11.18 |
(MySQL) 1장 시작하기. (DB 생성, 테이블 생성, SELECT) (10) | 2016.10.27 |