본문 바로가기

MySql

(6)
MySQL(07.16) - 데이터 정규화, 트랜잭션 데이터 정규화데이터베이스 내의 데이터 구조를 조직화하고 최적화하는 과정정규화 사용은 데이터 중복을 제거하고, 효율성을 향상시키며, 데이터 무결성을 보장하기 위함이다.필수적으로 하지 않아도 되지만, 장점이 큰데 사용하지 않을 이유 없다.정규화 거치지 않을 시 발생할 수 있는 이상 종류1. 삽입 이상데이터 삽입 시 의도와 다른 값도 삽입2. 삭제 이상데이터 삭제 시 의도와 다른 값들도 연쇄 삭제3. 갱신 이상속성값 갱신 시 일부 튜플만 갱신되어 모순 발생제1 정규화한 칸에 데이터 1개각 컬럼은 하나의 데이터만 저장하며, 다중 값을 갖지 않는다.제1 정규화 적용 전학생번호학생이름수강과목20240001김철수자바20240002김영희C언어20240003홍길동C언어, 파이썬데이터의 중복 발생이 가능데이터의 수정, 삭..
MySQL(07.15) - SHA-256, 암호화, 복호화, UUID(), Cache 데이터, 데이터 구조, Primary key, err SHA-256Secure Hash Algorithm의 약자로 256비트로 구성되어 이 알고리즘을 통해 암호화를 하면 2의 256승 만큼의 경우의 수를 표현할 수 있다. 문자열로는 64자리 문자열을 나타낸다.단방향 알고리즘 (복호화 되지 않는다.)같은 입력값에 대해 같은 출력값을 제공한다.연산 속도가 빠르다.안전성이 높다.암호화평문을 암호문으로 변환하는 과정복호화암호문을 평문으로 변환하는 과정1. 단방향 암호화암호화는 수행하지만 절대로 복호화가 불가능하다.Hash 함수는 임의의 길이의 데이터를 입력받아 일정한 길이의 비트열로 변환 시켜주는 함수로, 입력값의 길이가 달라도 출력값은 언제나 고정된 길이로 반환되며 동일한 값이 입력되면 언제나 동일한 출력값을 보장하는 함수를 의미-> SHA2. 양방향 암호화암호..
MySQL(07.15) - 인덱스(INDEX) 인덱스(Index)ALTER TABLE `member` ADD INDEX(loginId);인덱스는 자주 사용되는 필드 값으로 만들어진 원본 테이블의 사본MySQL은 데이터를 검색할 때 첫 번째 필드부터 차례대로 테이블 전체를 검색한다. 따라서 테이블이 크면 클수록 데이터를 탐색하는 시간도 많이 늘어나게 된다.인덱스가 설정된 필드 값을 포함한 데이터의 삽입, 삭제, 수정 작업이 원본 테이블에서 이루어질 경우, 인덱스도 함께 수정되어야 한다.그러므로 인덱스는 수정보다는 검색이 자주 사용되는 테이블에서 사용하는 것이 더 좋다. 1. 클러스터드 인덱스 (Clustered Index)물리적인 순서를 기본 키의 순서와 일치, 이러한 방식은 주요 키에 따른 데이터의 물리적인 정렬을 나타낸다.데이터베이스 테이블의 데이..
MySQL(07.12) - 다중컬럼 IN, GROUP_CONCAT, GROUP BY, HAVING, WHERE, 삼항연산자, SUB QUERY(SCALAR, INLINE) 다중컬럼(MULTI COLUMN) IN 연산자SELECT * FROM a1WHERE (id = 1 AND job = 'manager') OR (id = 2 AND job = 'clerk');SELECT *FROM a2WHERE (id, job) IN ((1, 'manager'),(2,'clerk'));하나의 컬럼만 사용하는 IN 연산자와는 다르게 괄호()가 중첩으로 들어가고 안쪽의 괄호는 AND 조건으로 묶이게 된다.GROUP_CONCATgroup_concat을 기본적인 형태로 사용했을경우 문자열 사이에 쉼표(,)가 붙게 된다.구분자를 변경하고 싶을 경우 SEPARATOR '구분자'SELECT GROUP_CONCAT(NAME SEPARATOR'|')FROM a1GROUP BY TEST;합쳐지는 문자열에 ..
MySQL(07.11) - MySQL(Alias, SELF JOIN, OUTER JOIN, SubQuery) ALIASSELECT DISTINCT p.pname AS 상품명FROM t_order AS o // t_order을 o로 별명(Alias) 지음INNER JOIN t_user AS u // t_user을 u로 별명(Alias) 지음ON o.userNo = u.id INNER JOIN t_product AS pON o.productNo = p.idWHERE u.userName = '손흥민'테이블 이름을 Alias로 지어 컬럼을 부를때 별명으로 부를 수 있다.SELF JOINSELECT e1.ENAME AS '이름', e2.ENAME AS '직속상사이름'FROM EMP AS e1INNER JOIN EMP AS e2ON e1.MGR = e2.EMPNO;self join은 자기 자신에게 테이블을 조인하는 법OU..
MySQL(07.10) - SQL 활용(문법) 정렬ORDER BY - 조회된 데이터를 정렬select *from Productsorder by Price ASC, ProductID DESC;select userId, userName, Count(*)from t_shoppinggroup by userName;ORDER BY절은 데이터를 정렬한다.WHERE절 다음에 나와야 한다.ASC (ascending order) : 오름차순 → (생략시 기본값)DESC (descending order) : 내림차순, 로 여러 정렬 조건 지정 가능하다.별명 (AS)select userId As '아이디'from t_shopping;특정 컬럼을 새로운 별명을 붙여 사용하고, 주로 연산이나 함수를 통해 새로 나온 컬럼에 붙인다.사칙연산+, *, /, -비교연산논리연산an..

728x90