데이터베이스 계속

4579 단어 데이터베이스
본고는 기초 지식 학습 과정 중의 필기와 총결을 위해 이후의 복습과 참고로 제공한다
  • 다중 표 조회:
    --      
    CREATE TABLE dept(
        id INT PRIMARY KEY AUTO_INCREMENT,
        NAME VARCHAR(20)
    );
    
    INSERT INTO dept (NAME) VALUES ('   '),('   '),('   ');
    
    --      
    CREATE TABLE emp (
        id INT PRIMARY KEY AUTO_INCREMENT,
        NAME VARCHAR(10),
        gender CHAR(1), --   
        salary DOUBLE, --   
        join_date DATE, --     
        dept_id INT,
        FOREIGN KEY (dept_id) REFERENCES dept(id) --   ,     (      )
    );
    
    INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('  ',' ',7200,'2015-02-24',1);
    INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('  ',' ',3600,'2019-12-02',2);
    INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('  ',' ',9000,'2008-08-08',2);
    INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('  ',' ',5000,'2015-10-07',3);
    INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('  ',' ',4500,'2018-03-14',1);
  • 피리칼 적: 두 개의 집합 A, B.이 두 집합의 모든 구성 상황을 취하다.
  • 다중 표 조회의 분류:
  • 내부 접속 쿼리:
  • 스텔스 내연결:where 조건으로 쓸모없는 데이터 제거
  • 직원표의 명칭, 성별을 조회한다.부서 테이블의 이름
    SELECT 
        t1.name, --       
        t1.gender,--       
        t2.name --       
    FROM
        emp t1,
        dept t2
    WHERE 
        t1.`dept_id` = t2.`id`;
  • 명시적 내부 연결:
  • 문법:select 필드 목록from표명1[inner]join표명2on조건
  • SELECT * FROM emp JOIN dept ON emp.`dept_id` = dept.`id`;


  • 외부 접속 쿼리:
  • 좌측 외부 연결:
  • 문법:select 필드 목록from표1left[outer]join표2on조건;
  • 조회한 것은 왼쪽 표의 모든 데이터와 그 교차 부분이다.
  • 모든 직원 정보를 조회하고 직원이 부서가 있으면 부서명, 부서가 없으면 부서명을 표시하지 않는다.
  • SELECT     t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;


  • 우외 연결 동리
  • 하위 쿼리:
  • 개념: 조회에 삽입된 조회를 삽입된 조회라고 하는데 삽입된 조회를 하위 조회라고 한다.
  • 하위 조회의 다른 상황:
  • 하위 조회의 결과는 단행 단열이다. (연산자로 조회할 수 있다)
  • 직원 임금이 평균 임금보다 적은 사람을 조회하다
  • SELECT * FROM emp WHERE emp.salary < (SELECT AVG(salary) FROM emp);


  • 하위 조회의 결과는 여러 줄의 단열이다. (연산자 in)
  • '재무부'와'시장부'의 모든 직원 정보 조회
  • SELECT * FROM emp WHERE dept_id in(SELECT id FROM dept WHERE NAME ='재무부'OR NAME ='시장부');


  • 하위 조회의 결과는 여러 줄 다열이다. (하위 조회는 가상 테이블로 조회에 참여할 수 있다)
  • 직원의 입사 일자는 2016-11-11일 이후의 직원 정보 및 부서 정보 조회
  • SELECT * FROM dept t1 ,(SELECT * FROM emp WHERE emp.`join_date` > '2016-11-11') t2  WHERE t1.id = t2.dept_id;





  • 다중 표 조회 사례:
  • 트랜잭션
  • 개념: 만약에 여러 단계를 포함하는 업무 조작이 사무에 의해 관리된다면 이런 조작은 동시에 성공하거나 동시에 실패한다.
  • 작업:
  • 사무 열기: start transaction;
  • 롤백: 롤백;
  • 제출:commit;

  • 트랜잭션 제출의 두 가지 방법:
  • 자동 커밋:
  • mysql은 자동으로 제출됩니다
  • DML 문구는 자동으로 업무를 제출합니다.

  • 수동 커밋:
  • Oracle 데이터베이스는 기본적으로 수동으로 트랜잭션 커밋
  • 트랜잭션을 열고 제출해야 함

  • 트랜잭션의 기본 커밋 방식을 수정합니다.
  • 사무를 보는 기본 제출 방식: SELECT @@autocommit; -1 자동 커밋 0 은 수동 커밋
  • 기본 제출 방식 수정: set @@autocommit = 0;

  • 사무의 4대 특징:
  • 원자성: 분할할 수 없는 최소 조작 단위로 동시에 성공하거나 동시에 실패한다.
  • 지속성: 업무가 제출되거나 굴러간 후 데이터베이스는 데이터를 지속적으로 저장합니다.
  • 격리성: 여러 사무 사이.서로 독립하다.
  • 일관성: 트랜잭션 전후 데이터 총량은 변경되지 않음

  • DCL: 사용자 권한 관리
  • 사용자 관리
  • 사용자 추가:
  • 구문: CREATE USER'사용자 이름'@'호스트 이름'IDENTIFIED BY'비밀번호;

  • 사용자 삭제:
  • 구문: DROP USER'사용자 이름'@'호스트 이름'

  • 사용자 암호 수정:
  • UPDATE USER SET PASSWORD = PASSWORD('새 비밀번호') WHERE USER ='사용자 이름';
  • SET PASSWORD FOR'사용자 이름'@'호스트 이름'= PASSWORD('새 비밀번호');

  • 사용자 조회:
  • mysql 데이터베이스로 전환
  • USE myql;

  • user표 조회
  • SELECT * FROM USER;

  • 와일드카드:%는 모든 호스트에서 사용자가 데이터베이스에 로그인할 수 있음을 나타냅니다
  • .

  • 권한 부여 관리:
  • 쿼리 권한:,
  • SHOW GRANTS FOR'사용자 이름'@'호스트 이름';
  • SHOW GRANTS FOR 'lisi'@'%';

  • 권한 부여:
  • grant 권한 목록 on 데이터베이스 이름.테이블 이름 to '사용자 이름' @ '호스트 이름';

  • 권한 취소:
  • revoke 권한 목록 on 데이터베이스 이름.테이블 이름from '사용자 이름' @ '호스트 이름';
  • REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%';



  • 좋은 웹페이지 즐겨찾기