Light Blue Pointer
본문 바로가기
개발일지

2023-10-31, Today I Learned

by 개발바닥곰발바닥!!! 2023. 10. 31.

오늘 공부한 것

https://greedydeveloper.tistory.com/92

 

Spring 입문

웹 동작방식 이해하기 IP주소 : 네트워크망에서 데스크탑 식별 위치 주소 데이터 송수신 기준 주소 브라우저 : 웹페이지 이미지 비디오등의 컨텐츠를 송수신/ 컨텐츠를 표현 DNS : 도메인 이름을 I

greedydeveloper.tistory.com

오늘 푼 문제

https://greedydeveloper.tistory.com/93

 

[프로그래머스]특수문자 출력하기

문제 주소 https://school.programmers.co.kr/learn/courses/30/lessons/181948?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나

greedydeveloper.tistory.com

오늘 배운것

⭐Java Char to string

Character.toString()

 

⭐How to print double quotes in Java

1.Type the escape character \.

\"

 

2.Use ASCII Code

char(34)

⭐How to print double quotes in Python

1.Type the escape character \.

\"

 

Spring 맛보기

서버는 세가지로 구성됨

1. 새로운 데이터를 처리하는 부분

2. 서비스 로직을 처리하는 부분

3. 기존의 데이터를 이용하는 부분

 

Presentation 계층

사용자와 상호 작용 처리 계층

CLI, HTTP 요청, HTML 처리 등을 담당한다.

HTTP 요청 처리 및 HTML 렌더링에 대해 알고 있는 웹 계층

흔히 말하는 MVC (Model / View / Controller) 도 이 계층에 속한다.

스프링에서는 @Controller 어노테이션

Domain(Business or Service) 계층

서비스/시스템의 핵심 로직

유효성 검사 및 계산을 포함하는 Business 논리 계층

애플리케이션이 수행해야하는 도메인과 관련된 작업들을 담당한다.

입력/저장된 데이터를 기반으로 계산

Presentation 계층에서 받은 데이터의 유효성 (Validation) 검사

어떤 Data Access 를 선택할지 결정

스프링에서는 @Service 어노테이션

Data Access(Persistence) 계층

DAO 계층

Database / Message Queue / 외부 API와의 통신 등 처리

데이터베이스 또는 원격 서비스에서 영구 데이터를 관리하는 방법을 분류하는 데이터 접근 계층

스프링에서는 @Repository 어노테이션

 

SQL

Structured Query Language

RDBMS에서 사용되는 언어

DDL

Data Definition Language

  • CREATE : 새로운 데이터베이스 및 테이블을 생성
CREATE DATABASE 데이터베이스이름;
CREATE TABLE 테이블이름
(
		필드이름1 필드타입1,
    필드이름2 필드타입2,
    ...
);
  • ALTER : 데이터베이스와 테이블의 내용을 수정할 수 있습니다.
ALTER TABLE 테이블이름 ADD 필드이름 필드타입;
ALTER TABLE 테이블이름 DROP 필드이름;
ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입;
  • DROP : 데이터베이스와 테이블을 삭제할 수 있습니다. 데이터 및 테이블 전체를 삭제합니다.
DROP DATABASE 데이터베이스이름;
DROP TABLE 테이블이름;
  • TRUNCATE : 데이터베이스와 테이블을 삭제할 수 있습니다. 최초 테이블이 만들어졌던 상태 즉, 컬럼값만 남깁니다.
TRUNCATE DATABASE 데이터베이스이름;
TRUNCATE TABLE 테이블이름;

 

DCL

Data Control Language

GRANT : 사용자 또는 ROLE에 대해 권한을 부여할 수 있습니다.

GRANT [객체권한명] (컬럼)
ON [객체명]
TO { 유저명 | 롤명 | PUBLC} [WITH GRANT OPTION];

//ex
GRANT SELECT ,INSERT 
ON mp
TO scott WITH GRANT OPTION;

REVOKE : 사용자 또는 ROLE에 부여한 권한을 회수할 수 있습니다.

REVOKE { 권한명 [, 권한명...] ALL}
ON 객체명
FROM {유저명 [, 유저명...] | 롤명(ROLE) | PUBLIC} 
[CASCADE CONSTRAINTS];

//ex
REVOKE SELECT , INSERT
ON emp
FROM scott
[CASCADE CONSTRAINTS];

 

DML

Data Manipulation Language

테이블에 데이터를 검색, 삽입, 수정, 삭제

INSERT : 테이블에 새로운 row를 추가할 수 있습니다.

INSERT INTO 테이블이름(필드이름1, 필드이름2, 필드이름3, ...) 
VALUES(데이터값1, 데이터값2, 데이터값3, ...);
INSERT INTO 테이블이름 
VALUES(데이터값1, 데이터값2, 데이터값3, ...);

SELECT : 테이블의 row를 선택할 수 있습니다.

SELECT 필드이름 FROM 테이블이름 [WHERE 조건];

UPDATE : 테이블의 row의 내용을 수정할 수 있습니다.

UPDATE 테이블이름 
SET 필드이름1=데이터값1, 필드이름2=데이터값2, ... 
WHERE 필드이름=데이터값;

DELETE : 테이블의 row를 삭제할 수 있습니다.

DELETE FROM 테이블이름 WHERE 필드이름=데이터값;

CREATE

제약조건

AUTO_INCREMENT : 컬럼의 값이 중복되지 않게 1씩 자동으로 증가하게 해줘 고유번호를 생성해 줍니다.

CREATE TABLE 테이블이름
(
    필드이름 필드타입 AUTO_INCREMENT,
    // id bigint AUTO_INCREMENT,
    ...
);

NOT NULL : 해당 필드는 NULL 값을 저장할 수 없게 됩니다.

CREATE TABLE 테이블이름
(
    필드이름 필드타입 NOT NULL,
    ...
);

UNIQUE : 해당 필드는 서로 다른 값을 가져야만 합니다.

CREATE TABLE 테이블이름
(
    필드이름 필드타입 UNIQUE,
    ...
);

PRIMARY KEY : 해당 필드가 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 됩니다.

CREATE TABLE 테이블이름
(
    필드이름 필드타입 PRIMARY KEY,
    ...
);

 

  • PRIMARY KEY 기본키 : 테이블 내에서 '유일하게 존재하는 값의 조합'을 설정해서 중복된 데이터가 테이블에 삽입되는 것을 방지하는 제약조건

1️⃣ 데이터의 중복을 방지

2️⃣ 데이터를 매우 빠르게 찾을 수 있음

기본키를 설정하면 DBMS는 인덱스를 만듦

인덱스로 탐색시 데이터를 빨리 찾을 수 있다

컬럼에 기본키가 설정되어있지 않으면 중복될 수 없다는 것을 DBMS가 몰라서 모든 row를 모두 확인함

기본키가 설정되어있으면 row를 전부 확인하지 않고 1개만 찾으면 바로 리턴함

 

FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장

  • FK 를 가지는 테이블이 참조하는 기준 테이블의 열은 반드시 PK, UNIQUE 제약조건이 설정되어 있어야 함
CREATE TABLE 테이블이름
(
    필드이름 필드타입,
    ...
		FOREIGN KEY(필드이름)
    REFERENCES 테이블이름(필드이름)
);
  • 외래키는 두개의 테이블을 연결하는 다리 역할을 해주는 키

'개발일지' 카테고리의 다른 글

2023-11-02, Today I Learned  (1) 2023.11.02
2023-11-01, Today I Learned  (1) 2023.11.01
2023-10-30 Today I Learned  (1) 2023.10.30
2023-10-25, Today I Learned  (0) 2023.10.27
2023-10-23 Today I learned  (0) 2023.10.23