3주 1일차
2023-07-13
오늘날의 데이터 중심 세상에서 방대한 양의 정보를 효율적으로 관리하고 구성하는 것은 기업과 조직에 매우 중요합니다. 이 블로그 게시물은 DBMS(데이터베이스 관리 시스템)에 대한 간략한 개요를 제공하고 가장 널리 사용되는 관계형 데이터베이스 관리 시스템 중 하나인 MySQL을 소개합니다. 이러한 개념을 이해하는 것은 데이터 관리 분야에 관심이 있는 모든 사람에게 기본입니다.
DBMS란
Database Management System의 약자로, 데이터베이스를 쉽게 관리할 수 있게 해주는 소프트웨어 도구입니다.
DBMS는 효율적이고 쉽게 액세스할 수 있는 방식으로 대량의 데이터를 저장하고 조직하는 데 사용됩니다.
다양한 DBMS가 있으며, 각 DBMS마다 고유한 강점과 약점이 있습니다.
가장 인기 있는 DBMS 중 일부는 MySQL, PostgreSQL, Oracle, Microsoft SQL Server입니다.
DBMS 구성요소
데이터 정의 언어(DDL) | DDL은 테이블, 관계 및 제약 조건을 포함하여 데이터베이스의 구조와 스키마를 정의하는 데 사용됩니다. | ||||||||
데이터 조작 언어(DML): | DML을 사용하면 레코드 삽입, 업데이트 및 삭제와 같은 작업을 수행하여 데이터와 상호 작용할 수 있습니다. | ||||||||
데이터 쿼리 언어(DQL) | DQL을 사용하면 일반적으로 구조적 쿼리 언어(SQL)로 작성된 쿼리를 사용하여 데이터베이스에서 특정 데이터를 검색할 수 있습니다. | ||||||||
데이터 제어 언어(DCL) | DCL은 권한 부여 및 취소를 위한 메커니즘을 제공하여 데이터 보안 및 액세스 제어를 보장합니다. |
MySQL
인기있는 오픈소스 Relational Database Management System (RDBMS)입니다. RDBMS란 관계형 모델을 기반으로 하는 데이터베이스 관리 시스템으로, 테이블과 같은 데이터베이스 객체를 생성하고 수정할 수 있습니다. MySQL은 **Structured Query Language (SQL)**을 기반으로 합니다. SQL은 데이터베이스와 상호작용하기 위한 표준 언어입니다. MySQL은 빠른 성능, 신뢰성, 사용 편의성 등으로 알려져 있으며, 웹 애플리케이션, 비즈니스 데이터, 기타 데이터 저장에 널리 사용됩니다.
소프트웨어 진행단계
소프트웨어 개발 영역에서 프로젝트 수명 주기의 중요한 단계 중 하나는 데이터베이스 모델링입니다. 이 블로그 게시물은 데이터베이스 모델링의 중요성을 탐구하고 중요한 측면을 강조합니다. 강력하고 효율적인 데이터베이스 시스템을 구축하려면 데이터베이스 모델링의 프로세스와 주요 구성 요소를 이해하는 것이 중요합니다.
MySQL Workbench는 데이터베이스 설계자, 개발자, 관리자를 위한 통합된 시각적 도구입니다. MySQL Workbench는 데이터 모델링, SQL 개발, 서버 구성, 사용자 관리, 백업 등을 위한 종합적인 관리 도구를 제공합니다. MySQL Workbench는 Windows, Linux, Mac OS X에서 사용할 수 있습니다
설치: 우선 MySQL Workbench를 다운로드하고 설치해야 합니다. 공식 웹사이트http://(https://www.mysql.com/products/workbench/)에서 알맞은 버전을 선택하여 다운로드하세요.
SQL은 데이터베이스 가장 기본적인 10가지 쿼리를 작성하고 설명해 보겠습니다.
1. **SELECT**: 데이터베이스에서 특정 테이블의 모든 또는 일부 열(column)의 데이터를 검색하는 데 사용합니다. 예를 들어, 다음 쿼리는 Pets 테이블에서 모든 열의 데이터를 검색합니다.
2. **WHERE**: SELECT 쿼리와 함께 사용하여 특정 조건을 만족하는 행(row)만 검색하는 데 사용합니다. 예를 들어, 다음 쿼리는 Pets 테이블에서 종(species)이 'Dog'인 행만 검색합니다.
3. **AND, OR, NOT**: WHERE 절에 여러 조건을 결합하는 데 사용합니다. AND는 모든 조건을 만족해야 하고, OR은 하나 이상의 조건을 만족하면 되고, NOT은 조건을 부정합니다. 예를 들어, 다음 쿼리는 Pets 테이블에서 종이 'Dog'이고 나이(age)가 5살 이상인 행만 검색합니다.
4. **ORDER BY**: SELECT 쿼리의 결과를 특정 열의 값에 따라 오름차순(ASC) 또는 내림차순(DESC)으로 정렬하는 데 사용합니다. 예를 들어, 다음 쿼리는 Pets 테이블에서 모든 열의 데이터를 나이에 따라 내림차순으로 정렬하여 검색합니다.
5. **LIMIT**: SELECT 쿼리의 결과에서 반환할 행의 수를 제한하는 데 사용합니다. 예를 들어, 다음 쿼리는 Pets 테이블에서 나이가 가장 많은 3마리의 동물을 검색합니다.
6. **INSERT INTO**: 데이터베이스에 새로운 행을 추가하는 데 사용합니다. 예를 들어, 다음 쿼리는 Pets 테이블에 새로운 동물을 추가합니다.
7. **UPDATE**: 데이터베이스에서 기존의 행을 수정하는 데 사용합니다. WHERE 절을 사용하여 수정할 행을 지정할 수 있습니다. 예를 들어, 다음 쿼리는 Pets 테이블에서 이름이 'Luna'인 동물의 나이를 3살로 변경합니다
8. **DELETE**: 데이터베이스에서 기존의 행을 삭제하는 데 사용합니다. WHERE 절을 사용하여 삭제할 행을 지정할 수 있습니다. 예를 들어, 다음 쿼리는 Pets 테이블에서 종이 'Bird'인 동물을 삭제합니다.
9. **DROP TABLE**: 데이터베이스에서 기존의 테이블을 삭제하는 데 사용합니다. 예를 들어, 다음 쿼리는 Pets 테이블을 삭제합니다.
1. SELECT * FROM Pets;
2.SELECT * FROM Pets WHERE species = 'Dog';
3.SELECT * FROM Pets WHERE species = 'Dog' AND age >= 5;
4.SELECT * FROM Pets ORDER BY age DESC;
5.SELECT * FROM Pets ORDER BY age DESC LIMIT 3;
6.INSERT INTO Pets (name, species, age) VALUES ('Luna', 'Cat', 2);
7.UPDATE Pets SET age = 3 WHERE name = 'Luna';
8.DELETE FROM Pets WHERE species = 'Bird';
9.DROP TABLE Pets;
[1]: https://learnsql.com/blog/what-are-basic-sql-queries/ "What Are the Basic SQL Queries? | LearnSQL.com"
[2]: https://www.sqlshack.com/sql-queries-in-sql-server-a-beginners-guide/ "SQL Queries in SQL Server – a beginner’s guide - SQL Shack"
[3]: https://www.geeksforgeeks.org/sql-tutorial/ "SQL Tutorial - GeeksforGeeks"
[4]: https://www.w3schools.com/sql/ "SQL Tutorial - W3Schools"
[5]: https://database.guide/basic-sql-queries/ "Basic SQL Queries - Database.Guide"
SQL에 대해 더 배우고 싶으시다면, 위 링크들을 참고하시기 바랍니다.
select 문이란?
select 문의 문법은 다음과 같다. select * from 테이블명;
*: 모든 컬럼 선택
from: 조회할 테이블 지정
where: 조건절
group by: 그룹화 함수
having: 그룹함수 조건절
order by: 정렬방식
insert/update/delete 문이란?
insert into 테이블명 (컬럼1, 컬럼2, ...) values (값1, 값2, ...);
update 테이블명 set 컬럼1=값1, 컬럼2=값2 where 조건절;
delete from 테이블명 where 조건절;
join 이란?
여러 개의 테이블을 연결해서 원하는 결과를 출력한다. join문의 문법은 다음과 같다.
left outer join 조인대상테이블 on 조인조건 left join 왼쪽 테이블 right outer join 조인대상테이블 on 조인조건 right join 오른쪽 테이블 full outer join 조인대상테이블 on 조인조건 full join 양쪽 테이블
서브쿼리란?
서브쿼리는 다른 SQL 문장 안에 포함되어 있는 SELECT문장을 의미한다. 서브쿼리는 단일행 또는 복수행 비교 연산자를 사용하며, 반드시 괄호로 묶어야 한다. 또한 WHERE 절에서는 ORDER BY 절을 사용할 수 없다.
조인방법 종류 및 특징
내부조인 - 두 개 이상의 테이블을 결합시키는 방법 중 하나로, 공통 칼럼을 이용하여 서로 간의 정보를 조합함으로써 새로운 결과를 생성한다. 외부조인 - 내부조인과 달리 별도의 테이블로 구성되며, 여러 테이블간의 행들을 결합시켜 보여준다. 자연조인 - 동일한 이름을 가진 칼럼끼리 조인시킨다. Natural Join 이라고도 부른다. 세미조인 - 앞 쪽 테이블의 일부 칼럼만을 대상으로 하여 뒤쪽 테이블과의 조인을 수행한다. 셀프조인 - 한 쪽 테이블 내의 특정 칼럼에만 일치하는 행들이 존재할 때 이를 반환한다. 크로스조인 - 2개 이상의 테이블을 조인하되 각 테이블의 별칭을 부여하여 마치 1개의 테이블처럼 처리한다.
데이터베이스 설계 단계
요구사항 분석단계-> 개념적 설계단계-> 논리적 설계단계-> 물리적 설계단계-> 구현단계-> 테스트단계-> 유지보수단계
3주 2일차
2023-07-14
오늘은 sql 쿼리문에 대한 적응도를 높히고 여러 예제 데이터들을 다뤄보며 쿼리문 작성 및 데이터타입등을 공부하였습니다.
숫자 유형: INT, FLOAT, DOUBLE, DECIMAL 등
문자열 유형: VARCHAR, CHAR, TEXT, ENUM 등
날짜 및 시간 유형: DATE, TIME, DATETIME, TIMESTAMP 등
부울 유형: BOOLEAN 또는 TINYINT()
이진 유형: BLOB, LONGBLOB, VARBINARY 등
데이터 형식:
데이터 형식은 열에 저장할 수 있는 데이터의 종류를 정의하는 데 사용됩니다.
MySQL에는 정수, 문자열, 날짜, 불리언 등 다양한 데이터 형식이 있습니다.
외래 키: 외래 키는 테이블 간에 관계를 생성하는 데 사용됩니다. 외래 키는 한 테이블의 열로, 다른 테이블의 기본 키를 참조합니다. 이를 통해 두 테이블의 데이터가 일관되게 유지되도록 할 수 있습니다.
인덱스: 인덱스는 쿼리의 속도를 높이는 데 사용됩니다. 인덱스는 열의 값을 정렬된 순서로 저장하는 데이터 구조입니다. 이를 통해 MySQL은 주어진 기준과 일치하는 행을 빠르게 찾을 수 있습니다.
뷰: 뷰는 다른 테이블에서 생성된 가상 테이블입니다. 뷰는 쿼리를 단순화하거나 데이터의 다른 뷰를 제공하는 데 사용할 수 있습니다.
저장 프로시저: 저장 프로시저는 SQL 문의 집합을 그룹화하는 방법입니다. 저장 프로시저는 성능을 향상시키거나 코드를 재사용하기 쉽게 만들 수 있습니다.
간단한 SELECT 문
SELECT select_list
FROM table_name;
데이터정렬
ORDER BY 절을 사용하여 결과 집합을 정렬하는 방법을 보여줍니다. FIELD 기능을 사용한 사용자 지정 정렬 순서도 다룹니다
SELECT
select_list
FROM
table_name
ORDER BY
column1 [ASC|DESC],
column2 [ASC|DESC],
...;
데이터 필터링
WHERE – WHERE 절을 사용하여 지정된 조건에 따라 행을 필터링하는 방법
SELECT
select_list
FROM
table_name
WHERE
search_condition;
SELECT DISTINC
ELECT 문에서 DISTINCT 연산자를 사용하여 결과 집합에서 중복 행을 제거하는 방법을 보여줍니다.
SELECT DISTINCT
select_list
FROM
table_name
WHERE
search_condition
ORDER BY
sort_expression;
AND
boolean식을 결합하여 데이터 필터링을 위한 복잡한 조건을 형성하는 AND 연산자
SELECT
customername,
country,
state
FROM
customers
WHERE
country = 'USA' AND
state = 'CA';
OR
연산자를 소개하고 OR 연산자를 AND 연산자와 결합하여 데이터를 필터링하는 방법
SELECT
customername,
country
FROM
customers
WHERE country = 'USA' OR
country = 'France';
IN
SELECT
officeCode,
city,
phone,
country
FROM
offices
WHERE
country IN ('USA' , 'France');
BETWEEN
BETWEEN를 사용하여 범위를 기반으로 데이터를 쿼리하는 방법
SELECT
productCode,
productName,
buyPrice
FROM
products
WHERE
buyPrice BETWEEN 90 AND 100;
LIKE
패턴을 기반으로 데이터를 쿼리
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
firstName LIKE 'a%';
Inner join: Inner join은 두 테이블에서 일치하는 행을 모두 반환합니다.
SELECT *
FROM customers
INNER JOIN orders
ON customers.id = orders.customer_id;
Left join 오른쪽 테이블에 일치하는 행이 없더라도 왼쪽 테이블의 모든 행을 반환합니다.
SELECT *
FROM customers
LEFT JOIN orders
ON customers.id = orders.customer_id;
Cross join: Cross join은 두 테이블의 모든 가능한 조합을 반환합니다. 즉, 두 테이블의 모든 행을 조합하여 모든 가능한 행을 반환합니다.
SELECT *
FROM customers
CROSS JOIN orders;
3주 3일차
2023-07-17
Group by: GROUP BY 절은 공통된 값을 기준으로 행을 그룹화하는 데 사용됩니다. 이를 통해 그룹화된 행에 집계 함수를 수행할 수 있습니다.
SELECT customer_id, COUNT(*) AS num_orders
FROM orders
GROUP BY customer_id;
HAVING 절은 GROUP BY 절에 의해 그룹화된 행을 필터링하는 데 사용됩니다.
SELECT customer_id, COUNT(*) AS num_orders
FROM orders
GROUP BY customer_id
HAVING COUNT(*) > 10;
Subquery: Subquery는 다른 쿼리 안에 중첩된 쿼리입니다. Subquery는 복잡한 쿼리를 수행하거나 쿼리를 재사용하는 데 사용할 수 있습니다.
SELECT *
FROM customers
WHERE id IN (
SELECT customer_id
FROM orders
WHERE order_date > '2023-01-01'
);
UNION: UNION 키워드는 두 개 이상의 SELECT 문의 결과를 결합하는 데 사용됩니다. UNION 키워드는 고유한 행만 반환합니다.
SELECT *
FROM customers
WHERE country = 'United States'
UNION
SELECT *
FROM customers
WHERE country = 'Canada';
UNION ALL 키워드는 UNION 키워드와 유사하지만 두 개 이상의 SELECT 문의 모든 행을 반환합니다. 중복 행도 포함됩니다.
SELECT *
FROM customers
WHERE country = 'United States'
UNION ALL
SELECT *
FROM customers
WHERE country = 'Canada';
MySQL 데이터 유형은 데이터베이스 테이블을 설계할 때 효과적으로 적용할 수 있도록 다양한 MySQL 데이터 유형을 보여줍니다.
* INT - 정수 데이터 유형을 사용하는 방법을 보여줍니다.
* DECIMAL - DECIMAL 데이터 유형을 사용하여 소수 형식으로 정확한 값을 저장하는 방법을 보여줍니다.
* BIT - BIT 데이터 유형과 MySQL에서 비트 값을 저장하는 방법을 소개합니다.
* BOOLEAN - MySQL이 TINYINT(1)을 내부적으로 사용하여 Boolean 값을 처리하는 방법을 설명합니다.
* CHAR - 고정 길이 문자열을 저장하기 위한 CHAR 데이터 유형에 대한 가이드입니다.
* VARCHAR - VARCHAR 데이터 유형에 대한 필수 가이드를 제공합니다.
* TEXT - TEXT 데이터 유형을 사용하여 텍스트 데이터를 저장하는 방법을 보여줍니다.
* DATE - DATE 데이터 유형을 소개하고 날짜 데이터를 효과적으로 처리하기 위한 일부 날짜 함수를 보여줍니다.
* TIME - TIME 데이터 유형의 기능을 안내하고 시간 데이터를 처리하기 위한 유용한 시간 함수를 사용하는 방법을 보여줍니다.
* DATETIME - DATETIME 데이터 유형과 DATETIME 값을 조작하는 데 유용한 일부 함수를 소개합니다.
* TIMESTAMP - TIMESTAMP와 자동 초기화 및 자동 업데이트 기능을 소개합니다. 이 기능을 사용하면 테이블에 자동으로 초기화되고 자동으로 업데이트되는 열을 정의할 수 있습니다.
* JSON - JSON 문서를 저장하기 위해 JSON 데이터 유형을 사용하는 방법을 보여줍니다.
* ENUM - 열에 나열된 값 중 하나만 저장할 수 있는 열을 정의하기 위해 ENUM 데이터 유형을 올바르게 사용하는 방법을 배웁니다.
MySQL 데이터 유형은 열에 저장할 수 있는 데이터의 종류를 정의하는 데 사용됩니다. MySQL에는 다양한 데이터 유형이 있으며, 각 데이터 유형은 고유한 기능과 제한 사항을 가지고 있습니다. 올바른 데이터 유형을 선택하면 데이터베이스 테이블의 효율성과 성능을 향상시킬 수 있습니다.
3주 4일차 ,5일차
2023-07-18 ~07-19
미니프로젝트를 진행하였습니다. 저는 프로젝트한개는 과제이며 , 나머지는 미용실 예약관리 시스템을 만들어봤습니다.
북마켓 프로젝트 회고
프로젝트 개요
북마켓 프로젝트는 Java를 기반으로 개발된 온라인 서점입니다.
사용자는 북마켓에서 책을 검색하고, 구매할 수 있습니다. 북마켓은 다음과 같은 기능을 제공합니다.
책 검색
책 구매
장바구니
주문 내역
회원 관리
관리자 책 추가
프로젝트 구성
은 bookitem, cart, main, member, page 총 5개의 폴더로 이루어져 있습니다. 프로젝트의 핵심적인 기능은 다음과 같습니다.
사용자는 책을 검색하거나 카테고리로 분류된 책 목록을 확인할 수 있습니다.
사용자는 책 더보기 페이지에서 책에 대한 상세정보를 확인할 수 있습니다.
사용자는 상품을 주문하기 위해 로그인이 필요합니다. 로그인 이후 장바구니에 상품을 담을 수 있으며, 주문을 할 수 있습니다.
관리자는 로그인을 통해 등록된 상품을 수정하거나 삭제할 수 있습니다.
프로젝트 진행 과정
북마켓 프로젝트는 과제와같이 강사님이 주신문제를 해결하는 순서로 진행되었습니다.
프로젝트 성공 요인
명확한 요구사항 분석
체계적인 설계
효율적인 개발
철저한 테스트
효과적인 배포
프로젝트 교훈
북마켓 프로젝트를 통해 다음과 같은 교훈을 얻었습니다.
요구사항 분석을 철저히 해야 한다.
설계를 체계적으로 해야 한다.
개발을 효율적으로 해야 한다.
테스트를 철저히 해야 한다.
배포를 효과적으로 해야 한다.
프로젝트를 구현하기 위해서는 다양한 라이브러리가 활용되었습니다.
예를 들어, javax.swing, com.market.member.UserInIt, com.market.bookitem.BookInIt 등이 그 예입니다. 이러한 라이브러리를 활용하여 클라이언트-서버 모델로 구성된 웹 어플리케이션을 구현하였습니다. 이번 프로젝트를 통해 저는 자바 프로그래밍에 대한 이해도가 높아졌습니다. 또한, 제작한 웹 어플리케이션을 구성하고 배포하는 과정에서 프로젝트 관리 능력도 향상되었습니다. 앞으로도 다양한 프로젝트를 구상하고 구현하여 저의 역량을 발전시킬것입니다.
'자바 정리' 카테고리의 다른 글
서블릿(Servlet) 과 JSP 알아보기 (0) | 2023.07.27 |
---|---|
자바 정리 4주차(1) (0) | 2023.07.20 |
자바 정리 2주차(2) (0) | 2023.07.12 |
자바 정리 2주차 (1) (0) | 2023.07.06 |
자바 정리 1주차(2) (0) | 2023.07.06 |