정보보안공부

DBMS_day17 본문

데이터베이스

DBMS_day17

Steady_sp 2017. 8. 2. 11:03

# show table status;
-> 지정 돼 있는 데이터베이스에 테이블 목록과 함께 상성정보를 출력해 주는 쿼리이다. 테이블 생성일, 행의 개수, 인코딩 등 다양한 정보가 확인 가능하다.

 

# 테이블에 저장 돼 있는 데이터가 많을 때 select 쿼리를 전송하면 MySQL에 부하도 증가하고 결과를 알아오는데 오랜 시간이 걸린다.

 

# 테이블에 만들어져 있는 컬럼을 확인하기 위한 용도로 select 쿼리를 날린다면 시간이 오래 걸릴 수가 있다.

 

# describe employees;
-> 지정한 테이블에 컬럼 정보를 확인할 수 있다. 컬럼이름, 자료형, Null 유무, PK 유무 등등

 

# 프로젝트를 중간에 투입했을 때 다이어그램이 안 만들어져 있는 상황이 있다. (08.01)
-> 이미 만들어져 있는 데이터베이스에 다이어그램을 자동으로 만들어낼 수 있다.
-> Database -> Reverse engineer

 

# 게시판의 글들의 번호
shop.DB에 noticeBoard라는 테이블 추가
num(게시글번호) INT  PK(0):게시글번호는 똑같을수 없다. NN(체크)
title(게시글의 제목)  CHAR(20)    NN(체크)
name(게시글작성자) CHAR(5)    NN(체크)
contents(게시글내용)VARCHAR(1000)   NN(체크)

 

# select * from noticeBoard order by num desc;
-> noticeBoard 테이블에 num이라는 컬럼을 기준으로 내림차순 정렬해서 조회하겠다.
-> desc를 안붙이면 오름차순 정렬이다.

 

** 내림차순 정렬 : 큰 거부터 작은 거 순으로
** 오름차순 정렬 : 작은 거부터 큰 거 순으로

 

# select * from noticeBoard limit 3;
-> noticeBoard 테이블에 행을 위에서부터 3개의 행만 조회하겠다.

 

# 자동 넘버링
-> 게시글 번호를 저장할 때 가장 최근에 저장한 게시글이 번호가 무엇이였는 지 프로그램에서 알아내고 데이터를 삽입하지 않게 만들기 위해 자동 넘버링을 진행한다.

 

# noticeBoard -> alter table -> AI (AutoIncrement : 자동넘버링) 체크 ->

 

# 7번행 삭제후 적용

 

# 게시글 중간중간 행이 삭제가되면 중간에 번호가 빠진다.

 

# 테이블을 생성하는 CREATE 쿼리를 사용할 때 컬럼 옵션으로 AUTO_INCREMENT를 사용하면 해당컬럼은 자동 넘버링이 진행된다.

 

# RAM이라는 하드웨어로 만들어진 영역에 일정공간을 할당했을때 할당된 영역을 변수라고 한다.
-> 변수는 잠시 저장한다.
-> MySQL이 재가동되면 변수는 없어진다.

 

============오토 인크리먼트 재 넘버링 하는 방법(순서가 중요)==========
1. SET @COUNT = 0;
2. UPDATE NB SET n = @count := @count+1;
3. alter table NB auto_increment = 1;
========================================================

# SET @COUNT = 0;
-> 변수 COUNT를 만들어서 메모리 공간에 값을 0을 넣어두겠다.

 

# update NB set n = @count := @count+1;
-> NB테이블에 모든 행에 있는 n이라는 컬럼에 값을 변수 카운트에 있는 값에 더하기 1한 값으로 변경하겠다. 그럼 위에 행부터

 

# alter table NB auto_increment = 1;
-> NB 테이블에 오토 인크리먼트 번호를 1부터 다시 카운팅 하라는 것이다.
( 5번 까지 돼 있었다면 다음에는 6으로 넘버링이 된다. )

 

# Stored Procedured -> re_num 이름 설정

 

# 자동 넘버링을 다시 넘버링하는 쿼리들을 스토어드 프로시저로 묶어 놓고 call 쿼리로 호출해서 사용하면 개발자들이 보다 편하게 자동 넘버링을 할 수 있다.

 

# NB와 noticeBoard drop

 

# 날짜는 수의 크기로 측정하지않는다.

 

# 날짜를 내림차순 정렬하면 최근인것부터 오래된 순으로

 

# 날짜를 오름차순 정렬하면 오래지난것이 위에서 부터 최근인것이 아래로 정렬된다.

 

-> show table status;

 

-> describe employees;

-> 지정한 테이블의 컬럼의 종류를 확인할 때는 select 말고 describe를 이용한다.

 

< 자동 넘버링 >

-> noticeBoard라는 테이블을 만들고

-> insert into noticeBoard values를 이용해 추가

 

-> select * from noticeBoard order by num desc;

-> 내림차순으로 정렬한다.

 

-> noticeBoard의 맨위에 3개의 항목만 보여준다.

 

-> AI를 체크하면 자동 넘버링을 진행한다.

 

-> 기존의 insert into 쿼리에서 int를 입력하는 자리에 null을 입력하면 자동으로 num값이 넘버링된다.

 

< 자동 넘버링을 재 넘버링 >

-> 쿼리를 이용해 새로운 테이블 NB를 만든다.

 

-> insert into로 3개의 데이터를 삽입한다.

 

 

-> 홍길동을 삭제하면 2번행이 사라진다.

-> 아래그림을통해 3번이 장나라를 2번으로 바꾼다.

 

 

 

-> set @count=0을 이용해 변수를 사용한다.

-> update NB set n = @count := @count+1;

-> NB테이블의 n값을 순서대로 첫행은 0+1 해서 1 두번째행은 1+1해서 2 쭉진행한다.

-> 3번을 2번으로 끌어올수도있는데 끌어온뒤 insert로 행을추가하면 4번행으로 추가가 된다.

-> 문제점을 해결하기위해 alter table NB auto_increment = 1; 이쿼리를 추가한다.

-> 자동 넘버링을 재 넘버링 하기 위해서는 변수설정 UDATE변수 alter table 이 3가지쿼리를 순서대로 진행해야한다.

-> 프로시저를 이용하면 간편하게 사용가능하다.

-> 아래의 그림을 통해 확인하면된다.

 

-> 프로시저를 생성하고 이름을 re_num 으로 작성한다.

 

 

 

 

-> NB테이블을 이렇게 만들었다.

 

 

 

-> 3번행인 장혁을 지웠다.

 

-> call re_num()으로 프로시저를 호출한뒤에

-> 혜린이를 추가하고 select로 확인하면 4번의 혜선이가 3번으로되고 그뒤에 추가한 혜린이도 정상적으로 4번으로 설정이된다.

 

 

 

-> order by를 통해 날짜도 조회가능하다.

'데이터베이스' 카테고리의 다른 글

DBMS_day19  (0) 2017.08.04
DBMS_day18  (0) 2017.08.03
DBMS_day16  (0) 2017.08.01
DBMS_day15  (0) 2017.08.01
DBMS_day_14  (0) 2017.07.28
Comments