SQL 사용 환경 구축(Oracle) / SELECT

Cheol·2023년 5월 9일

SQL

목록 보기
1/7
post-thumbnail

edu day 1

웹 개발자가 되기 위한 공부를 시작하기 위해 DB/SQL먼저 배워보겠다.

Setting

  1. Database(DB): 데이터의 집합, 관계형데이터베이스(RDB)
  2. Database mangement system(DBMS): 데이터베이스 관리 시스템(or 관리 프로그램)
    ex)mysql, maria DB, Oracle DBMS - RDBMS
  3. Oracle DBMS : 11g xe 버전 사용
    3-1 DBMS 설치: 관리자 계정 로그인 sys/oracle
    일반 사용자 계정 생성, 사용 권한 부여 scott/tiger
alter user scott IDENTIFIED by tiger; -- 계정 정보 수정(scott 계정의 비밀번호를 tiger로 변경)
create user scott IDENTIFIED by tiger; : 계정(스키마) 생성
GRANT connect, resource to scott; : sys계정에서 scott에 접속 권한 부여


scott/tiger 계정 로그인, 데이터 집합 table생성 사용
row == 행 == 레코드 || col == 열**
포트: 전화번호같은 개념
jdk가 포함되어있는 버전을 설치한다면 두 가지를 따로 설치할 필요X
4. Oracle용 gui프로그램: sqldeveloper 사용

자바로 만들 수 있는 프로그램

  1. Application
  2. Web Application : 웹사이트 구축
    ==>front-end/back-end

Learning 과정

-> 데이터베이스, html, css (웹 화면 구현)
-> java - app 작성(자바프로그래밍 기초)
-> jdbc - 자바 + DB연동
-> javascript - Web(front-end)
-> servlet-jsp - Web(back-end) + mini-project 구축
-> spring, spring boot - Web(back-end)
-> vue, react: Web(front-end)(간단하게 배움)
-> Git - 협업, bootstrap + node.js : front-end

table = record * column
oracle에서 사용: sql
모든 db에서 사용: ANSI

---

SQL 문장의 종류(Database command)

  1. 질의어, 검색어, DQL : 검색 시 사용 데이터 변경이 안된다. select (데이터 검색)
  2. 데이터 조작어 DML: 데이터 변경(조작), insert, delete, update (데이터 입력, 삭제, 수정)
  3. 데이터 정의어 DDL: 테이블 구조 정의어, create, alter, drop, rename, truncate (객체 생성, 수정, 삭제, 이름변경, 저장공간 삭제)
  4. 트랜잭션 처리어 TCL : commit, rollback, savepoint
  5. 데이터 제어어 DCL : 계정생성, 권한부여 명령어, create user, grant....

-> SQL언어는 대소문자 구분이 없다. but 명령어가 아닌 찾고자하는 데이터의 문자는 대소문자 구분이 있다.

Select - 사용자 계정이 소유한 테이블 목록 보기

select * from [테이블명]  -- 테이블에 저장된 모든 데이터를 본다.
select [컬럼명1], [컬럼명2] from [테이블명] -- 테이블에 저장된 지정한 데이터를 본다.


Desc(describe) - 특정 테이블 컬럼 구조 보기

DESC [테이블명]
DESCRIBE [테이블명]

기본적인 SELECT 문법

SELECT [DISTINCT] { *, column [alias],...} FROM table; -- 기본
SELECT * From emp where ROWNUM < 10; -- where : 행에 대한 검색조건, 레코드 갯수 제약

별칭(alias)

SELECT EMPNO 사번, ENAME 성명, SAL 급여 FROM EMP; -- 1. as 사용 안함
SELECT EMPNO AS 사번, ENAME AS 성명, SAL AS 급여 FROM EMP; -- 2. as 사용
SELECT EMPNO AS "사 번", ENAME AS 성명, SAL AS 급여 FROM EMP; -- 3. 주의 사항 : 별칭에 공백문자, 특수문자 사용시 별칭을 큰따옴표 " " 로 묶어준다.

dual table

  • 마땅히 기술할 테이블이 없을 때 사용하는 테이블
SELECT 245*567 FROM DUAL;
SELECT SYSDATE FROM DUAL;	--SYSDATE 중요!!
SELECT SYSDATE+1 FROM DUAL;

Difference of sql/java

java 문자열 : "abc"
오라클 DBMS

  • " " : 별칭(alias) 띄어쓰기
  • ' ' : 문자열, 날짜
    ex) select * from emp;
select * from emp where ename='SMITH'; --문자, 날짜 ' ' 사용
select * from emp where ename="SMITH"; --문자, 날짜 " " 사용 시 에러

널(NULL)

  • 오라클은 컬럼에 기본적으로 null값을 허용하며 제약조건(not null)을 이용하여 null값을 허용하지 않을 수도 있다. 주의할 점은 null값의 연산결과는 null값으로 나온다.
  • null값의 비교는 IS NULL , IS NOT NULL 이라는 정해진 문구를 사용해야 제대로 된 결과를 얻을 수 있다.
select * from emp where comm=null;  -- null, 값없음, 비교, 계산 불가
select * from emp where comm is null;   --is null을 이용한 비교
select * from emp where comm is not null;   --is not null을 이용한 비교
select ename, comm, comm+100 from emp; -- null은 계산 불가. 100을 더해도 결과가 null

NVL(컬럼명,기본값) : 컬럼에 해당하는 값이 NULL값일 때 기본값으로 변경.
NVL2(컬럼명,A,B) : 삼항연산자와 유사한 기능, NULL일 경우 B의 숫자로, NULL이 아닐 경우 A의 숫자로 변경

SELECT ENAME, COMM, NVL(COMM,0) NVL변환값 FROM EMP;	--컬럼값이 NULL값일 때 0으로 바꾼다.
SELECT ENAME, COMM, NVL(COMM,0) NVL변환값, SAL, SAL+COMM FROM EMP;	--SAL+COMM은 COMM 컬럼의 값이 NULL값을 더하면 NULL이 나온다.
SELECT ENAME, COMM, NVL(COMM,0) NVL변환값, SAL, SAL+COMM, SAL+NVL(COMM,0) FROM EMP; -- NULL값을 0으로 변환하여 더해준다.
SELECT ENAME, COMM, NVL2(COMM,0,1) NVL변환값 FROM EMP;	-- NVL2(COMM, 0, 1)은 NULL값일때 1, NULL값이 아닐 때 0을 출력

컬럼, 문자열의 연결 '||'

SELECT ENAME || JOB "이름 직업" FROM EMP; -- ENAME과 JOB을 합침
SELECT ENAME || '의 직업은 ' || JOB || '입니다.' "이름 직업" FROM EMP; 
SELECT DEPTNO || '번 부서의 지역은 ' || LOC ||' 입니다.' "부서 지역" FROM DEPT WHERE DEPTNO = 10; --10번 부서의 지역은 NEW YORK 입니다. => 부서 지역 별칭




연습문제

--MGR이 NULL인 킹제외한 모든 사원 SELECT
--사원이름, 월급, 커미션(NULL=>0)으로 표시,
--연봉 = (월급*12) + 커미션

SELECT ENAME 사원이름, SAL 월급 , NVL(COMM, 0) 커미션, SAL*12 + NVL(COMM,0) 연봉 FROM EMP WHERE MGR is not null;

SQL 단축키

Alt + f10 : 계정전환
Ctrl + f7 : 보는법 전환
Ctrl + / : 해당 줄 주석처리

0개의 댓글