본문 바로가기

개인공부 정리/다양한 질문들

0202 수업 질문 - 형 변환 함수, 날짜 함수

Q1. TOAD 코딩을 할 때 공백을 문자로 취급한다면 문자로 취급하지 않는 문자도 있는지?

물론, 다음은 공백 및 기타 문자가 SQL에서 어떻게 다르게 취급될 수 있는지에 대한 몇 가지 예입니다.

  1. 문자열 리터럴 내의 공백은 문자로 간주되며 문자열에 포함됩니다.
SELECT 'This is a string with spaces';

 SQL 문에서 키워드 또는 절 사이의 구분 기호로 사용되는 공백은 무시됩니다.

SELECT   column_name
FROM     table_name
WHERE    condition;

 

 쉼표, 세미콜론 또는 따옴표와 같은 특수 문자는 SQL에서 특정 의미를 가질 수 있으며 문자로 처리되지 않습니다.

SELECT column_name1, column_name2
FROM table_name;

 %백분율 기호 또는 밑줄 과 같은 일부 문자 _는 패턴 일치 작업에서 와일드카드 문자로 사용될 수 있습니다.

SELECT column_name
FROM table_name
WHERE column_name LIKE 'A%';

  공백 및 기타 문자가 코드에서 처리되는 방식을 결정하려면 사용 중인 SQL 언어의 구문과 규칙을 이해하는 것이 중요합니다.

 

 

Q2. 인덱싱을 할 경우 SQL에서는 0을 0으로 취급하지만 R에서는 1을 0으로 취급하는데  R로 넘어가면 -1로 표현한다고 생각하면 될까요?

아니요, 0과 1이 SQL과 R에서 인덱싱의 시작점으로 취급되는 방식의 차이는

R에서 0을 -1로 생각하는 것과 동일하지 않습니다.

 

SQL에서 인덱싱은 일반적으로 결과 세트 또는 테이블의 첫 번째 항목에 대해 1부터 시작합니다. R에서 인덱싱은 일반적으로 벡터의 첫 번째 항목에 대해 1에서 시작하지만 데이터 프레임 또는 행렬에 대해 0에서 시작할 수 있습니다.

따라서 SQL에서 R로 전환할 때 각 언어에서 사용되는 인덱싱 규칙에 유의하고 필요한 경우 코드를 조정하는 것이 중요합니다.

 

 

Q3. SQL에서 LPAD를 사용했을 때 Or만 표시 되는 이유를 알 수 있을까?

SQL에서 LPAD를 사용할 때 "Or"만 표시되는 이유는 몇 가지 요인 때문일 수 있습니다.

  1. 잘못된 구문: LPAD 함수가 SQL 문에서 올바르게 사용되지 않으면 원하는 결과를 생성하지 못할 수 있습니다. 예를 들어 문자 수 또는 패딩 문자가 지정되지 않은 경우 함수는 오류를 반환합니다.
  2. 잘못된 데이터 유형: LPAD 함수는 문자열에서만 작동합니다. 데이터 형식이 다른 열이나 값에 사용하는 경우 예기치 않은 결과가 발생할 수 있습니다.
  3. 잘못된 입력 값: LPAD 기능에 대한 입력 값이 잘못된 경우 예기치 않은 결과가 발생할 수 있습니다. 예를 들어 입력 문자열이 지정된 길이보다 짧은 경우 지정된 길이에 도달하기 위해 왼쪽에 지정된 문자가 채워집니다.

이러한 문제를 해결하려면 LPAD 함수의 구문, 함께 사용되는 열 또는 값의 데이터 유형, 함수에 전달되는 입력 값을 확인해야 합니다. 또한 문서를 확인하거나 지식이 풍부한 사람에게 연락하여 추가 지원을 받는 것도 고려해야 합니다.

 

쿼리 "SELECT RPAD ('Oracle', 2) FROM DUAL;"의 출력 "또는" 문자열이 됩니다.

RPAD 함수는 두 개의 인수를 사용합니다. 첫 번째는 문자열 "Oracle"이고 두 번째는 숫자 2입니다. 이 함수는 지정된 길이까지 오른쪽이 공백으로 채워진 원래 문자열인 문자열을 반환합니다. 이 경우 원래 문자열 "Oracle"의 길이는 6자이고 지정된 길이는 2자이므로 함수는 "Or"인 원래 문자열의 처음 2자만 반환합니다.

 

Q4. 이게 안 되는 이유가 뭔지 모르겠어. - 형 변환 함수에 대하여

SELECT 'ABC' + EMPNO, EMPNO FROM EMP WHERE ENAME = 'SCOTT';

문자열 값("ABC")을 숫자 값(EMPNO)에 추가하려고 하므로 쿼리 "SELECT 'ABC' + EMPNO, EMPNO FROM EMP WHERE ENAME = 'SCOTT'"가 작동하지 않습니다. SQL에서는 이러한 유형의 작업이 허용되지 않습니다.

이 쿼리가 작동하려면 먼저 문자열 "ABC"를 숫자 값으로 변환하거나 EMPNO 값을 문자열 값으로 변환해야 합니다. 예를 들어 TO_NUMBER 함수를 사용하여 문자열 "ABC"를 숫자로 변환할 수 있습니다.

SELECT TO_NUMBER('ABC') + EMPNO, EMPNO
FROM EMP
WHERE ENAME = 'SCOTT';

또는 TO_CHAR 함수를 사용하여 EMPNO 값을 문자열로 변환할 수 있습니다.

SELECT 'ABC' || TO_CHAR(EMPNO), EMPNO
FROM EMP
WHERE ENAME = 'SCOTT';

 

Q5. 국가의 날짜 설정을 고정으로 하는 방법에 대해 알려줘

ALTER SESSION SET NLS_DATE_LANGUAGE = 'AMERICAN';
ALTER SESSION SET NLS_CALENDAR = 'GREGORIAN';

괄호에 KOREAN으로 하면 한국 날짜로 표기 됨.

그레고리력은 양력을 의미하기 때문에 바꿀 필요는 없음.

 

Q6. SQL에서 DUAL의 의미가 뭐야?

SQL에서 DUAL은 Oracle 데이터베이스에 있는 1행 1열 테이블입니다. SELECT 문에 단일 값이 필요한 경우 자리 표시자 테이블로 자주 사용됩니다. "DUAL"이라는 이름은 Data Unit Abstract Layer의 약자입니다. DUAL 테이블은 SELECT 문에서 단일 값을 반환하는 데 사용되며 SELECT 문이 스칼라 컨텍스트에서 사용될 때 유용할 수 있습니다. 예를 들어 수학 계산을 수행하거나 현재 날짜 및 시간을 검색하려는 경우 SELECT 문에서 DUAL 테이블을 사용할 수 있습니다.

Q7. I don't understand the grammar. Can you tell me? : 결과값이 왜 -200?
SELECT TO_NUMBER ('1,300', '999,999') - TO_NUMBER ('1,500', '999,999') FROM DUAL;

명령문은 지정된 형식 '999,999'를 사용하여 두 개의 문자열 값 '1,300' 및 '1,500'을 숫자로 변환합니다. 그런 다음 이 두 숫자를 뺀 결과가 쿼리에 반환됩니다. "FROM DUAL" 절은 SELECT 문을 지원하는 더미 테이블 역할을 하는 Oracle의 1행 1열 테이블에서 선택하는 데 사용됩니다.

to 인수는 TO_NUMBER변환할 문자열을 지정하고 두 번째 인수는 문자열의 형식을 지정하며 '999,999'는 쉼표가 천 단위 구분 기호를 나타냄을 나타냅니다. 이 경우 TO_NUMBER ('1,300', '999,999')숫자 1300을 TO_NUMBER ('1,500', '999,999')반환하고 숫자 1500 을 TO_NUMBER ('1,300', '999,999') - TO_NUMBER ('1,500', '999,999')반환합니다. 식은 이러한 숫자의 차이인 -200을 반환합니다.

 

Q8. 날짜를 표기할 때 RR과 YY의 표기법의 차이가 무엇인지 알 수 있을까?

SQL에서 날짜를 작성할 때 RR과 YY 표기법의 차이점은 연도를 나타내는 것입니다.

RR 표기법은 세기 정보, 즉 2021, 2022, 2023 등과 같은 전체 연도를 나타내는 데 사용됩니다. 예를 들어 날짜가 2022년 1월 1일인 경우 RR 표기법은 "2022"로 나타냅니다.

반면에 YY 표기법은 22, 23, 24 등과 같이 마지막 두 자리만 사용하여 연도를 나타내는 데 사용됩니다. 예를 들어 날짜가 2022년 1월 1일인 경우 YY 표기법은 다음과 같이 나타냅니다. "22".

따라서 RR과 YY 표기법의 차이는 날짜에서 연도를 나타내는 데 사용되는 자릿수입니다.

 

RR은 1900년대랑 같이 나옴

YY은 2000년대만 나옴

 

Q8. 그렇다면 RR의 약자와 YY의 약자를 알 수 있을까?

"RR" 표기법은 두 자리 숫자로 연도를 나타내는 데 사용되며 연도는 1950년에서 2049년 범위에 있을 것으로 예상됩니다. "YY" 표기법은 "RR"과 유사하지만 다른 연도에도 사용할 수 있습니다. 그러나 정확한 범위는 사용 중인 데이터베이스 시스템 및 로케일 설정에 따라 다릅니다.

 

Q9. 해당 문법에 대해 자세히 설명해줘 - 다중행 함수

 SELECT SUM(SAL), SUM(COMM) FROM EMP;

주어진 SQL 쿼리는 "EMP" 테이블에서 "SAL" 및 "COMM" 열 값의 합계를 검색하는 SELECT 문입니다.

SUM 함수는 지정된 열 값의 합계를 계산하는 데 사용됩니다. 이 경우 "SAL" 열과 "COMM" 열 값의 합이 계산되어 별도의 값으로 반환됩니다.

SELECT 문은 데이터베이스 테이블에서 데이터를 검색하는 데 사용되며 FROM 절은 데이터를 검색할 테이블을 지정합니다. 이 경우 "EMP" 테이블입니다.

이 쿼리의 결과는 "SAL" 열 값의 합계와 "COMM" 열 값의 합계인 두 값을 포함하는 단일 행이 됩니다.

 

Q10. 실시간으로 쿼리의 결과 값을 보면서 할 수 있는 SQL은 없을까?

아니요, SQL은 쿼리 결과의 실시간 관찰을 허용하지 않습니다. 쿼리 결과는 일반적으로 쿼리가 실행되고 데이터가 검색 및 처리된 후에 표시됩니다. SQL 클라이언트 또는 통합 개발 환경(IDE)과 같은 일부 도구는 쿼리 결과를 표시하기 위한 시각적 인터페이스를 제공할 수 있지만 데이터는 여전히 일괄 처리 모드에서 검색 및 처리됩니다.

 

Q11. SQL에서 GROUP BY와 ORDER BY에 대해 자세히 설명해줘

"GROUP BY" 및 "ORDER BY"는 각각 데이터를 집계하고 정렬하기 위해 SQL에서 일반적으로 사용되는 두 절입니다.

GROUP BY: GROUP BY 절은 행을 하나 이상의 열을 기준으로 요약 행으로 그룹화하는 데 사용됩니다. GROUP BY 절을 사용하는 목적은 중복 데이터를 단일 데이터 행으로 통합하는 것입니다. SUM, AVG, COUNT, MIN 및 MAX와 같은 집계 함수와 함께 사용되어 각 데이터 그룹에 대한 요약 정보를 제공하는 경우가 많습니다. GROUP BY 절의 일반 구문은 다음과 같습니다.

SELECT column1, column2, aggregate_function(column_name)
FROM table_name
GROUP BY column1, column2;

예를 들어 부서를 기준으로 직원 데이터를 그룹화하려면 다음과 같은 쿼리를 작성할 수 있습니다.

SELECT DEPTNO, SUM(SAL), AVG(SAL)
FROM EMP
GROUP BY DEPTNO;

그러면 각 부서의 총 급여와 평균 급여에 대한 요약이 제공됩니다.

ORDER BY: ORDER BY 절은 하나 이상의 열을 기준으로 결과 집합을 오름차순 또는 내림차순으로 정렬하는 데 사용됩니다. ORDER BY 절의 일반 구문은 다음과 같습니다.

SELECT column1, column2
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC];

예를 들어 급여를 기준으로 직원 데이터를 내림차순으로 정렬하려면 다음과 같은 쿼리를 작성할 수 있습니다.

SELECT ENAME, SAL
FROM EMP
ORDER BY SAL DESC;

이렇게 하면 급여를 기준으로 내림차순으로 정렬된 직원 목록이 제공됩니다.

 

Q11. 어떤 SQL을 오픈 소스로 사용할 수 있는지 알려주실 수 있나요? (설치 안하고 SQL 연습)

 

인터넷에서 사용할 수 있는 몇 가지 오픈 소스 SQL 데이터베이스가 있습니다.

  1. MySQL: 웹 기반 애플리케이션에 널리 사용되는 가장 인기 있는 오픈 소스 데이터베이스 중 하나입니다.
  2. PostgreSQL: 강력한 오픈 소스 관계형 데이터베이스 관리 시스템입니다.
  3. SQLite: 중소 규모 애플리케이션에 이상적인 가볍고 빠른 데이터베이스입니다.
  4. MariaDB: MySQL과 높은 호환성을 갖도록 설계된 MySQL 데이터베이스의 커뮤니티 기반 포크입니다.
  5. Firebird: 개인용 및 상업용으로 설계된 오픈 소스 관계형 데이터베이스 관리 시스템입니다.

이는 몇 가지 예일 뿐이며 필요와 요구 사항에 가장 적합한 것을 선택할 수 있습니다.

 

Q12. SQL문에서 SELECT 문에서 조건을 쓰는 것과 WHERE에서 조건을 쓰는 것의 차이

SQL 문에는 여러 절이 있을 수 있으며 그 중 하나는 WHERE 절입니다. WHERE 절은 데이터가 반환되기 위해 충족되어야 하는 조건을 지정하는 데 사용됩니다. WHERE 절에 지정된 조건은 반환되는 데이터를 필터링하고 조건을 충족하는 행만 반환합니다.

SELECT 문은 하나 이상의 테이블에서 데이터를 쿼리하는 데 사용됩니다. SELECT 문에는 다른 SQL 문과 동일한 방식으로 작동하는 WHERE 절도 있을 수 있습니다.

요약하면 SQL문과 SELECT문에 조건을 작성하는 것과 WHERE에 조건을 작성하는 것의 차이점은 SQL문의 WHERE절은 데이터 검색을 위한 조건을 지정하는 데 사용되는 반면 SELECT문의 WHERE절은 데이터 검색을 위한 조건을 지정하는 데 사용된다는 것입니다. 특히 쿼리에서 반환되는 데이터를 필터링합니다.

 

Q13. TRUNC랑 ROUND에 대해 차이를 알려줄 수 있니?

TRUNC 및 ROUND는 숫자를 지정된 소수 자릿수로 반올림하는 데 사용되는 SQL의 수학 함수입니다.

TRUNC 함수는 단순히 숫자의 소수 부분을 제거하고 정수를 반환합니다. 예를 들어:

TRUNC(123.456) returns 123

ROUND 함수는 숫자를 지정된 소수 자릿수로 반올림합니다. 예를 들어:

ROUND(123.456, 2) returns 123.46

따라서 TRUNC와 ROUND의 차이점은 TRUNC는 숫자의 소수 부분을 제거하는 반면 ROUND는 숫자를 지정된 소수 자릿수로 반올림한다는 것입니다.

 

728x90
반응형
LIST