개발 기록
처음 시작하는 SQL 프로그래밍 본문
코드프레소 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;
- Customers 테이블의 cust_id, cust_name 데이터 조회
데이터 조회 - 전체 컬럼 조회
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;
- Customers 테이블에서 cust_state가 ‘MI’인 데이터 조회
비교 연산자( Comparison Operator )를 이용한 데이터 필터링
- 비교 연산자 종류
- 같음: =
- 같지 않음: <>
- 큼: >
- 작음: <
- 크거나 같음: >=
- 작거나 같음: <=
- 예제
- Customers 테이블에서 cust_state가 ‘MI’이 아닌 데이터 조회
SELECT * FROM Customers WHERE cust_state <> 'MI';
- Orders 테이블에서 order_num이 20007보다 큰 데이터를 조회
SELECT * FROM Orders WHERE order_name > 20007;
- Customers 테이블에서 cust_state가 ‘MI’이 아닌 데이터 조회
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';
'코드프레소' 카테고리의 다른 글
처음 시작하는 SQL 프로그래밍 -2 (0) | 2022.03.19 |
---|---|
Spring Boot를 활용한 웹 개발 초급 (0) | 2022.03.14 |
클라우드 컴퓨팅 첫 걸음 (0) | 2022.03.14 |
Spring Boot 웹 개발 입문 (0) | 2022.02.15 |
SW 유지보수성 향상을 위한 Clean Code (0) | 2022.02.15 |
Comments