AI교육과정 - SQL.3

단비·2022년 10월 17일
0

AI교육과정

목록 보기
13/69
  • MySQL 계정관리
    • MySQL 계정관리
      • MySQL 8.0 Command Line Client 실행
      • 비밀번호 입력
      • show databases;
      • create database test;
    • DataBase 사용자 생성
      @'localhost' : 해당 컴퓨터에서만 접근 가능
      @'%' : 모든 클라이언트에서 접근 가능
      create user '계정명'@'localhost' IDENTIFIED BY '비밀번호';
      create user '계정명'@'%' IDENTIFIED BY '비밀번호';
    • DataBase 사용자 권한 생성
      • grant all privileges on : 데이터베이스의 테이블에 대한 권한 부여, (. : 모든 테이블)

      • flush privileges : 변경한 권한을 즉시 반영해주는 명령어

        grant all privileges on *.* to '계정명'@'%'; # 모든 데이터베이스의 모든 테이블에 대한 권한 부여
        grant all privileges on DB명.* to '계정명'@'%'; # 해당 DB의 모든 테이블에 대한 권한 부여
  • Union
    • 합집합을 나타내는 연산자로, 중복된 값을 제거함

    • 서로 같은 종류의 테이블(컬럼이 같아야함) 에서만 적용이 됨

      select * from 테이블1 union select *from 테이블2
  • Union all
    • 합집합을 나타내는 연산자로, 중복된 값을 제거하지 않음

      select * from 테이블1 union all select *from 테이블2
  • 서브쿼리(Subquery)
    • 다른 쿼리 내부에 포함되어 있는 select문을 의미
    • 서브쿼리를 포함하고 있는 쿼리를 외부쿼리라고 부르며, 서브쿼리는 내부쿼리라고도 부름
    • 서브쿼리는 괄호()로 감싸져서 표현
    • 서브쿼리는 메인쿼리 컬럼 사용 가능, 메인쿼리는 서브쿼리 컬럼 사용 불가
    • 서브쿼리의 실행 순서
      • 서브 쿼리 실행 → 메인 쿼리 실행
    • 서브쿼리 위치에 따른 명칭
      1. 스칼라 서브쿼리
        - 컬럼처럼 사용

        select 컬럼명1, (select..)
      2. 일반 서브쿼리
        - 하나의 변수(상수)처럼 사용

        where 컬럼명 연산자(select..)
      3. 인라인뷰
        - 하나의 테이블처럼 사용

        select 컬럼명1 from(select..) : 하나의 테이블처럼 사용 -> 인라인뷰
      • 조건에 값이 여러 개 리턴되면 any(in, or과 동일한 의미)를 사용

        select * from product where pro_name = any (select pro_name from product where pro_price in (100000,1400000));
      • all(and를 의미)은 도출된 모든 조건 값에 만족할 때

        select * from product where pro_price = all (select pro_name from product where pro_price in (1000000));
    • 서브쿼리 실행 조건
      • 서브쿼리는 select 문으로만 작성할 수 있음
      • 반드시 괄호() 안에 전좨
      • 서브쿼리 괄호가 끝나고 끝에 세미콜론을 찍지않음
      • order by 를 사용하지 못함
      • MySQL에서는 서브쿼리를 포함할 수 있는 외부 쿼리는 SELECT, INSERT, UPDATE, DELETE, SET, DO문
  • 트랜잭션(Transaction)
    • 사전적 의미(거래) → DB(분할이 불가능한 업무처리 단위)

      성공commit
      —> 부분완료—→ 완료
      활성중단(abort)
      (active)—→ 철회—→ 철회
      오류rollback
    • commit : 모든 작업들을 항상 처리하겠다고 확정하는 명령어로서, 해당 처리 과정을 DB에 영구 저장

    • rollback : 작업 중 문제가 발생되어 트랜잭션 처리 과정에서 발생한 변경사항을 모두 취소하는 명령어

    • 자동 커밋확인
      - autocommit : on 자동으로 commit해줌
      - set autocommit = 0(off) / set autocommit = 1(on)

      show variables like '%commit%';
    • 트랜잭션 예외

      • DDL문(create, drop, rename, truncate)은 트랜잭션의 rollback 대상이 아님
        • truncate : 개별적으로 행을 삭제할 수 없으며, 테이블 내부의 모든 행을 삭제

          트랜잭션 로그에 한 번만 기록하므로 delete보다 성능 면에서 빠름
          
          rollback이 불가능
          truncate table 테이블명;

  • JDBC(Java Database Connectivity)

    • 자바에서 DB 소프트웨어와 연결하여 프로그램을 개발하기 위해 사용하는 API(Application Programming Inerface)
    • 자바 어플리케이션 ←——————> JDBC API ←——————→ JDBC Driver ←——————→ MySQL
  • JDBC Driver 다운로드

  • 인텔리제이 JDBV 드라이버 추가

    • file → Project Structure → Library → +버튼 → Java → 드라이버 jar파일 선택 → ok
  • 라이브러리 (도구)

  • 프레임워크 (틀;비워져있는 건축물)

  • JDBC API를 통해 DBMS와 연결

    1. JDBC Driver를 로딩
      • Class.forName(”JDBC 드라이버 패키지명”);
      • Class.forName(”com.mysql.cj.jdbc.Driver”);
    2. JDBC API와 DBMS 연결
      • DriverManager.getConnection(주소, 아이디, 비밀번호);
        • 연결을 성공하면 Connection 객체가 생성 / 실패하면 Exception이 생성
      • 주소 : jdbc:mysql://ip주소//db명?useSSL=true
profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글