반응형 database24 [MYSQL] SET 변수를 생성해서 순번 매기기 집계를 할때 0부터 30까지 집계된 수를 보여줘야하는데, group by문 만을 사용해서는 합계가 0인 것들은 집계가 되지 않았습니다. 이 때 사용한 것은 변수를 만들어 0부터 30까지를 나타낸 다음, group by 를 사용한 테이블을 join을 통해 보는 것이었습니다. 먼저, 사용자 정의 변수를 생성하는 방법에 대해 알아본 후, 이를 통해 위에서 말한 집계를 하는 방법까지 알아보려고 합니다. 1. 사용자 정의 변수 1-1. 사용자 정의 변수 선언 및 초기화 SET @변수이름 = 대입값; 또는 SET @변수이름 := 대입값; SELECT @변수이름 := 대입값; SET 이외의 명령문에서는 = 가 비교연산자로 취급되기 때문에 SELECT로 변수를 선언하고 값을 대입할 떄는 := 를 사용합니다. 1-2. .. database 2022. 9. 8. [database] Lock Lock 데이터베이스는 여러 사용자들이 같은 데이터를 동시에 접근하는 상황에서, 데이터의 무결성과 일관성을 지키기 위해 Lock을 사용합니다. Lock 이란 트랜잭션 처리의 순차성을 보장하기 위한 방법입니다. 트랜잭션은 DB의 나누어지지 않은 최소한의 처리 단위입니다. 2022.07.12 - [database] - [database] 트랜잭션(transaction)과 격리성(Isolation) 을 참고하시면 도움이 될 것 입니다. Lock의 설정 범위(Level) 데이터 베이스 데이터베이스 범위의 Lock은 전체 데이터베이스를 기준으로 Lock 하는 것입니다. 즉, 1개의 세션만이 DB의 데이터에 접근이 가능합니다. 해당 기능은 일반적으로 사용하지 않습니다. 사용하는 떄가 있다면 DB의 소프트웨어 버전을.. database 2022. 7. 13. [database] 트랜잭션(transaction)과 격리성(Isolation) 트랜잭션(Transaction) 트랜잭션은 데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위를 뜻합니다. 여러개의 테이블에 차례대로 데이터를 insert를 한다고 가정합니다. 테이블이 쪼개져 있으므로 테이블간의 데이터 정합성을 유지하는 것이 중요합니다. A, B에는 insert를 했으나 C에 insert 하기 전 서버가 에러 또는 특정 작업에 의해 정상적으로 처리하지 못하는 상황이 되었다고 한다면, 결과적으로 이 데이터는 믿을 수 없는 데이터가 됩니다. 이를 해결하기 위한 방법으로 DB는 All or Nothing전략을 취합니다. 즉, A,B,C에 정상적으로 insert하거나 아무것도 insert하지 않는 것입니다. DB에서는 이 전략을 위해서 트랜잭션이라는 단위를 사용하빈다. 트랜잭션 단위는.. database 2022. 7. 12. [SQLD] 그룹함수 (ROLLUP, CUBE, GROUPING SETS) 업무 중 현황이나 결과를 한눈에 보여줘야 하는 경우가 많습니다. 이전에 작성한 글 에서는 UNION, UNION ALL 으로 병합을 했다면, 이번 글에서는 그룹함수를 이용하여 테이블을 한번만 읽어 빠르게 원하는 결과를 도출해 낼 수 있습니다. (제가 시험쳤던 2022년 3월 12일 시험에서 소계를 계산할 때 사용하는 함수 문제가 출제되었습니다.) 2022.02.07 - [database] - [SQL] UNION / UNION ALL, WITH [SQL] UNION / UNION ALL, WITH UNION / UNION ALL UNION : 조회한 다수의 SELECT문을 하나로 합치고 싶을 때 유니온(UNION)을 사용할 수 있습니다. UNION은 UNION (DISTINCT)와 UNION ALL 문 .. database/SQLD 2022. 3. 18. [SQL] 조인 JOIN ( INNER, OUTER, CROSS) 조인의 종류 1. INNER JOIN 2. OUTER JOIN 3. CROSS JOIN INNER JOIN 두 개의 관련된 키가 있는 테이블에서 Column의 값을 비교 후 Join 조건에 맞는 행만 검색합니다. SQL서버의 기본 조인 방식입니다. 1. EQUI JOIN 조인 대상 테이블의 칼럼 값들이 서로 정확하게 일치하는 경우에 사용하는 JOIN으로 WHERE절에 '=' 연산자를 사용하여 JOIN 조건을 명시합니다. 일반적으로 PK, FK로 지정된 칼럼을 JOIN으로 많이 사용합니다. EQUL JOIN의 성능을 높이려면 INDEX 기능을 사용하는 것이 좋습니다. 2. NATURAL JOIN EQUL JOIN에서 JOIN의 조건이 '=' 일 때 동일한 속성이 두 번 나타내게 되는데, 이 중 중복을 제거.. database 2022. 2. 19. [SQLD] Database 에서의 NULL 2022.02.13 - [database] - [SQLD] 단일행 함수, 다중행 함수 [SQLD] 단일행 함수, 다중행 함수 2022.02.10 - [database] - [SQLD] 관계형 데이터베이스, DML, DDL, TCL [SQLD] 관계형 데이터베이스, DML, DDL, TCL 2022.02.04 - [database] - [SQLD] SQL 문장들의 종류 - DML, DDL, DCL, TCL [SQLD] SQL 문장.. sewonzzang.tistory.com NULL의 특성 - 널 값은 아직 정의되지 않은 값으로 0 또는 공백과 다르다. 0은 숫자이고 , 공백은 하나의 문자이다. - 테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 데이터 유형은 널 값을 .. database/SQLD 2022. 2. 14. [SQLD] 단일행 함수, 다중행 함수 2022.02.10 - [database] - [SQLD] 관계형 데이터베이스, DML, DDL, TCL [SQLD] 관계형 데이터베이스, DML, DDL, TCL 2022.02.04 - [database] - [SQLD] SQL 문장들의 종류 - DML, DDL, DCL, TCL [SQLD] SQL 문장들의 종류 - DML, DDL, DCL, TCL SQL 문장들의 종류 명령어의 종류 명령어 설명 데이터 조작어 (DML : Data Manipulat.. sewonzzang.tistory.com 함수는 벤더에서 제공하는 함수인 내장함수와 사용자가 정의할 수 있는 함수로 나눌 수 있는데, 내장함수에는 단일행 함수(Single-Row Function)와 다중행 함수(Multi-Row Function)로 나눌.. database/SQLD 2022. 2. 13. [SQLD] 반정규화(Denormalization) 2022.02.11 - [database] - [SQLD] 정규화(Normalization) [SQLD] 정규화(Normalization) 2022.02.11 - [database] - [SQLD] 식별자 [SQLD] 식별자 2022.02.02 - [database] - [SQLD] 엔터티(Entity), 속성(Attribute), 관계(Relation) [SQLD] 엔터티(Entity), 속성(Attribute), 관계(Relation) 이전 글.. sewonzzang.tistory.com 반정규화는 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발(Development)과 운영(Maintenance)의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미한다. 반정.. database/SQLD 2022. 2. 11. [SQLD] 정규화(Normalization) 2022.02.11 - [database] - [SQLD] 식별자 [SQLD] 식별자 2022.02.02 - [database] - [SQLD] 엔터티(Entity), 속성(Attribute), 관계(Relation) [SQLD] 엔터티(Entity), 속성(Attribute), 관계(Relation) 이전 글 : https://sewonzzang.tistory.com/41 [Database] 데이터.. sewonzzang.tistory.com 데이터 모델링 수행 절차 1. 데이터모델링을 할 때 정규화를 정확하게 수행한다. 2. 데이터베이스 용량산정을 수행한다. 3. 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다. 4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다. 5. 이력모델의 조정, PK/.. database/SQLD 2022. 2. 11. [SQLD] 식별자 2022.02.02 - [database] - [SQLD] 엔터티(Entity), 속성(Attribute), 관계(Relation) [SQLD] 엔터티(Entity), 속성(Attribute), 관계(Relation) 이전 글 : https://sewonzzang.tistory.com/41 [Database] 데이터 모델의 이해 데이터 모델링 데이터 모델링을 하는 주요한 이유는 업무정보를 구성하는 기초가 되는 정보들에 대해 일정한 표기법에 의해 표 sewonzzang.tistory.com 식별자의 종류 - 엔터티 내에서 대표성을 가지는가에 따라 주식별자(Primary Indentifier)와 보조식별자(Alternate Identifier)로 구분 - 엔터티 내에서 스스로 생성되었는지 여부에 따라 내부식.. database/SQLD 2022. 2. 11. [SQLD] 관계형 데이터베이스, DML, DDL, TCL 2022.02.04 - [database] - [SQLD] SQL 문장들의 종류 - DML, DDL, DCL, TCL [SQLD] SQL 문장들의 종류 - DML, DDL, DCL, TCL SQL 문장들의 종류 명령어의 종류 명령어 설명 데이터 조작어 (DML : Data Manipulation Language) SELECT 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE라고 sewonzzang.tistory.com 테이블 생성의 주의사항 - 테이블명은 객체를 의미할 수 있는 적절한 이름을 사용한다. 가능한 단수형을 권고한다. - 테이블명은 다른 이름과 중복되지 않아야 한다. - 한 테이블 내에서는 컬럼명이 중복되게 지정할 수 없다. - 테이블 이름을 지.. database/SQLD 2022. 2. 10. [SQL] UNION / UNION ALL, WITH UNION / UNION ALL UNION : 조회한 다수의 SELECT문을 하나로 합치고 싶을 때 유니온(UNION)을 사용할 수 있습니다. UNION은 UNION (DISTINCT)와 UNION ALL 문 두 가지가 있습니다. UNION (DISTINCT) : 중복되는 레코드를 제거 합니다. data1 data2 UNION data1 data2 >>> data1 data2 UNION ALL : 별도의 중복 제거 과정을 거치지 않고 결과를 내려줍니다. data1 datat2 UNION ALL data1 data2 >> data1 data2 data1 data2 중복 여부의 판단은 SELECT된 튜플속에 속해있는 모든 컬럼의 값들 자체가 체크의 기준이 되는 것 입니다. MYSQL이 내부적으로 UNION .. database 2022. 2. 7. 이전 1 2 다음 반응형