조건 절 WHERE를 활용한 데이터 검색

  • 원하는 결과를 얻기위해 조건을 제한함.
  • WHERE절은 FROM절 다음에 위치한다.
  • 문자열, 날짜는 'Single Quotation'안에 표기해야 함.
    • 명령어는 대소문자 구분을 하지 않지만,
      테이블 내에 저장된 데이터 값은 대소문자를 구분함.
  • 수행될 조건 절에는 비교 연산자, SQL 연산자, 논리 연산자, 열 이름, 표현식, 숫자, 문자 등 사용 가능.
  SELECT  열 이름    <-- 출력 하려는 열
  FROM    테이블 이름 <-- 참조 하려는 테이블
  WHERE   원하는 조건 <-- 조건 식
  • 데이터가 조회되는 논리 순서
    1. FROM : 참조하려는 테이블로부터
    2. WHERE : 해당하는 조건이 맞는
    3. SELECT: 열을 선택해서 조회

WHERE절에 사용하는 연산자의 종류

연산자 설명 예시
비교 조건을 비교 =, <, > 등
SQL 비교 조건 확장 BETWEEN, IN 등
논리 논리 조건 연결 AND, OR

연산자의 우선 순위

괄호 > 부정 연산 > 비교 연산 > SQL 연산
NOT > AND > OR 순
연산자의 순서는 데이터 조회 속도에 영향을 미침 -> 고급 SQL 영역임.

비교 연산자 : 비교 조회 조건 주기

SELECT *
FROM  employees
WHERE employee_id = 100;
SELECT *
FROM  employees
WHERE first_name = 'David';
SELECT
  *
FROM employees
WHERE employee_id >= 105;

SQL 연산자 : 조회 조건 확장하기

BETWEEN

SELECT
  *
FROM employees
WHERE
  salary BETWEEN 10000 AND 20000;

IN

SELECT
  *
FROM employees
WHERE
  salary IN (10000, 17000, 24000);

LIKE와 '%'

SELECT
  *
FROM employees
WHERE
  job_id LIKE 'AD%';

'_'

SELECT
  *
FROM employees
WHERE
  job_id LIKE 'AD___';

IS NULL

SELECT
  *
FROM employees
WHERE
  manager_id IS NULL;

논리 연산자 : 조건 논리를 계속 연결하기

AND

SELECT
  *
FROM employees
WHERE
  salary > 4000
AND
  job_id = 'IT_PROG'

OR

SELECT
  *
FROM employees
WHERE
  salary > 4000
AND
  job_id = 'IT_PROG'
OR
  job_id = 'FL_ACCOUNT'

!=와 <>

SELECT
  *
FROM employees
WHERE
  employee_id != 105
SELECT
  *
FROM employees
WHERE
  employee_id <> 105

IS NOT NULL

SELECT
  *
FROM employees
WHERE
  manager_id IS NOT NULL
728x90
반응형

'Database' 카테고리의 다른 글

[SQL] GROUP  (0) 2019.12.26
[SQL] 데이터를 가공하기 위한 DB 함수들  (0) 2019.12.26
[SQL] 데이터 조회 SELECT  (0) 2019.12.23
DB(Database)란  (0) 2019.12.23
DB 설치 없이 SQL 실습하기  (0) 2019.12.21

데이터 조회

  • sql명령어는 여러개의 절이 모여 하나의 문장을 구성,  `;` 으로 마쳐야 함.
  • 대소문자 구분하지 않음.

SELECT 기본 문법

기본적으로 SELECT절과 FROM절로 구성.

  • SELECT : 출력하고자 하는 칼럼의 이름들을 기술.
  • FROM : 조회하고자 하는 테이블의 이름을 기술.
    ex)
    SELECT    열 이름
    FROM      테이블 이름

전체 데이터 조회하기

테이블내 모든 컬럼을 출력하고자 한다면 컬름 이름 대신 *로 조회.

SELECT  *
FROM    employees;

원하는 열만 조회하고 정렬하기

SELECT employee_id, first_name, last_name
FROM   employees
ORDER BY  employee_id DESC;

중복된 출력값 제거하기

DISTINCT 뒤에 열 이름이 계속 나열된다면 원하는 값이 나오지 않을 수 있으니 ()를 신경 써야 함.

SELECT DISTINCT job_id, employee_id
FROM   employees;
SELECT DISTINCT( job_id ), employee_id
FROM   employees;

효율적인 SQL을 위한 별칭(alias)

AS를 붙일 수도 있고, 떼도 됨.
가독성을 위해서는 붙이는 걸 권장함.

SELECT
  employee_id AS 사원번호
  ,   first_name 이름
  ,   last_name   성
FROM
  employees;

데이터 값 연결하기

연결 연산자 ||
[ 열 이름 ] || [ 열 이름 ] or [ 열 이름 ] '[문자]'

SELECT
  employee_id,
  first_name || ' ' || last_name,
  email || '@' || 'company.com'
FROM   employees;

산술 처리: 데이터 값 계산

데이터 값을 계산할 때 사용.
산술 표현식에는 열 이름, 숫자, 날짜, 산술 연산자 등을 포함 할 수 있음.
산술 연산자는 가감승제( +, -, *, / )가 있음.
연산은 (), *, /, +, -순으로 함.

employees 테이블에서 employee_id, salary, salary에 500을 더한 값, 100을 뺀값. 10%를 추가해서 2로 나눈값을 출력하시오.

SELECT
  employee_id,
  salary,
  salary + 500,
  salary - 100,
  (salary * 1.1) / 2
FROM
  employees;
SELECT
  employee_id AS 사번,
  salary AS 급여,
  salary + 500 AS 추가급여,
  salary - 100 AS 인하급여,
  (salary * 1.1) / 2 AS 조정급여
FROM
  employees;
728x90
반응형

'Database' 카테고리의 다른 글

[SQL] 데이터를 가공하기 위한 DB 함수들  (0) 2019.12.26
[SQL] 조건절 WHERE  (0) 2019.12.24
DB(Database)란  (0) 2019.12.23
DB 설치 없이 SQL 실습하기  (0) 2019.12.21
nodejs mysql 연동 에러  (0) 2019.12.11

DB : Database

데이터의 집합, 검색 수정 삭제 추가등 관리.

파일 시스템의 문제점 해결

  • 데이터의 종속
  • 데이터의 중복
    • 일관성 - 동일성을 유지하기 위해 데이터 중복을 피하기 위해
    • 보안성 - 동일한 수준에서 보안 유지
    • 경제성 - 저장되는 공간에 대한 비용 절감
    • 무결성 - 데이터의 정확성을 유지

DB의 정의

  • 통합된 데이터 (Integrated Data)
    • 원칙적으로 데이터 중복되어 있지 않게함
  • 저장된 데이터 (Stored Data)
    • 기억장치에 저장된 데이터
  • 운영 데이터 (Operational Data)
    • 존재 목적이 명확하고 유용성을 지니고 있음
  • 공용 데이터 (Shared Data)
    • 여러 사용자들이 서로 다른 목적으로 공유가 가능한.

DB의 특징

실시간 접근성, 지속적인 변화, 동시 공유, 내용에 대한 참조

데이터베이스 관리시스템 (DBMS : DataBase Management System)

효율적으로 관리하고 검색할 수 있는 환경을 제공, 체계적인 활용을 가능케함.
응용프로그램과 데이터베이스의 중계

관계형 데이터베이스 관리 시스템

일반적인 DB, 작성과 이용이 편함, 응용프로그램을 변경하지 않아도 참삭이 편함.
정보들을 Table형태로 저장함.
테이블은 2차원 형태의 표처럼 row(행), column(열)로 구성.

Table ; 표

Row \ Table Column Column Column
Number 1 2 3
Eng Char A B C
Kor Char

참고

SQL? (Structured Query Language)

사용자와 관계형 데이터베이스를 연결시켜주는 표준 검색언어.
쉽게 얘기해서 데이터베이스를 다루기위해 디자인된 언어임.
프로그래밍 언어는 아니지만 Java 등 다른 프로그래밍 언어보다 더 많이 사용될 수밖에 없음.

728x90
반응형

'Database' 카테고리의 다른 글

[SQL] 데이터를 가공하기 위한 DB 함수들  (0) 2019.12.26
[SQL] 조건절 WHERE  (0) 2019.12.24
[SQL] 데이터 조회 SELECT  (0) 2019.12.23
DB 설치 없이 SQL 실습하기  (0) 2019.12.21
nodejs mysql 연동 에러  (0) 2019.12.11

DB 설치 없이 Oracle DB 실습하기.

SQL에서 부족한 점이 느껴져서 공부 하려고 했는데 Oracle DB를 어디에 설치할지 고민이였음,
BUT!! Oracle에서 설치 없이 SQL을 돌릴 수 있는 웹 기반 서비스가 있었음..
당연히 오라클 계정이 있어야 함.
https://livesql.oracle.com/

세션, 쿠키, JS 기반으로 테이블과 데이터들을 정의하고, 일정 시간이 지나면 데이터가 삭제 되는 듯?

Oracle 테스트 데이터인 HR을 사용하고 싶다면,
https://livesql.oracle.com/apex/livesql/file/content_GV8MU6SITA2V3VYI179FAJUCY.html로 접속,
RUN SCRIPT 버튼을 눌러주면 내 계정에서 사용이 가능함.

https://livesql.oracle.com/apex/f?p=590:49:::NO:::로 접속 하면 그 외 샘플 데이터와 학습 자료들이 있음.
단점이라면 영어라는것..?

728x90
반응형

'Database' 카테고리의 다른 글

[SQL] 데이터를 가공하기 위한 DB 함수들  (0) 2019.12.26
[SQL] 조건절 WHERE  (0) 2019.12.24
[SQL] 데이터 조회 SELECT  (0) 2019.12.23
DB(Database)란  (0) 2019.12.23
nodejs mysql 연동 에러  (0) 2019.12.11

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

mysql CMD 접속

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '사용할패스워드'

이거 한줄이면 해결 됨.

728x90
반응형

'Database' 카테고리의 다른 글

[SQL] 데이터를 가공하기 위한 DB 함수들  (0) 2019.12.26
[SQL] 조건절 WHERE  (0) 2019.12.24
[SQL] 데이터 조회 SELECT  (0) 2019.12.23
DB(Database)란  (0) 2019.12.23
DB 설치 없이 SQL 실습하기  (0) 2019.12.21

+ Recent posts