본문 바로가기
반응형

Data50

[MySQL] 서브쿼리(SubQuery) - 외부쿼리, 내부쿼리 서브쿼리(SUB QUERY) 다른 쿼리 내부에 포함되어있는 SELECT문을 의미하며 서브쿼리를 포함하고 있는 쿼리를 외부쿼리, 서브쿼리는 내부쿼리라고 부른다. 서브쿼리는 SELECT절, WHERE절, FROM절, HAVING절 등에서 사용할 수 있다. 서브쿼리의 특징 1. 서브쿼리는 쿼리를 구조화시켜 쿼리의 각 부분을 명확하게 구분할 수 있게 해준다. 2. 서브쿼리는 복잡한 JOIN이나 UNION과 같은 동작을 수행할 수 있는 또 다른 방법을 제공한다. 3. 서브쿼리는 복잡한 JOIN이나 UNION보다 좀 더 읽기 편하다. 4. 서브쿼리는 성능 저하를 일으킬 수 있다. (최적화가 많이 이루어졌으나, MySQL 5.5이하는 무조건 JOIN 이용) 1) HAVING절에 있는 서브쿼리 SELECT I.ID, .. 2021. 1. 5.
[MySQL] 결합 연산과 집합 연산 - UNION, UNION ALL 결합 연산 : 가로 방향으로 합치는 것에 관한 연산(조인) 집합 연산 : 세로 방향으로 합치는 것에 관한 연산(합집합, 차집합, 교집합) (1) A ∩ B (INTERSECT 연산자 사용) SELECT * FROM A INTERSECT SELECT * FROM B (2) A - B (MINUS 연산자 또는 EXCEPT 연산자 사용) SELECT * FROM A MINUS SELECT * FROM B (3) B - A (MINUS 연산자 또는 EXCEPT 연산자 사용) SELECT * FROM B MINUS SELECT * FROM A (4) A U B (UNION 연산자 사용) SELECT * FROM A UNION SELECT * FROM B MySQL 8.0버전 기준으로 UNION연산자만 지원 (다른.. 2021. 1. 5.
[MySQL] PRIMARY KEY, FOREIGN KEY 설정하는 다양한 방법 PRIMARY KEY 기본키 설정을 하면 해당 필드는 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가진다. 1) CREATE문으로 설정(생성) CREATE TABLE 테이블이름 ( 필드이름 필드타입 PRIMARY KEY, ... ) CREATE TABLE 테이블이름 ( 필드이름 필드타입, ..., [CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름) ) 2) ALTER문으로 설정(추가, 수정) -- 추가 ALTER TABLE 테이블이름 ADD 필드이름 필드타입 PRIMARY KEY ALTER TABLE 테이블이름 ADD [CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름) -- 수정 ALTER TABLE 테이블이름 MODIFY COLUMN 필드이름 필드타입 PR.. 2021. 1. 4.
[MySQL] 여러 테이블을 합쳐 하나의 테이블처럼 보이게 하는 조인의 종류(join) JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해준다. 이러한 조인은 보통 SELECT문과 함께 자주 사용된다. 자식 테이블의 Foreign Key가 부모 테이블의 Primary Key를 참조한다. (1) 참조를 하는 테이블을 ‘자식 테이블’ (2) 참조를 당하는 테이블을 ‘부모 테이블’ --JOIN --1. Oracle join : Oracle 제품에서만 사용되는 --2. Ansi Join : 모든 DB에서 사용가능. --1.1. Oracle join sample SELECT FROM table1 a, table2 b WHERE a.col2 = b.col2 --1.2. Ansi join sample SELECT a.col1,b.col1 FROM.. 2020. 12. 31.
[MySQL] WITH ROLLUP - 항목별 합계에 대한 전체 합계 구하기 WITH ROLLUP 그룹별로 합계를 한 번에 구할 때 사용한다. GROUP BY를 사용하면 GROUP BY 뒤에 나오는 컬럼별로 합계를 구해주는데, 항목별 합계에 전체 합계가 같이 나오게 하는 것이 WITH ROLLUP이다. 1) WITH ROLLUP 기본 예제 SELECT SUBSTRING(address, 1, 2) as region, gender, COUNT(*) FROM copang_main.member GROUP BY region, gender WITH ROLLUP ORDER BY region ASC, gender DESC; 2) HAVING 컬럼 IS NOT NULL SELECT SUBSTRING(address, 1, 2) as region, gender, COUNT(*) FROM copang.. 2020. 12. 21.
[DB] 3단계 데이터베이스-외부/개념/내부스키마 DBS(DataBase System) 데이터베이스에 데이터를 저장하고, 이를 관리하여 조직에 필요한 정보를 생성해주는 시스템 데이터베이스 시스템 = 데이터베이스 + 데이터베이스 관리 시스템 스키마(Schema) 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것 스키마 : 데이터베이스 : 테이블 = 평면도 : 집 : 방 인스턴스(Instance) 스키마에 따라 데이터베이스에 실제로 저장된 값 / 개체 인스턴스 = 레코드 3단계 데이터베이스 구조 - 데이터베이스를 쉽게 이해하고 이용할 수 있도록 하나의 데이터베이스를 관점에 따라 세 단계로 나눈 것 - 미국 표준화 기관인 ANSI/SPARC에서 제안 - 각 단계별로 다른 추상화(abstraction) 제공 (내부단계에서 외부단계로 갈수록 추상화 레벨.. 2020. 12. 17.
[DB] Transaction과 ACID Transaction (all or nothing) 여러 작업들을 하나로 묶은 단위 또는 연산들로 한 덩어리의 작업들은 모두 실행이되거나, 실행되지 않는다. 트랜잭션을 통하여 데이터의 유효성을 보장한다. ACID 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어 Atomicity(원자성) 모든 작업이 반영되거나 모두 롤백되는특성 Consistency(일관성) 데이터는 미리 정의된 규칙에서만 수정이 가능한 특성을 의미한다. (숫자컬럼에 문자열컬럼 X) Isolation(고립성) A와 B 두개의 트랜잭션이 실행되고 있을 때, A의 작업들이 B에게 보여지는 정도를 의미한다. Durability(영구성) 한번 반영(커밋)된 트랜잭션의 내용은 영원히 적용되는 특성을 의미한다. Commit이란.. 2020. 12. 16.
[MySQL] GROUP BY - 그룹핑 / HAVING 1. GROUP BY 컬럼 SELECT 절에는 1) GROUP BY 뒤에서 사용한 컬럼들 또는 2) COUNT, MAX 등과 같은 집계 함수만 올 수 있다. 거꾸로 말해 GROUP BY 뒤에 쓰지 않은 컬럼들은 SELECT 뒤에 올 수 없다. SELECT gender, COUNT(*), AVG(height), MIN(weight) FROM copang_main.member GROUP BY gender; 2. 2가지 이상의 컬럼 그룹핑 SELECT SUBSTR(address, 1, 2) AS region, gender, count(*) FROM copang_main.member GROUP BY SUBSTR(address, 1, 2), gender; 3. HAVING - GROUP BY에 대한 조건절 반드시.. 2020. 12. 15.
[MySQL] 문자열 관련 함수 1. LENGTH 문자열의 길이를 구해주는 함수 SELECT length(address) FROM copang_main.member; 2. UPPER / LOWER 문자열을 모두 대문자/소문자로 바꿔서 보여주는 함수 SELECT UPPER(email) FROM copang_main.member; SELECT LOWER(email) FROM copang_main.member; 3. LPAD / RPAD (LEFT or RIGHT + PADDING)의 줄임말로, 문자열의 왼쪽 또는 오른쪽을 특정 문자열로 채워주는 함수 -- LPAD(컬럼, 자리수, 채울 값) SELECT LPAD(age,10,'0') FROM copang_main.member; 4. TRIM / LTRIM / RTRIM 문자열에 존재하는 공.. 2020. 12. 15.
[MySQL] DISTINCT - 중복된 결과를 제거하는 범주 조회 DISTINCT + 컬럼 -- 컬럼 범주 조회 SELECT DISTINCT 컬럼 FROM 테이블; -- 조건 처리 후에 컬럼 범주 조회 SELECT DISTINCT 컬럼 FROM 테이블 WHERE 조건식; -- 컬럼 범주 개수 조회 SELECT COUNT(DISTINCT 컬럼) FROM 테이블; SELECT DISTINCT(gender) FROM copang_main.member; 2020. 12. 15.
[MySQL] CASE - WHEN THEN ELSE - END CASE 조건문 CASE WHEN 조건 THEN '반환 값' WHEN 조건 THEN '반환 값' ELSE 'WHEN 조건에 해당 안되는 경우 반환 값' END SELECT email, CONCAT(height, 'cm',', ',weight, 'kg') AS '키와 몸무게', weight / ((height/100) * (height/100)) AS BMI, (CASE -- 사건, 경우 WHEN weight IS NULL OR height IS NULL THEN '비만 여부 알 수 없음' WHEN weight / ((height/100) * (height/100)) >=25 THEN '과체중 또는 비만' WHEN weight / ((height/100) * (height/100)) >= 18.5 AND .. 2020. 12. 15.
[MySQL] CONCAT-문자열합치기 / ALIAS - 별칭 1) CONCAT(문자열A, 문자열B, ...) 2) AS 별칭 SELECT email, CONCAT(height, 'cm',', ',weight, 'kg') AS '키와 몸무게', weight / ((height/100) * (height/100)) AS BMI FROM copang_main.member; 2020. 12. 15.
반응형