목록DataBase/mysql (8)
만족
SELECT table_schema "DB Name", Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" FROM information_schema.tables GROUP BY table_schema; 위 SQL로 확인해볼 수 있다. 정상적으로 잘 표시되는 것을 확인할 수 있다. 수정 없이 그대로 갖다 붙이면 된다.
부속질의문(Sub-query): 다른 SELECT 문에 포함되어지는 SELECT 문 중첩질의문(Nested-query): 하나 이상의 부속질의문을 포함하는 SELECT 문 SELECT * FROM ( SELECT * FROM Person WHERE city='서울' ) P WHERE name='홍길동'; => 서울에 사는 사람들 중 이름이 홍길동인 사람 모두 출력 에서 붉은색이 중첩질의문, 초록색이 부속질의문이다. 너무 용어에 얽메일 필요는 없다. 주의할 점은 부속질의문의 결과를 외부에서 사용(참조)하고자 할 때는 반드시 부속질의문에 Alias를 붙여주어야 한다는 점이다 SELECT 절의 부속질의문 SELECT city, (SELECT count(*) FROM Person ip WHERE ip.perso..
조인에 개념에 대해 아예 무지한 상태라면 아래 포스트를 읽고 오는 것을 추천한다. satisfactoryplace.tistory.com/201?category=933598 [Database] 관계대수 (Relational Algebra): 조인(JOIN), 외부 합집합(OUTER UNION) 세타조인, 동일조인, 자연조인, 세미조인, 외부조인에 대해 알아보자. 조인은 기본적으로 두 개의 릴레이션에 대해 진행하는 연산으로 이항 연산자이며, 두 개의 릴레이션에서 공통된 애트리뷰 satisfactoryplace.tistory.com SQL에서 조인은 2개 이상의 테이블에 대해 특정 조건을 만족하는 rows끼리 결합하여 새로운 테이블을 만드는 연산이다. 이 때 대상 테이블은 서로 같을 수도 있고, 다를 수도 있..
집계함수: Aggregation 집계 함수는 말 그대로 어떤 열에 대해, 여러개의 행을 집계한 값을 반환한다. SELECT COUNT(*) FROM student; 와 같이 사용하면 결과값의 행은 1개이고, 거기에 student 행의 갯수를 출력한다. count(*) 3 단, 집계 함수를 사용하면 SELECT 출력에서 일반 열은 사용할 수 없고 집계 함수만 사용할 수 있다. 집계 함수의 종류 MAX(열 이름): 해당 열의 최댓값 출력 AVG(열 이름): 해당 열의 평균값 출력 MIN(열 이름): 해당 열의 최솟값 출력 등 여러가지가 있다. 집계 함수에서 DISTINCT 단순히 집계함수(열 이름)하면 모든 열에 대해 계산한 값을 하나의 행에 전달한다. category hospital_name city 정형..
이번에는 열 이름 위치에 추가적으로 사용할 수 있는 DISTINCT와 ALIAS에 대해 알아보겠다. DISTINCT 해당 열의 중복을 제거하는 방법이다. 가령 학교 학생의 과 정보를 저장하는 major 테이블이 아래와 같다고 해보자 student_id major_name 1234 컴퓨터공학 1234 화학공학 9999 기계공학 8888 전자공학 이 테이블에서 학번 리스트를 중복 없이 뽑고 싶다면 SELECT student_id FROM major; 가 아닌 SELECT DISTINCT student_id FROM major; 를 사용해 중복되는 student_id(1234)를 한 번만 표시할 수 있다. ALIAS 열 이름이 지저분하다거나, 테이블 형태를 바꿀 수 없는데 열 이름이 부적절한 상황, 두 개 이..
셀렉트는 일정 조건에 따라 새로운 테이블을 만드는 키워드이다. SELECT 열이름[, 열이름2, ...] FROM 테이블이름 [WHERE 조건식1 ...] [ORDER BY 열이름 [ASC|DESC]] [LIMIT 출력행갯수]; 일단 간단한 서식은 위와 같다. ([]는 생략 가능하다) student_id student_name 1 홍길동 2 길동홍 3 동홍길 (student 테이블) SELECT student_name FROM student; student_name 홍길동 길동홍 동홍길 (쿼리 실행 결과; 열 이름에 student_name만 입력했기 때문에 위와 같이 나온다) WHERE 조건식 WHERE 조건식 을 나열하여 원하는 row만 출력할 수도 있다. SELECT student_name FROM ..
테이블의 생성: CREATE CREATE TABLE 테이블이름( 열이름1 타입 [키 타입] [기본값] [on update 값], 열이름2 타입 [키 타입] [기본값] [on update 값], ... [constraint 제약사항 이름 check(조건식)], ... ); []로 된 부분은 선택사항이다. 위 문법을 이용해 간단한 테이블을 생성해보자 CREATE TABLE student( student_id integer PRIMARY KEY, student_name varchar(3) NOT NULL, semester int integer DEFAULT 1, enter_date datetime DEFAULT NOW() ON UPDATE NOW(), constraint SEMESTER_CONST check(..
RANK/DENSE_RANK/ROW_NUMBER 함수는 모두 특정 열의 값에 대해 순위를 매기는 함수다. 서식은 다음과 같다 RANK() OVER([PARTITION BY COL_NAME_1] ORDER BY COL_NAME_2 [DESC]) RANK대신 DENSE_RANK/ROW_NUMBER로 대치해서 사용할 수 있다. [...]로 된 부분은 생략 가능하다. 다른 함수들과 달리 꽤나 괴상하게 생긴 함수인데, 그렇게 어려운 부분은 없으니 겁먹지 않아도 된다. 먼저 [PARTITION BY COL_NAME_1] 부분 없이 알아보자. RANK() OVER (ORDER BY COL_NAME_2 DESC)는 COL_NAME_2값을 내림차순으로 순위를 매기는 함수다. 즉 다음과 같은 데이터가 있다고 해보자. de..