///////
Search

삽입정렬,SQL_이연재

1. 삽입정렬

1. 기본 틀 작성

코드
삽입정렬이 들어갈 sort메소드를 만들었다.

2. Swap메소드와 맨처음 루프

코드
저번 정렬 알고리즘 처럼 Swap 메소드를 추가하고 sort메소드에 맨 처음 루프의 동작을 추가했다.

3. 루프 i추가

코드
맨처음 루프가 아닌 모든 루프에서도 동작할 수 있도록 이중 for문을 추가했다.

2. hospital 프로젝트

1. write 메소드 추가

기존에 만들었던 sql 쿼리문을 만드는 메소드에 write메소드를 추가하여 .sql파일로 저장할 수 있도록 추가한다.
FileController.java
Main.java
위와 같이 메소드를 추가하여 실행시키면 다음과 같은 sql파일이 만들어진다.
테이블 비우기(Truncate Table) - 신중하게 할 것! db에 영향이 큰 query를 날리기 전에 db를 백업하고 해야 한다. 운영서버인지 개발 서버인지 꼭 확인 하고 할 것!

2. MySQL Workbench에 insert하기

1. 파일 insert하기

폴더 버튼을 클릭해 열고 만들어 뒀던 sql파일을 연다.

2. insert 확인하기

SELECT count(*) FROM hospital.seoul_hospital ;
SQL
복사
insert된 데이터의 총 개수를 확인 할 수 있다.

3. SQL Query문 연습하기

1) group by, order by

SELECT district, count(district) as cnt FROM hospital.seoul_hospital group by district order by cnt desc;
SQL
복사
결과
각 구별 병원 개수를 내림차순 정렬한다.

2) limit

SELECT * FROM hospital.seoul_hospital limit 1000;
SQL
복사
결과
데이터를 1000개만 불러온다.
그냥 select from 하지 말고 limit걸어서 조금씩 불러와야 대용량 데이터 처리를 빠르게 할 수 있다.

3) subdivision, name 컬럼만 불러오기

SELECT subdivision, name FROM hospital.seoul_hospital limit 1000;
SQL
복사
결과

4) where

SELECT subdivision, name FROM hospital.seoul_hospital where subdivision = "" limit 1000;
SQL
복사
결과
subdivision이 비어있는 데이터의 subdivision과 name을 출력한다.
상세조건을 넣을 때 where을 사용한다.

5) and, like

SELECT subdivision, name FROM hospital.seoul_hospital where subdivision = "" and name like "%이비인후과%" limit 1000;
SQL
복사
subdivision이 비어있는 데이터 중 이름에 이비인후과가 들어있는 데이터의 subdivision과 name을 출력한다.
and문으로 조건을 여러 개 걸 수 있고 like문으로 검색을 할 수 있다.

6) count

SELECT count(name) FROM hospital.seoul_hospital where subdivision = "" and name like "%이비인후과%" limit 1000;
SQL
복사
subdivision이 비어있는 데이터 중 이름에 이비인후과가 들어있는 데이터의 개수를 출력한다.
특정 조건인 데이터 개수 세기

7) update, by id

UPDATE hospital.seoul_hospital SET subdivision = "이비인후과" WHERE id = "A1100196"
SQL
복사
id가 "A1100196"의 subdivision을 이비인후과로 변경한다.

8) update, by condition

UPDATE hospital.seoul_hospital SET subdivision = "이비인후과" where subdivision = "" and name like "%이비인후과%"
SQL
복사
subdivision이 비어있는 데이터중 이름에 이비인후과가 들어간 모든 데이터의 subdivision을 이비인후과로 변경한다.
데이터를 한번에 많이 바꾸려 하면 세이프모드 때문에 처리되지 않는다.
세이프모드 해제 - Edit > Preferences > SQL Editor > Safd Updates 체크 해제

9) distinct

SELECT distinct category FROM hospital.seoul_hospital order by category limit 1000;
SQL
복사
결과
고유값만 남기고 싶을때 사용한다.

4. 요구사항 분석하기

1) 병원분류명(category)이 총 몇가지 인지?

SELECT distinct category FROM seoul_hospital order by category limit 1000;
SQL
복사
결과

2) 병원분류별로 몇개씩 있는지?

SELECT subdivision, count(subdivision) as cnt FROM hospital.seoul_hospital group by subdivision order by cnt desc limit 1000;
SQL
복사
결과

3) 각 구별로 성형외과 개수?

SELECT district, subdivision, count(subdivision) as cnt FROM hospital.seoul_hospital where subdivision = "성형외과" group by district, subdivision order by cnt desc limit 1000;
SQL
복사
결과

4) 구별로 병원이 가장 많은 구는?

SELECT district, count(district) as cnt FROM seoul_hospital group by district order by cnt DESC;
SQL
복사
결과

5)categorys 는 각 몇개인지?

SELECT subdivision, count(subdivision) as cnt FROM seoul_hospital group by subdivision order by cnt DESC;
SQL
복사
결과