본문 바로가기
728x90

KDT/SQL15

인덱스(Index) 1. 인덱스(index) 테이블의 동작속도(조회)를 높여주는 자료구조 데이터의 위치를 빠르게 찾아주는 역할 MYI(MySQL Index)파일에 저장 인덱스를 설정하지 않으면 Table Full Scan이 일어나 성능이 저하되거나 장애가 발생할 수 있음 조회속도는 빨라지지만 update, insert, delete의 속도는 저하될 수 있음 MySQL에서는 primary key, unique 제약조건을 사용하면 해당 컬럼에 index가 적용됨 인덱스는 하나 또는 여러 개의 컬럼에 설정할 수 있음 where절을 사용하지 않고 인덱스가 걸린 컬럼을 조회하면 성능에 아무런 효과가 없음 가급적 update가 안되는 값을 설정하는 것이 좋음 order by와 group by와 index(효과 없는 상황) order .. 2023. 3. 21.
TCL(트랜잭션 제어어) 트랜잭션(TRANSACTION) 분할이 불가능한 업무처리의 단위 한꺼번에 수행되어야 할 연산 모음 명령어 특 징 COMMIT 모든 작업들을 정상 처리하겠다고 확정하는 명령어로서, 해당 처리 과정을 DB에 영구적으로 저장 ROLLBACK 작업 중 문제가 발생되어 트랜잭션의 처리 과정에서 발생한 변경하상을 모두 취소하는 명령어 start transaction 블록 안의 명령어들은 하나의 명령어처럼 처리됨 ... 성공하던지, 실패하던지 둘 중 하나의 결과가 됨 문제가 발생하면 rollback; 정상적인 처리가 완료되면 commit; COMMIT과 ROLLBACK의 차이 select * from product; start transaction; # 트랜잭션의 시작, commit 또는 rollback으로 끝내야 .. 2023. 3. 21.
뷰(View) 가상의 테이블 생성 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 직접 저장하고 있지는 않음 1. View 생성 뷰를 만드는 이유 SQL 코드를 간결하게 만들기 위함 삽입, 삭제, 수정 작업에 제한 사항을 가짐 내부 데이터를 전체 공개하고 싶지 않을 때 create view 뷰이름 as 쿼리 ... use kdt; select * from member; create view vw_member as select userid, username, email, gender from member; select * from vw_member; select * from profile; 문제 1. member의 userid, username, email과 profile의 mbti를 출력하는 view를 만들고 se.. 2023. 3. 21.
MySQL 사용자 1. 사용자 추가하기 MySQL 8.0 Command Line Client 'root' 계정으로 로그인 로컬에서 접속 가능한 사용자 추가하기(계정만 생성) create user '사용자명'@'localhost' identified by '사용자 비밀번호'; create user 'apple'@'localhost' identified by '1111'; 2. DB 권한 부여하기 grant all privileges on *.* to '사용자'@'localhost'; # 모든 DB에 접근 가능 grant all privileges on 'DB명' to '사용자'@'localhost'; flush privileges; # 새로운 세팅을 적용함 ✔ 할당 권한 상세 옵션 해당 함수 설 명 create drop a.. 2023. 3. 21.
MySQL 문자열 함수 문자열 함수 종류 함수 설명 LOWER(str) 문자열의 알파벳 문자를 소문자로 변경. UPPER(str) 문자열의 알파벳 문자를 대문자로 변경. ASCII(str) 문자나 숫자를 ASCII 코드 번호로 변경. CONCAT(str1, str2) 복수의 문자열을 연결해주는 함수. 문자와 문자를 연결하는 경우 2개의 수직 바(||)에 의해 이루어짐. LEFT(str, num) RIGHT(str, num) 왼쪽/오른쪽에서 길이만큼 문자열을 가져옴. SUBSTRING(str, m[, n]) 문자열 중 m위치에서 n개의 문자 길이에 해당하는 문자를 돌려줌. n이 생략되면 마지막 문자까지이다. CHAR_LENGTH(str) 문자열의 개수를 숫자값으로 돌려줌. LPAD(num, 총 str길이, 채움str) RPAD(.. 2023. 3. 21.
서브쿼리(Subquery) 다른 쿼리 내부에 포함되어 있는 select 문을 의미 서브쿼리를 포함하고 있는 쿼리를 외부쿼리라고 부르고, 서브쿼리는 내부쿼리라고도 부름 서브쿼리는 괄호()로 감싸져서 표현 서브쿼리는 메인쿼리 컬럼 사용이 가능하며, 메인쿼리는 서브쿼리 컬럼을 사용하지 못함 select, where, from, having 절 등에서 사용할 수 있음 서브쿼리를 사용할 때 다음 사항에 주의해야 한다. 서브쿼리를 괄호로 감싸서 사용한다. 서브쿼리는 단일 행(Single Row) 또는 복수 행 (Multiple Row) 비교 연산자와 함께 사용 가능하다. 단일 행 비교 연산자는 서브쿼리의 결과가 반 드시 1 건 이하이어야 하고 복수 행 비교 연산자는 서브쿼리의 결과 건수와 상관 없다. 서브쿼리 에서는 ORDER BY 를 사용.. 2023. 3. 20.
728x90