-
oracle SQL developer명령어 공부수업 완료/데이터 베이스(학교수업) 2023. 5. 20. 03:30728x90반응형
오라클 SQL 데이터 베이스 공부를 두서없이 설명해서 매우 미안하지만 어쩔 수 없다. 배우는 게 한두 개도 아니고.. 글 쓰는 것도 은근 시간을 많이 잡아먹어서 복습한다는 개념과 잊어먹지 않으려고 작성하는 건데 이게 순서대로 작성될 리가. 없다 ㅋㅋ
Oracle SQL은 많다면 많고 적으면 적은 문법으로 이루어져 있다.
내가 얼마전 적은 문제풀이를 보면 기본적 문법을 어떻게 다루는지 나와있다.
만약 사용 예제를 보고 싶으면 아래링크에 가보는 걸 추천한다.
558p~561p 문제풀이
558p 문제 1. hr스키마에 있는 Employees, Departments 테이블의 구조를 파악한 후 사원수가 5명 이상인 부서명과 사원수를 출력하시오. 이때 사원 수가 많은 순으로 정렬하시오(5행) 힌트 > 기본적으로 SQL
hueeng.tistory.com
1. SQL 언어란?
일단은 SQL 언어에 대해 설명을 해야할 것 같다. SQL 언어는 관계형 데이터베이스 언어 라고 한다.
그리고 실행 순서가 없는 비절차적인 언어이다.
2. 기본 구조
SELECT *
FROM 테이블이름
기본구조는 위와 같다.
SELECT 문과 FROM 문이 쓰여야 테이블이 생성된다.
SELECT 뒤에 *를 붙인 것은 모든 속성을 보여주라는 이야기이다.
FROM은 보여줄 테이블을 뜻한다.
3. WHERE
검색 조건을 뜻한다.
만약 가격이 1000원 이상인것을 구하려면
2. 번에 있는 기본구조에다. where 문을 추가하면 된다.
SELECT *
FROM Book
WHERE price>= 1000;
이러면 북 테이블에 price 가 1000>= 이상인 모든 값들이 추출된다.
보통 위의 3개는 무조건 쓰인다고 보면 된다.
3.1 WHERE 절에 사용할 수 있는 조건
WHERE는 다양한 조건을 사용할 수 있다. 이걸 한번 풀어서 설명해 보겠다.
술어 연산자 사용 예 비교 =, <>,<,>,<=,>= price < 1000 범위 BETWEEN price BETWEEN 1000 AND 2000 집합 IN, NOT IN price IN(100,200,300) 패턴 LIKE name LIKE'Lee' NULL IS NULL, IS NOT NULL price IS NULL 복합조건 AND, OR, NOT (price < 200) AND (name LIKE'Lee) 자 이걸 풀어서 설명해 주겠다.
1) 비교
가격이 20,000원 이하인 도서를 검색하시오라고 할 경우
SELECT *
FROM Book
WHERE price <20000;
이라고 하면 된다.
이건 쉬우니 따로 설명 하지 않겠다.
2) 범위
SELECT *
FROM Book
WHERE price BETWEEN 10000 AND 20000;
between의 경우 중간에 and를 써주면 사용할 수 있다.
3) 집합
두 개 이상의 값을 비교할때는 IN 연산자를 쓴다.
SELECT *
FROM Book
WHERE publisher IN('굿스포츠', '대한미디어');
이러면 굿스포츠 ,대한미디어의 출판사만 추려고딘다.
당연히 IN 대신 NOT IN을 작성하면 2개의 출판사가 없는 것만 출력될 것이다.
4) 패턴
문자열의 패턴을 비교할때 LIKE 연산자를 사용한다.
비교할 때는 영문 작은따옴표를 써야 해서 만약 한글 파일에 있는 작은따옴표를 복사 붙여 넣기 하면 에러가 나니 참고하자.
SELECT bookname
FROM Book
WHERE bookname LILE'축구의%'
여기서 %는 뒤에 아무글자나 와도 된다는 뜻이다.
만약 %의% 라는 내용이 들어가 있으면
농구의 정석
축구의 정석
게임의 취향
과 같은 의가 중간에 포함된 모든 내용을 반환한다.
_기호의 경우는 특정 위치에 한 문자만 대신할 때 사용한다고 생각하면 된다.
_구의%라는 내용이면
축구의 정석
야구의 이론
농구의 게임
등등 다양한 것들이 나올 수 있을 것이다.
5) 복합조건
AND OR NOT를 사용하면 복합조건을 검색할 수 있다.
WHERE bookname LIKE "% 축구%" AND price >1000;
이라고 한다면 축구라는 단어가 포함되면서 가격이 1000원을 초과하는 테이블을 만들어 줄 것이다.
4. 검색결과 정렬 ORDER BY
검색결과를 정리할 때 ORDER BY를 사용한다.
Ex)
SELECT *
FROM Book
ORDER BY bookname;
이러면 bookname 순서대로 정렬하게 된다.
만약 가격이 같으면 이름순으로 정렬한다고 했을 때는
SELECT *
FROM Book
ORDER BY price, bookname;
라고 하면 된다.
기본적으로 오름차순이다. 만약 내림차순으로 정렬을 하고 싶다면 DESC키워드를 작성하자.
기본은 오름차순이지만 가격은 내림차순 이름은 오름차순으로 하고 싶을 경우 ASC를 사용하면 된다.
SELECT *
FROM Book
ORDER BY price DESC, bookname ASC;
5. 검색 GROUP BY
나는 개인적으로 이게 제일 어려웠다.
여러 함수들이 존재하는데
집계함수 문법 사용예 SUM SUM([ALL|DISTINCT] 속성이름) SUM(price) AVG AVG([ALL|DISTINCT] 속성 이름) AVG(price) COUNT COUNT({[[ALL|DISTINCT] 속성 이름]|*}) COUNT(*) MAX MAX([ALL|DISTINCT] 속성 이름) MAX(price) MIN MIN([ALL|DISTINCT] 속성 이름) MIN(price) 이걸 GROUP BY로 같은 속성값끼리 그룹을 만들 수 있다.
예시를 보여주자면
SELECT custid, COUNT(*) AS 도서수량, SUM(saleprice) AS 총액
FROM Orders
GROUP BY custid;
이걸 하나하나 분석해 보자
테이블은 CUSTID와 도서수량, 총액이 나오게 될 것이다.
CUSTID는 이미 SELEC 문에 적혀있으니 넘어가자
왜 도서수량이 나오냐 COUNT(*) AS 도서수량 이 문장을 보면
COUNT(*)를 이름을 도서수량으로 바꾸겠다는 뜻이다.
그리고 GROUP BY custid; 문에 우리는 custid를 적었기 때문에 이 값을 기준으로 개수를 세는 것이다.
총액은 당연히 SUM(saleprice)AS 총액 이 부분에 해당하며
SUM에서 saleprice를 다 더하는데 GROUP BY에서 custid 별로 합계를 구하게 되어있다.
자 오늘은 여기까지 작성하도록 하겠다.
일단 더 작성은 해야 할 것 같은데 바쁘다..
728x90반응형'수업 완료 > 데이터 베이스(학교수업)' 카테고리의 다른 글
오라클로 배우는 데이터베이스 개론과 실습 (578p 2번 문제) (0) 2023.05.24 oracle SQL developer명령어 공부.2 (0) 2023.05.22 hr 계정 생성하기 (0) 2023.05.15 558p~561p 문제풀이 (1) 2023.05.14 릴레이션, 키, 무결성 에 대한 자료 정리 (0) 2023.03.17