[TIL] RDBMS

TIL / / 2021. 9. 6. 18:32

Relation DBMS (관계형 데이터베이스 시스템) : 테이블 기반 DBMS

 

예전 DB의 학생테이블

ex) 학생 테이블 : 학번, 이름, 과, 수강과목1, 수강과목2, 수강과목3 ,,,,, ,, 수강과목 400

 

이제는 수강과목 테이블을 따로 만들어 연결(JOIN) 함. --> 학생테이블과 수강과목 테이블은 관계를 맺고 있다.!!

ex) 수강과목 테이블 : 학번, 수강과목

 

create table student(
	no int auto_increment primary key,
    class_title char(5),   #참조키로 사용하자 뒤에 제약사항 작성하자
    name varchar(100) not null,
    age int,      # java에서는 디폴트 초기화가 각 타입별로 있다. database에서는 데이터타입과 상관없이 null (없다 라는 의미)
    email varchar(50),
    height float(5,1),
    birth date,
    joined timestamp default current_timestamp,
    #테이블에 제약사항 설정  constraint , 제약사항이름 , 제약사항 종류  , 제약사항 내용
    constraint ref_class foreign key(class_title) references class(title)
);

 

 

char  : 고정된 사이즈를 갖는 데이터에 한해서는 오히려 시간,메모리적으로 더 효율적으로 사용가능 

varchar  : 가변적인 문자열 형태 이기 때문에 일반적인 상황에서 사용

 


commit 을 해야 원본데이터베이스에 기록이 된다. (그 전까지는 가상의 테이블을 조작하고 있는 것)

auto commit 설정이 되어있지만, 그 옵션을 끄게 될 경우

같은 데이터베이스를 조작하는 A와 B가 있을 때, A가 어떠한 칼럼에 update 또는 delete 를 수행하고 commit을 안하게 되면 다른 사용자 B는 트랜잭션이 종료가 안되어있기 때문에 무한 대기상태에 빠지게 된다. (----> A가 commit을 해서 트랜잭션을 종료시켜야 루프에 빠져나올수 있음)

 

drop table : 테이블을 날려라

delete from tableName : 데이터를 날려라

 

DML과 같은 연산들은 트랜잭션 수행이 되는데 반해, drop 이나 truncate 는 트랜잭션이 수행안됨. --> 따라서 rollback 이 안된다.

데이터의 개수와 함수의 결과가 같은 함수 ---> 단일행함수 ex) length ceil, replace,  ... 

데이터의 개수와 함수의 결과가 다름  --> 집계함수  ex) sum, max, avg, count   ...

 

일반 컬럼이집계함수와 사용될 때는 반드시 group by절에 묶여야 한다.!

select department_id, max(salary)

from employment

group by department_id;

 

전체 데이터에 대해 필터링을 걸때는 where절을 이용.

group by 결과에다가 필터링을 걸때는 having절을 이용

 

sql 작업 순서 : select 밑의 구문 부터 ~ 실행후 마지막에 select + order by 있으면 order by 구문을 마지막에 수행

 

문자열의 일부분을 가져오는 함수 3가지 right / left / mid 

  • LEFT : 문자에 왼쪽을 기준으로 일정 갯수를 가져오는 함수.
  • MID : 문자에 지정한 시작 위치를 기준으로 일정 갯수를 가져오는 함수.
  • RIGHT : 문자에 오른쪽을 기준으로 일정 갯수를 가져오는 함수.                                                                   * 참고로 MID 함수는  SUBSTR과 SUBSTRING 함수의 동의어

lpad / rpad : 왼쪽/오른쪽에 특정문자를 원하는 자리수만큼 채워서 반환한다.

사용법 : LPAD(원본문자열 , 원하는 자리수, 채울 문자열)

ex ) SELECT LPAD('ABC',10,'0')  FROM DUAL;        // 결과 : 0000000ABC



'TIL' 카테고리의 다른 글

[TIL] 인덱스, 뷰  (0) 2021.09.09
[TIL] JOIN, SubQuery  (0) 2021.09.08
[TIL] 코딩테스트에 많이 쓰이는 함수들(JAVA)  (0) 2021.09.02
[TIL] ajax  (0) 2021.09.02
프로그래머스 네트워크 Java  (0) 2021.08.29
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기