2025-04-09 [16일차] - (SQL PART)

dong_c·2025년 4월 9일
post-thumbnail

[ 수업 정리 및 보강 ]

=============================================================

DBMS [데이터 베이스 관리 시스템] - part

=============================================================

데이터란? - 정보,통계, .... 등**

너무 다양하기에 표현하기 어려우나 간단하게 말하면 '자료'다
-> 어떤 정보의 근거가 되는 자료

=============================================================

데이터 베이스(DATABASE)란?

데이터들의 저장소

=============================================================

DBMS란? -

데이터 베이스 관리 시스템(Datebase Management System) 
데이터베이스를 관리하는 시스템

+) 기존에 쓰던 파일시스템 구조에 반대되는 성향을 가지고 있으며
[사용자] 는 데이터베이스의 구조를 정의하고 계정을 만들고,
성능을 모니터링하며 백업/복구 등을 조작할 수 있고
[DB_관리자]는 사용자의 권한을 제어하는 등 다양한 관리시스템을 제공한다

=============================================================

DB의 종류

Oracle - 유료, 기본용량이 크다, 규모가 큰 프로젝트에 적합

MySQL - 무료, 기본용량이 작다(상대적인 작음) , 규모가 작은 프로젝트에 적합

PostgreSQL - 현재 많이 떠오르는 중, 공간 정보 데이터의 처리

=============================================================

**DB 공부시 알아야 할점? / SQL의 장점

  • DB는 많은 종류를 가지고 있고 그 많은 종류를 실제로 써야 하는데
    DBMS라는 시스템이 각 DB마다 따로 있다

  • 다만 시스템을 다루는 방법이 SQL을 기반으로 하기 때문에
    매번 새로 배울 필요는 x -> DVMS마다 SQL이 다른데 새로 배울 필요가 없는 이유?
    -> DBMS마다 다른 SQL을 제외하고 나머지는 전부 다 동일한 SQL(표준 SQL)을 따른다

=============================================================

DBMS의 유형

  • 분산형(Distributed),
    계층형 (HDBMS, Hierarchical) ,
    망형 (NDBMS, Network) ,
    네트워크형,
    관계형 (RDBMS, Relation)

링크텍스트 참고

그 중에 관계형 데이터베이스(RDBMS) 공부해야함
why? -> 웹과 밀접한 데이터베이스기에

RDBMS 개념

  • 관계형 데이터베이스 관리 시스템(RDBMS)은 가장 보편화되어있고,
    관계를 가지고 데이터를 저장, 관리 및 검색할 수 있다.
    질의어를 통해(query language) 편리하게 사용할 수 있고,
    데이터의 무결성/트랜잭션 처리등으로 기본적으로 안정적이지만 확장하기가 까다롭고,
    최근에 요구되는 비정형 데이터를 수용하기가 어렵다

관계형 데이터베이스(RDBMS) 사용방식
표의 형태(행과 열로 이루어딘 자료)
관계형 데이터베이스와 엑셀은 기본 구조방식이 유사함 & 호환도 됨

=============================================================

알쓸신잡 짜투리 지식]

mysqlyog 구성요소

host address - 내가 접속할 db 서버 주소

나 자신에게 접속
나 자신 - localhost = 127.0.0.1
(컴퓨터의 ip주소를 의미)

사용자 이름 (root - 고정)

root : 개발환경에서 최상위 의미
(모든 권한을 다 가짐) -> 그래서 위험하지만 일단 지금은 괜찮다
각자의 db 가지고 있기 때문에 + SQL 배우는 단계(실무가 아님)

포트 : 내가 설정한 포트(바뀌면 바꿔준다)

  • DB DBMS DB서버/ 클라이언트 (DB 서버에 접속하는것)
    필요한 상황이 각각 다름

=============================================================

서버와 클라이언트의 개념

[서버]

  • 서비스를 제공하는 쪽 ( 정보를 가지고 있다 )

[클라이언트]

  • 서비스를 요청하는 쪽 ( 정보를 받으러 요청한다)

-개발환경에서의 서버와 클라이언트

이분 꺼 참고

SQL 종류

DDL, DML, DCL, TCL

  • DDL : 데이터 정의 언어
    데이터 베이스 구조에 대한 명령(데이터 틀 만들기)
    ex)db 생성, 테이블 생성, db 삭제, 테이블 삭제
  • DML : 데이터 조작 언어 (CRUD - 입력.조회)
    실제로 데이터를 조작하는 명령
    ex) 데이터 추가, 수정, 삭제, 조회
  • DCL : 데이터 제어 언어 (사용자의 접근을 제어)
    ex) 계정관리, 권한 관리 등

  • TCL : 트랜잭션 제어 언어
    작업단위를 묶고 처리하는 명령(과정)

=============================================================

적어내는 명령어의 구문(쿼리)

쿼리란?
DB용 언어를 SQL이라고 하는데, query는 DB에서 원하는 조건에 맞는
데이터를 조작할 수 있는 SQL 문장의 집합을 말하며, 질의문이라 한다.

=============================================================

스키마란?

테이블을 만들기 위해서 필요한 구조나 제약사항을 명시한 것
  • SQL 스키마
CREATE TABLE member (
    id INT NOT NULL,
    name VARCHAR(50) NOT NULL
);

=============================================================

SQL 기초문법& 지켜야 할 사항

  • article 라는 테이블을 만든다고 가정할 때
    sql 테이블 생성 필수요소
    최소 한 개 이상의 컬럼(열 하나)이 무조건 있어야함
    컬럼이 있으면 그 컬럼의 데이터 타입도 무조건 명시되어야 한다
    또한 컬럼들이 가져야할 제약사항 있으면 좋음

SQL 자주 쓰는 데이터 타입

  • INT (숫자)

  • VARCHAR (문자/사이즈 지정해줘야 함)

    tips - VARCHAR(n) 과 CHAR(n) 의 차이
    CHAR는 CHAR(20)으로 적용하면 2btye만 적었어도 20byte를 모두 사용.
    VARCHAR VARCHAR(20)으로 적용하고 2byte 사용 시 2byte만 사용

  • TEXT (문잔데 큰거)

  • DATETIME (날짜)

=============================================================

SQL 기초 문법

SQL 강의영상 2

참고

  • MYSQL 명령어
    SHOW - DB,테이블을 보는 명령어
    CREATE - DB,테이블을 만드는 명령어
    SELECT - 데이터를 보는 명령어
    INSERT - 레코드를 삽입하는 명령어
    UPDATE - 데이터를 수정하는 명령어
    DELETE - 레코드를 삭제하는 명령어
    DROP - DB, 테이블을 삭제하는 명령어
    ALTER - 각종정보를 수정하는 명령어

=============================================================

테이블 작성 방법

	CREATE TABLE article (
    id INT
    , regDate DATETIME
    , title VARCHAR(100)
    , content TEXT    
)
  • 위처럼 create table 테이블명
    (만들고자 하는 컬럼 + 데이터 타입 ) ; 식으로 작성

=============================================================

테이블 작성 후 데이터 추가 방식

  • 방식1
INSERT INTO article
    SET id = 1
    , regDate = NOW()    
    , title = '제목1'
    , content = '내용1';
  • 방식 2
INSERT INTO  article(
    id
   , regDate
   , title
   , content

) VALUE (
    
    2
    , NOW()
    , '제목 2'
    , '내용 2'

)
  • 방식2 > 위처럼 다 넣어도 되지만
    굳이 컬럼과 데이터를 다 안 넣어도 ok
    그러나 value (윗방향) 바꾸고자 하는 데이터의 컬럼 /
    (아랫방향) 바꾸고자 하는 컬럼의 데이터 순서는
    맞춰줘야 함

  • 방식3
   INSERT INTO article VALUE (
        3
        , NOW()
        , '제목3'
        , '내용3'
   );
  • 방식3 > 바꾸고자 하는 데이터의 컬럼들을
    방식 1처럼 굳이 명시 안해도 ok
    그렇지만 컬럼들을 명시 안했기 때문에
    컬럼들의 데이터를 하나라도 뺴면 안됨
    위의 스키마에서 하나라도
    빠지면 에러 뜸
    why? > 컬럼들 명시 안했기에

  • 데이터 수정
UPDATE 데이터명 
    SET 컬럼 번호 등등 = 바꿀 조건 
    WHERE 컬럼 = 조건에 대한 내용(어디에 바꿀건데)

ex)

 UPDATE article 
    SET id = 6 
    WHERE id = 4;

--> id 6번 수정할래 id 4번인데로!


  • 데이터 삭제
DELETE FROM 테이블명;
  • 테이블 안에 있는 내용 다 사라짐
    BUT 테이블 내용 새로 만들면 id(primary key)가
    기억된채로 이어짐. (id -5 -> 삭제 .. 새로 만들시 id = 6...)

  • primary key : 행을 서로 구분하기 위해 만든 컬럼


그렇기에 이렇게 기억하게 하지 않으려면

TRUNCATE article;

-> 기억 없이 삭제

TRUNCATE 테이블명 입력하고 새로 입력시
id는 이어지지 않는다


SQL 기초문법을 응용한 문제 풀기

문제1
문제2
문제3

profile
코딩초보

0개의 댓글