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
복사
결과