[TLI] DB - MySQL[1편]

이재훈·2020년 10월 24일
0

What I Learend Today :)

  🌱  SQL 정의
  🌱  SQL 명령어 및 문법 

Data Base를 배우기 전에는 Server에 in-memory상에 저장하고, 클라이언트의 HTTP로 요청이 들어왔을 때, 서버에서 응답을 해줬었다. in-memory는 서버가 돌아가고 있을 때만 유효한 값이므로 서버가 꺼지면 임시저장되었던 자료들도 같이 사라졌었다.
그래서 영속성 혹은 지속가능한(persistent) 저장공간과 프로그램이 필요하게 되었고, 이에 database 관리 시스템인 MySQL등 여러 소프트웨어들이 등장하기 시작하였다.

MySQL

  "MySQL은 전세계에서 가장 많이 쓰이는 오픈 소스의 관계형 데이터베이스 관리 시스템이다. 다중 스레드, 다중 사용자 형식의 구조질의어 형식의 데이터베이스 관리 시스템으로서 오라클이 관리 및 지원하고 있다." -위키백과-

 

SQL

SQL 정의

  SQL은 DB 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다. 관계형 데이터베이스 관리 데이터베이스 관리 시스템에서 자료의 검색과 관리, 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었다. -위키백과-

  SQL은 Structure Query Language의 줄임말로, 말그대로 구조화 된 Query언어이다.

그렇다면 'Qeury'는 무엇을 말하는 것일까?

Query를 직역하면 질문, 질의문이다. 우리가 네*버 검색창에 검색어를 입력하는 것을 생각하면 이해하기 쉽다.

그러면 Query언어를 왜 사용하는 것일까?

사실 데이터베이스 외에 in-memory 저장방식이 있고, 또 File I/O의 방식도 있다.
하지만 이 둘은 저장된 자료들을 관리하기에는 데이터베이스보다 비효율적인 단점을 가지고 있다. 아래에서 살펴보자.

  • in-memory : 앞서 상단에서 언급했듯이, 서버를 종료하는 순간 In-memory에 저장된 자료들과도 이별을 해야한다.
  • File I/O : in-memory와는 달리 저장 자료의 지속성은 있지만, 원하는 데이터만 가져올 수 없고, 항상 모든 데이터를 가져온 뒤 서버에서 필터링을 해야하는데, for loop을 돌려 원하는 값을 걸리는데, 이는 과부하가 걸릴 가능성이 높다.

하지만 Database는 지속성이 있으며, 자료를 가져오기 전에 원하는 검색(필터, 쿼리)으로 원하는 데이터만 쏙 빼올 수 있다. 이 외에도 File I/O로 구현이 힘든 관리를 위한 여러 기능들을 가지고 있는 데이터에 특화된 서버라고 한다.

정리를 하면 검색 = 필터링 = 쿼리라고 표현할 수 있다.

즉, SQL은 데이터베이스에서 데이터를 저장, 조작 및 검색하기 위한 표준 언어이고 더 쉽게 말하면 구조화 된 쿼리문이다. 좀 더 쉽게 말하면 필터링하기 최적화된 엑셀이다!

자, 그럼 쿼리(Query)를 이용해서 원하는 데이터를 가져오려면 아래와 같은 문법이 필요하다.
살펴보도록 하자.

SQL 명령어 및 문법

  부트캠프에서는 새로운 언어를 배우게 될 것이라 언급해 역서 개발 공부는 무궁무진하고 끝이 없는 영역이구나라는 생각과 함께 걱정이 먼저 앞섰다.
하지만 SQL의 문법은 그렇게 거부감이 있지는 않았다.

  • entities: DB 내 자료들의 단위
  • schema: 데이터베이스에 있어서 목업 혹은 청사진, data의 관계를 보여준다.
  • table: 관련된 정보들이 담긴 하나의 묶음 ex) USER 테이블에 user_name, age 등의 정보 보유
  • foreign key: 외래키라고 불리며 절대 변경되지 않는 값으로, 테이블끼리 연결시키는 역할을 함
  • alias: 테이블이나 테이블 내 column에 임시 이름으로 변경하기 위해 사용됨
  • sub-query: query문 안의 또 다른 query문(WHERE 절 안에 위치함)

내가 배워야 할 기본적인 문법은 아래와 같이 작성을 하면 된다.


여기서 알아야할 점은 쿼리 명령어는 대,소문자를 가리지 않는다라는 것이다.
즉, SELECTselect는 동일하다.
하지만 가독성을 위해 명령어를 대문자로 작성해주는 것이 올바를 것 같다.

그리고 세미콜론(;) 반드시 찍어주기!!!!

다음 사진은,
위의 코드를 작성하면 원하는 쿼리를 아래 사진과 같이 데이터베이스로 날리는 구조이다.

사진 출처: codestates

아래 명령어만 익혀도 정상적인 문법을 활용한다면 쿼리를 정상적으로 날릴 수 있다.

  • CREATE DATABASE - 새 데이터베이스 생성
  • ALTER DATABASE - 데이터베이스 수정
  • SELECT - 데이터 베이스에서 데이터 추출
  • INSERT INTO - 데이터베이스에 새로운 데이터를 삽입
  • UPDATE - 데이터베이스의 데이터를 업데이트
  • DELETE - 데이터베이스에서 데이터를 삭제 (DROP과 헷갈리지 말기.)
  • DROP DATABASE - 데이터베이스 삭제
  • CREATE TABLE - 새 테이블 생성
  • ALTER TABLE - 테이블 수정
  • DROP TABLE - 테이블 삭제
  • Inner Join : 교집합, 두 테이블에서 값이 일치하는 값을 반환, inner는 생략 가능 (이 명령어 외 다른 조인들은 Outer Join이다.)
  • Left Join : "왼쪽" 테이블의 "모든" 값과 오른쪽 테이블의 일치하는 레코드를 반환

사진 출처: w3schools

이 외, 아래와 같이 명령어들이 있다.

  • Where
  • And, Or, Not
  • Order By
  • Aliases
  • Group By

아래 주소를 참고해 적용해나가면서 공부해보고
위의 문법과 명령어와 관련된 퀴즈들은 https://www.w3schools.com/sql/default.asp에서 공부하면서 내 것으로 만들어보자!!!!

profile
코딩에서 인생을 배우다.

0개의 댓글

관련 채용 정보