MySQL로 데이터베이스를 관리하는 기본적인 개념에 대해서 살펴보자.
목차
데이터베이스(Database)
1. 정렬 order by
1.1. Order by로 검색 결과 정렬하기
select 컬럼 from 테이블 where 조건식 order 컬럼;
- order by는 기본적으로 오름 차순으로 정렬하지만 desc를 붙이면 내림 차순으로 정렬
- 오름 차순을 명시적으로 하기 위해서는 asc로 지정
- desc : descendant
- asc : ascendant
1.1.1. 대소관계
- 수치형 데이터
- 숫자의 크기로 대소관계 구분
- 날짜형 데이터
- 날짜와 시간의 크기로 대소관계 구분
- 문자형 데이터
- 사전식 순서의 크기로 대소관계 구
◆ Order by는 테이블에 영향을 주지 않는다.
- 출력 레코드의 순서를 변경하는 것
- 서버에 있는 데이터를 순서를 변환하는 게 아니라 클라이언트에게 그 결과를 반환하는 것
- RDBMS의 컬럼과 레코드의 순서는 저장 순서로 순위가 결정
1.2. 복수의 컬럼을 지정해 정렬하기
select * from sample23 order by a,b desc;
◆ Null 값의 정렬순서
- null은 기본적으로 대소를 비교할 수 없음
- 따라서 order by에서 null 값이 있는 레코드는 가장 먼저 또는 가장 끝에 표시
- null의 대소비교는 표준 SQL에도 규정화되어 있지 않음
- MySQL에서는 null 값이 asc(오름차순)에서는 가장 먼저
- desc(내림차순)에서는 null값이 가장 나중에 표시
1.3. 결과 레코드 제한하기 limit
select 컬럼 from sample232 where 조건식 limit 레코드 수 [offset 시작레코드];
- limit는 SQL표준이 아님
- limit 구는 select 명령의 마지막에 지정하는 것으로 where 구나 order by 구의 뒤에 지정
- limit 다음에서는 최대 출력 레코드 수를 지정
1.3.1. Offset 지정
한 페이지에 limit을 설정하여 최대 출력 레코드를 성정하고 offset으로 출력 시작 레코드를 결정할 수 음
첫 레코드가 0부터 시작하는 거 주
2. SQL를 이용한 연산
2.1. 수치연산
연산자 | 연산 | 예 | 비고 |
+ | 덧셈 | 1 + 2 > 3 | |
- | 뺄셈 | 1 - 2 > -1 | |
* | 곱셈 | 1*2 > 2 | |
/ | 나눗셈 | 1/2 > 0.5 | |
%,mod | 나머지 | 1 % 2 > 1 | mod(1,2) |
div | 몫 | 1 div 2 > 0 |
로 덧셈 뺄셈 곱셈 나눗셈 나머지 몫을 구할 수 있음
◆ 우선 순위
1순위 : * / mod, dev
2순위: + -
2.1.1. Select 구로 연산하기
◆ 컬럼명의 별명(Alias)
- select 구에는 컬럼명은 임의로 변경가능
- select 식 as 별명 from 테이블;
- 여기서 as 키워드는 생략 가능하지만 사용을 권장
◆ where 구 내에서도 연산해서 사용 가능 하지만 별명 사용은 에러 발생할 수 있으니 유의
◆ Null 값의 연산 : 뭘하던 Null
◆ Order by 구에서 연산도 가능
◆ 함수
- 연산자 외에 함수를 사용해 연산 가능
- 함수(인수1, 인수2, …)
- 연사자는 연산기호(+, -, *, / 등)에 따라 연산 방법이 결정되지만 함수는 함수명에 따라 연산 방법이 결정
- 함수는 연산대상을 인수(Parameter)로 전달
- 함수는 인수를 이용하여 연산 후 반환 값을 전달
2.1.2. Round 함수
- 실수의 정수와 소수부분에 대하여 반올림 처리
2.2. 문자열 함수
2.2.2. 문자열 결합
MySQL : concat() 함
2.2.3. Substring 함수 - 문자열 일부 추출
- substring은 문자열에서 일부를 추출하여 문자를 반환하는 함수
- 날짜가 문자형으로 되어 있는 경우 년월일 등을 substring을 이용하여 추출
- substring(문자열, 시작 위치, 길이)
2.2.4. Trim 함수 - 스페이스 제거 함수
- trim 함수는 문자열의 앞뒤의 스페이스를 제거하는 함수
- char 형은 고정길이 문자열인데 문자이외의 빈 공간은 스페이스로 채워짐
2.2.5. Char_length 함수 - 문자열의 길이를 반환하는 함수
- octet_length 함수는 문자열의 바이트 수를 반환
2.3. 날짜 관련 함수
- 날짜와 시간을 저장하는 방법은 DBMS 제품에 따라 다양
- 날짜를 모두 문자형으로 처리하는 경우도 있고, MySQL는 날짜는 data형, 시간은 time형, 날짜와 시간은 datatime형으로 세분화되어 있음
날짜와 시간 데이터는 사칙연산이 가능
- current_timestamp
- current_date, current_time
2.4. Case 문으로 데이터 변환하기
- case 문은 조건에 따라 데이터를 변환
- 함수를 이용하여 데이터를 특정 형태로 변환이 가능하지만 임의 조건에 따라 데이터를 변한하기 위해서는 case문이 적정
case
when 조건식1 then 식1
when 조건식2 then 식2
else 식3
end
사용 시 주의점
- case 문은 select 구만이 아니라 where 구, order by 구에서 사용
- case 문에서 else를 생략하면 else null로 처리
- 따라서 되도록 else 사용을 권장
- when 에서 null 식에 주의
마무리
SQL로 정렬을 어떻게 하는지 연산은 어떤 방식으로 이루어지는지
그 외 여러 함수들에 대해 알아봄
case문은 수치데이터를 decode encode하는 방법으로 활용 가능하다는 걸 잊지 말자!
'데이터 > Database' 카테고리의 다른 글
[데이터베이스] MySQL을 통해 데이터베이스 설계를 위한 기초 내용 정리 (1) | 2023.04.21 |
---|---|
[데이터베이스] MySQL에서 복수 개의 테이블 다루는 데 필요 기초 내용 정리 (0) | 2023.04.20 |
[데이터베이스] MySQL 기초 문법 정리(데이터베이스 객체, 테이블 생성/삭제 변경) (0) | 2023.04.20 |
[데이터베이스] MySQL을 이용한 데이터의 추가, 삭제, 갱신에 대한 내용 정리 (0) | 2023.04.19 |
[데이터베이스] 데이터베이스, SQL에 대한 개괄적인 내용 정리 (0) | 2023.04.19 |
댓글