본문 바로가기

DEV/DB & SQL22

[SQL] Group By, Having, Order By GROUP BYGROUP BY 란 데이터를 특정 컬럼 기준으로 그룹화시키는 명령어이다.예를 들어, 연령별 평균 매출액을 조회하는 쿼리를 작성할 때 연령별로 그룹화하여 결과를 정렬할 수 있다. 다중으로 그룹 나누기- 그룹을 나누고, 다시 그 그룹 안에서 세부그룹으로 나눌 수 있음- GROUP BY COL1, COL2이라고 쿼리를 작성하면 COL1안에서 다시 COL2로 나누기 가능- 위의 방법을 예시로 들자면, 연령별 성별 평균 매출액을 추출하는 쿼리에서 연령별로 먼저 그룹을 나누고, 그다음 연령별로 먼저 그룹이 나눠진 그룹에서 또 성별로 그룹을 나눌 수 있음 집계함수의 필요- 각 그룹에 대한 연산 결과(합, 평균, 개수 등)를 산출하기 위해서는 집계함수가 필요- GROUP BY 절에 있는 컬럼은 반드시 S.. 2024. 11. 28.
[SQL] WHERE 절에서는 별칭(alias)을 사용할 수 없음 / 대안 방법 WHERE절에서 alias(열 별칭)을 사용하지 못하는 경우SELECT에서 쓴 alias(열 별칭) 를 WHERE절에 쓰지 못하는 이유는 다음과 같다. 대부분의 SQL 데이터베이스에서 SELECT 절은 FROM 절 뒤와 WHERE 절 앞에서 처리되기 때문에, SELECT 절에 정의된 alias(열 별칭)은 WHERE 절이 처리될 때 아직 사용할 수 없다. 아래의 SQL 엔진 프로세스를 확인하면 더욱 이해가 잘될 것이다. SQL 엔진의 프로세스FROM -> JOIN ->  WHERE ->  GROUP BY ->  HAVING ->  SELECT ->  ORDER BY ->  LIMIT 1. FROM : 데이터를 가져올 테이블을 지정2. WHERE : 가져올 행(row)을 필터링3. GROUP BY : 행.. 2024. 5. 7.
[SQL] DDL, DML, DCL,TCL DDL (Data Definition Language, 데이터 정의어) - Auto Commit - 데이터베이스 구조 또는 스키마(schema)를 정의하는 데 사용됨 - 직접 데이터베이스의 테이블에 영향을 미치기 때문에, DDL 명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 완료된다는 것을 주의해야 함 DDL 설명 CREATE 데이터베이스의 객체를 생성 ALTER 데이터베이스의 구조를 변경 DROP 데이터베이스의 객체를 삭제 (테이블의 모든 데이터와 구조를 삭제) TRUNCATE 테이블에 할당된 모든 공간을 포함하여 모든 레코드를 제거 (테이블 객체의 저장공간 재사용 가능) - 테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서는 삭제된 데이터를 로그로 저장하는 D.. 2024. 4. 23.
[MSSQL] 날짜 형식 포맷 (CONVERT, GETDATE) 사용 형식과 예시 MSSQL에서의 날짜 추출 시 노출되는 형식을 CONVERT([데이터타입],[날짜값],[변환형식]) 의 형식으로 지정할 수 있습니다. [변환형식]에 따라 노출되는 날짜 형식을 변경할 수 있습니다. 아래와 같이 사용 예시를 확인할 수 있습니다. SELECT CONVERT(VARCHAR(10),GETDATE(),105) -- 2024-04-16 SELECT CONVERT(VARCHAR(10),GETDATE(),120) -- 2024-04-16 12:00:00 다양한 날짜 형식 쿼리 날짜 형식 결과 CONVERT(CHAR(19), GETDATE(), 0) MM DD YYYY H:MM 04 16 2024 10:01AM CONVERT(CHAR(10), GETDATE(), 1) MM/DD/YYYY.. 2024. 4. 16.
[MSSQL] VIEW 테이블의 정의와 사용 방법 VIEW 테이블이란? 뷰는 다른 말로 가상테이블이라고 하는데, 말 그대로 데이터를 저장하는 테이블이 아니라 가상으로 존재하는 테이블입니다. 데이터 베이스 내에 존재하는 데이터들을 가공해서 가상의 테이블에 정의해 가지고 있는 것입니다. 정리해서 뷰테이블이란 아래와 같이 정의할 수 있습니다. 1. 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블 2. 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주 3. 뷰는 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활용 4. 뷰는 조인문의 사용 최소화로 사용상의 편의성을 최대화 VIEW 테이블의 특징 1. 뷰는 기본테이블로부터 유도된 테이블이기.. 2024. 3. 28.
[MyBatis] MyBatis란? MyBatis란? MyBatis는 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와주는 개발 프레임 워크로서 JDBC를 통해 데이터베이스에 액세스 하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거합니다. 즉, Spring Framework에서 제공하는 JDBC 라이브러리를 보다 쉽게 작업할 수 있도록 만든 라이브러리를 말하며 Mapper의 역할을 확장하여 쿼리문 작성을 모두 Mapper에서 할 수 있도록 지원하는 Spring Framework의 대표적 JDBC 라이브러리입니다. Mybatis에서는 프로그램에 있는 SQL쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 .. 2024. 3. 14.
[SQL] JOIN의 정의와 사용법 조인이란? 조인은 SQL Server에서 특정 테이블의 데이터를 사용하여 다른 테이블의 행을 선택하는 방법을 나타냅니다. 조인을 사용하면 테이블 간의 논리적 관계를 기준으로 둘 이상의 테이블에서 데이터를 검색할 수 있습니다. 쉽게 말해, 두 개이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법입니다.  주로 Primary key혹은 Foreign key로 두 테이블을 연결합니다. 테이블을 연결하려면 적어도 하나의 칼럼은 서로 공유되고 있어야 합니다.        INNER JOININNER JOIN은 위 벤다이어그램과 같이 두 테이블의 교집합을 나타냅니다.  기준 테이블과 Join 한 테이블의 중복된 값을 보여줍니다.결과값은 A의 테이블과 B테이블이 공통적으로 가지고 있는 데이터만 검색됩니다.. 2023. 7. 13.
[MSSQL] IN과 NOT IN 사용하기 IN과 NOT IN 데이터베이스의 데이터를 추출할 때 조건을 붙여 사용하는데, 하나의 대상에 조건이 여러개일 경우 OR조건을 사용할수도 있지만 아래와 같이 IN과 NOT IN을 사용하여 더욱 간결하게 쿼리를 작성할 수 있습니다. -- IN SELECT * FROM [테이블명] WHERE [컬럼명] IN ( [조건1],[조건2],[조건3] ) -- NOT IN SELECT * FROM [테이블명] WHERE [컬럼명] NOT IN ( [조건1],[조건2],[조건3] ) IN은 컬럼의 값 = 조건1 혹은 컬럼의 값 = 조건2 혹은 컬럼의 값 = 조건 3 일 경우에 조회가 됩니다. NOT IN은 그 반대로 조건 1,2,3을 제외한 나머지를 조회할 수 있습니다. ※ NOT IN을 사용할 경우 주의해야 할 점이 .. 2023. 4. 11.
[MSSQL] Table과 Column의 Description 추가, 수정하기 테이블과 컬럼의 디스크립션 확인 아래의 쿼리를 통하여 테이블과 컬럼의 디스크립션이 있는지 확인을 한 뒤, 테이블과 컬럼의 디스크립션을 추가, 수정할 수 있습니다. SELECT TA.[OBJECT_ID] AS '테이블 ID' , TA.[NAME] AS '테이블 명' , TC.[VALUE] AS '테이블 설명' , TB.[COLUMN_ID] AS '컬럼 ID' , TB.[NAME] AS '컬럼 명' , TD.[VALUE] AS '컬럼 설명' FROM sys.objects TA INNER JOIN sys.columns TB ON TA.[object_id] = TB.[object_id] LEFT OUTER JOIN sys.extended_properties TC ON TA.[object_id] = TC.majo.. 2022. 12. 16.
반응형