본문 바로가기

MySQL

(10)
인덱스(index) 인덱스(index) 테이블의 동작속도(조회)를 높여주는 자료구조 데이터의 위치를 빠르게 찾아주는 역할 MYI(MySQL Index)파일에 저장 인덱스를 설정하지 않으면 Table Full Scan이 일어나 성능이 저하되거나 장애가 발생할 수 있음 조회속도는 빨라지지만 update, insert, delete의 속도는 저하될 수 있음 MySQL에서는 primary key, unique 제약조건을 사용하면 해당 컬럼에 index가 적용됨 인덱스는 하나 또는 여러 개의 컬럼에 설정할 수 있음 wherer절을 사용하지 않고 인덱스가 걸린 컬럼을 조회하면 성능에 아무런 효과가 없음 가급적 update가 안되는 값을 설정하는 것이 좋음 order by와 group by와 index order by 인덱스컬럼, 일반..
트랜젝션(Transaction) 트랜젝션(Transaction) - 분할이 불가능한 업무처리의 단위 - 한꺼번에 수행되어야 할 연산 모음 commit : 모든 작업들을 정상 처리하겠다고 확정하는 명령어로서, 해당 처리 과정을 DB에 영구적으로 저장 rollback : 작업 중 문제가 발생되어 트랜젝션의 처리 과정에서 발생한 변경사항을 모두 취소하는 명령어 start transaction 블록안의 명령어들은 하나의 명령어 처럼 처리됨 ... 문제가 발생하면 rollback; 정상적인 처리가 완료되면 commit; 트랜젝션의 특징 원자성 : 트랜젝션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 함 일관성 : 트랜젝션의 작업 처리 결과가 항상 일관성이 있어야 함 독립성 : 어떤 하나의 트랜젝션이라도, 다른 트랜젝션의 연산에..
뷰(View) 뷰(view) - 가상의 테이블을 생성 - 실제 테이블처럼 행과 열을 가지고 있지만, 데이터를 직접 저장하고 있지는 않음 view를 만드는 이유 - SQL 코드를 간결하게 만들기 위함 - 삽입, 삭제, 수정, 작업에 제한 사항을 가짐 - 내부 데이터를 전체 공개하고 싶지 않을 때 view를 만드는 방법 create view 뷰이름 as 쿼리 ...; ✔ 문제 1 member의 userid, username, hp와 profile의 mbti를 출력하는 view(vw_memberprofile)를 만들고 select만 할 수 있는 melon 계정을 생성 1. vw_memberprofile을 생성 2. melon 계정을 생성 3. select 권한을 melon에게 부여 4. 새로운 세팅을 적용 5. melon ..
MySQL 사용자 사용자 추가하기 - MySQL 8.0 Command Line Client 'root' 계정으로 로그인 - 로컬에서 접속 가능한 사용자 추가하기 create user '사용자명'@'localhost' identified by '사용자pw'; - DB 권한 부여하기 grant all privileges on *.* to '사용자'@'localhost'; 모든 DB에 접근 가능 - 새로운 세팅을 적용 flush privileges; 할당 권한 상세 옵션 create, drop, alter : 테이블에 대한 생성, 삭제, 변경 권한 select, insert, update, delete : 테이블의 데이터를 조회, 삽입, 변경, 삭제에 대한 권한 all : 모든 권한 usage : 권한을 부여하지 않고 계정만 ..
데이터 정규화 데이터 정규화 데이터 베이스를 설계할 때 중복을 최소화하는 것 크고 조직화되어 있지 않은 테이블과 관계들을 조직화된 테이블과 관계들로 나누는 것 데이터 정규화가 필요한 경우 데이터를 갱신, 삽입, 삭제하는 등 테이블을 수정할 때 원하지 않게 데이터가 삭제되거나 가공되는 일이 발생하는데 이를 "이상 현상"이라고 함 이러한 이상 현상이 발생하는 경우 데이터 정규화가 반드시 필요 정규화의 종류 1. 1NF (제 1정규화) 테이블 안의 모든 값들은 단일 값이어야 함 (하나의 필드안에 여러 개의 값을 넣지 말것) 2. 2NF (제 2정규화) 1NF를 만족하면서, 완전 함수 종속성을 가진 관계들로만 테이블을 생성하는 것 종속성들 중 종속 관계에 있는 열들끼리 테이블을 구분 해주는 것 함수 종속성 X 값에 따라서 Y..
문자열 함수 concat : 복수의 문자열을 연결해주는 함수 left, right : 왼쪽 또는 오른쪽에서 길이만큼 문자열을 가져옴 substring : 문자열의 일부를 가져옴 substring(문자열, 시작위치, 길이) char_length : 문자열의 길이를 반환 lpad, rapd : 왼쪽 또는 오른쪽의 해당 길이만큼 늘리고 빈 공간을 채울 문자열을 반환 ltrim, rtrim, trim : 왼쪽 또는 오른쪽, 모든 공백을 제거 replace : 문자열에서 특정 문자열을 변경 replace(문자열, 대상, 바꿀 문자열)
조인과 서브쿼리 프로필이라는 테이블을 만들고 insert를 통해 각 값을 넣어줌 * member table에 sss라는 userid가 없으므로 foreign key에 위배 --> 데이터 추가 불가능 1. 조인(Join) select 필드명1, 필드명2 ... from 테이블명1 [inner, left, right] join 테이블명2 on 테이블1.연결할 필드 = 테이블2.연결할필드; 1-1. inner join 조인하는 테이블의 on 절의 조건이 일치하는 결과만 출력 join, inner join, cross join 모두 같은 의미로 사용됨 select userid, username, hp, height, weight, mbti from member inner join profile on member.userid =..
SQL 연산자 SQL 연산자 1. 산술 연산자 +, -, *, /, mod(나머지 연산), div(몫) 2. 비교 연산자 =(같다, 조건절), , >=, A,B 가 서로 다르면 T, 같으면 F 5. 기타 연산자 is : 양쪽이 모두 같으면 true 아니면 false between A and B : 값이 A보다는 크거나 같고, B보다는 작거나 같으면 true 아니면 false in : 매개변수로 전달된 리스트에 값이 존재하면 true 아니면 false like : 패턴으로 문자열을 검색하여 값이 존재하면 true 아니면 false 데이터 검색 select 필드명1, 필드명2, ... from 테이블명; 별명 select 필드명 as 별명 from 테이블명; null과 ' ' select null; : 데이터가 없음, i..