본문 바로가기

데이터베이스/Oracle

SQL

SQL : 객체(테이블) 정의, 자료를 처리 조작에 필요한 표준언어. 대소문자 구분안함
 
※ Structured Query Language
    - DDL : 데이터 정의(객체생성, 객체구조변경, 객체제거)어
                                     CREATE, ALTER, DROP
    - DML : 데이터 조작(데이터추가, 데이터변경, 데이터삭제)어
                                     INSERT, UPDATE, DELETE
    - QUERY : 데이터 조회 SELECT
    - DCL : 데이터 제어(권한설정, 권한취소)
                                     GRANT, REVOKE, 
    - DTL : 트랜잭션 관리(완료, 취소)
                                     COMMIT, ROLLBACK

컬럼 이름도 대소문자 구분 안하지만 가독성을 위해 SQL문법은 대문자.
테이블명이나 컬럼명은 소문자로 씀

 

기본구조. [where 부터 [] 는 생략가능

※ SELECT 구문 처리 순서
SELECTION : 조건에 맞는 행 찾기
PROJECTION: 행의 컬럼을 출력하기
|<----------SELECTION 절차--------------------- ->|<---PROJECTION절차->
FROM → WHERE →GRUOP By→HAVING→SELECT→ORDER BY

 

컬럼의 순서는 내가 작성한 순서

차이
별칭 사용 이유

 

띄어쓰기 안됨

-- 컬럼 별칭주기
SELECT region_id 대륙 번호, region_name 대륙 이름
FROM regions; (x)

SELECT region_id 대륙번호, region_name 대륙명
FROM regions;

별칭에 공백,특수문자 쓸 때만 큰따옴표

SELECT region_id "대륙 번호", region_name "대륙 이름" // 별칭 안주면 헤딩의 이름 대문자
FROM regions; 

SELECT region_id "Region_ID", region_name // 별칭 안주면 헤딩의 이름 대문자
FROM regions;

SELECT region_id "Region_ID", region_name AS 대륙명 // as 생략가능
FROM regions; 

--컬럽값 결합하기|| 
SELECT region_id || '--' || region_name // 오라클에서 문자열 '' 
FROM regions;

SELECT region_id || '--' || region_name "대륙번호--명"
FROM regions;

※ 연산자
--산술연산자 : +, -, *, / cf) 나머지값 구하려면 연산자는 없고 mod() 함수
--비교연산자 : >, >=, <, <=, =, <> // 같다는 = 같지않다 <> 
                       sql은 변수가 없고 대입이 없어서 = 가 비교로 쓰임,
                       단, 대입이 쓰일때는 update
                       SELECT 절에서 사용못함.
                       WHERE 절에서 사용
--논리연산자 : AND, OR, NOT

--대입연산자X, 증감연산자++ X, 삼항연산자 X 없음

오류 발생,&nbsp;비교연산자는 select 절에서 사용불가능. where절에서만 사용

--대륙번호가 2번 이상인 대륙번호와 대륙명을 출력하시오
SELECT *
FROM regions
WHERE regions_id>= 2;

--대륙번호가 2번 이상이고 홀수인 대륙번호와 대륙명을 출력하시오
SELECT *// 출력할 컬럼 찾아냄
FROM regions
WHERE regions_id>= 2 AND MOD(region_id, 2)=1;

테이블이 갖고있는 행들 조회, 커서를 이동한다

※ 스키마의 중앙에 있다, 선이 많이 이어져있다 = 핵심테이블


--NULL : 아무값도 아니다. 산술연산에 참여하면 결과가 무조건 NULL
--NULL 관련 함수 : NVL(컬럼명, 값)-컬럼명에 해당값이 NULL이면 두번째 인자값을 반환
                               - 대소문자 구분 X                              NULL이 아니면 컬럼값을 반환
DB에서의 null은 대,소문자 구분 X, 아무것도 아니다라는 예약어
java에서는 null 소문자로 예약어 있음

 

--사원의 사번, 이름, 입사일자, 급여, 수당률을 출력하시오
SELECT employee_id, first_name, hire_date, salary, commission_pct
FROM employees;

180번 commission_pct null 값이다. 공란임. 아무것도 아니다.

--사원의 사번, 이름, 급여, 수당률, 실급여을 출력하시오
--실급여: 급여+(급여*수당률)
SELECT employee_id, first_name, salary, commission_pct
	   ,salary+(salary*NVL(commission_pct,0)) "실급여"
FROM employees;

--날짜 os따라 다르게 표기될 수 있음 ex) 23-08-14, 02/06/07
date타입 시분초 정보가 있지만 기본보여줄때만 년 월 일

 

 WHERE 절에 조건으로 사용할 수 있는 술어

술어 연산자 사용 예
비교 =, <>, <, <=, >, >= price < 20000
범위 BETWEEN price BETWEEN 10000 AND 20000
집합 IN, NOT IN price IN (10000, 20000, 30000)
패턴 LIKE bookname LIKE '축구의 역사'
NULL IS NULL, IS NOT NULL price IS NULL
복합조건 AND, OR, NOT (price < 20000) AND (bookname LIKE '축구의 역사')

 

'데이터베이스 > Oracle' 카테고리의 다른 글

방화벽 오라클만 풀기  (0) 2023.08.21
SQL 기본 예제 1  (0) 2023.08.21
SQL Developer 시작하기  (0) 2023.08.21
객체의 종류, 스키마, 모델링, 엔티티  (0) 2023.08.20
Oracle 설치  (0) 2023.08.17