부스트코스 - 백엔드 강의 정리

DaewoongJeon·2021년 1월 9일
0

1. MySQL

1) 데이터베이스의 기본 개념

  • 데이터의 집합
  • 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터의 집합
  • 효율적으로 저장, 검색, 갱신할 수 있도록 데이터 집합들끼리 연관시키고 조직화되어야 한다.

2) 데이터베이스 관리 시스템(DBMS)

  • 데이터베이스를 관리하는 소프트웨어
  • 여러 응용 소프트웨어 또는 시스템이 동시에 데이터베이스에 접근하여 사용할 수 있게 한다.
  • 필수 3기능
    - 정의기능 : 데이터베이스의 논리적, 물리적 구조를 정의
    - 조작기능 : 데이터를 검색, 삭제, 갱신, 삽입, 삭제하는 기능
    - 제어기능 : 데이터베이스의 내용 정확성과 안전성을 유지하도록 제어하는 기능

3) SQL(Structured Query Language)

  • SQL은 데이터를 보다 쉽게 검색하고 추가, 삭제, 수정 같은 조작을 할 수 있도록 고안된 컴퓨터언어이다.
  • 관계형 데이터베이스에서 데이터를 조작하고 쿼리하는 표준 수단이다.
  • 구분
    - DML(Data Manipulation Language) : 데이터를 조작하기 위해 사용하는 언어(INSERT, UPDATE, DELETE, SELECT 등)
    - DDL(Data Definition Language) : 데이터베이스의 스키마를 정의하거나 조작하기 위해 사용하는 언어(CREATE, DROP, ALTER 등)
    - DCL(Data Control Language) : 데이터를 제어하는 언어(GRANT, REVOKE 등)

a. DML

  1. SELECT(검색)
  • SELECT(DISTINCT) (Column name(ALIAS)) FROM (Table name)
    - select : 검색하고자 하는 데이터(column)를 나열 한다.
    - distinct : 값이 중복되는 행을 제거
    - alias : 나타날 column에 대한 별칭 부여(별칭 부여 시, column name 뒤에 공백으로 구분하여 별칭을 추가한다.)
    - , 로 여러 개의 column 선택 가능
    - select 뒤에 함수가 들어올 수도 있음(ex. concat(empno. '-',deptno) as '사번-부서번호' : empno에 '-'와 deptno를 붙여서 '사번-부서번호'로 출력해라)
    - 정렬하고 싶을 때, 쿼리의 맨 마지막에 drder by (column name)(desc))을 추가한다. (desc : 내림차순, column name 대신 몇 번째 column을 표현할 것인지의 숫자를 입력해도 됨)
    - where : 조건을 추가하여 표현할 수 있음(ex. WHERE title = 'staff' title이 staff인 필드만 표현, WHERE salary BETWEEN 1000 AND 2000) 일반적으로 row을 결정하는 조건문
    - where deptno in (10, 30) : deptno가 10이거나 30만(or연산), and 연산은 and그대로를 붙여주면 됨.
    - LIKE (wildcard : %(0부터 여러 개의 문자열을 나타냄), _(단 하나의 문자를 나타냄)) : wildcard를 사용하여 특정 문자를 포함한 값에 대한 조건 처리 (ex. where name like '%A%'; : 'A'가 포함된 사원이름, '$A' : 이름이 A로 끝나는 경우)
    - 다양한 함수 모음(upper, upcase : 대문자 전환, lower, lowcase : 소문자 전환, substring('Happy day', 3, 2); : 해당 문자열의 3번째 문자부터 2개 문자를 뽑아 내라, LPAD('hi', 5, '?'); : 문자 갯수가 5개가 되도록 앞에 ?를 채워라. L이 아닌 R일 경우 뒤에 채움, LTRIM : 왼쪽의 공백을 없애라. R일 경우 반대, TRIM(BOTH 'x' FROM 'xxxhixxx'); = 'hi')




2. insert

  • insert into (table name(field 1, field 2, ...)) (value1, value2, ...)
    - 데이터 타입을 맞춰줘야함.
    - 모든 column에 데이터가 들어갈 때, insert into ROLE values(value1, value2, ...);
    - Column의 key가 pri일 경우, null이 들어갈 수 없음.
  1. update
  • update (table name) set (field1=value1, field2=value2, ...) where (condition)
  • insert는 추가의 의미, update는 수정의 의미
  1. delete
  • delete from (table name) where (condition)

b. DDL

  1. 데이터 타입
  2. 테이블 생성
  3. 테이블 수정


  4. 테이블 삭제
  • 테이블이 삭제가 안되는 경우 : 다른 테이블에 의해 참조되고 있는 테이블일 경우(참조하고 있는 테이블을 먼저 삭제한 후에 삭제해야한다.)(Foreign Key)

4) MySQL 접속 방법

  • MySQL 접속 : mysql -uroot -p (root계정으로 접속, pw는 없음)
  • Database 생성 : mysql프롬프트에서 create database connectdb; connectdb 데이터베이스 생성
  • Database 권한 부여 : grant all privileges on dbconnect.* to root@'%' identified by '123'; (모든 클라이언트(%)에서 접속한 root계정에 dbconnect 데이터베이스에 대한 모든 권한(*)을 부여함. 비밀번호 : 123) 권한 부여 후, flush privileges;로 마무리
  • 생성한 Database에 접속 : mysql -h127.0.0.1 -uconnectuser -p connectdb (localhost(127.0.0.1)에서 connectuser로 connectdb 데이터베이스에 접속) 그 후, pw입력.

5) 테이블(table)

a. 테이블 구성요소

  • 테이블 : RDBMS의 기본 저장구조, 한 개 이상의 column과 0개 이상의 row로 구성
  • Column : 테이블 상에서 단일 종류의 데이터를 나타냄. 특정 데이터 타입 및 크기를 가지고 있음
  • Row : Column값의 조합. 레코드라고 불린다. 기본키(PK)에 의해 구분된다. 기본키는 중복을 허용하지 않으며 없어서는 안된다.
  • Field : Row와 Column의 교차점으로 Field는 데이터를 포함할 수 있고, 없을 때는 null값을 가진다.

b. 테이블 불러오기

  1. example.sql 다운로드 (https://www.boostcourse.org/downloadFile/fileDownload?attachmentId=304830&autoCloshttps://www.boostcourse.org/downloadFile/fileDownload?attachmentId=304830&autoClose=truee=true)
  2. example.sql이 있는 디렉토리로 이동한 후, mysql -uconnectuser -p connectdb < examples.sql 입력 (examples.sql에는 연습을 위해 테이블 생성문과 해당 테이블에 값을 저장하는 입력문이 존재함, 해당 명령문을 통해 테이블이 생성됨)
  • show tables; : 로그인한 계정으로 생성한 테이블 목록 출력
  • desc (table name) : table의 구성을 볼 수 있음. (table이 그대로 나타나는게 아닌 table의 column이 어떻게 구성되어 있는지 표현)

0개의 댓글