수정시 사용되는 기능
ALTER | UPDATE
SHOW | SELECT
DROP | DELETE
CREATE | INSERT
Query 창 내 내용이 길어졌을 시 +버튼을 눌러 새 쿼리 만들기
DESC(예약어)가 사용이 되는 위치에 따라
Description 으로도 사용되고(맨 앞 위치)
Descending 으로도 사용된다(맨 뒤 위치)
정렬한다 = 행을 재배치한다의 뜻
예약어나 컬럼별로 구분하기 위해 사용하는 `` SQL 쿼리에서 테이블, 컬럼 또는 키워드를 식별하기 위해 사용되는 백틱(backtick) 기호입니다.
SELECT ProductID, SupplierID, CategoryID, ProductID + SupplierID + CategoryID as NEWID FROM Products;
select * from Products where Price >= 20 and Price <= 50;
select *
from Customers
where Country IN ('Brazil', 'Spain', 'France');
=================================
select *
from Customers
where CustomerName
LIKE '%Co';
select *
from Customers
where Country like 'A%'
select *
from Products
where ProductName like 'C%e';
select *
from Employees
where FirstName not like '%A%'
=============================================
※ 함수를 사용할 때 주의사항
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보다 크면 비쌈.
====================================
프로그래밍에서 데이터중복은 좋지 않다.
현업에서 데이터중복을 없애기 위한게 과제이다.
상품이 늘어남에 따라 주문이 늘어나는 건 관계가 없기 떄문에
상품과 주문을 분리를 해놓는다
데이터중복을 막고 효율성을 높이기 위해 사용