[SeSAC X 코딩온] 웹개발자 풀스택 과정 7주차 회고 (1) | 데이터 베이스 (DDL, DML)

옹잉·2024년 2월 5일
0

💡 2/5 데이터 베이스 (DDL, DML)


📍 데이터 베이스


RDBMS(DB에 관계가 추가된 것)인 MySQL을 이용해서 데이터 베이스에 대해 학습했다.
DB에 대해 파일 시스템(ex. Excel)의 단점과 비교해서 왜 DB를 사용하는 지 설명해 주셨다.

"파일 시스템"은 데이터 중복이 생길 수 있고, 데이터 공유에 제한이 있고, 데이터 중복이나 불일치가 발생할 수 있고, 구현과 유지보수에 시간이 오래걸린다는 단점이 있다. 이를 보완하기 위해 "데이터 베이스"가 등장했다.

DB 용어

  • DB 구조
    • 열 : Column, Attribute, 속성
    • 행 : Record, Tuple, 튜플
    • 테이블 : Table, Relation
  • Key
    • 기본키 (PK, Primary Key)
      • 메인 key로 특정 튜플(행)을 유일하게 구별할 수 있는 속성
      • NULL 값, 중복 값 불가
    • 외래키 (FK, Foreign Key)
      • 어떤 테이블의 기본키를 참조하는 속성(연결)

📍 SQL

◾ 데이터 타입

숫자형

타입바이트 수범위설명
TINYINT1-128 ~ 127정수
SAMLLINT2-32768 ~ 32767정수
INT4약 -21억 ~ 21억정수
BIGINT8약 -900경 ~ 900경정수
FLOAT4-3.40E+38 ~ -1.17E-38소수점아래 7자리까지 표현

문자형

타입바이트 수설명
CHAR(N)1 ~ 255고정길이 문자형, n을 1부터 255까지 지정
VARCHAR(N)1 ~ 65535가변길이 문자형, n을 1부터 65535까지 지정
TEXT1 ~ 6553565535 크기의 TEXT 데이터 값
MEDIUMTEXT1 ~ 1677721516777215 크기의 TEXT 데이터 값

날짜형

타입바이트 수설명
DATE3날짜 저장(YYYY-MM-DD)
TIME3시간 저장(HH:MM:SS)
DATETIME8날짜, 시간 저장(YYYY-MM-DD HH:MM:SS)

기타 명령어

SHOW DATABASES; -- DB 조회
USE [DB명]; -- 사용 할 DB 선언
SHOW TABLES; -- TABLE 조회
DESC [TABLE]; -- TABLE 상세 조회 (속성까지)

◾ 데이터베이스 구축 단계


◾ 데이터 정의어 (DDL, Data Definition Language)

✔ CREATE, ALTER, DROP

  1. CREATE
  • 데이터베이스 생성
-- 한글 인코딩 (utf8)
	CREATE DATABASE mydatabase CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

-- 한글 인코딩(utf8mb4 : *이모지*까지 저장 가능)
	CREATE DATABASE mydatabase CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci; 
  • 테이블 생성
    /* 
        CREATE TABLE products(
            속성1 자료형 제약조건,
            속성2 자료형 제약조건
        );

        -- 제약조건
            - NOT NULL : NULL 허용 X
            - AUTO_INCREMENT : 자동 숫자 증가
            - PRIMARY KEY : 기본키 설정 (중복, NULL값 허용 안함)
            - DEFAULT : 기본 값 설정
            - UNIQUE : 중복 허용 안함 (NULL은 허용), 한 테이블에 여러개 가능
     */

    CREATE TABLE products (
        -> id int not null auto_increment primary key,
        -> name varchar(50) not null,
        -> model_number varchar(15) not null,
        -> series varchar(30) not null
        -> );
  1. ALTER
    생성된 테이블의 속성과 제약조건 및 기본키, 외래키 변경
    ALTER TABLE [TABLE] ADD [속성명] [데이터 타입]; -- 속성 새로 추가
    ALTER TABLE [TABLE] DROP (COLUMN) [속성명]; -- 기존 속성 삭제
    ALTER TABLE [TABLE] MODIFY [속성명] [데이터 타입] -- 기존 속성 수정
  1. DROP
    생성된 테이블 삭제 (테이블 구조 + 데이터 전부 삭제)
	DROP TABLE [TABLE];

참고) DROP vs. TRUNCATE

	DROP TABLE [TABLE]; -- 테이블 삭제
    TRUNCATE TABLE [TABLE]; -- 테이블 초기화 (테이블 구조는 남음)

◾ 데이터 조작어 (DML, Data Manipuation Language)

✔ SELECT, INSERT, UPDATE, DELETE (CRUD)

데이터베이스의 내부 데이터를 관리하기 위한 언어

쿼리 키워드 작성 순서

SELECT >> FROM >> WHERE >> GROUP BY >> HAVING >> ORDER BY >> LIMIT

  1. ⭐ SELECT
    데이터 검색(조회) - 가장 많이 사용된다
	-- SELECT 속성,... FROM [TABLE명] [WHERE 조건];
    SELECT * FROM user WHERE id=1;

[ WHERE 조건 ]

  • 연산자
연산자 타입종류
비교 연산자=, >, >=, <, <=
부정 연산자!=, ^=, <>, NOT [COL명]=
논리 연산자AND, OR, NOT
  • 범위, 집합, 패턴, NULL
	-- BETWEEN A AND B : A와 B의 사이값 조회 (A, B 포함)
	SELECT * FROM user where age BETWEEN 25 and 30;

    -- IN(리스트) : 리스트의 요소와 일치하면 참
	SELECT * FROM user WHERE age IN (20, 21, 22, 23);

    -- LIKE : 문자열 패턴 조회 (WHERE와 함께 쓰임)
    -- '서울로 시작하는 주소 찾기'
	SELECT * FROM user WHERE address LIKE '서울%';
    -- 주소에 '광역시'가 들어가는 사람
	SELECT * FROM user WHERE address LIKE '%광역시%';

    -- IS NULL / IS NOT NULL
	SELECT * FROM user WHERE address is null;
	SELECT name, address FROM user WHERE address is NOT NULL;

와일드 문자

와일드 문자의미예시
%정해지지 않은 길이 나타냄'%서울%' : 서울을 포함하는 문자열
_특정 위치의 1개 문자'_민%' : 두 번째 글자가 '민'인 문자열
  • ORDER BY
    정렬, WHERE절과 함께 사용
    • ASC(Ascending) : 오름차순 (defualt, 생략 가능)
    • DESC(Descending) : 내림차순
	SELECT * FROM user ORDER BY age ASC;
	SELECT * FROM user WHERE id > 6 ORDER BY age DESC;
  • DISTINCT : 중복 제거
	SELECT DISTINCT age FROM user;
  • LIMIT : 출력 개수 제한
	SELECT * FROM user LIMIT 3;
	SELECT * FROM user WHERE address LIKE '서울%' LIMIT 2;
  1. INSERT
    새로운 데이터 추가
	-- INSERT INTO [TABLE명] (필드1, 필드2,...,필드n) VALUES (값1, 값2, ..., 값n);
    INSERT INTO user (name, age, address) VALUES('김민정',20,'서울특별시 마포구');
  1. UPDATE
    기존 데이터 수정
	-- UPDATE [TABLE명] SET 필드1 = 값1(바꿀 데이터) WHERE 조건(target);
    UPDATE user SET name="김민지" WHERE id=1;
  1. DELETE
    기존 데이터 삭제
	-- DELETE FROM [TABLE명] WHERE 조건;
    DELETE FROM user WHERE id=1;
    DELETE FROM user; -- 테이블 전체 삭제
profile
틀리더라도 🌸🌈🌷예쁘게 지적해주세요💕❣️

0개의 댓글