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;

< 서브 쿼리(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

 

 

alter table "테이블명" add column "GEOM" geometry;

update "테이블명" set "GEOM" = st_makepoint("x 좌표(경도)", "y 좌표(위도)"); 

- Mysql에는 Oracle과 달리 rownum의 기능이 없다.

- 따라서 rownum을 설정하여 활용해보자.

예제)

set @no:=0;

select d.rownum, d.name, d.dateTime

from (select @no:=@no+1 as rownum, name, animal_id, dateTime

from animal_ins

order by dateTime desc) d

where rownum = 1;

+ Recent posts