본문 바로가기

Database/SQL

[코테를 위한 Oracle 정리] 1. Database 개념과 SELECT

손에 잡히는 10분 SQL 1장, 2장 참고

기본 Database 지식

알고 있는 것들이 많아서 간단하게 정리했다

  • 데이터베이스
    • 데이터를 저장하기 위한 공간(그릇, 파일 캐비닛)
    • DBMS를 생성하고 조작하는 물리적인 저장공간
  • DBMS : DataBase Management System
    • 데이터베이스 소프트웨어
    • Oracle, PostgreSQL, MySQL 등
  • SQL
    • DBMS를 다루기 위한 언어
    • 표준 SQL은 ANSI SQL이라고 부르고 대형 DBMS는 모두 ANSI SQL을 지원한다.
    • Oracle이 확장한 PL-SQL, Microsoft SQL Server가 확장한 것이 Transact-SQL이다
  • 테이블
    • 파일 캐비닛(데이터베이스)안에 들어갈 파일
    • 데이터를 저장할 수 있는 구조화된 목록
  • 스키마 : Schema
    • 데이터베이스, 테이블의 구조와 속성에 대한 정보
  • 테이블의 구성
    • 열 : Column :필드
    • 행 : Row : 레코드

실습 데이터

https://livesql.oracle.com/ 에서 온라인으로 Oracle을 실행해볼 수 있다.

  1. livesql 가입 후 My Scripts에 접속
  2. https://blog.insightbook.co.kr/2020/10/06/20407/  파일을 다운로드해서 sql 파일을 My Scripts에 Upload Script를 통해 올린다.
  3. SQL worksheet로 이동해 테이블들을 실행할 수 있다.

SQL 팁

  • SQL문 끝에 세미콜론 (;)을 붙혀 끝났음을 표시한다
  • SQL은 대소문자를 구분하지 않아도 된다. 하지만 DBMS에 따라 테이블이름, 열 이름 등은 구분할 수도 있다.
  • SQL문에서 스페이스, 엔터, 탭, 개행은 무시된다

Select

열 조작

    SELECT prod_id, prod_name, p.* FROM products p;
  • SELECT 이후에 가져오려는 열 이름을 나열할 수 있다
  • 모든 열을 가져오려면 *(와일드카드)를 통해 가져올 수 있다.

행의 중복 출력 방지

SELECT DISTINCT vend_id FROM Products;
  • DISTINCT 키워드를 열 이름 앞에 붙혀 중복값을 제거할 수 있다.
  • SELECT DISTINCT vend_id, prod_price FROM Products;
  • DISTINCT 는 모든 열에 일괄 적용된다. 그래서 고유한 항목들의 조합이 반환된다.
  • 하나의 열에만 적용할 수 없다.여러 행 중 일부 행만 볼 수 있다.

 

결과 제한하기

여러 행 중 일부 행만 볼 수 있다.

SELECT
	PROD_NAME
FROM
	PRODUCTS
WHERE
	ROWNUM<=5;

 

  • Oracle의 경우 rownum으로 상위 N개를 검색할 수 있다.
  • 위의 SQL의 경우 상위 5개를 검색한다.
  • 나머지 DBMS의 경우 LIMIT을 많이 사용한다.