DATABASE3

다원·2022년 12월 17일
0

DATABASE

목록 보기
4/13

DESCRIBE

테이블의 구조를 확인할 때 실행

AS

테이블 열의 이름을 지정할 수 있음
AS 테이블명 지정을 Order by에서 사용할 수 있으나, group_having 안에서는 사용되지 않음 ?

Escape 문자 %를 의미

like'A%0'식으로 했을 때의 %와, 문자로의 %가 같으므로,
\%: ESCAPE 문자임을 나타냄
A\%0: A%로 시작되는 데이터를 출력한다는 의미
A%: A로 시작되는 모든 데이터 출력한다는 의미

Group by

쿼리할 대상들을 그룹으로 묶는데 사용
쿼리문으로 얻은 결과를 group by 절에 명시한 사항으로 그룹화한 뒤, 그룹에 SQL 집합 함수를 사용해서 다양한 결과를 얻을 수 있음
즉 단일 쿼리를 사용하지 못할 경우, 여러개의 행을 집합함수를 사용하고자 할 때에는 Group by로 지정된 컬럼만 사용 가능

having

Group by 다음에 오는 조건절은 where이 아닌 having 절로 작성함

함수

DB에서는 데이터가 어떠한 형태라도 입력되어져 있으면 목적에 맞게, 변형해서 원하는 형태로 만들어 볼 수 있음

  • round (): 특정 소수점에서 반올림하여 값 출력
    round (대상,2): 소수점 3번째 자리에서 반올림하여 출력
  • trunc (): 반올림 하지 않고 값을 절삭
    trunc(대상,0): 정수 부분에서 절삭
  • TO_CHAR and TO_DATE
    TO_CHAR(대상,'변경') : 날짜형-> 문자형으로 변경
  • count 함수
    열의 수를 구해주는 함수

DUAL TABLE

데이터가 없는 가짜 테이블, SQL 구문에서는 SELECT FROM 테이블명 이므로 테이블이 필요하기 때문에, 가짜 테이블 둠
테이블에서 값을 가져오는게 아니라, 값을 구하기만 할거면 DUAL TABLE을 사용하여 실행

단일 행 함수

함수가 한번에 하나의 행에 적용되어 하나의 결과를 반환
MOD(M,N)

round, trunc

WIDTH_BUCKET(값,범위의 시작, 범위의 끝, 분할값)

문자함수

LOWER(CHAR): 소문자로 정렬
UPPER(CHAR): 대문자로 정렬
SUBSTR(str, 시작자리수,추가자리수) 시작자리수부터 추가자리수까지 출력
시작지라수가 -일 경우 끝에서 이동한 후 추가자리 수 만큼 우측으로 이동
REPLACE(str,변경될 문자,변경할 문자): 지정한 문자열을 변경
변경할 문자열에 아무것도 입력하지 않을 경우 변경될 문자를 삭제한다는 의미가 될 수 있음
LTRIM,RTRIM
INITCAP(str): 첫번째 단어를 대문자로 입력
LENGTH(str): 문자열에 길이 호가인
INSTR
LPAD('str',설정 자리 수,'빈칸에 입력'): 왼쪽으로 쪽수를 맞춰줌
RPAd:LPAD와 유사하나 오른쪽으로 쪽수를 맞춤
CONCAT(데이터항목,데이터항목): 데이터를 합쳐서 출력
=> ||''|| = concat(,concat('',)) 중간에 띄어쓰기를 입력하여 데이터 출력

날짜 함수

SYSDATE: 오늘 날짜 출력
ADD_MONTHS(지정한 날짜, 더하고자 하는 달의 수)
: 지정한 날짜+ 더하고자하는 달의 수
LAST_DAY(): ()안에 넣어진 날부터 월 마지막
=> last_dat(sysdate)-sysdate: 월의 마지막 날까지 날은 날 출력

MONTHS_BETWEEN:

변환 함수

TO_CHAR: 문자로 변경하여 출력

  • 123.45를
    999.999 = 123.450
    9999= 123
    999,999 = 12,345
    시간 출력 시= HH24:MI:SS 년월일요일= YY-MM-DD-DY
    TO_DATE: 문자를 날짜 데이터로 변환
    TO_NUMBER(TO_CHAR) 문자를 숫자로 변경 -> 계산을 위해 변경

    기타 함수

    CAST
    CONVERT
    DECODE(EXPR,조건,참,거짓) 조건? 참: 거짓 구문과 같음


    DECODE함수로 처리 할 수 없는 부분은 CASE WHEN으로 처리할 수도 있음
    위의 함수를 CASE WHEN 함수로 처리한 코드

NVL: null 값 처리

집합 함수

함수를 적용할 때 over(partition by ~:gruop by 와 유사함), over (order by~) ()안에 대상으로 해서 분석함수를 적용


over 를 통해 department_id를 파티션하며 avg(salary)값을 구함
group by를 사용할 경우 개인의 salary값과 avg (salary)가 같이 쿼리되기에 에러가 발생


AVG,SUM,MAX,MIN
COUNT
ROWNUM
RANK
select to_char(hire_date,'yyyy'), count(employee_id), max(salary), min(salary) from employees1
group by to_char(hire_date,'yyyy')
order by to)char(hire_Date, 'yyyy')

LANK를 사용할 땐 정렬을 해야 사용할 수 있음
OVER 함수 안에 order by를 사용하여 정렬이 필요

LANK 안에 인자값을 주고 사용할 경우 within group을 사용하면 됨
![](https://velog.velcdn.com/images/dawon22/po

정규표현식

숫자, 문자 ,기호 등을 주어진 패턴으로 찾아내서 적용시키는 기법
대부분 프로그래밍 언어와 유사
REGEXPLIKE: 검색 값은 검색할 문자열, 패턴은 검색할 특정문자, 매치옵션은 찾고자 하는 문자 등

REGEXP_SUBSTR: 문자열 일부 추출

REGEXP_REPLACE: 구문은 특정 패턴과 매치되는 부분을 바꿔준다.

정규 표현식 클래스

클래스 [[:digit:]] 숫자, [[:alpha:]] 문자, [[:alnum]:] 숫자와 문자를 대표
{3} 3개의 숫자이고, () 하나의 그룹으로 처리

테이블

데이터는 테이블의 형태로 관리되는데 테이블 구성하는 요소 지정하고 필요하면 컬럼에 제약 조건 지정이 가능
데이터가 없으면 빈칸이나 널 값을 입력해서 열의 갯수를 맞추어야함
10개의 데이터에 6개의 데이터를 지정한뒤 테이블에 넣어주면 됨

데이터 타입

데이터에는 다양한 값이 존재하므로 데이터를 입력할 때에는 데이터 타입을 지정하는데, (char), 숫자 number, date 등을 저장하는 LOB가 있음
A. 문자 고정길이 문자를 정하는 CHAR, 한글의 1자는 영어의 2자이므로 CHAR(10)으로 데이터 크기 지정할 시 영어는 10개의 문자가 들어가지만, 한글은 5개의 문자만 들어 갈 수 있음을 유의해야됨, 가변길이의 VARCHAR, VARCAHR2(한글)
B. 숫자: 정수는 NUBMER 실수의 경우 FLOAT
숫자는 NUMBER로 지정하는 것이 좋음 왜? 가변적으로 사용하기위해?

C. 날짜와 시간: DATA타입인 SYSDATE 사용, SYSTIMESTAMP 소수점 이하 6자리까지 반환, -> 별도의 테이블 생성없이, 바로 쿼리해서 사용할 수 있음





COMMIT :

메모리에 들어가 있는 걸 마무리 해주어야, 똑같은 USER로 들어가도 다른 노드에서 접속하게 되면 확인 할 수 없음 이를 보이게 하기 위해 테이블을 COMMIT해야함

update

테이블을 update 하고자 할 때 특정 컬럼의 변경과 입력을 update명령어를 입력하여 변경

열 추가

ALTGER TABLE ()
ADD(addr varchar2(30)) : addr라는 이름을 가진 열을 테이블에 추가하게 됨

열의 이름 변경

rename column (바꾸고자 하는 열 이름) to (변경할 열 이름)

modify 속성 변경

drop 열 삭제

delete 특정 행 삭제

데이터만 삭제하고, 데이터의 틀은 그대로 두는 방식




delete는 데이터만 삭제하지 틀은 그대로 두고, 테이블 전체를 삭제하는 것은 drop

부분적으로 테이블 복사

where절을 이용해 복사하고자 하는 테이블 뒤에 거짓 조건을 넣어,



틀만 있고 데이터가 복사가 되지 않음을 확인 할 수 있음

테이블 분할

원본 데이터 열들에서 원하는 열 항목만 빼서 빈 테이블을 만들 수 있음


거짓 조건이 없으면 테이블의 데이터까지 가져 올 수 있음

insert into () select * from ();

빈테이블과 복사해오는 데이터의 항목명과 데이터 타입이 일치하면, 테이블에 데이터를 입력할 수 있음
select문을 이용하여, 입력하고자 하는 데이터를 넣을 수 있음


table 이름 변경 시 rename W

rename colum과 다름: 컬럼을 변경하는 것이기 때문, 테이블의 열의 이름을 변경하는 것

데이터를 가져올 때 갯수 조정 가능

profile
공부일지,

0개의 댓글