본문 바로가기
728x90
반응형
SMALL

DataBase/MySQL20

[MySQL] 인덱스(INDEX)에 대해 알아보자! 🧐 1. 인덱스(INDEX)란❓ 테이블의 동작속도(조회)를 높여주는 자료구조 데이터의 위치를 빠르게 찾아주는 역할 1-1. 인덱스의 특징 MYI(MySQL Index)파일에 저장 인덱스를 설정하지 않으면 Table Full Scan이 일어나 성능이 저하되거나 장애가 발생할 수 있음 조회(select)속도는 빨라지지만 update, insert, delete의 속도는 저하될 수 있음 [MySQL]에서는 Primary key, unique 제약조건을 사용하면 해당 컬럼에 index가 적용됨 인덱스는 하나 또는 여러개의 컬럼에 설정할 수 있음 where절을 사용하지 않고 인덱스가 걸린 컬럼을 조회하면 성능에 아무런 효과가 없음 가급적 update가 안되는 값을 설정하는 것이 좋음 1-2. 인덱스에 대한 성능 효과.. 2023. 3. 21.
[MySQL] DROP, TRUNCATE, DELETE 차이점에 대해 알아보자! 🧐 1. DROP DROP TABLE 테이블명; 데이터베이스에서 테이블 정의 및 해당 테이블에 대한 모든 데이터, 인덱스, 트리거, 제약 조건 및 권한을 제거 DROP은 DDL(데이터 정의 언어) 명령 DROP 명령은 데이터베이스에서 테이블을 제거 테이블의 행, 인덱스 및 권한도 제거 테이블의 행이 제거될때, DML(ROLLBACK, COMMIT) 트리거가 실행되지 않음 ROLLBACK(실행 취소) 불가능 2. TRUNCATE TRUNCATE TABLE 테이블명; 개별적으로 행을 삭제할 수 없으며, 테이블 내부의 모든 행을 삭제 TRUNCATE는 DDL(데이터 정의 언어) 명령 TRUNCATE는 테이블 잠금을 사용하여 실행되지만, 각 행은 잠기지 않음 TRUNCATE와 WHERE 절을 함께 사용할 수 없음(.. 2023. 3. 21.
[MySQL] 트랜잭션(Transaction) - COMMIT & ROLLBCK 1. 트랜잭션(Transaction)이란 ❓ 분할이 불가능한 업무처리의 단위 한꺼번에 수행되어야 할 연산의 모음 데이터베이스 응용 프로그램은 트랜잭션들의 집합으로 정의 할 수 있음 1-1. 트랜잭션의 특징 원자성: 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 함 일관성: 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 함 독립성(고립성): 어떤 하나의 트랜잭션이라도 다른 트랜잭션의 연산에 끼어들 수 없음 영구성(지속성): 결과는 영구적으로 반영되어야 함 1-2. COMMIT 모든 작업들을 정상 처리하겠다고 확정하는 명령어 해당 처리 과정을 DB에 영구적으로 저장 COMMIT을 수행하면 하나의 트랜잭션 과정을 종료 COMMIT을 수행하면 이전 데이터가 완전히 UPDATE [My.. 2023. 3. 21.
[MySQL] 뷰(View)에 대해 알아보자! 🧐 1. 뷰(view)란 ❓ 가상의 테이블을 생성 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 직접 저장하고 있지는 않음 다른 테이블이나 다른 뷰에 저장되어 있는 데이터를 보여주는 역할만 수행 1-1. 뷰를 만드는 이유 SQL 코드를 간결하게 만들기 위함 삽입, 삭제, 수정 작업에 제한 사항을 가짐(특정 사용자한테는 뷰에대한 권한만 주거나 할 수 있음) 내부 데이터를 전체 공개하고 싶지 않을 때 1-2. 뷰의 장점 특정 사용자에게 테이블 전체가 아닌 필요한 필드만을 보여줄 수 있음(보안) 복잡한 쿼리를 단순화 쿼리를 재사용할 수 있음 1-3. 뷰의 단점 한 번 정의된 뷰는 변경할 수 없음 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가짐 자신만의 인덱스를 가질 수 없음 2. 뷰 생성, 수정, 대체, .. 2023. 3. 21.
[MySQL] 사용자 및 권한 설정하기! 1. 사용자 1-1. 사용자 계정 추가하기 1) MySQL 8.0 Command Line Client 'root' 계정으로 로그인(WorkBench에서 실행해도 됨!) 2) 로컬에서 접속 가능한 사용자 추가하기 # 구문 create user '사용자명'@'localhost' identified by '사용자 비밀번호'; 3) 데이터베이스 권한 부여하기 # 구문 grant all privileges on *.* to '사용자'@'localhost'; -- 모든 DB, 테이블 접근 가능 grant all privileges on DB명.* to '사용자'@'localhost'; -- 특정 DB, 모든 테이블 접근 가능 flush privileges; -- 새로운 세팅을 적용까지 해야됨 1-2. 사용자 목록 .. 2023. 3. 21.
[MySQL] MySQL함수 - 2️⃣문자열 함수 1. CONCAT 복수의 문자열을 연결해주는 함수 select concat('안녕','하세요') as concat_result; ✅ member 테이블의 userid가 'orange'인 회원의 주소를 concat시켜 하나의 컬럼으로 출력해보자. select concat(address1, ' ', address2,' ', address3) as address from member where userid ='orange'; 2. LEFT/ RIGHT 왼쪽 또는 오른쪽에서 길이만큼 문자열을 가져옴 select left('안녕하세요',2) as result; ✅ MEMBER테이블에서 USERID가 'APPLE'인 회원의 EMAIL주소 앞 5글자를 출력해보자. select userid, left(email, 5).. 2023. 3. 20.
[MySQL] 서브쿼리(Sub Query)에 대해 알아보자! 🧐 1. 서브쿼리(Sub Query)란 ❓ 다른 쿼리 내부에 포함되어 있는 select문을 의미 서브쿼리를 포함하고 있는 쿼리를 외부쿼리라고 부르고, 서브쿼리는 내부쿼리라고도 부름 서브쿼리는 괄호()로 감싸져서 표현 서브쿼리는 메인쿼리 컬럼 사용이 가능하며, 메인쿼리는 서브쿼리 컬럼을 사용하지 못함 select, where, from, having절 등에서 사용할 수 있음 2. SELECT절 서브쿼리 하나의 열처럼 사용함 ✅product 테이블에서 코드, 이름, 가격 전체 데이터의 가격 중 가장 큰값을 출력하는 쿼리 # 가격 중 최대값 출력 select max(price) from product; 위 출력 결과를 하나의 컬럼으로 생각하면 된다. select code, name, price, (select m.. 2023. 3. 20.
[MySQL] JOIN 과 UNION_INNER JOIN , LEFT/RIGHT OUTER JOIN, UNION, UNION ALL 1. JOIN 두 개 이상의 테이블을 묶어서 하나의 결과 집합으로 만들어 내는 것 서로 다른 테이블에서 데이터를 가져올 때 사용 SELECT와 더불어 가장 많이 사용하는 옵션 중 하나 select 필드명1, 필드명2, ... from 테이블1 [inner join/ left / right] join 테이블2 on 테이블1.연결할필드(pk) = 테이블2.연결할필드(fk); 1-1. INNER JOIN 조인하는 테이블의 on 절의 조건이 일치하는 결과만 출력 join, inner join, cross join 모두 같은 의미로 사용됨 ✅ member 태이블과 profile 테이블을 userid로 inner join 해보기! select * from member; select * from profile; 📍 .. 2023. 3. 20.
728x90
반응형
LIST