20230616 공부노트

라영진·2023년 6월 17일
0

Java 학습일지

목록 보기
17/35

수정시 사용되는 기능

구조 데이터

ALTER | UPDATE
SHOW | SELECT
DROP | DELETE
CREATE | INSERT

Query 창 내 내용이 길어졌을 시 +버튼을 눌러 새 쿼리 만들기

DESC(예약어)가 사용이 되는 위치에 따라
Description 으로도 사용되고(맨 앞 위치)
Descending 으로도 사용된다(맨 뒤 위치)

정렬한다 = 행을 재배치한다의 뜻

예약어나 컬럼별로 구분하기 위해 사용하는 `` SQL 쿼리에서 테이블, 컬럼 또는 키워드를 식별하기 위해 사용되는 백틱(backtick) 기호입니다.

아래 코드는 w3schools.com에서 확인 가능


Products 테이블에서 ProductId와 SupplieId와 CategoryId를 더한 새로운 값으로 새로운 컬럼을 만들고 이름을 NewId로 정하기

SELECT ProductID, SupplierID, CategoryID, ProductID + SupplierID + CategoryID as NEWID FROM Products;

Products 테이블에서 Price가 20 이상이고 50 이하인 행만 조회

select * from Products where Price >= 20 and Price <= 50;

Customers에서 country가 Brazil, Spain, France 고객 조회

select *
from Customers
where Country IN ('Brazil', 'Spain', 'France');

=================================

Customers 테이블에서 CustomerName이 Co로 끝나는 행만 조회

select *
from Customers
where CustomerName
LIKE '%Co';

Customers 테이블에서 Country가 A로 시작하는 결과만 조회

select *
from Customers
where Country like 'A%'

Products 테이블에서 ProductName이 C로 시작하고 e로 끝나는 행만 조회

select *
from Products
where ProductName like 'C%e';

Employees 테이블에서 FirstName이 A로 시작하지 않는 행만 조회

select *
from Employees
where FirstName not like '%A%'

=============================================

집계함수 -> 모든 행을 대상으로 하나의 결과

sum(컬럼) -> 모든 행의 값

avg(컬럼) -> 모든 행의 평균

max(컬럼) -> 모든 행중의 최대값

min(컬럼) -> 모든 행중의 최소값

일반함수 -> 모든 행 각각에 적용해서 각각의 결과가 나옴

※ 함수를 사용할 때 주의사항
SQL의 순서상 where에서는 집계함수를 사용해서는 안된다.
where에서는 행을 집계하는데 집계함수는 행의 개수를 줄이기 떄문에 행을 집계하는 데 방해가 된다.
단, 일반 함수의 경우는 행의 개수가 그대로 유지 되기 때문에 사용 가능하다.

SQL 실행 순서
FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY

각 단계의 역할
FROM: 특정 테이블의 데이터를 읽어옴

WHERE: 읽어온 데이터의 행을 조건에 맞게 거른다.

GROUP BY: 행을 특정 컬럼의 값을 기준으로 같은 값끼리 한 그룹으로 합치는 역할.

HAVING: GROUP BY된 결과에서 조건에 맞게 거른다

SELECT: 최종 집계된 행에서 필요한 컬럼만 선택한다.

ORDER BY: 최종 집계된 컬럼을 대상으로 정렬 작업한다.

==================================================

가장 비싼 상품 고르시오

select ProductID, ProductName, Price
from Products
where Price = (
select max(Price)
from Products
);

전체 상품의 평균 가격을 소수점 1자리까지 반올림해서 보여주세요.

select round(AVG(Price), 1) as AveragePrice
from Products;

=====================================================
문자 함수, 날짜 함수

CONCAT > 문자열 붙이기
SELECT CONCAT("hi", "my name is", "cha!") AS greeting;

REPLACE > 문자열 치환
SELECT REPLACE("SQL Tutorial", "SQL", "HTML");

SUBSTRING > 문자열 자르기
SELECT SUBSTRING("SQL Tutorial", 5, 8)AS ExtractSting;

SELECT SUBSTRING("CHA TAEJIN", 5, 6) AS ExtractString;

SELECT SUBSTRING_INDEX("www.w3schools.com", ".", 3)

SELECT ADDDATE("2017-06-15", INTERVAL 2 YEAR);
<2년 추가>

SELECT DATEDIFF("2017-06-25", "2017-06-15");
<날짜와 날짜간의 차이(일수)>
<여기서 DIFF는 DIFFERENCE의 약자이다>

SELECT NOW()
<현재 날짜>

===================================

대표성을 띈 하나의 값만 도출해내고 싶을 때
중복제거 하고싶을 때
Distinct 사용함

count() 특정 행 갯수를 알려줌

그룹핑 -> 그냥 사용하면 의미가 없다 -> 집계함수와 같이 사용
그룹을 대표할 수 있는 값 -> 평균, 합계
문자열 데이터에서는 그룹핑을 잘 사용안함
보편적으로 숫자열 데이터에서 사용함
어떤 각 그룹의 합을 내거나 평균값을 내는것

====================================

어떤 값이 정해짐에 따라 참거짓으로 귀결되는 구분값이 2개일 때.
50보다 크면 비쌈.

====================================
프로그래밍에서 데이터중복은 좋지 않다.
현업에서 데이터중복을 없애기 위한게 과제이다.
상품이 늘어남에 따라 주문이 늘어나는 건 관계가 없기 떄문에
상품과 주문을 분리를 해놓는다
데이터중복을 막고 효율성을 높이기 위해 사용

profile
보더콜리 2마리 키우는 개발자

0개의 댓글