SQL 언어 (3)DB(SQL)2023. 11. 7. 17:25
Table of Contents
문제 1. 다음의 트랜잭션의 특징 중 원자성에 대한 설명으로 올바른 것은?
1. 트랜잭션이 실행되는 동안 다른 트랜잭션에 영향을 받아 잘못된 결과를 만들어선 안된다. 2. all or nothing 트랜잭션에서 정의된 연산은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 있어야 한다. 3. 트랜잭션이 성공적으로 완료되면 해당 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다. 4. 트랜잭션 발생 전 데이터베이스 내용에 잘못된 점이 없다면 트랜잭션 수행 후에도 데이터베으스의 내용에 잘못이 있으면 안된다. |
답: 2
1.고립성
3.지속성
4.일관성
문제 2. 다음과 같이 정의된 C_INFO 테이블에서 2000년도에 태어난 고객의 이름과 전화번호를 조회하려고 한다. 빈칸에 알맞은 명령어를 구하시오.
CREATE TABLE C_INFO ( 이름 varchar2(10), 생년 number(4) default 9999, 전화번호 varchar(15) not null, 첫방문일 date, 고객번호 varchar2(10) primary key ); |
[ ㄱ ] 이름, 전화번호 [ ㄴ ] C_INFO [ ㄷ ] 생년 = 2000; |
ㄱ : SELECT
ㄴ : FROM
ㄷ : WHERE
* 조회를 하기 위한 기본 문장 구조
SELECT 조회대상
FROM 테이블명
WHERE 조건문
DML - SELECT문 기본 구조
SELECT 컬럼명 등 FROM 테이블명 WHERE 조건문 GROUP BY 집계기준컬럼명 HAVING grouping 된 후 상태 기반의 조건문 ORDER BY 컬럼명 |
문제 3. 테이블 C_INFO에 대하여 아래와 같은 SQL문을 실행한 결과 출력되는 행의 수를 구하시오.
회원코드 | 성별 | 연령대 | 이름 |
A | F | 20대 | Kate |
B | M | 20대 | Max |
C | F | 30대 | lily |
D | M | 20대 | Paul |
E | 50대 | James |
SELECT DISTINCT 성별, 연령대 FROM C_INFO |
답: 4행
F | 20대 |
M | 20대 |
F | 30대 |
50대 |
문제 4. 테이블 C_INFO에 대하여 아래의 SQL문 3가지를 실행한 결과 출력되는 행 수를 구하시오.
회원코드 | 성별 | 연령대 | 이름 |
A | F | 20대 | Kate |
B | M | 20대 | Max |
C | F | 30대 | lily |
D | M | 20대 | Paul |
E | 50대 | James |
SELECT COUNT(*) FROM C_INFO |
SELECT COUNT(성별) FROM C_INFO |
SELECT COUNT(DISTINCT 성별) FROM C_INFO |
정답: 5
>> 전체 행 count
정답: 4
>> NULL 제외 count
정답: 3
>> NULL 까지 구분하여 count
SELECT문 기본 구조 - 문자형 함수
LOWER(문자열) | 영어 문자열 소문자로 변환 LOWER('SQL') >> 'sql' |
UPPER(문자열) | 영어 문자열 대문자로 변환 UPPER('sql') >> 'SQL' |
CONCAT(문자열1 , 문자열2) | 문자열 1과 문자열 2을 결합 CONCAT('가','나') = '가' || '나' = '가' + '나' |
SUBSTR(문자열, M, n) | 문자열에서 m 번째 자리값부터 n개를 자른다 SUBSTR('KATE',2,2) >> 'AT' |
LENGTH(문자열) = LEN(문자열) | 공백을 포함하여 문자열의 길이값 LEN("가 나다') >> 4 |
TRIM(문자열, 제거대상) | TRIM('aabbccaa','a') | 왼쪽과 오른쪽에서 지정된 문자를 삭제한다 >> 'bbcc' |
TRIM (' aabbccaa', ) | 지정된 문자가 없으면 공백을 제거한다. >> 'aabbccaa' |
|
LTRIM(문자열, 제거대상) | LTRIM ('aabbccaa','a') | 왼쪽에서 지정된 문자를 삭제한다 >> 'bbccaa' |
LTRIM (' aabbccaa ',') | 지정된 문자가 없으면 좌측의 공백을 제거한다. >> 'aabbccaa ' | |
RTRIM(문자열, 제거대상) | RTRIM ('aabbccaa','a') | 오른쪽에서 지정된 문자를 삭제한다 >>'aabbcc' |
RTRIM (' aabbccaa ' ,'a') | 지정된 문자가 없으면 우측의 공백을 제거한다 >> ' aabbccaa' |
문제 5. C_INFO를 우측의 테이블과 같이 조회하기 위한 SQL문은?
회원코드 | 성별 | 연령대 | 이름 |
A | F | 20대 | kate |
B | M | 20대 | max |
C | F | 30대 | lily |
D | M | 20대 | paul |
E | 50대 | james |
회원코드 | 연령대 | 이름 |
A | 20대 | KATE |
B | 20대 | MAX |
C | 30대 | LILY |
D | 20대 | PAUL |
E | 50대 | JAMES |
SELECT 회원코드,연령대,UPPER('이름') FROM C_INFO |
SELECT문 기본 구조 - 숫자형 함수
ROUND(숫자, 소수점 자릿수) | 반올림 ROUND(25,3578,2) >> 25.36 |
TRUNC(숫자, 소수점 자릿수) | 버림 TURNC(25.357,2) >> 25.35 |
CEIL(숫자) | 크거나 같은 최소 정수 변환 CEIL(33.5) >> 34 |
FLOOR(숫자) | 작거나 같은 최대 정수 반환 FLOOR(33.5) >> 33 |
MOD(분자, 분모) | 분자를 분모로 나눈 나머지 반환 MOD(3.2) >> 1 |
SIGN(숫자) | 숫자가 양수면 1, 0이면 0 , 음수면 -1 반환 |
ABS(숫자) | 절댓값 |
SYSDATE | 쿼리를 돌리는 현재 날짜&시각 출력 ex. 2022/01/31 14:00:26 (datetime 형태) |
EXTRACT( 정보 FROM 날짜 ) | 날짜형 데이터에서 원하는 값을 추출함 EXTRACT ( YEAR FROM date '2022-01-31' ) >> 2022 정보 : YEAR , MONTH, DAY , HOUR , MINUTE , SECOND |
EXTRACT( YEAR FROM sysdate ) TO_NUMBER( TO_CHAR( sysdate, 'YYYY')) 동일한 결과 |
TO_NUMBER( 문자열 ) | 문자열을 숫자로 변환 TO_NUMBER('2022') |
TO_CHAR( 숫자 or 날짜,포맷 ) | 숫자 혹은 날짜형 데이터를 포맷에 맞게 문자로 바꿈 TO_CHAR( date '2022-02-11' , 'day') >> 금요일 TO_CHAR ( 200 ) >> 200 |
TO_DATE( 문자열, 포맷 ) | TO_DATE('2022013120', 'YYYYMMDDHH24') >> 2022/01/31 20:00:00 |
명시적 형변환은 위의 형변환 함수를 사용하여 강제로 data type을 변경하는 것
암시적 형변환은 데이터베이스가 알아서 바꾸어주는것
ex. 고객 번호가 number형으로 되어있고, PK값인 C_INFO에 대해 아래와 같은 조회가 발생하면 암시적 형변환 발생
SELECT *
FROM C_INFO
WHERE 고객번호 = '12345'
[고객번호]는 숫자형 타입이고 , PK이므로 인덱스가 됨
'인덱스' : 빠른 조회를 돕는 책의 목차와 같은 기능을함, 데이터는 인덱스 기준 자동정렬됨
인덱스에 대해 암시적 형변환이 발생한 경우, 인덱스를 사용할 수 없다.
'DB(SQL)' 카테고리의 다른 글
1. 데이터베이스의 기본적인 주요 개념 (0) | 2024.01.18 |
---|---|
SQL 언어 (2) (0) | 2023.11.07 |
SQL 언어 (1) (2) | 2023.11.06 |
ERD , Level Schema (0) | 2023.07.26 |
PART1: 데이터 모델링 SECTION 01 데이터 모델링의 이해 (0) | 2023.07.24 |
@Soohocoding :: Soohocoding
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!