1) 뷰의 작성 및 삭제
- 뷰 : 테이블과 같은 부류의 객체 중 하나(가상 테이블)
- SELECT 명령을 실행했을 때 테이블에 저장된 데이터를 결과값으로 반환
CREATE VIEW (뷰명) AS SELECT
CREATE VIEW Sample_view1 AS SELECT * FROM Sample1;

DROP VIEW (뷰명)
DROP VIEW Sample_view1;

2) 열을 지정해 뷰 작성하기
CREATE VIEW Sample_view_1(n, m, b) AS
SELECT NO, d, d*2 FROM Sample1;
SELECT * FROM Sample_view_1 WHERE n = 1;

1) Create Index
CREATE INDEX (인덱스명) ON (테이블명) (열명1, 열명2, ...)

2) Drop Index
DROP INDEX (인덱스명) ON (테이블명)

3) EXPLAIN = 인덱스를 사용해 검색하는지 확인
EXPLAIN SQL (명령)

1번.

Error 1136(21S01) : Columm count doesn`t match value count at row 1

음.. 대략 보면 첫번째 줄에서 열의 수와 값의 수가 일치하지 않다고 나온다.....

여기에서 1번 줄이란 SQL 쿼리문의 1번 줄임을 주목하고....

해결 방법은 간단하다...

그냥 열과 값의 수를 일치시킬것.

자주 하는 실수가 값 콤마를 오타내는 일이므로 콤마 오타를 유심히 확인할것!!

2번.

Error 1064(42000) : you have an error in your SQL Syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at Line 4

이거... 아마 SQL 조금만 사용해 봤더라도 흔하게 수도없이 봤던

왠지 이제는 익숙하기 까지 한 에러 코드...

간단하게 살펴보면

SQL 문법에러. 여러분 MySQL에 해당하는 서버 버전 메뉴얼을 확인 한 뒤

올바른 문법을 Line 4 '' 주변에 사용해라!

라는 말인데......

이 에러는 대부분 값들의 Line 4 부분에 작은 따옴표('') 를 닫지 않아서 거나

짝수가 아니어서 나는 에러일 경우가 많다.

따라서 제일 뒤에 나오는 Line ** 과 그 앞에 나오는 near ** 부분을 보고

유추해서 해결 하도록 하자!

출처: https://namsieon.com/entry/SQL-자주나는-SQL-에러-해결법-및-알아보기-NULL-값의-이유 [남시언닷컴]

CREATE INDEX [INDEXNAME] ON [TABLE NAME] USING GIST (geometryfield);

 

1) create table로 테이블 작성하기
create table sample1(
no interger not null,
c varchar(25),
d date
);

 

2) drop / truncate table
drop table (테이블명)
--- truncate 명령은 삭제할 행을 지정할 수 없고, where 구를 지정할 수 도 없지만, 
--- 모든 행을 삭제해야할 때, 빠른 속도로 삭제할 수 있음

3) alter table 
alter table (테이블명) (변경명령)

- 열 추가
alter table (테이블명) add (열 정의)
alter table sample1 add col interger;
※ not null 제약이 걸린 열을 추가할 떄는 기본값을 지정해야 함

- 열 속성변경
alter table (테이블명) modify (열 정의)
alter table sample1 modify col varchar(25);

- 열 이름 변경
alter table (테이블명) change (기존 열 이름)(신규 열 정의)
alter table sample1 change col a varchar(25);

- 열 삭제
alter table (테이블명) drop (열 명)
alter table sample1 drop a;

1. Anaconda Prompt 창을 연다.

2. jupyter notebook --generate-config 입력

3. jupyter_notebook_config.py 디렉토리로 이동

4. # c.NotebookApp.notebook_dir = ' ' 찾기

5. 주석제거 및 ' ' 안에 폴더 절대경로 설정

6. 주피터 노트북 재시작

 

 

이번에는 스타벅스 1km 반경 안에 이디야 매장 개수가 얼마나 분포해있는지 공간분석을 통해 확인해보도록 하겠습니다.

우선, 스타벅스와 이디야 매장의 위치를 확인하기 위해 공공데이터포털의 상권정보를 다운로드 합니다.

https://www.data.go.kr/data/15083033/fileData.do#layer_data_infomation

 

 

 

다운로드를 하면 다음과 같이 지역별로 상권정보가 제공되는데 이중에서 카페,

특히 스타벅스와 이디야 자료만 추출하여 정리합니다.

(전국 데이터로 부터 스타벅스와 이디야 자료만 추출하는 내용은 다음 포스트에서 공유하겠습니다.)

추출된 주요 카페 데이터 자료입니다. 

우선, 스타벅스와 이디야, 커피빈 매장을 추출하였습니다.

추출된 매장을 QGIS에 POINT로 시각화하도록 하겠습니다.

 

 

본 카페 데이터가 CSV 파일로 구성되어 있음으로

레이어 - 레이어 추가 - 구분자로 분리된 텍스트 레이어 추가를 클릭해 줍니다.

 

 

X필드에 경도, Y필드에 제공된 위도 데이터를 설정해주고,

GPS 좌표임으로 좌표계는 4326으로 체크해줍니다.

 

 

카카오 맵 위에 시각화된 스타벅스와 이디야 매장 데이터 입니다.

 

 

정상적으로 잘 호출되었는지 속성테이블을 열어, 속성정보를 확인해줍니다.

 

 

4326 좌표계로는 버퍼기능을 정상적으로 활용할 수 없음으로,

공간처리 툴박스의 레이어 재투영 기능을 사용하여 5179 좌표계로 재투영 해줍니다.

 

 

재투영된 데이터 중 스타벅스 데이터를 공간처리 툴박스를 활용하여 버퍼해줍니다.

스타벅스 1km 반경 안에 이디야 매장을 찾아야 함으로, 

스타벅스 데이터의 버퍼  거리를 1km로 설정해줍니다.

 

 

이제 반경 스타벅스 1km 반경 내, 이디야 매장을 찾아야 함으로

공간처리 툴 박스의 폴리곤에 포함되는 포인트 개수 계산 기능을 활용하여, 

반경 내 이디야 매장을 검색해 줍니다.

폴리곤에는 스타벅스 1km 버퍼 데이터, 포인트에는 이디야 매장 데이터를 입력해줍니다.

개수 필드 이름은 NUMPOINTS로 설정해줍니다.

 

 

처리 후 '개수' 폴리곤의 속성테이블을 확인하면, NUMPOINTS 칼럼에 

반경마다 몇 개의 포인트가 포함되어 있는 지 확인할 수 있습니다.

 

 

NUMPOINTS가 적절하게 설정되었는 지 확인하기 위하여, 

한 폴리곤을 선택하여 직접 NUMPOINTS 개수를 확인해 보았습니다.

확인 결과, 선택된 폴리곤에 포함된 POINT는 3개로 정상적으로 공간분석이 된 것을 알 수 있었습니다.

 

 

투명도를 설정하여, 지도위에 가시화한 최종 결과물 입니다.

감사합니다.

< 서브 쿼리(Sub Query)-2 >
1) EXIST를 사용해 '있음'으로 갱신하기
update sample1 set b= "있음" where 
exists (select * from sample2 where no2 = no);

2) NOT EXISTS를 사용해 '없음'으로 갱신하기
update sample1 set b= '없음' where 
not exists (select * from sample2 where no2 = no);

< 서브 쿼리(Sub Query) >
1) 최솟값을 가지는 행 삭제하기
delete from sample where b = (select min(b) from sample)

변수 = (select min(b) from sample);
delete from sample where b = 변수; 

※ 스칼라 값 : select 명령이 하나의 값만 반환하는 것

2) select 구에서 서브쿼리 사용하기
select
(select count(*) from sample1) as q1
(select count(*) from sample2) as q2

3) set 구에서 서브쿼리 사용하기
update sample1 set b = (select max(b) from sample1)

4) from 구에서 서브쿼리 사용하기
select * from (
select * from sample 1 order by b desc)
where rownum <=2;

5) values 구에서 서브쿼리 사용하기
insert into sample1 values(
(select count(*) from sample1),
(select count(*) from sample2)
);

hospital geom에 geo geom 삽입하기.

(hospital.no = geo.no 가 같을 때)

 

update hospital as h 
set geom = g.geom
from geo as g
where h.no = g.no

 

 

+ Recent posts