[MySQL] SQL을 활용한 "열 - 단위 환산 출력하기"
이번에 소개할 내용은 열에 정량적 측정에 대해서 컴퓨터 프로그래밍으로 해결하는 방법에 대해서 소개하겠다.
순수한 실험을 위한 화학은 아니고, 컴퓨터 프로그래밍 측면에서 비열의 측정 데이터를 처리하는 방법에 대한 것이다.
소프트웨어 |
스프레드시트(데이터베이스를 모를 경우 파일처리로 데이터베이스로 활용가능), 프로그래밍 언어 1개(자바, C언어, C++ 프로그래밍, VBA 등의 언어), 데이터베이스(1개: MySQL, Cubrid, MSSQL, Oracle) |
1. 컴퓨터 프로그램으로 해석
크게 어려운 건 아니다. 몇 가지 식을 소개하겠다.
식 |
소개 |
1cal/g℃ = 4.184J/g℃. |
(cal에서 J로 환산) |
1cal/g℃ = 4.184J/g℃ x 1000g / 1kg = 4184J/kg℃ |
(g에서 kg으로 환산) |
그림 1-1. 물질 관련 표, 도도(Dodo)
공기, 건조를 한글로 소리나는 데로 읽는다면, "에어, 드라이(시어 레벨)" 이렇게 읽어진다.
아무튼 이러한 물질에 관한 데이터 표가 있다.
그림 1-2. 단위 변환 - 스프레드시트에 적용해보기, 도도(Dodo)
그림 1-2는 실제 실험이 완료된 수치를 단위변환한 것이다.
문제점이 하나 발생한다.
수치를 범위로 표현한 것이다.
그림 1-3. 수치를 범위로 표현한 경우, 도도(Dodo)
이런 경우에는 수치 데이터표를 보완할 필요가 있다.
컴퓨터 프로그래밍으로 자료를 처리하기 좋은 쪽으로 작성하는 게 편리하다.
그림 1-4. Min, Max로 데이터의 범주를 규격화 시킨 경우, 도도(Dodo)
그림 1-4는 Min, Max의 형태로 데이터를 규격화 시켰다.
J/kg℃는 제거해도 무방하다.
논리적인 데이터로 데이터만 뽑아내면 되기 때문이다.
그림 1-5. Water에 관한 세부 속성, 도도(Dodo)
이러한 경우도 있을 수 있다.
물인데 수증기에 관한 것이 있고, 순수한 물이 있다.
[첨부(Attachment)]
Material_Substance.7z
2. MySQL로 구현하기
이번에 소개할 것은 컴퓨터 프로그래밍을 최대한 제거하였다.
APMSetup이라는 프로그램 또는 Apache 2, PHP 5.2, MySQL 5.077를 활용한 Joule 계산 실습을 진행하였다.
SQL 언어 정도만 이해하고 있으면 간단하게 해결할 수 있는 주제로 작성하였다.
번호 |
항목명 |
설명(Description) |
1 |
Apache 2.2 |
오픈소스 - 웹서버 |
2 |
PHP 5.2 |
오픈소스 - 프로그래밍 언어 |
3 |
MySQL 5.077 |
오픈소스 - MySQL 5.077 Community Edition |
4 |
phpMyAdmin |
SQL 언어 실습 프로그램 (오픈소스) |
참고할 점: APMSetup 6 Version으로 진행하였음. / 설치를 안 할 경우에는 localhost에 접속할 수 없다.
그림 2-1. APMSetup의 localhost 웹 사이트
"myadmin"을 클릭한다.
그림 2-2. phpMyAdmin, 도도(Dodo)
계정에 아이디는 root, 비밀번호는 apmsetup이다.
입력한다.
그림 2-3. 사용권한에서 계정 생성하기, 도도(Dodo)
그림 2-3은 사용권한을 클릭하여 신규 계정을 생성한 것이다.
예로 편한 계정명을 입력하도록 하자.
그림 2-4. 데이터베이스 생성하기, 도도(Dodo)
그림 2-4는 데이터베이스를 생성하는 것이다.
dodo라는 데이터베이스를 생성할 것이다.
그림 2-5. 데이터베이스에 사용자 권한 주기, 도도(Dodo)
데이터베이스에 간단한 사용자 권한을 주었다.
그림 2-6. Material_substance.xlsx 파일 -> DB에 넣기, 도도(Dodo)
Material_substance에서 설계한 DB구조를 phpMyAdmin으로 생성하는 장면이다.
그림 2-7. Material_substance DB 구조 설계, 도도(Dodo)
항목명 |
특징(Specific) |
비고(Remarks) |
id |
Primary Key, Auto Increment(자동 증분) |
|
substance |
|
// 물질명 |
kor-substance |
|
// 한글명 |
min |
|
최소값 |
max |
|
최대값 |
그림 2-8. Material_substance DB 구조 설계, 도도(Dodo)
CREATE TABLE `substance` {
`id` INT NOT NULL AUTO_INCREMENT PRIMARY_KEY ,
`substance` VARCHAR ( 40 ) NOT NULL ,
`kor-substance` VARCHAR ( 40 ) NOT NULL ,
`min` DOUBLE NOT NULL ,
`max` DOUBLE NOT NULL
} ENGINE = MYISAM ;
[첨부(Attachment)]
substance.7z
그림 2-9. 데이터 가져오기, 도도(Dodo)
insert into `dodo`.`substance` (`id`, `substance`, `kor-substance`, `min`, `max`) values(NULL, 'Acetals', '아세탈', '0.35','0.35');
이런 형태로 데이터를 가져왔다.
[첨부(Attachment)]
sample_insert.7z
그림 2-10. SQL 명령어를 활용한 J(Joule) 구하기, 도도(Dodo)
SQL 명령어를 활용하여 J(주울)을 구했다.
SELECT `id`, `substance`, `kor-substance`, `min`, `max`, `min` * 4.184 AS `Joul/g`, `min` * 4.184 * 1000 AS `Joul/kg` FROM substance
간단한 명령어를 통해서 J/g, J/kg의 형태를 구할 수 있었다.
그림 2-11. SQL 명령어를 활용한 J(Joule) 삭제하기, 도도(Dodo)
간단한 명령어로 줄(J)을 삭제할 수 있다.
그림 2-12는 삭제한 결과가 성공적으로 수행되었음을 알려주는 모습이다.
DELETE FROM `dodo`.`substance` WHERE `substance`.`id` =3 LIMIT 1 ;
그림 2-12. id 3번의 줄 삭제 모습, 도도(Dodo)
다음은 입력한 Joule 데이터를 수정하는 방법에 대해서 소개하겠다.
그림 2-12에서 수정할 대상에 대해서 "연필" 그림을 클릭한다.
그림 2-13. id 4번의 줄 수정 모습, 도도(Dodo)
수정할 데이터를 입력한다.
실행을 누르면 아래의 그림처럼 된다.
그림 2-14. id 4번의 줄 수정 완료, 도도(Dodo)
실제로는 그림을 눌러서 처리되는 것은 아니며, SQL이라는 명령어로 처리된다.
UPDATE `dodo`.`substance` SET `kor-substance` = '공기, 건조 (해수면) 수정' WHERE `substance`.`id` =4 LIMIT 1 ;
테이블을 삭제하는 방법에 대해서 소개하겠다.
구조를 클릭한다.
substance을 선택하고, 삭제를 누른다.
그림 2-15. SQL DROP 명령어 실행하기, 도도(Dodo)
아래의 그림이 출력되면, 삭제 관련 사항을 확인하고 예를 누른다.
참고로 테이블을 삭제하면, 복원이 되지 않는다.
그림 2-16. SQL DROP 명령어 실행하기, 도도(Dodo)
그림 2-17. SQL 질의 성공 (DROP), 도도(Dodo)
Drop 사용 방법은 아래와 같다.
DROP TABLE {테이블명};
3. 참고자료(Reference)
[1] Specific Heat of common Substances, https://www.engineeringtoolbox.com/specific-heat-capacity-d_391.html, Accessed by 2018-07-29
[2] Water Vapor - Specific Heat, https://www.engineeringtoolbox.com/water-vapor-d_979.html, Accessed by 2018-07-29
[3] How to convert calories to joules[J], https://www.rapidtables.com/convert/energy/how-cal-to-joule.html, Accessed by 2018-07-29
[4] Files, https://kldp.net/apmsetup/release/, Accessed by 2018-07-29
[5] Developing MySQL Applications with Eclipse CDT, MySQL, http://download.nust.na/pub6/mysql/tech-resources/articles/mysql-capi-tutorial.html, Accessed by 2018-07-29