728x90
반응형

IT/SQLD 98

[MySQL] Join (Outer Join, Inner Join) 설명 및 예제

GoalPermalink Join에 대해 이해하고 이를 활용할 수 있다. Left Join, Right Join 차이점을 이해한다. 한 눈에 보는 전체 사진Permalink 1. LEFT JOIN (= LEFT OUTER JOIN)Permalink LEFT OUTER JOIN 이라고도 쓰이고, LEFT JOIN 으로 쓰는 개발자도 있길래 구글링해보니 둘다 똑같은 말이라고 한다. LEFT JOIN은 A와 B 테이블 중에 A값 + A와 B의 KEY값이 같은 결과 를 리턴하는 것이다. SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key; 2. RIGHT JOIN (= RIGHT OUTER JOIN)Permalink RIGHT JOIN은 A와 B 테이블 중에..

IT/SQLD 2023.11.01

[MySQL || MariaDB] 여러 테이블 한번에 카운터 하기

개념 한 번에 여러 테이블의 값을 추출할 수 있다. 문법 문법에 들어가기 앞서, 공통 테이블 예시 기본 문법 SELECT 테이블별칭.카운트별칭,테이블별칭.카운트별칭,테이블별칭.카운트별칭 FROM ( select count(*) 카운트별칭 from 테이블명 조건(선택) ) 테이블별칭 , ( select count(*) 카운트별칭 from 테이블명) 테이블별칭 , ( select count(*) 카운트별칭 from 테이블명) 테이블별칭 예시 1.board 테이블 중 views(조회수)가 30 이상인 것, members 테이블 중 id가 1인 멤버를 카운트 SELECT a.views, b.beu FROM (SELECT COUNT(*) views FROM board WHERE views > 30) a , (SE..

IT/SQLD 2023.11.01

MYSQL 테이블 Collation 확인, 변경 방법 (Character Set과의 차이)

SQL문을 통해 테이블 Collation을 확인하고 원하는 대로 변경할 수 있습니다. Collation은 Character set과 다른 개념입니다. 쉽게 말해 utf8mb4와 utf8mb4_unicode_ci는 다릅니다. 전자는 캐릭터셋, 후자는 콜레이션입니다. 데이터베이스의 캐릭터셋이 같더라도 테이블 간 콜레이션이 다르면 테이블 조인 시 에러가 발생합니다. 테이블 Collation 변경 방법 1. 데이터베이스 캐릭터셋 확인 데이터베이스(DB)는 특정한 기본 캐릭터셋이 적용됩니다. 이를 확인하는 SQL은 아래와 같습니다. mysql> USE 데이터베이스명; mysql> SHOW VARIABLES LIKE 'character_set_database'; [예시] mysql> use mysql mysql> ..

IT/SQLD 2023.10.26

mysql 테이블 및 컬럼 케릭터셋 변경 하기

mysql이나 mariadb를 사용하면서 간혹 테이블이나 컬럼의 케릭터셋을 변경해야 하는 경우가 생깁니다. 물론 데이터베이스 전체의 케릭터셋을 변경 할 수도 있겠지만, 간혹 이렇게 테이블과 컬럼 단위로 변경 할 사유가 생겼을때 아래와 같이 간단하게 조치를 할 수 있습니다. ◎ SQL 테이블 단위 변경 alter table 테이블명 convert to character set utf8; utf8로 테이블 전체의 케릭터셋을 변경 한다는 의미 입니다. 컬럼 단위 변경 ALTER TABLE 테이블명 MODIFY COLUMN 컬럼 VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci; 테이블내 특정 컬럼의 케릭터셋을 변경 한다는 의미 입니다. 간혹, fulltext ..

IT/SQLD 2023.10.26

MySQL character set 확인 및 변경

언제나 한글 깨짐 문제로 인한 캐릭터 셋 확인 및 변경 작업이 많다. 일단 DB에 저장된 한글이 클라이언트에서 안 보이는 경우는 클라이언트의 인코딩 값을 변경해서 조치를 할 수 있다. 그러나 저장 당시의 인코딩 값이 서로 다른 한글이 들어가 있을 경우는 어떤 한글은 정상적으로 보이지만, 어떤 한글은 깨져서 보이는 경우가 발생하게 된다. MySQL은 기본으로 서버 캐릭터 셋이 latin1으로 설정 되어 있어서 DB 생성 시 캐릭터 셋 값을 지정해주지 않으면 latin1으로 생성이 된다. Character set ? 사용하는 언어를 표현하기 위한 문자들의 집합을 의미. 한글을 표현하기 위하여 사용하는 캐릭터 셋에는 여러가지가 존재 한다. Encoding ? Character Set을 컴퓨터가 이해할 수 있는..

IT/SQLD 2023.10.26

[SQL] MSSQL 트랜잭션 로그파일 비우는 방법

* 운영 및 유지보수 하다 보면 트랜잭션 로그파일이 꽉 차서 오류가 발생하게 된다. (MSSQL) 오류가 발생하면 사용량을 확인해서 로그를 축소해주는 작업이 필요하다. org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 데이터베이스 'KINGPORK'의 트랜잭션 로그가 'LOG_BACKUP'(으)로 인해 꽉 찼습니다. ### The error occurred while setting parameters ### SQL: INSERT INTO KINGPORK (KING, PORK, DATE) VALUES(?,?,GET..

IT/SQLD 2023.10.23

[MSSQL] 트랜잭션(Transaction)

이번에 설명한 내용을 MSSQL의 Transaction입니다. 설명에 앞서 우리가 사용하는 MSSQL 데이터베이스에 대해서 생각해 본다면 SQL 서버에 그림과 같이 데이터 베이스가 생성되어 있고 사용자가 데이터베이스에 조회 요청을 하면 일반적으로 사용자는 아래의 그림과 같이 결과를 전달 받는다고 생각합니다. 논리적 데이터 베이스 구조 이것은 우리가 논리적으로 생각하는 데이터 베이스의 모습입니다. 하지만 데이터라면 어딘가에 저장되어 있어야 합니다. 물리적인 데이터 베이스는 어떻게 구성되어 있을까요? 버전별로 다르겟지만 "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA" 위치로 이동하게 되면 mdf, ldf 파일이 존재하는 것을 확인..

IT/SQLD 2023.10.23

MSSQL 대량 데이터 삭제 요령

아래글은 SQL Server 대량 데이터 삭제 · GitHub 에서 갖고왔습니다. 이글은 MS SQL Server에서 수백만건의 데이터 행을 삭제할때 성능감소를 낮게 유지하기 위함을 위한 가이드이다. 전제조건은 다음과 같다. 특정테이블 ‘ExampleTable’ 에 있는 수백만건이 있다. TRUNCATE 문을 권한불충분이나 다른 문제로 수행할 수 없는 조건이다. 이때 당신이 단일 트랜잭션에서 테이블에 있는 모든 행을 제거하려만 다음과 같이 해야 한다. DELETE FROM ExampleTable 위 구문을 수행하는 순간 SQL서버는 트랜잭션을 처리하기 위하여 트랜잭션 로그에 모든 변경 사항을 작성하고, 완전한 테이블 잠금을 수행할 것이다. 위 설명은 잠재적으로 큰 문제를 몇가지 가지고 있다. 트랜잭션 로..

IT/SQLD 2023.10.23

MSSQL 로그파일 트랜잭션 내용 정리 (오류 해결 :트랜잭션 로그가 꽉 찼습니다.)

로그파일 트랜잭션 오류 해결 방법 모음 1. DB 의 현재 사용량 확인 Use [ DB명] DBCC SQLPERF(LOGSPACE) 로그스페이스 설정값에 대해 확인 SP_HelpDB [DB명] 실제 위치랑 사용량 확인 위에 쿼리 실행시 조회 위에 내용이 조회가 되게 됩니다. 2. MDF (Database File) 파일 용량을 현재 사용량으로 축소 Use [DB명] DBCC SHRINKDATABASE ([DB명], TRUNCATEONLY) 3. MDF (Database File) 파일 용량을 200MB 로 축소 Use [DB명] DBCC SHRINKDATABASE ([DB명], 200) 4. LDF (Log File) 파일 용량을 현재 사용량으로 축소 Use [DB명] DBCC SHRINKFILE ([D..

IT/SQLD 2023.10.23

mssql transaction log 파일 강제 삭제

뭔가 실수로 transaction log가 백업되지 않아 커지는 문제가 발생했다면 ldf 파일을 강제로 줄이는 방법이 있습니다. 2008 버전 정도에서는 backup log [db명] with truncate_only 라는 쿼리를 실행해 ldf 파일을 비울 수 있습니다. 만약 truncate_only' is not a recognized backup option 라는 오류가 발생하는 버전이라면 backup log [db명] to disk='null' 이라는 쿼리를 실행해 ldf 파일을 비울 수 있습니다. 간혹 백업 처리 과정마저도 문제가 발생하는 경우는 Database 백업 모드를 simple로 조정 후 shrinkfile('db log logical name' , 1) 이라는 쿼리를 실행하면 log 파..

IT/SQLD 2023.10.23
728x90
반응형