본문 바로가기

MySQL

(13)
12. 인덱스(index) 인덱스(index) 테이블에 동작속도(조회)를 높혀주는 자료구조 데이터의 위치를 빠르게 찾아주는 역할 MYI(MySQL Index)파일에 저장 인덱스를 설정하지 않으면 Table Full Scan이 일어나 성능이 저하되거나 장애가 발생할 수 있음 조회속도는 빨라지지만 update, insert, delete의 속도는 저하될 수 있음 MySQL에서는 primary key, unique 제약조건을 사용하면 해당 컬럼에 index가 적용됨 인덱스는 하나 또는 여러 개의 컬럼에 설정할 수 있음 where절을 사용하지 않고 인덱스가 걸린 컬럼을 조회하면 성능에 아무런 효과가 없음. 가급적 update가 안되는 값을 설정하는 것이 좋음 order by, group by와 index order by 인덱스컬럼, 일반..
11. 트랜젝션(Transaction) 트랜젝션(Transaction) 분할이 불가능한 업무처리의 단위 한꺼번에 수행되어야 할 연산 모음 commit 모든 작업들은 정상 처리하겠다고 확정하는 명령어로서, 해당 처리 과정을 DB에 영구적으로 저장 rollback 작업 중 문제가 발생되어 트랜젝션의 처리 과정에서 발생한 변경사항을 모두 취소하는 명령어 start transaction 블록안의 명령어들은 하나의 명령어 처럼 처리됨 ... 성공하던지, 실패하던지 둘 중 하나의 결과가 됨 문제가 발생하면 rollback; 정상적인 처리가 완료되면 commit; 트랜젝션의 특징 원자성 : 트랜젝션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 함 일관성 : 트랜젝션의 작업 처리 결과가 항상 일관성이 있어야 함 독립성 : 어떤 하나의 트랜..
10. 뷰(View) 뷰(View) 가상의 테이블을 생성 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 직접 저장하고 있지는 않음 뷰를 만드는 이유 sql 코드를 간결하게 만들기 위함 삽입, 삭제, 수정 작업에 제한 사항을 가짐 내부 데이터를 전체 공개하고 싶지 않을 때 뷰 만들기 create view 뷰이름 as 쿼리 ...; create view vw_member as select userid, username, hp, gender from member; select * from vw_member; userid username hp gender apple 김사과 01011111111 남자 banana 반하나 01022222222 남자 berry 배예리 01099999999 여자 grapes 김포도 0105555555..
9. MySQL 사용자 MySQL 사용자 사용자 추가하기 MySQL 8.0 Command Line Client root 계정으로 로그인 로컬에서 접속 가능한 사용자 추가하기 create user '사용자명'@'localhost' identified by '사용자 비밀번호'; create user 'apple'@'localhost' identified by '1111'; DB 권한 부여하기 grant all privileges on *.* to '사용자'@'localhost'; # 모든 db에 접속 가능 grant all privileges on 데이터베이스명.* to '사용자'@'localhost'; # 입력한 데이터베이스에만 접속 가능 flush privileges; # 새로운 세팅을 적용함 할당 권한 상세 옵션 create..
8. 서브쿼리(sub Query) 서브쿼리(sub Query) 다른 쿼리 내부에 포함되어 있는 select 문을 의미 서브쿼리를 포함하고 있는 쿼리를 외부쿼리라고 부르고, 서브쿼리는 내부쿼리라고도 부름 서브쿼리는 괄호()로 감싸져서 표현 서브쿼리는 메인쿼리 컬럼 사용이 가능, 메인쿼리는 서브쿼리 컬럼을 사용하지 못함 서브쿼리는 select, where, from, having 절 등에서 사용할 수 있음 where 절 # 100001의 가격보다 크거나 같은 price를 가지고 있는 상품의 모든 정보 select * from product where price >= (select price from product where code = '100001'); code name detail price regdate 100000 아이폰14 이뻐요 ..
7. 유니온(union) 유니온(union) 합집합을 나타내는 연산자로, 중복된 값을 제거함 서로 같은 종류의 테이블(컬럼이 같아야 함)에서만 적용이 가능 select 컬럼명, 컬럼명2, ... 테이블1 union select 컬럼명1, 컬럼명2.. from 테이블2 create table product( code varchar(6) not null, name varchar(50) not null, detail varchar(1000), price int default 0, regdate datetime default now() ); insert into product values('100000', '아이폰14', '이뻐요', 1500000 , now()); insert into product values('100001', '갤..
6. join # 프로필 테이블 생성 create table profile( userid varchar(20) not null, height double, weight double, blood varchar(10), mbti varchar(10), foreign key(userid) references member(userid) ); insert into profile values('apple', 160, 50, 'A형', 'ISTP'); insert into profile values('banana', 155, 55, 'B형', 'ISTP'); insert into profile values('grapes', 170, 80, 'AB형', 'ISTP'); insert into profile values('melon',..
5. 문자열 함수 MySQL 문자열 함수 concat 복수의 문자열을 연결해주는 함수 select concat(문자열1, 문자열2, ...); select concat('안녕', '하세요') as concat; 안녕하세요 select concat(address,' ', address2, ' ', address3) as address from member where username ='오렌지'; 서울시 서초구 양재동 아파트 101동 101호 left, right 왼쪽 또는 오른쪽에서 길이만큼 문자열을 가져옴 select left(문자열, 길이); select right(문자열, 길이); select left('ABCDEFGHIJKLMN', 5) as ENG; ABCDE # 원래 email = apple@apple.com s..