1주차에서 웹 서버와 WAS에 대해서 공부하였습니다.
웹 서버 구조는 위 그림과 같이 웹 서버 - WAS - DB 로 구성되어 있습니다. 웹 서버와 WAS가 하는 역할은 저번 시간에 알아봤습니다. 그럼 DB는 무슨 역할을 할까요??
DB는 DATABASE의 줄임말로 말 그대로 데이터를 저장하는 공간입니다.
그렇기 때문에 우리가 웹 브라우저를 통해 웹 서버에 파일을 요청하며 만약 파일이 동적페이지로 처리가 필요한 파일일 경우 우리가 요청할 때 같이 전송한 데이터를 통해 WAS에서 해당 데이터에 관한 데이터를 DB에서 가져와 결과 페이지를 만드는 식으로 동작합니다.
위의 그림과 같이 보면 이해가 빠를 것 같습니다.
1. 브라우저를 통해 파일 요청
2. 웹 서버에서 동적 처리가 필요한 경우 WAS에게 전달
3. WAS에서 결과 페이지를 만들기 위해 DB에서 필요한 정보 요청
4. DB가 데이터를 WAS에게 전달
5. WAS에서 받은 데이터로 동적 페이지를 완성시켜 웹 서버에 전달
6. 웹 서버가 WAS로부터 받은 동적 페이지를 브라우저에 전달하고 브라우저는 우리에게 페이지를 보여줌.
웹 서버 - WAS - DB 구조를 알아보았고, 웹 서버와 WAS는 알고 있는데 DB는 잘 모르겠습니다...
먼저 DB의 구조를 보겠습니다.
DB는 Database - Table - column, row 로 구성되어 있습니다.
Database: 테이블을 저장하는 더 큰 공간으로 한 DB안에 여러개의 Database가 있을 수 있습니다.
-> 엑셀로 비유 시 엑셀 파일.
그림에서는 따로 표현을 안 했지만, 원통 안에 여러 Database가 있고 그 중 하나를 표현한 그림입니다..
Table: 데이터를 테이블 형식으로 column 과 row의 조합으로 구성되어 있고 하나의 Database안에 여러개의 Table이 있을 수 있습니다.
-> 엑셀로 비유 시 엑셀 시트.
Column: 테이블에서 열로, 데이터의 종류(타입)를 나타냅니다.
-> 엑셀에서 하나의 열.
Row: 테이블에서 행으로, 실제 데이터의 조합을 나타냅니다.
-> 엑셀에서 하나의 행.
하지만 데이터베이스는 컴퓨터가 정보를 기록하기위해 사용하는 것으로 이 데이터베이스는 그저 저장하기위한 장치일 뿐이기 때문에 데이터베이스를 관리하는 시스템이 필요합니다. 이때, 이 애플리케이션을 DataBase Management System(DBMS)라고 합니다.
DBMS에는 관계형 DBMS, 비관계형 DBMS가 있는데, 위처럼 테이블!! 형식으로 저장하는 데이터베이스를 관리하는 DBMS를 관계형 DBMS라고 합니다. 이번 시간에는 관계형 DBMS를 알아보겠습니다. - 비관계형 DBMS는 다음에 배우면 정리!
이제 실제로 관계형 DBMS를 사용하는 방법을 알아보겠습니다.
이때 사용하는 것이 SQL 언어입니다.
Structured Query Language(SQL)
SQL은 RDBMS의 데이터를 정의하고 질의, 수정 등을 하기 위한 언어로 DBMS와 상호작용할 때 사용됩니다.
먼저, 데이터베이스에서 데이터를 검색하는 것을 알아보겠습니다.
이때!! SELECT 문을 사용합니다.
- SELECT [컬럼 이름] FROM [테이블 이름];
이렇게 작성 시 해당 테이블에서 원하는 컬럼(열!!)을 테이블 형식으로 검색합니다.
예시
저는 MySQL DBMS를 사용하였습니다.
위와 같이 select name, score from score;를 입력하면 score 테이블의 name과 score을 골라 출력하여 줍니다.
- 추가!! 그림을 보시면 select 구문에 이상한 명령어를 입력한 것을 확인할 수 있습니다.
show databases; : 현재 DBMS의 데이터베이스를 보여줍니다.
use [test]; : [test] 데이터베이스를 사용합니다. (test 부분에 다른 데이터베이스 입력 가능)
desc score; : score 테이블의 정보를 출력하여 줍니다. (위에서 test 데이터베이스를 사용하였기 때문에 test안의 테이블만 사용 가능)
이렇게 데이터베이스에서 데이터를 가져올 수 있습니다. 하지만, 우리가 가져오고 싶은 데이터를 정해서 검색이 가능합니다.
이때 사용하는 것이 where 문으로 이는 select 문 뒤에 적어주며 where 문에 들어가는 조건에 해당하는 데이터를 검색합니다.
- SELECT [컬럼명] FROM [테이블 이름] WHERE [조건];
이렇게 작성하여 주면 됩니다.
예시
우리는 점수(score)가 100점인 사람???의 이름(name)을 검색해보겠습니다.
이렇게 내가 원하는 데이터만 검색할 수 있습니다.
- 조건에는 같은 것 뿐만아니라 다른것! 큰것! 작은것! 모두 검색이가능하며 and, or 조건을 사용하여 여러 조건에 대해 검색도 가능합니다.
- and는 앞의 조건이 참이며 뒤의 조건 또한 참인 데이터를 찾아주며, or는 앞의 조건이 참이거나 뒤의 조건이 참인!! 둘 중 하나라도 속해있는 데이터를 찾아줍니다.
이때까지 데이터베이스에서 데이터를 검색하는 방법을 알아보았습니다. 하지만, 데이터를 검색하기 전 데이터를 넣을 수 있어야 우리가 찾을 데이터도 존재하겠죠??? 그럼 데이터를 넣는 방법을 알아보겠습니다.
이때 사용하는 것은 INSERT 문 입니다.
INSERT의 사용 방법은 다음과 같습니다.
- INSERT INTO [테이블 이름](컬럼명) VALUE(값);
바로 예시를 보며 확인해보겠습니다.
insert into score(name, score) value('world', 55); 를 입력하여 score 테이블의 이름은 world, 점수는 55점인 데이터를 추가할 수 있었습니다.
- select * from score; 에서 처음보는 *가 있습니다. 이는 해당 테이블의 모든 컬럼을 검색하는 것 입니다.
이렇게 데이터를 삽입, 검색 까지 알아보았습니다. 추가로 수정과 삭제 기능이 있는데 이는 짧게 사용방법만 설명하겠습니다.
수정: UPDATE [테이블 이름] SET [컬럼명]=[수정값] where [조건]
-> 지정한 테이블에서 조건에 해당하는 행(row) 중 지정한 컬럼의 값을 수정 값으로 바꿔줍니다.
삭제: DELETE FROM [테이블 이름] WHERE [조건]
-> 지정한 테이블에서 조건에 해당하는 행을 지웁니다.
아주 간단하게 SQL을 알아보았고, 이것으로 데이터베이스도 사용할 수 있습니다.
이제는 데이터베이스를 사용하는 이유인 !! WAS와 DB를 연결하는 방법을 보겠습니다.
위의 코드를 보겠습니다.
일단 mysqli_connect 함수를 볼 수 있는데 이것을 통해 DB와 연결합니다. 이때 결과를 db_conn 변수에 담았습니다. (DB에 접근하기 위한 티켓을 받았고 그것을 db_conn 변수에 저장했다고 생각하면 됩니다.)
그리고 함수에 4개의 매개변수를 건네주었는데 앞에서부터 DB 서버의 IP 주소, DB 계정의 아이디, DB 계정의 비밀번호, 연결할 데이터베이스 이름입니다. 이것을 위에서 확인 가능하듯 define 함수를 통해 상수 선언하여 값을 저장하여 사용하였습니다.
그래서 결과적으로 localhost에 있는 test 데이터베이스에 연결하는데 연결하기 위한 아이디와 비밀번호를 함께 건네줘서 연결합니다.
- 이때 중요한 정보 !! 이렇게 연결하기위해 아이디와 비밀번호를 함께 건네주기 때문에 무조건!!! WAS 어딘가 파일에 DB연결하기위한 아이디와 비밀번호를 저장합니다.
그렇기 때문에 만약 WAS가 해킹 당한다! 그럴 경우 무조건 DB도 함께 털렸다고 보시면 됩니다.
그리고 나머지 코드를 보면 query 변수는 우리가 DB에 실행할 쿼리를 저장하였고, mysqli_query 함수를 통해 우리가 받아놓은 티켓과 쿼리를 함께 전달하여 SQL을 실행하였습니다. 우리는 이 실행한 결과가 필요하기 때문에 그냥 버릴 수 없죠?? 바로 result 변수에 저장해줍니다.
그 이후에는 mysqli_fetch_array로 받은 결과가 테이블형태인데 그 중 첫번째 행을 가져옵니다. 만약 결과가 하나의 행이라도 이 함수를 사용하여 한 행을 꺼내와야 우리가 사용이 가능합니다. 이제 마지막!! var_dump함수로 해당 행을 출력합니다.
만약 mysqli_fetch_array를 한번 더 사용할 경우 그 다음 행을 추출합니다. 또 한번 더 사용하면 또 그 다음 행을 추출하게 됩니다.
그래서 위의 코드처럼 세번 적을 경우 1,2,3 행의 데이터를 모두 출력하게 됩니다. (반복문을 사용한다면 더욱 편하겠죠???)
이렇게 2주차 웹 개발 공부를 마치겠습니다.
이번에는 웹 서버의 구조 웹 서버 - WAS - DB, DB 가 무엇인지? 어떻게 DB를 사용할 수 있는지!! 그리고 마지막으로 WAS와 DB를 연결하는 것까지 알아보았습니다.
과제
1. 학생이름과 점수가 들어있는 DB에서, GET 방식으로 name을 건네주면 점수를 출력하는 페이지
2. 회원가입 페이지 만들기
3. 1주차에 만든 로그인 페이지를 DB와 연동하기
'웹 개발' 카테고리의 다른 글
웹 개발 공부 일기장 2 - 과제 (로그인 페이지 With DB) (0) | 2023.11.06 |
---|---|
웹 개발 공부 일기장 2 - 과제 (회원가입 페이지) (2) | 2023.11.04 |
웹 개발 공부 일기장 1-과제 (로그인 페이지) (0) | 2023.10.29 |
웹 개발 공부 일기장 1-2 (WAS) (2) | 2023.10.27 |
웹 개발 공부 일기장 1-1 (웹 서버) (0) | 2023.10.26 |