본문 바로가기

반응형

DB

(9)
C#에서 MySQL 엑세스하기 C#에서 MySQL을 엑세스하기 위해서는1. 일반적으로 MySQL을 위한 ADO.NET 드라이버인 MySQL Connector/Net을 사용하는데, 이 MySQL Connector/Net은 MySQL 웹사이트에서 무료 다운 받아 설치할 수 있다.2. 드라이버를 설치한 후에 C# 프로젝트에서 MySql.Data.dll를 참조한 후 MySql.Ddata.MySqlClient 네임스페이스를 참조하면, MySQL버전의 ADO.NET 클래스들(예: MySqlConnection, MySqlCommand, MySqlDataReader 등)을 이용할 수 있다.using MySql.Data.MySqlClient;MySqlConnection conn = new MySqlConnection(strConn);MySQ..
정규화(Normalization) 정규화(Normalization)이란? 정규화의 기본 목표는 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 제1 정규화(1NF) 테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 같도록 테이블을 분해하는 것이다. 제2 정규화(2NF) 제1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것이다. 여기서 완전 함수 종속이라는 것은 기본키의 부분집합이 결정자가 되어선 안 된다는 것을 의미한다. 제3 정규화(3NF) 제2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것이다. 여기서 이행적 종속이라는 것은 A ->..
JOIN 종류 JOIN이란? 두 개 이상의 테이블을 서로 연결하여 데이터를 검색할 때 사용하는 방법 두 개의 테이블을 마치 하나의 테이블인 것처럼 보여준다. INNER JOIN 테이블 간에 일치하는 행이 하나 이상 있으면 행을 반환 LEFT JOIN = LEFT OUTER JOIN 왼쪽 테이블을 기준으로 일치하는 행만 결합되고, 일치하지 않는 부분은 NULL 값으로 채워짐 RIGHT JOIN = RIGET OUTER JOIN 오른쪽 테이블을 기준으로 일치하는 행만 결합되고, 일치하지 않는 부분은 NULL 값으로 채워짐 보통 실무에서 사용 빈도는 낮은 편이다. OUTER JOIN 두 테이블 모두의 값을 유지하면 Full Outer Join 왼쪽 테이블 값만 유지하면 Left Outer Join 오른쪽 테이블 값만 유지하..
SQL 튜닝 SQL 튜닝이란? SQL 문을 최적화하여 빠른 시간내에 원하는 결과값을 얻기 위한 작업입니다. 일반적인 튜닝 과정 원하는 목표치까지 반복적으로 튜닝 원인 분석(부하), 조치(서버/SQL 튜닝), 점검(부하) 튜닝 후에도, 시스템은 항상 변화합니다. (예측치 못한 튜닝 포인트 계속 발생 - 시간이 지나면 사용자 및 데이터량 증가) SQL 튜닝의 3가지 접근 방법 부하의 감소 보통 일반적인 튜닝 방식. 동일한 부하를 보다 효율적인 방법으로 수행해야 합니다. 부하의 조정 부하 정도에 따라 업무를 조정 -> 일반 업무(OLTP; Online Transactional Processing. 온라인 트렌잭션 처리)를 분리 부하의 병렬 수행 병렬 서비스를 실행하여 응답 시간을 크게 단축(부하가 많이 걸리는 쪽에 사용해..
[PostgreSQL] PREPARE PostgreSQL은 공유 SQL 영역이 없고, 매 SQL 수행 시 마다 파싱이 발생 된다. 자주 사용되거나, 특별한 설정 값을 가지고 수행될 필요가 있는 SQL의 경우는 PREPARE 명령을 이용하여 SQL문과 PLAN을 세션 프로세스에 저장해서 사용할 수 있다. PREPARE fooplan (int, text, bool, numeric) AS INSERT INTO foo VALUES($1, $2, $3, $4); EXECUTE fooplan(1, 'Hunter Valley', 't', 200.00); PREPARE usrrptplan (int) AS SELECT * FROM users u, logs l WHERE u.usrid=$1 AND u.usrid=l.usrid AND l.date = $2; E..
[PostgreSQL] WITH ... AS / INSERT INTO ... ON CONFLICT ... DO UPDATE SET ... WITH ... AS - WITH ... AS 문을 사용하여 SELECT 결과가 없을 시 INSERT 하는 쿼리, 로우가 1개 이상일 경우 UPDATE를 하고 그렇지 않으면 INSERT를 하는 쿼리를 설명한다. - 다른 데이터베이스에 존재하는 upsert 기능이나 select 결과가 없으면 insert를 하는 쿼리 등을 만들 수 있다. (upsert : 로우의 갯수가 1개 이상일 시, 사용자가 명시한 쿼리대로 레코드의 값을 update하고 로우가 하나도 존재하지 않으면 insert를 하게하는 기능) - PostgreSQL 9.1 이상부터 기능 지원 INSERT INTO ... ON CONFLICT ... DO UPDATE SET ... - INSERT INTO ... ON CONFLICT ... DO U..
테이블의 특정 컬럼을 같은 테이블의 다른 컬럼으로 복사하기 UPDATE 테이블명 AS A SET 복사될 컬럼명 = (SELECT 복사할 컬럼명 FROM 테이블명 AS B WHERE A.매칭컬럼 = B.매칭컬럼); --아래는 예시 UPDATE EMPOLYEE AS A SET NEW_NAME = (SELECT NAME FROM EMPOLYEE AS B WHERE A.EMPNO = B.EMPNO); [출처] https://m.blog.naver.com/PostView.nhn?blogId=cherish1058&logNo=220674135413&proxyReferer=https:%2F%2Fwww.google.com%2F
query 결과에서 다시 query 하기 query의 결과인 값을 table처럼 취급하여 다시 query할 수 있는 구조 SELECT * FROM (SELECT * FROM member WHERE age = 17) AS submember WHERE month = 10 [출처] https://sacstory.tistory.com/entry/MySQL-query%EB%AC%B8-%EA%B2%B0%EA%B3%BC%EC%97%90%EC%84%9C-query%ED%95%98%EA%B8%B0

반응형