개발 기록

처음 시작하는 SQL 프로그래밍 본문

코드프레소

처음 시작하는 SQL 프로그래밍

수염차 2022. 2. 22. 10:21

코드프레소 Java 웹 개발 체험단 활동 중

처음 시작하는 SQL 프로그래밍 강좌를 기반으로 작성하였습니다.

코드프레소 URL: https://www.codepresso.kr/


[ MySQL 소개 ]

1. 데이터베이스 소개

데이터베이스란 무엇인가?

여러 사람이 공유하여 사용할 목적으로, 통합하여 관리되는 데이터의 집합을 의미한다.

  • 데이터는 다양한 방법으로 관리할 수 있다. (파일, 엑셀 등)
  • 자료 항목의 중복을 없애고 자료를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을 높인다.
  • 단순 파일로 데이터를 관리하는 것이 서류더미라면 데이터베이스는 잘 정리된 캐비닛이라고 할 수 있다.

 

DBMS (Database Management System)

데이터베이스를 관리하기 위한 프로그램을 의미한다.

MySQL, Oracle, PostgreSQL 등 다양한 종류가 있는데, 앞으로 MySQL을 이용하여 실습을 진행할 것이다!

 

2. SQL (Structured Query Language) 소개

데이터베이스에 데이터를 요청하는 언어로, 인간과 데이터베이스 간의 언어이다.

  • SQL은 문법이 단순하며 배우기 쉽다.
  • 각 DBMS마다 자기만의 방언을 가지지만 핵심 문법은 유사하다.

 

3. MySQL 소개

MySQL은 오픈 소스 RDBMS로, 가장 많이 사용되는 DBMS 중 하나이다.


[ SQL 명령어를 이용한 데이터 정의 ]

1. 데이터베이스의 구성요소

데이터베이스의 주요 구성요소

  • Schema - application마다 1개
  • Table - 각 application의 세부 기능마다 정의
  • Column - 각 기능에 필요한 요소들
  • Row - 데이터 1건 (Record)

 

2. MySQL의 데이터 타입

데이터 타입이란 컬럼에 어떠한 형태의 자료를 저장할지를 미리 결정하는 것이다.

  • 숫자(Numeric): 정수형, 실수형
    • Ex) 나이, 점수, 가격, unique id 등
  • 문자(Character): 고정 문자형, 변동 문자형
    • Ex) 이름, 성별, 상품명 등
  • 날짜/시간(Date/Time): 날짜형, 시간형, 날짜시간형
    • 저장하는 시점의 날짜 시간, 수정하는 시점의 날짜 시간 등

 

3. 데이터베이스 생성

Schema 생성

테이블 생성 전 Schema 생성이 선행되어야 한다.

workbench에서 Schema 생성 실습

  • Create new schema → schema 이름 및 문자셋 관련 설정
  • basic schema 생성

 

Table 생성

CREATE TABLE table_name (
	column_name1 data_type1 options,
	column_name2 data_type2 options,
	...
);
  • 테이블 생성 options 정보
    • PK: 테이블 당 1개만 존재 가능, Unique한 값(Not Null 필수)
    • NN: Not Null, 데이터가 반드시 저장되어야 한다.
    • UQ: Unique한 값 (Null 가능)
    • UN: Unsigned
    • AI: Auto Increment
    • Default: 디폴트 값

 

4. INSERT INTO를 이용한 데이터 추가

기존 테이블에 새로운 row를 추가한다.

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)

만약 모든 컬럼에 데이터를 모두 넣고 싶을 때에는 다음과 같이 컬럼을 명시하지 않아도 된다.

INSERT INTO table_name
VALUES (value1, value2, ...)

[ SQL 명령어를 이용한 데이터 조회 ]

1. SELECT 명령어를 이용한 데이터 조회

데이터 조회

SELECT 문을 사용하여 테이블의 데이터를 조회할 수 있다.

SELECT column1, column2, ...
FROM table_name;
  • column1, column2, ...에는 조회를 원하는 컬럼명을 기재한다.
  • 예제
    • Customers 테이블의 cust_id, cust_name 데이터 조회
      SELECT cust_id, cust_name
      FROM Customers;
    • Vendors 테이블의 vend_id, vend_address, vend_state 데이터 조회
      SELECT vend_id, vend_address, vend_state
      FROM Vendors;

 

데이터 조회 - 전체 컬럼 조회

SELECT 절에 Asterisk (*)를 사용하여 전체 컬럼을 조회할 수 있다.

SELECT *
FROM table_name;
  • 예제
SELECT *
FROM Customers;

 

2. 데이터 필터링

WHERE 절을 이용한 데이터 필터링

where 절 다음에 원하는 조건을 명시하여 원하는 조건으로 데이터(Row)를 필터링할 수 있다.

SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • where 절은 select 문 외에 update, delete 문에서도 사용할 수 있다.
  • 예제
    • Customers 테이블에서 cust_state가 ‘MI’인 데이터 조회
      SELECT *
      FROM Customers
      WHERE cust_state = 'MI';
    • Orders 테이블에서 order_num이 20005인 데이터를 조회
      SELECT *
      FROM Orders
      WHERE order_name = 20005;

 

비교 연산자( Comparison Operator )를 이용한 데이터 필터링

  • 비교 연산자 종류
    • 같음: =
    • 같지 않음: <>
    • 큼: >
    • 작음: <
    • 크거나 같음: >=
    • 작거나 같음: <=
  • 예제
    • Customers 테이블에서 cust_state가 ‘MI’이 아닌 데이터 조회
      SELECT *
      FROM Customers
      WHERE cust_state <> 'MI';
    • Orders 테이블에서 order_num이 20007보다 큰 데이터를 조회
      SELECT *
      FROM Orders
      WHERE order_name > 20007;

AND 연산자를 이용한 데이터 필터링

주어진 모든 조건들을 다 만족시키는 데이터를 조회한다.

SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

예제

  • 이름이 Fun4All이면서 IN 주에 거주하는 고객 조회
SELECT *
FROM Customers
WHERE cust_name = 'Fun4All' AND cust_state = 'IN';
  • 미국에 뉴욕주에 있는 벤더 조회
SELECT *
FROM Vendors
WHERE vend_count = 'USA' AND vend_state = 'NY';

 

OR 연산자를 이용한 데이터 필터링

주어진 조건 중 하나라도 만족시키는 데이터를 조회한다.

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

예제

  • MI 주에 거주하거나 OH주에 거주하는 고객 조회
SELECT *
FROM shop.Customers
WHERE cust_state = 'MI' OR cust_state = 'OH';
  • 미국에 있거나 프랑스에 있는 벤더 조회
SELECT *
FROM shop.Vendors
WHERE vend_country = 'USA' OR vend_country = 'France';
Comments