MySQL 접속 후 자신의 컴퓨터에 맞는 버전 찾아 설치:)
파일 크기가 더 작은 파일(노랑색 표시)로 다운로드....♥
window 바로 가기 => https://dev.mysql.com/downloads/installer/
설치 후 입력해둔 비밀번호 이용하여 Local instance MySQL80에 접속!
👁🗨 SQL 공부 전, 배경 지식
★ SQL 기능에 따른 분류 ★
- 데이터베이스
- DBMS
a. RDBMS : Relational DBMS. 즉, 테이블 형태
b. NoSQL DBMS :Not Only SQL Non-Relational DBMS.
- e.g. 그래프형태
- SQL
- DDL : CREATE, ALTER, DROP
- DMS : SELECT, INSERT, DELETE, UPDATE
- DCL : GRANT, REVOKE
Next,
Step1 : Query문 입력창을 통해 원하는 데이터 베이스를 생성
Step2 : 스키마와 데이터가 착오없이 생성되었는 지 확인
😃이 단계까지 끝나면 TABLE 형태 데이터 생성이 완료😄
🔥 MySQL 시작하기 직전에 알아두면 좋은 팁
1. Workbench 주요 단축키와 주석
a. 실행 : Ctrl + Enter
b. 전체 실행 : Ctrl + Shift + Enter
c. 주석 처리 : Ctrl + /
d. Beautify : Ctrl + B
e. 스크립트 오픈 : Ctrl + Shift + O
f. 편집 : MS Office와 동일
g. -- (끝에 스페이스나 탭 필수) or # or ctrl+\ : 주석
h. /* */ : 여러 줄 주석
a. 투플 - row - 레코드
b. 속성 - column - 필드
🦥 Workbench를 이용할 때, 특정 데이터베이스를 지정하여 데이터를 사용하는 방법은 크게 두 가지가 있당.
Option 1 : '데이터 베이스.테이블 이름' 을 함께 입력
SELECT PHONE FROM madang.customer WHERE name = '김연아'
Option 2 : 'USE ' 이용하여 사용할 데이터 베이스 먼저 정한 후 시작
USE madang; SELECT DISTINCT PHONE /**DISTINCT 중복 제거 / FROM customer WHERE name <> '김연아';
🙈Column 이름 변경🙉
SELECT bookname AS 이름, price AS '할인 가격'
FROM book
WHERE price NOT IN (7000,13000); /*IN과 NOT IN 속도 측면에서 사용 비추천! 대신 WHERE PRICE <> 7000 AND PRICE<>13000 추천 */
🥨 NULL
SELECT
*
FROM
CUSTOMER
WHERE
PHONE IS NOT NULL;
😰 찾고자 하는 데이터 명칭을 확실히 모를 때? 😭
🍜 해결책 = LIKE 사용
SELECT
*
FROM
book
WHERE
bookname LIKE '%축구%'
;
요때 큰 따옴표 보다는 작은 따옴표 사용 추천!
SELECT
*
FROM
book
WHERE
bookname LIKE '_구%'
;
🥗 오름차순/내림차순
SELECT
*
FROM
book
ORDER BY
price ASC, bookname DESC
;
이 외에도 여러 종류의 SQL WIDCARD 문자들 확인 해보기!
🦢 집계함수 ( AS많이 사용함 )
a. SUM,AVG,MIN,MAX
SELECT
SUM(saleprice) AS 판매액,
AVG(saleprice) AS 평균가,
MIN(saleprice) AS 최저가,
MAX(saleprice) AS 최고가
FROM
orders
WHERE
custid = 2
;
b. 셀 추가
SELECT
orderid, custid, bookid, saleprice, saleprice*1.1 as '실제판매가'
FROM orders
;
c. Having
SELECT
custid, COUNT(bookid)
FROM
orders
GROUP BY custid
HAVING COUNT(bookid) >= 3;
💚 복잡한 쿼리(Join & Subquery)
a. Join
select
orderid, name, O.custid
from
customer as C,
orders as O
where
customer.custid = orders.custid
order by
C.custid
limit 1
;
b. Subquery
select
*
from
book
where
price = (
select
max(price)
from
book)
;
c. Join + Subquery
Q. 출판사별로 출판사의 평균 도서 가격보다 비싼 도서를 구하시오.
SELECT
*
FROM
book AS b1,
(SELECT
publisher, AVG(price) AS avg_price
FROM
book
GROUP BY publisher) AS b2
WHERE
b1.publisher = b2.publisher
AND b1.price >= avg_price;