본문 바로가기

SQL11

[MySQL]DBeaver로 다른 테이블 데이터 가져오기 프로젝트 배포 중 개발 Database 테이블을 복사해와야 하는 상황이 발생했다. 나는 DBeaver로 데이터를 관리하는데 직관적이고 사용법이 간단해서 잘 쓰고 있고, DBeaver로 데이터를 간단히 옮기는 방법에 대해 기록하려 한다. 우선 테이블을 복사하는 방법은 너무 간단하다. 복사하고 싶은 데이터베이스의 테이블을 우클릭 후 Ctrl+C, 혹은 복사를 선택한 후 가져올 데이터베이스를 선택해 우클릭 후 Ctrl+V나 붙여넣기를 클릭하면 테이블이 복사된다. 당연히 테이블의 컬럼명,타입,PK 등도 그대로 가져와진다. (외래키는 따로 지정해줘야하는 것 같다.) 이렇게 테이블은 가져와졌는데 문제는 테이블의 데이터까지 복사되지는 않아서 방법을 찾아야 한다. 파일을 추출하거나 터미널 명령어로 가져오는 방법이 있는.. 2023. 9. 15.
[SQL] 프로시저와 트리거의 차이점 트리거 (TRIGGER) 특정한 테이블에 INSERT,UPDATE,DELETE와 같은 DML문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 저장 프로그램. (사용자가 직접 호출하여 사용하는게 아닌 데이터베이스에서 자동으로 수행) 데이터의 무결성과 일관성을 위해 사용자 정의 함수를 사용하는 것이 트리거의 용도이다. 2023. 2. 12.
[SQL] RANK, DENSE_RANK, ROW_NUMBER 순위함수 1. RANK RANK 함수는 중복 값들에 대해서 동일 순위로 표시하고, 중복 순위 다음 값에 대해서는 중복 개수만큼 떨어진 순위로 출력하도록 하는 함수 입니다. SELECT empNo, empName, salary, RANK() OVER (ORDER BY salary DESC) RANK등수 FROM employee; 2. DENSE_RANK DENSE_RANK 함수는 중복 값들에 대해서 동일 순위로 표시하고, 중복 순위 다음 값에 대해서는 중복 값 개수와 상관없이 순차적인 순위 값을 출력하도록 하는 함수 입니다. SELECT empNo, empName, salary, DENSE_RANK() OVER (ORDER BY salary DESC) DENSE_RANK등수 FROM employee; 3. ROW_.. 2023. 2. 12.
[SQL] 서브쿼리 서브쿼리 (Sub Query) SELECT 쿼리문 안에 포함 되어있는 또 하나의 별도 SELECT 쿼리문을 말한다. 1. 단일 행 서브쿼리 (Single Row SubQuery) SELECT절에서 단일 행 연산자를 사용하여 서브쿼리의 결과 값을 하나만 출력하는 쿼리이다. (※ 단일 행 연산자) : >, 2023. 2. 12.
[SQL] 인라인 뷰 (Inline View) 인라인 뷰 (Inline View) FROM 절에서 사용되는 서브쿼리를 인라인 뷰(Inline View) 라고 한다. 서브쿼리의 결과가 마치 실행 시에 동적으로 생성된 테이블인 것처럼 사용할 수 있다. 인라인 뷰는 SQL문이 실행될 때만 임시적으로 생성되는 동적인 뷰이기 때문에 데이터베이스에 해당 정보가 저장되지 않는다. SELECT * FROM ([SELECT [컬럼 1], [컬럼 2], ... FROM [테이블] WHERE [조건절] ) AS InlineView_table WHERE [조건절] /* FROM 절에 인라인뷰를 사용하여 원하는 테이블을 만들어 테이블로 만들어 사용할 수 있다.*/ /* 테이블 예시 */ tb_Student 테이블 ---------------------------------.. 2023. 2. 12.
[SQL] 뷰(VIEW) 뷰(view) 하나 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블 - 기본 테이블은 디스크에 공간이 할당되어 데이터를 저장함 - 뷰는 데이터 딕셔너리 (Data Dictionary) 테이블에 뷰에 대한 정의 (SQL 문) 만 저장되어 디스크 저장 공간 할당이 이루어지지 않음 - 전체 데이터 중에서 일부만 접근할 수 있도록 함 - 뷰에 대한 수정 결과는 뷰를 정의한 기본 테이블에 적용됨 - 뷰를 정의한 기본 테이블에서 정의된 무결성 제약조건은 그대로 유지됨 뷰의 필요성 - 사용자 마다 특정 객체만 조회할 수 있도록 할 필요가 있음 (모든 직원에 대한 정보를 모든 사원이 볼 수 있도록 하면 안 됨) - 복잡한 질의문을 단순화 할 수 있음 - 데이터의 중복성을 최소화할 수 있음 예) 판매부에.. 2023. 2. 12.
[SQL] 집합연산자 2023. 2. 9.
JOIN 핵심정리 INNER JOIN INNER JOIN은 OUTER JOIN과 대비하여 내부 JOIN이라고 하며 JOIN 조건에서 동일한 값이 있는 행만 반환된다. CROSS JOIN 테이블 간 JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합(카타시안 곱)을 말한다. 결과는 양쪽 집합의 M*N 건의 데이터 조합이 발생한다. LEFT OUTER JOIN 조인 수행시 먼저 표기된 좌측 테이블에 해당하는 데이터를 먼저 읽은 후, 나중 표기된 우측 테이블에서 JOIN 대상 데이터를 읽어 온다. 즉, TABLE A와 B가 있을 때 (TABLE 'A'가 기준이 됨), A와 B를 비교해서 B의 조인 칼럼에서 같은 값이 있을 때 그 해당 데이터를 가져오고, B의 JOIN 칼럼에서 같은 값이 없는 경우에는 B테이블에서 가져.. 2023. 2. 9.
GROUP BY , HAVING GROUP BY 집계함수를 사용하여 특정 그룹으로 구분 할 때는 GROUP BY 절을 사용한다. SELECT deptno, MIN(sal) FROM emp GROUP BY deptno; HAVING 집계함수를 사용하여 조건비교를 할 때 HAVING 절을 사용한다. SELECT b.dname, COUNT(a.empno) "사원수" FROM emp a, dept b WHERE a.deptno = b.deptno GROUP BY dname HAVING COUNT(a.empno) > 5; GROUP BY절과 HAVING절의 특성 GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT 절에 집계 함수를 사용한다. 집계 함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행한다. GROUP BY 절에.. 2023. 2. 8.