SQL 기초 학습 / SQL이란?

 

 

 

웹프로그래머가 알아야할 것들은?

 

프로그램의 공부는 정말 끝이 없는듯 합니다.

웹프로그램만 하더라도 공부해야 할 것들이 JSP, ASP, PHP, Database, Javascript, jQuery, SQL, CSS, HTML 등등 그 이외에도 더 많이 있지만 저렇게 많은 공부를 해야 인터넷이라는 공간에 집을 지을수 있습니다.

 

SQL 언어가 중요하고 필수적으로 알아야 하는 이유는 데이터베이스를 조작하고 엑세스할수 있기 때문입니다. 인터넷에 있는 모든 글은 데이터베이스에 저장되게 되는데 SQL 언어를 모르면 앙꼬없는 찐빵이겠죠. 

 

SQL 은 아래 내용처럼 많은 것들을 할 수 있습니다.

- SQL은 데이터베이스에 대해 쿼리를 실행할 수 있습니다
- SQL은 데이터베이스에서 데이터를 검색 할 수 있습니다
- SQL은 데이터베이스에 레코드를 삽입 할 수 있습니다
- SQL은 데이터베이스의 레코드를 업데이트 할 수 있습니다
- SQL은 데이터베이스에서 레코드를 삭제할 수 있습니다
- SQL은 새 데이터베이스를 만들 수 있습니다
- SQL은 데이터베이스에 새 테이블을 만들 수 있습니다
- SQL은 데이터베이스의 저장 프로 시저를 만들 수 있습니다
- SQL은 데이터베이스에서 뷰를 만들 수 있습니다
- SQL 테이블, 프로 시저 및 뷰에 대한 권한을 설정할 수 있습니다

 

SQL 언어는 표준 언어이지만 데이터베이스 마다 각각 사용법이 조금씩 다릅니다. 그렇지만 표준을 준수하기 위해서 기본적인 명령어는 똑같이 사용됩니다. 예를들어서 SELECT, UPDATE, DELETE, INSERT, WHERE 처럼 말이죠.

 

PHP 포스팅을 하면서 SQL에 대해 조금 다루긴 했지만 이번 SQL 포스팅에선 좀더 구체적으로 SQL에 대해서 알아보기로 하겠습니다. 

우선 SQL 소개 부분이니 여기까지만 설명을 드리고 다음 포스팅에선 SQL Syntax 에 대해서 포스팅하겠습니다.

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

어디든지 여러분의 소스코드를 보기좋게 올리세요

Color Scripter로 Action Script, ASP, C, C#, CSS, HaXe, HTML, Java, JavaScript, JSP, Objective C, Perl, PHP, Python, Ruby, SQL, Swift, Visual Basic 등
 다양한 언어를 하이라이트하여 소스코드를 더 보기좋게 블로그등에 업로드 할 수 있습니다.

Color Scripter는 네이버 블로그등 <script> 태그가 지원되지 않아 Syntax HighLighter를 사용할 수 없는 곳에서도 사용할 수 있으며,
간단한 설정만으로 자신이 원하는 방식으로 소스코드를 하이라이팅 할 수 있습니다.

위치는  https://colorscripter.com/

 

디자인

보다 더 깔끔하게 코드를 볼 수 있게 디자인을 변경했습니다.
특히 HTML과 CSS가 더 다양한 색상을 지원하여 더 보기 좋게 하이라이트 됩니다.

 

 


<html>
    <head>
        <title>Untitled 1</title>
    </head>
    <body>
        <p align="center">
            Hello World!
        </p>
    </body>
</html>

 


package{
    public class Class1{
        public static void main(String arg[]) {
            System.out.println("Hello World!");
        }
    }
}

툴바

최대한 간단하면서 편리하게 제작했습니다.
키보드나 마우스 모두 어떤 것을 사용하더라도 편하며 검색기능을 이용하면 더욱 빠르게 언어를 선택할 수 있습니다.

 

스타일패키지를 선택하기 전에 대략적인 색상을 파악할 수도 있습니다.

  확장 스토어

이제 확장스토어에서 언어팩이나 스타일패키지를 적용하거나 제작 및 업로드 할 수 있습니다.
확장스토어에서 플러그인 적용 후 colorscripter.com 사이트를 새로고침 하면 바로 사용 가능합니다

 

               

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

27일차 수업( JSP servlet 및 환경설치 )

 

CGI ( common Gateway Interface )
==> 동적으로 실행되어 클라이언트의 다양한 요구사항을 만족 시킬수 있는 개념

==> CGI를 구체화한 프로그램 언어 : JSP, Servlet, PHP, ASP

 

<JSP/Servlet 은 자바 기반>
따라서 JVM이 필요하다. JVM포함한 특별한 컨테이너(container)가 필요하다.

가장 많이 사용하는 tomcat 컨테이너 사용

 

* 환경

클라이언트              서버
: 웹브라우저            : 웹서버 ( 아파치, IIS )
                               ==> HTML를 서비스

 

* 환경2

클라이언트              서버
: 웹브라우저            : 웹서버 ( 아파치, IIS )
                             : 웹 컨테이너(tomcat)
                             ==> 웹 컨테이너가 웹 서버기능을 가지고 있기때문에

 

 

환경설정

가. JDK 설치
나. Eclipse설치 

다. Tomcat 설치
: http://jakarta.apache.org -> zip 파일로된 tomcat 7 파일을 받는다.

 

C 밑에 아무 파일(영어이름)이나 만들고 그안에 넣고 압축을풀면 준비 끝!

그리고 그안에 압축을 풀어준다.

 

서블릿(servlet)

: *.java 

작성방법

가. extends HttpServlet 상속받아야함
나. main 메소드 대신에 doGet(기본) 또는 doPost 메소드를 구현해야 된다.

 

ex) com.test.HelloServlet
클라이언트의 요청방법
http://localhost:8090/HelloTest/servlet/com.test.HelloServlet
--> 길고 보안에 취약함
다. 실행결과는 항상 html로 작성한다.
라. html를 클라이언트로 응답한다.

 

 

서블릿의 매핑방법 2가지!

 

a. web.xml
==> 배치지시자( Deployment Descriptor : DD )
 웹 어플리케이션의 환경정보를 저장한다.
==> xml로 구성되어 있다.
==> Servlet2.5, jsp2.1 (버전에서 주로 사용하던 방법)

 

사용방법>>>>

WEB-INF 에서 web.xml 소스에 아래와 같이 수정

 

<servrlet>

<servlet-name>서블릿별명</servlet-name>

<servlet-class>패키지를 포함한 서블릿명</servlet-class>

</servrlet>

<servlet-mapping>

<servlet-name>서블릿별명</servlet-name>

<url-pattern>매핑명</url-pattern>

</servlet-mapping>

 

b. annotation
==> web.xml에 설정 대신에 사용하는 방법
 자바코드내에서 설정하는 방법이다.
 Servlet3.0, jsp2.2 (Tomcat 7 에서만 동작) 보전에 사용 가능한 방법

 

사용방법 >>>>

@WebServlet("/Employee")

 

===부충수업 ========

 

  Servlet/JSP 과정 정리

1. 동작환경?

 : Client/Server 환경

클라이언트 A      가. 요청  서버
: 웹브라우저 ------------------->   나. 요청처리
     다. 결과(html형식)
            <-------------------
  라. 응답
서버는 html을 만드는거고, 클라이언트가 실행한다.

* 클라이언트에서 실행되는 프로그램 언어(컴포넌트)종류?
- html
- 자바스크립트

 

* 서버에서 실행되는 웹 컴포넌트 종류 3가지?

가. 정적 웹 컴포넌트
- html
==> 한번 작성하면 결과가 항상 동일하다.
    현재시간을 얻을 수가 없다.
 따라서 다양한 클라이언트 요구를 만족시킬 수 없다.

나. 동적 웹 컴포넌트
- JSP
- Servlet
==> 프로그램으로 실행된다.
   따라서 실행결과가 동적으로 다양하다.
클라이언트의 다양한 요규를 처리할 수 있다.

* CGI ( common Gateway Interface )
==> 동적으로 실행되어 클라이언트의 다양한 요구사항을 만족 시킬수 있는 개념

==> CGI를 구체화한 프로그램 언어 : JSP, Servlet, PHP, ASP

- JSP/Servlet 은 자바 기반이다.
따라서 JVM이 필요하다. JVM포함한 특별한 컨테이너(container)가 필요하다. 가장 많이 사용하는 tomcat 컨테이너 사용.

* 환경

클라이언트     서버
: 웹브라우저    : 웹서버 ( 아파치, IIS )
     ==> HTML를 서비스

* 환경2

클라이언트     서버
: 웹브라우저    : 웹서버 ( 아파치, IIS )
     : 웹 컨테이너(tomcat)
     ==> 웹 컨테이너가 웹 서버기능을 가지고 있기       때문에 ==> JSP, servlet 실행

 

2. 웹 컨테이너
: tomcat
: http://jakarta.apache.org 에서 무료 다운.

3. 환경설정
가. JDK 설치
나. Eclipse설치


다. Tomcat 설치
: http://jakarta.apache.org

*자바 개발 3가지 플랫폼
- Java SE ( Java Standard Edition )
==> 일반 PC에서 실행된는 프로그램 개발용.
==> 여지껏 우리가 배웠던 환경
==> 필요환경
 :: JDK 만 설치하면 된다.
 :: eclipse

- Java Enterprise Edition)
==> Enterprise 환경에서 실행되는 프로그램 개발용.
==> 필요 환경
:: JDK, Tomcat 설치하면 된다.
:: eclipse
:: 클라이언트는 웹 브라우저 필요.


- Java ME( Java Micro Edition )
==> 핸드폰, PDA같은 소규모 장치에서 실행되는 프로그램 개발용.
: 웹브라우저 ------------------->

     <-------------------

==> 이클립스와 톰켓 연동
가. Java EE 퍼스펙티브 선택

4. web application
: context 라고 한다.
: 물리적인 위치는 C:\tomcat7\apache-tomcat-7.0.42\webapps 폴더내에 있는 각각의 폴더를 지칭힌다.
ex) ROOT 컨텍스트 ( ROOT 웹 어플리케이션)이라고 한다.
: 용도?
==> 클라이언트가 요청했을 때, 컨테이너가 요청한 웹 컴포넌트를 찾는 디렉토리이다.

: 클라이언트 요청 처리방법?
http://서버아이피:포트번호/컨텍스트명/자원 <-- webapps에 있는 파일명을 컨텍스트라함
==> ROOT 컨텍스트는 생략한다.

ex) http://localhost:8090/examples/index.html
 http://localhost:8090/examples/test.jsp
http://localhost:8090/examples/servlet/com.test.HelloServelt

==> JSP와 HTML은 요청방법은 같다.
 서블릿은
http://서버아이피:포트번호/컨텍스트명/servlet/패키지명 포함한 클래스

: 컨텍스트 구조?
==> webapps 폴더에 저장되며 반드시 다음 구조를 갖는다.

webapps - 컨텍스트명 - WEB-INF  - classes
           - lib
    - web.xml

반드시 이 구조를 가져야한다. 이 구조가 아니면 컨테이너가 찾지 못한다.

5. 사용자 정의 context(web Application ) 생성

가. Eclipse에서 File > New > Dynamic Web Project 선택

6. 3가지 컴포넌트
가. html
==> www.w3schools.com 참조

나. JSP

다. 서블릿

7. 서블릿 ( servlet )

: *.java
: 작성방법

가. extends HttpServlet 상속받아야함
나. main 메소드 대신에 doGet(기본) 또는 doPost 메소드를 구현해야 된다.

 ex) com.test.HelloServlet
클라이언트의 요청방법
http://localhost:8090/HelloTest/servlet/com.test.HelloServlet
--> 길고 보안에 취약함
다. 실행결과는 항상 html로 작성한다.
라. html를 클라이언트로 응답한다.

* 아키텍쳐
 가. 요청     서버
http://localhost:8090/HelloTest/servlet/com.test.HelloServlet
브라우저 -----------------------------> com.test.Helloservlet
      나. 실행(프로그램)
      다. 결과(html형식) 
 <-----------------------------
 라. 응답

마. html을 보여준다.
* 서블릿 맵핑( Servlet mapping) --> 취약한 보안을 방지하는 방법
- 요청값을 짧게 줄이는 작업이다.
 이유는 요청값이 길고 보안에 취약하기 때문이다.
http://localhost:8090/HelloTest/servlet/com.test.HelloServlet
==?http://localhost:8090/HelloTest/servlet/xxx <- 의미없는 이름으로 지정

==> 서블릿 맵핑 정보 저장하는 방법 2가지

a. web.xml
==> 배치지시자( Deployment Descriptor : DD )
 웹 어플리케이션의 환경정보를 저장한다.
==> xml로 구성되어 있다.
==> Servlet2.5, jsp2.1 (버전에서 주로 사용하던 방법)

b. annotation
==> web.xml에 설정 대신에 사용하는 방법
 자바코드내에서 설정하는 방법이다.
 Servlet3.0, jsp2.2 (Tomcat 7 에서만 동작) 보전에 사용 가능한 방법

8. XML
 : eXtensible Markup Language ( XML )
=> 확장 가능한 마크업 언어
: 특징
- html 처럼 모두 태그(엘리먼트:element, 노드: node)로 구성됨.
시작태그
몸체
끝태그

예> <html> ==> 시작태그
    ==> 몸체 
    </html> ==> 끝태그

* 몸체가 없는 태그 ( empty 태그 )
예> <person> 홍길동 </person>
    <person></person> --> 빈태그
                      --> <person />
- 자바처럼 대소문자를 구별한다.
- html은 고정된 태그명이 있는데, xml은 마음대로 태그명을 추가할 수 있다. ( 가장 큰 특징 )
- xml을 작성하는 이유?
  ==> 데이터 저장
  예>
     <person>
 <name>홍길동</name>
  <age>29</age>
 <address>서울</address>
     </person>

  홍길동,20,서울

A회사  B회사
:win  :unix
:hwp         :word

    XML
- xml은 플랫폼(운영체제,프로그램 언어...)에 독립적이다.
==> xml 태그정보와 관련된 약속이 필요하다.
 ( 태그명, 갯수, 순서, 속성명, 속성값종류,...)
==> 2가지 약속문서로 작성가능하다.
- DTD (Data Type Definition)
-> *.dtd
- schema
-> *.xsd
======> xml 파일에서 dtd, xsd 의 문법을 따르는지 지정한다.

- xml은 태그가 계층구조로 되어 있다.

예>
     <person>
 <name>홍길동</name>
  <age>29</age>
 <address>서울</address>
     </person>

       person  => 루트태그(root 태그) (단 하나만 가질수있다.)
   |
   name  age   address
    |     |       |
  홍길동 20     서울

- 속성을 가질수 있다. 시작태그에 지정
  (속성명 = "값" , 속성명 = "값")
  반드시 속성값에는 " 또는 ' 를 사용해야 된다.
예> <person name="홍길동" age='20' />


=> 위 문법을 따르는 xml 파일을 well-formed 문서라고 한다.

=> dtd, schema 약속을 따르는 xml 파일을 valid 문서라고 한다.

가. 태그명 지정
< !ELEMENT 태그명 ( 자식태그, 자식태그2, ...) >
C:\tomcat7\apache-tomcat-7.0.42\lib 이 경로로 들어가서
servlet-api.jar 에디터 플러스로 연다.
//53번째 줄의 내용이다. (dtd파일)
<!ELEMENT web-app (icon?, display-name?, description?, distributable?,
context-param*, filter*, filter-mapping*, listener*, servlet*,
servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?,
error-page*, taglib*, resource-env-ref*, resource-ref*, security-constraint*,
login-config?, security-role*, env-entry*, ejb-ref*,  ejb-local-ref*)>

나. 개수
? : 0이상
* : 1이상
 : 반드시 1

다. 속성명 지정
<!ATTLIST 속성명 타입 #IMPLIED|#REQUIRED>

: 타입은 CDATA, ID 등이 올수 있다.
: #IMPLIED은 옵션, 즉 송성을 지정안할 수 있다.
 #REQUIRED은 필수, 즉 속성이 필수사항이다.

9. web.xml
<welcome-file-list>를 에디터에서 찾는다.
<!ELEMENT welcome-file-list (welcome-file+)>
가. welcom-file-list 의 <welcom-file>
==> 맨 처음 보여주는 화면의 파일명 지정.
지정하면 브라우저에서 URL에 명시적으로 지정하지 않아도 자동으로 찾아서 보여준다.

자~~
웹.xml에 있는걸 보면
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 
 <description>sss</description>
 
  <display-name>Test001</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>abc.html</welcome-file>
  </welcome-file-list>
</web-app>
이것은 순서대로 파일을 찾는다. 찾을 때
구지
http://localhost:8090/Test001/abc.html 을 써주지 않아도 된다.
http://localhost:8090/Test001/ 만 써도 가능하다.

xml파일이란 ~ 묶어주는 역할을 하는 것 같다.
최고 큰 녀석은 conf에  xml이다.

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
--> 여기에 지정되있으니~톰켓 메인화면이 보이는 것이다.

10. 서블릿 맵핑 설정 방법 ( 크게 두가지고 있고 둘다 먹힌다. 확인은 콘솔에서)

가. annotation 방법
 @WebServlet("/zzz") //맵핑하는것서블릿3.0에서사용하는것!!
public class HelloServlet extends HttpServlet

나. web.xml 설정 방법
<servlet>
 <servlet-name>kkkk</servlet-name>
 <servlet-class>com.test.HelloServlet</servlet-class>
 
 </servlet>
 
 <servlet-mapping>
 
 <servlet-name>kkkk</servlet-name>
 <url-pattern>/abc</url-pattern>
 
 </servlet-mapping>


11. 응답처리
  가. 요청
웹 브라우저 ------------------> 서블릿
     나. 실행
 <---------------------
 다. 응답

* 서블릿 작성 클래스 3개.
가. HttpServlet
==> 일반클래스를 서블릿으로 만들기 위해서
==> 일반클래스는 브라우저에서 요청해도 처리가 안됨.
 서블릿이어야 브라우저에서 요청할 수 있다.
==> 서블릿이 요청을 받으면 서비스 메소드 실행된다.
   ( 서비스 메소드의 종류 : doGet, doPost )
 서비스 메소드는 반드시 2가지 인자를 갖는다.
HttpServletRequest request,
 HttpServletResponse response를 갖는다.

나. HttpServletRequest
==> 클라이언트가 서버로 요청할 때 관련있는 클래스.

다. HttpServletResponse
==> 서버가 클라이언트로 응답할 때 관련있는 클래스.

* 서블릿이 응답 시 2가지 작업

가. MIME 타입지정
==> 웹 브라우저에게 응답 데이터형식을 알려줄 때 사용한다.
 ex) html, text, img, ....
==> tomcat홈>conf>web.xml 참조

response.setContentType("text/html");

나. 자바 IO 얻기

//byte
 ServletOutputStream sos = response.getOutputStream();
//char
 PrintWriter out = response.getWriter();


다. html 형식으로 출력
out.print(값);

System.out.println("WorldServlet");
  
  //응답처리 + 한글지정
  //1. MIME 타입지정
  response.setContentType("text/html;charset=EUC-KR");
  
  // 2. IO 얻기
  //byte
  //ServletOutputStream sos = response.getOutputStream();
  //char
  PrintWriter xxx = response.getWriter();
  //3.출력
  xxx.print("hello World");
  xxx.print("안녕하세요");


12. 서블릿과 DB연동
웹 브라이저 ---------> 서블릿 -------> DAO ---------> 오라클

가. 드라이버 필요
 : 클래스패스에 추가

나. DAO, DTO 패턴

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,