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 null
LIKE 연산자
- ‘김%’ ‘김’으로 시작하는 모든 문자열 예)김길동, 김박사, 김밥
- ‘%과’ ‘과’로 끝나는 모든 문자열 예)화학과, 인산과
- ‘%김%’ ‘김’이라는 문자를 포함하는 모든 문자열 예) 김씨, 돌김, 삼각김밥볶음밥
- ‘화_’ ‘화’로 시작하는 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