• join
    • 2개의 분산테이블에 있는 여러 컬럼 사용
    • ex) 맥시코에 사는 사원의 이름과 팀장 이름
  • 서브 쿼리
    • 두 개의 쿼리로 가능한거면
    • 특정 컬럼 안에서만 사용
    • ex) 맥시코에  사는 사원

 

셀프 조인

  • 실제 하나지만 두 개 테이블로 간주
  • 이름 다르게 해줘야함

 

SQL

mysql

  • 이체 작업
    • 뺀 만큼 마이너스, 넣은 만큼 플러스가 되어져야 하는 게 한 덩엉리에 되어져야한다. 
    • 두 작업이 모두 실패하거나, 성공하거나

-> 하나의 트랜잭션으로 묶는다. 

  • 무결한 데이터 처리 

 

  • 변화를 반영한다. 
    • 커밋한다. 
    • 최종적으로 반영하겠어. 
  • 지금부터 트랜잭션 시작이야라고 알려야함
    • 명시 안하면 DML 명령 수행할 때 마다 자동 커밋됨. (mysql 특징)
    • 명시하면 취소 가능 (올백)
  • 되돌려야겠어.
    • 올백

 

DDL

  • 트랜잭션이와 관련 X
  • 무조건 커밋 -> 만들어라고하면 만들어짐 

insert (create)

  • 없었던 행 추가
  • 열이름 생략될 경우, values다음에 나오는 값들의 순서 및 개수가 동일해야함
  • 자동으로 증가하는 AUTO_INCREMENT
    • 데이터를 집어넣을 때 없는 컬럼이라고 생각해도 된다. 
    • 숫자 형식만 가능
  • values대신에 select명령
    • 이미 만들어진 테이블에 입력
  • 에러나면 그 이후 처리 안 함
    • insert ignore 사용하면 무시하고 넘어감
  • 이미 존재하는 얘면 수정,

 

update (new)

  • 이미 존재하는 컬럼 변경하는 것
  • where절 생략되면 테이블 전체 행 내용 변경 됨
  • 올백하면 복구할 수 있음, 

 

delete

  • 테이블만 남겨두고 조건된 행 삭제(내용만 삭제)
  • drop table : 테이블 자체 삭제
  • where절 없으면 전체 데이터 삭제
  • 트랜잭션 사용 가능 : 로그 작업
  • truncate : 트랜잭션 적용 X
    • 삭제되면 끝, 복구 불가
    • 테이블 구조 남겨놓고 싶으면 효율적

 

with절

  • CTE를 표현하기 위한 구문
    • 일시적인 뷰 ( 수행하는 동안만 )
      • 뷰 
        • 저장소를 가지고 있지 않음
        • 자주 쓰는 selet명령이라고 생각하면 됨
        • 만들어놓고 계속 재활용할 수 있음
        • 복잡한 sql을 간략하게 하기 위해서 
        • 보안적
          • 뷰를 통해서만 가져갈수 있도록, 
          • 개발자들은 뷰만 쓸 수 있도록
          • 금융권에서 많이 사용함
        • select * from (뷰); 
          • 뷰를 테이블이라고 생각해도 무방

 


mysql의 데이터 형식

  • 숫자 데이터 형식
    • 정수 & 실수 : DECIMAL
  • 문자 데이터 형식
    • char(n) : 고정길이 문자형
      • 남은 길이는 공백으로 들어감
      • n : 문자 갯수
    • varchar(n) : 가변길이 문자형
      • 남은 공간은 없는 공간으로 취급
  • 날짜와 시간 데이터 형식
    • date
    • datetime 
  • 텍스트
    • longtext : 큰 텍스트 파일
    • longblob : 동영상 파일, 큰 바이너리 파일

 

데이터 형식과 형 변환

  • 내부 형 변환
  • 문자는 0으로 변환
    • select 0 = 'mega2', 결과 : 0
    • select 1 > '2mega', 결과 : 0

 

  • 암시적인 형 변환
    • cats() : 형변환하는 대상 as 타입
    • convert() " 대방 , 타입 길이

 


테이블 생성

  • auto_increment 는 primary key여야 한다.
  • 컬럼명 리스트 없으면 넣은 것 그대로 넣겠다. 
    • insert into usertbl values('---', '---', ,,,,)
  • 집어 넣을 값 없으면 null

 

제약조건

  • primary key 제약조건 
    • 행들 구별 할 수 있는 식별자 역활
    • primary key로 설정된 얘는 자동으로 index가 설정됨
  • foreign key
    • 가지고 있는 값 정해져 있다. 
    • on delect cascade 또는 ON UPDATE CASCADE
      • 참조하는 얘가 사라지면 나도 사라짐
      • ex) 게시판 댓글 
    • add, modify 상요해서 생성
  • unique 제약
    • 중복된 값 저장 X
    • null값 허용
      • 입력하지 않아도 되는데, 입력하면 유니크 해야한다.
  • check 제약 조건
    • mysql 8.부터 지원
    • 데이터 넣고 변경할 때마다, 이 컬럼에 저장하기 적합한 값인가를 본다. 
  • default 제약조건
    • 안 넣으면 자동으로 default값이 됨
    • null이 될 수 밖에 없는 상황에서 default값이 넣어짐
    • 값 넣어야 하는 부분에 안 넣었을 때 

 

  • 데이터 무결성을 위한 제약 조건
    • null 값 허용
      • primay key는 자동으로 not null
      • 공백과 0과 다름

 

테이블 수정

  • 열 추가 add, modify
  • 열 삭제 drop
  • chang column : 타입 바꾸기
  • 제약조건 수정
    • drop primary key
      • 하나의 테이블에 primary key 하나만 가능

 

'study > JAVA 전문가' 카테고리의 다른 글

JDBC 2  (0) 2021.12.21
JDBC  (0) 2021.12.20
mysql 4 - 연습문제  (0) 2021.12.20
Mysql 1 - 연습문제  (0) 2021.12.18
조인  (0) 2021.12.17

+ Recent posts