Oracle 숫자,날짜,자료형 변환 함수 정리
2018-11-27 00:00:00 +0000숫자 함수
- ROUND(숫자,반올림위치)
- 숫자를 반올림 위치에서 반올림
- SELECT ROUND(10.12324,2) FROM DUAL;
- 결과 10.12
- TRUNC(숫자,버림위치)
- 숫자 반올림을 버림위치에서 무조건 버림
- SELECT TRUNC(10.1777,3) FROM DUAL;
- 결과 10.177
- CEIL(숫자)
- 정한 숫자에서 큰 정수를 반환
- SELECT CEIL(3.14) FROM DUAL;
- 결과 4
- FLOOR(숫자)
- 지정한 숫자에서 작은 정수를 반환
- SELECT FLOOR(3.14) FROM DUAL;
- 결과 3
- MOD(나눗셈 될 숫자, 나눌 숫자)
- 나머지 숫자를 구하는 함수
- SELECT MOD(10, 3) FROM DUAL;
- 결과 1
날짜 함수
- SYSDATE
- 현재 날짜를 반환하는 함수
- SELECT SYSDATE FROM DUAL;
- 결과 18/11/27
- ADD_MONTHS(SYSDATE, 더할개월)
- 몇 개월 이후의 날짜를 반환하는 함수
- SELECT ADD_MONTHS(SYSDATE,3) FROM DUAL;
- 결과 19/02/27
- MONTHS_BETWEEN(날짜 데이터1,날짜데이터2)
- 두 달간 날짜 차이를 구하는 함수
- SELECT ROUND(MONTHS_BETWEEN(‘2018-11-27’, ‘2019-02-28’),2) FROM DUAL;
- 결과 -3.03
자료형 반환
- 형변환을 사용하면 숫자 데이터<->문자 데이터<->날짜 데이터 끼리 변환이 가능하다
- TO_CHAR(날짜나 문자,문자형태)
- 날짜OR문자를 자신이 원하는 형태로 반환하는 함수
- SELECT TO_CHAR(SYSDATE, ‘YYYY/MM/DD HH24:MI:SS’) FROM DUAL;
- 결과 2018/11/27 18:55:58
- TO_NUMBER(문자,변환 숫자형태)
- 문자데이터를 숫자 형태로 반환하는 함수
- SELECT TO_NUMBER(‘5,000’, ‘999,999’) FROM DUAL;
- 결과 5000
- TO_DATE(문자,인식될 날짜형태)
- 문자 데이터를 날짜 데이터로 변환하는 함수
- SELECT TO_DATE(‘20181127’, ‘yyyy-mm-dd’) FROM DUAL;
- 결과 18/11/27
NULL 처리 함수
- NVL(NULL검사 데이터 OR 열, NULL 대체 문자)
- NULL일 경우 대체문자로 변경한다
Oracle 제약조건 정리
2018-11-27 00:00:00 +0000제약조건
- 데이터를 추가, 삭제, 수정하는 가운데 DB의 무결성을 유지
- 무결성이란 DB 데이터가 정확하고 기본 규칙을 지킨다는 뜻이다
| 종류 | 설명 |
|---|---|
| NOT NULL | NULL의 저장을 허용하지 않는다(반드시 값이 존재해야 됨), 중복여부와는 상관없다 |
| UNIQUE | 해당 컬럼에서 중복 데이터를 허용하지 않는다, NULL은 중복 대상에서 제외 |
| PRIMARY KEY | UNIQUE + NOT NULL 제약조건을 전부 가짐, 중복 데이터 허용X NULL 허용X, 자동으로 인덱스 생성됨 |
| FOREIGN KEY | 서로 다른 테이블 간 관계를 정의 함 |
| CHECK | 열에 저장할 수 있는 값의 범위, 패턴을 정의할 수 있음 |
| DEFAULT | 특정 열에 저장할 값이 지정되지 않았을 경우에 기본값을 지정 |
컬럼 레벨 제약 조건
- 컬럼을 생성할 때 데이터 타입 옆에 제약조건을 적는다
CREATE TABLE NAME(
ID VARCHAR(20) NOT NULL
);
테이블 레벨 방식
- 테이블 칼럼 을 전부 선언 후 제약조건을 나중에 선언하는 것
CREATE TABLE NAME(
PLAYER_ID VARCHAR(20) NOT NULL
CONSTRAINT 제약조건 이름 FOREIGN KEY(컬럼명)
REFERENCES 테이블(컬럼명)
);
테이블 수정 방식
- 테이블을 생성한 후 제약조건을 ALTER 수정하듯이 추가하는 것
CREATE TABLE NAME(
ID NUMBER,
PASS NUMBER
);
ALTER TABLE 테이블이름 ADD CONSTRAINT 제약조건 이름 PRIMARY KEY(컬럼 이름)
Oracle 기초 쿼리 정리
2018-11-26 00:00:00 +0000Database
- 서로 연관성을 가지며, 중복 없이 지속성으로 유지 관리해야 할 융용한 데이터들의 집합
- 데이터 저장을 위한 가장 원시적인 방법으로 데이터 파일 사용
- 데이터 파일 사용 시 중복 된 데이터 저장
- 대용량의 데이터를 관리하기 힘듬, 보안의 취약
- 파일의 단점으로 인해 Database 사용
DBMS란
- 데이터베이스 관리 시스템
- 대용량의 데이터를 쉽게 저장하고 효율적으로 검색, 수정,삭제 할 수 있는 환경을 제공해 주는 소프트웨어 Oracle SQL Develop 설치
Oracle 실행
- cmd 창 열어서 sqlplus/nolog 명령어 사용
- conn sys as sysdba명령어 치고 비밀번호를 치면 sql에 접속이 가능하다
user 생성 및 로그인
- user 생성
create user kosta192 identified by 1234;
- user 권한 전달
grant connect, resource, dba to kosta192;
- user 로그인
conn id/pass
- 파일가져오기
- cmd창에서 SQL 접속한 후 해당 sql파일 위치를 적고 엔터치면 프로시저가 실행된다
hr계정 unlock
conn / as sysdba
alter user hr identified by hr account unlock;
conn hr/hr
select * from tab;
scott계정 불러오기
conn system/1234
@C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql
alter user scott identified by tiger;
conn scott/tiger
select * from tab;
테이블 조회
- select * from table name;
- 테이블 구조 불러오기
- DESC 테이블 이름
- 별칭은 AS
- 아래 예제는 LAST_NAME 컬럼 이름을 ‘성’으로 변경해서 출력한다
SELECT EMPLOYEE_ID AS 사원번호, LAST_NAME AS "성" FROM employees
중복된 데이터 제거
- DUSTINCT
SELECT DISTINCT job_id From employees;
정렬 묶음 검색
- ORDER BY 절 사용
- 기준 필드를 내림차순 하고 싶다면 필드명 뒤에 DESC를 쓴다
SELECT eno, ename, sal from emp ORDER BY sal DESC
조건에 맞는 일부데이터 불러오기
- AND : 조건 두개 다 만족하는지 체크
select * from employees WHERE SALARY > 5000 AND SALARY < 10000
- BETWEEN AND : BETWEEN 과 AND 사이 값에 들어가는지 체크
select * from employees WHERE salary BETWEEN 5000 AND 10000
- OR 연산자 : 조건이 2개 일 때 하나라도 일치하는지 체크
select employee_id, last_name, job_id from employees where job_id='FI_MGR' OR job_id = 'FI_ACCOUNT';
- IN 연산자 : 조건이 두개일 때 체크. 둘 중 하나인지 체크
- 조건 연산자의 반복적인 작업들을 덜어줌
select employee_id, last_name, job_id from employees where job_id in('FI_MGR', 'FI_ACCOUNT')
- NOT 연산자 : 제외한다는 의미
- NOT을 사용하거나 <>,!= 기호 사용
SELECT department_id, department_name from departments where not department_id = 10;
SELECT department_id, department_name from departments where not department_id <> 10;
- IS NOT NULLL : NULL이 아닌지 체크
- NULL이 아닌 값만 출력
SELECT * FROM employees where commission_pct is not nullLIKE 연산자
- ‘김%’ ‘김’으로 시작하는 모든 문자열 예)김길동, 김박사, 김밥
- ‘%과’ ‘과’로 끝나는 모든 문자열 예)화학과, 인산과
- ‘%김%’ ‘김’이라는 문자를 포함하는 모든 문자열 예) 김씨, 돌김, 삼각김밥볶음밥
- ‘화_’ ‘화’로 시작하는 2글자 문자열 예) 화약, 화분
- ‘등’ ‘등’이 가운데 들어간 3글자 문자열 예)고등어, 영등포
그룹함수
- sum(), avg(), max(), count()
- select sum(salary) from employees;
GROUP BY
- GROUP BY절을 사용한 컬럼 단위로 묶어서 출력한다
- group by절에서 언급한 컬럼만 사용할 수 있다
SELECT department_id, avg(salary) from employees group by department_id
having절
- group by로 나온 group 에 또 조건을 걸고 싶을 때 사용
- 부서별 급여 평균이 5000 미만의 부서의 내역을 검색하라
select department_id, AVG(salary) from departments group by departement_id having avg(salary) < 5000
문제2775
2018-11-26 00:00:00 +0000문제
https://www.acmicpc.net/problem/2775
풀이
층과 호수가 있는 아파트를 2차원로 볼 수 있다
0층에는 i호는 i명이 살도록 저장하고
1층에는 아랫층(k - 1)의 1호(index 0)에서 n호수까지 값을 더하면
현재 k층, n호의 사람수를 구할 수 있다
층, 호 입력은 14층 까지 받으므로 15x15로 만들어야 한다
Source
import java.util.Scanner;
public class Main {
final static int MAX_ROW = 15; //층
final static int MAX_COL = 15; //호
static int[][] arr = new int[MAX_ROW][];
public static void main(String[] args) {
for(int row = 0; row < MAX_ROW; ++row) // 배열초기화
arr[row] = new int[MAX_COL];
for(int row = 1; row < MAX_ROW; ++row) // 1층 정보만 넣어주기
arr[0][row] = row;
for(int row = 1; row < MAX_ROW; ++row) // 값넣어주기, 층
for(int col = 1; col < MAX_ROW; ++col)// 호
for(int i = 0; i <= col; ++i) // 처음~계산하는 호수 까지 값 계속 더하기
arr[row][col] += arr[row-1][i];
Scanner sc = new Scanner(System.in);
final int roop = sc.nextInt();
int[][] test = new int[roop][]; // k, n 값 저장
for(int i = 0; i < roop; ++i){
test[i] = new int[2];
test[i][0] = sc.nextInt(); // 층
test[i][1] = sc.nextInt(); // 호
}
for(int i = 0; i < roop; ++i){
int k = test[i][0];
int n = test[i][1];
System.out.println(arr[k][n]);
}
}
}
재귀함수로 각 사람인원 수 저장하는 소스
import java.util.Scanner;
public class Main {
final static int MAX_ROW = 15; // 층 유저가 14층. 14호를 입력할 수 있으므로 15x15로 생성해야한다
final static int MAX_COL = 15; // 호
static int[][] arr = new int[MAX_ROW][];
public static int GetValue(int col, int row, int index, int sum) {
if (col + 1 == index) {
return sum;
}
sum += arr[row][index];
return GetValue(col, row, index + 1, sum);
}
public static void main(String[] args) {
for (int row = 0; row < MAX_ROW; ++row) // 배열초기화
arr[row] = new int[MAX_COL];
for (int row = 1; row < MAX_ROW; ++row) // 1층 정보만 넣어주기
arr[0][row] = row;
for (int row = 1; row < MAX_ROW; ++row) // 값넣어주기, 층
for (int col = 1; col < MAX_ROW; ++col) { // 호
arr[row][col] = GetValue(col, row - 1, 0, 0);
}
Scanner sc = new Scanner(System.in);
final int roop = sc.nextInt();
int[][] test = new int[roop][]; // k, n 값 저장
for (int i = 0; i < roop; ++i) {
test[i] = new int[2];
test[i][0] = sc.nextInt(); // 층
test[i][1] = sc.nextInt(); // 호
}
for (int i = 0; i < roop; ++i) {
int k = test[i][0];
int n = test[i][1];
System.out.println(arr[k][n]);
}
}
}
DFS
2018-11-21 00:00:00 +0000DFS(Depth First Search)
- 깊이 우선 탐색
- 루트 노드에서 자식노드로 이동
- 마지막 깊이에 도달한 경우 다시 상위 노드로 올라가 탐색을 재개한다
Source
- 아래는 임의의 숫자(NUM)의 순열을 나타내는 예제이다
public class Dfs {
final static int MAX = 7; // 배열 생성을 위한 임의의 수
final static int NUM = 3; // 깊이 값
static boolean[] visit = new boolean[MAX]; // 방문여부 체크
static int[] arr = new int[MAX]; // 값 저장
public static void dfs(final int depth){
// 지정한 깊이보다 현재 깊이가 더 크면 빠져나온다
if(NUM + 1 == depth){
// 출력
for(int i = 1; i <= NUM; ++i){
System.out.print(arr[i]+"");
}
System.out.println(" ");
}else{ // 탐색
for(int i = 1; i <= NUM; ++i){
if(false == visit[i]){ // 방문하지 않았다면
visit[i] = true; // 들어가지 않은 노드는 들어갔다고 표시를 한다
arr[depth] = i;
//System.out.println("depth:"+depth+" i:"+i);
dfs(depth+1); // 한단계 깊이 들어간다
visit[i] = false; // 최고 깊이에 도달해서 dfs 함수를 빠져나왔다
arr[depth] = 0; // 그래서 방문여부와 값을 초기화한다
}
}
}
}
public static void main(String[] args) {
dfs(1);
}
}
Posts
-
Interceptor(인터셉터)
-
Android Studio Install
-
계층형 게시판
-
VirtualBox Ubuntu 18.04.2 LTS
-
TransactionAwareDataSourceProxy Error
-
Java Coding Conventions
-
Java Long과 long의 차이
-
Mybatis 객체 안에 객체 매핑
-
JavaConfig mariadb 연결
-
DataTable
-
관리자 페이지
-
MappingJackson2JsonView
-
Spring Javaconfig
-
게시판 만들기-제품 등록
-
게시판 만들기-제품 페이지 제작
-
게시판 만들기-회원탈퇴 및 게시판 삭제 플래그 추가
-
footer 하단에 고정시키기
-
bootstrap4 사용법
-
Spring 데이터 검증 @Valid, BindingResult
-
brackets 실시간 미리보기
-
Spring 기본설정(pom.xml, web.xml, encoding)
-
Vue.js computed, methods, watch
-
javascript onkeyup
-
Maria DB Incorrect string value Error
-
javascript 암호화(md5, base64)
-
Vue.js template
-
Vue.js 소개
-
Nexacro 설명
-
ControllerAdvice
-
Batch
-
html 페이지 로딩 순서
-
소수구하기(PrimeNumber)
-
최소공배수,최대공약수
-
Stream
-
Lambda(람다식)
-
inner class(내부 클래스)
-
final 키워드
-
file upload
-
파이썬 빅 데이터 K-평균(K-means)
-
아나콘다(Anaconda), 주피터 개발환경 세팅
-
텐서플로우(TensorFlow) 아키텍쳐 및 Session
-
텐서플로우(TensorFlow)상수, 변수, 함수
-
머신러닝 기초
-
한글 리스트 오름차순, 내림차순
-
연속된 글자의 갯수 출력
-
java spring5 프로젝트 설정
-
restController
-
spring 세팅 및 기본설정
-
mybatis trim
-
jquery datepicker
-
ajax로 데이터 전달/응답 받는법
-
mybatis error
-
mybatis 게시판 만들기 순서
-
Java Jsp Mybatis Dynamic Query
-
mybatis
-
git 소개
-
node.js 개발환경 구축
-
node.js 기본 내장 모듈
-
node.js의 전역 객체
-
node.js http module
-
node.js event
-
jdbc
-
자바빈
-
jsp, servlet 정리
-
java null object pattern
-
다음지도 key 등록(kakao map)
-
공공 데이터 open api
-
facebook login api
-
sourcetree 사용법
-
JavaScript event3
-
JavaScript jquery
-
JavaScript dom
-
JavaScript ajax
-
JavaScript 이벤트2
-
JavaScript 캡슐화
-
JavaScript Array,내장객체
-
JavaScript var
-
JavaScript 객체,생성자
-
JavaScript 함수,클로저
-
JavaScript Event
-
javascript eclipse 자동완성(with tern)
-
CSS position
-
HTML5,CSS 선택자
-
자바 시간 측정
-
git,eclipse 연동
-
HTML 기초 정리
-
Eclipse Web 환경세팅
-
피보나치의 수
-
Oracle 반복문,커서,예외,저장 서브프로그램
-
Oracle PL/SQL
-
Oracle 다중쿼리(Multiple row query)
-
Oracle 인덱스, 뷰, 시퀀스, 트랜잭션, 세션 정리
-
Oracle JOIN 정리
-
Oracle DDL, DML 정리
-
Oracle 문자열 함수 정리
-
Oracle 숫자,날짜,자료형 변환 함수 정리
-
Oracle 제약조건 정리
-
Oracle 기초 쿼리 정리
-
문제2775
-
DFS
-
junit
-
json
-
algorithmus basic
-
circular queue(원형큐)
-
binary search(이진탐색)
-
port forwarding(포트포워딩)
-
kakao chatbot(카카오 챗봇)
-
java io
-
sort comparable, comparator
-
Unresolved compilation problem
-
ArrayList, HashMap
-
Regular(정규표현식)
-
Enum Class
-
String Function
-
refactoring 이란(상수,제어플래그,assert)
-
reference,abstract 정리
-
FileNotFoundException Solve
-
static
-
Thread Synchronization(스레드동기화,원자성)
-
Java Exception(예외처리)
-
Java 생성자, this, super
-
roomnum
-
BeeHouse
-
Git Reset, Revert
-
Git Log
-
Array
-
stack
-
pyramid draw
-
Star Draw(별 그리기4)
-
Star Draw(별 그리기3)
-
Star Draw(별 그리기2)
-
Star Draw(별 그리기1)
-
Loop(While, For)
-
자바 데이터 타입, 데이터 연산
-
시계방향 달팽이 그리기
-
정수값의 짝수,홀수 갯수 구하기
-
java, Scanner 정리
-
draw dog
subscribe via RSS