[STUDY] 231226 | DB | 데이터베이스의 개념

Nimgnos·2024년 1월 23일
0

👾 STUDY

목록 보기
22/40
post-thumbnail

💻 데이터와 데이터베이스(DB)

📌 데이터베이스(DB, DataBase)

  • 데이터 저장소, '데이터의 집합'
    • 예) 매출장부 관리 시
      ➡ 수기, 엑셀 등으로 데이터를 관리할 시, 데이터의 신뢰도가 매우 떨어짐. 데이터의 정확성/일관성이 낮음.(= 데이터의 무결성이 낮음)
  • ✨무결성(Integrity)이란?
    데이터에 결함이 없는 상태, 즉 데이터를 정확하고 일관되게 유지하는 것을 의미.
  • ✨무결성 제약조건(Integrity Constraint)이란?
    데이터베이스의 정확성, 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제약하기 위한 조건
    ➡ 데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지 / 데이터의 신뢰도 보존

💻 DBMS, SQL

📌 DBMS(Database Management System)

  • 데이터베이스를 관리하고 운영하는 소프트웨어 DBMS
    • Oracle, MySQL, MsSQL, mariaDB...
  • 다양한 데이터가 저장되어 있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야 함.

📌 SQL(Structed Query Language)

  • 구조화된 질의 언어라는 뜻으로 관계형 데이터베이스에서 사용되는 언어
  • 데이터를 조작하기 위한 명령어(쿼리)
  • 표준 SQL을 배우면 대부분의 DBMS를 사용할 수 있음.

💻 데이터베이스 실습(mariaDB 사용)

1. SELECT

📌 DB

-- SELECT 컬럼명들 FROM 테이블명;
-- 1. EMP테이블에서 모든 사원의 사번, 이름, 급여정보 조회
SELECT EMPNO, ENAME, SAL FROM emp;
-- 모든 사원의 이름, 직급, 입사일, 부서번호 조회
SELECT ENAME, JOB, HIREDATE, EMPNO FROM emp;
-- 모든 사원의 모든 정보를 조회
-- *(에스테리스크) : ALL
SELECT * FROM emp;
-- 조건을 통해 조회
-- 급여가 300 이상인 사원들의 사번, 사원명, 급여 조회
SELECT EMPNO, ENAME, SAL 
FROM emp 
WHERE SAL >=300;
-- 직급이 대리인 사원들의 사원명, 직급, 급여 조회
SELECT ENAME, JOB, SAL
FROM emp
WHERE JOB='대리';
-- 직급이 과장이고 급여가 400 이상인
-- 사원들의 모든 정보 조회
-- 같지않다 : !=(!, =), <>
SELECT * 
FROM emp
WHERE JOB='과장' AND SAL >= 400;
-- COMM 컬럼이 NULL인 사원의 모든 정보 조회
SELECT *
FROM emp
WHERE COMM IS NULL;
-- (COMM이 NULL이 아닌 경우) WHERE COMM IS NOT NULL;
-- 급여가 500 미만이거나 700 이상이면서
-- 직급은 차장이고 COMM은 NULL인 사원들의 사번, 사원명, 급여, 직급, 커미션 정보를 조회
SELECT EMPNO, ENAME, SAL, JOB, COMM
FROM emp
WHERE (SAL < 500 OR SAL >= 700)
AND JOB='차장' AND COMM IS NULL;

📌 JAVA(CONTROLLER CLASS)

package com.green.Second.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
//@Controller : 해당 클래스 파일이 컨트롤러 역할을 하는 클래스임을 spring에게 인식
@Controller
public class MemberController {
    //@GetMapping, @PostMapping
    //페이지 접속 정보
    //소괄호 안의 글자와 localhost:8081 뒤의 글자가 일치하면
    //해당 메소드를 실행
    //@PosrMapping은 페이지 이동방법 중에 form 태그로 이동하면서
    //form 태그의 method 속성값이 post일 때만 실행됨.
    //get방식
    //1. form 태그의 method 속성값이 get일 때.
    //2. a 태그로 페이지가 이동될 때.
    //3. 주소창에 직접 url을 입력했을 때.
    @GetMapping("/")
    public String main(){
        //리턴되는 문자열은 마지막에 실행되는 html 파일명
        //html 파일은 반드시 templates 폴더 안에 존재
        return "first"; //first.html 실행
    }
    //@RequestParam 어노테이션으로 html에서 넘어오는 데이터를 전달받을 수 있다.
    //해당 어노테이션의 속성으로는 name, required, defaultValue가 있다.
    //name: html에서 넘어오는 데이터의 이름
    //required: 넘어오는 데이터가 필수 데이터인지 설정
    //required 속성을 적지 않으면 default 값은 true
    //defaultValue: 데이터가 넘어오지 않을 때 결정되는 기본값
    //html로 데이터를 전달하기 위해서는
    //메소드의 매개변수로 Model(interface)의 객체를 선언
    @GetMapping("/second")
    public String second(@RequestParam(name = "addr", required = false) String address,
                         @RequestParam(name = "age", required = false, defaultValue = "1") int age,
                         Model model){
        System.out.println("addr = " + address);
        System.out.println("age = " + age);
        //html로 데이터 전달하기
        model.addAttribute("addr", address);
        model.addAttribute("age", age);
        model.addAttribute("name", "홍길동");
        return "second";
    }
}

📌 HTML(1)

<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
    first.html 파일입니다. <br>
    <a href="second?addr=울산&age=30">second.html로 이동</a>
</body>
</html>

📌 HTML(2)

<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
    <h3>second.html 파일입니다.</h3>
    <div th:text="${addr}"></div>
    <span th:text="${age}"></span><br>
    [[${name}]]
</body>
</html>

🍀 회고

  • 죽겠다
profile
먹고 기도하고 코딩하라

0개의 댓글