Notice
Recent Posts
Recent Comments
Link
01-02 05:50
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

AI 전문가가 되고싶은 사람

[KT 에이블스쿨 기자단] SQL 복습 본문

기자단 활동

[KT 에이블스쿨 기자단] SQL 복습

Kimseungwoo0407 2024. 5. 16. 23:51

먼저 간단한 단순 조회!

1. 단순 조회

-- 문자열 출력
SELECT 'aivle';

-- 별칭 사용
SELECT 'aivle' AS KT

-- 숫자 연산 결과 출력
SELECT 10 + 20 As Sum;

-- 함수 결과 출력
SELECT CURDATE() As Today;

-- 변수 값 출력
SET @Today = CURDATE();
SELECT @Today;

 

조회 대상 열 지정

간단하게 혼자 만들어봤습니다.

/*
2. 조회 대상 열 지정
*/

-- 데이터베이스 연결
USE aivle;

-- 현재 데이터베이스 확인
SELECT DATABASE();

-- 1) 모든 열 모든 행 조회

-- 에이블러 정보 조회
SELECT * FROM aivler;

-- ai/dx 정보 조회
SELECT * FROM class;

aivler 테이블
class 테이블

-- 2) 일부 열 모든 행 조회

-- 원하는 열을 원하는 순서로 나열
SELECT age, name FROM aivler;

SELECT region, number FROM class;

-- 1) 일부 행 모든 열 조회
-- region = busan인 반 정보 조회
SELECT * FROM class WHERE region = 'busan';

/*
4. 비교 연산자
*/

-- 코드마스터스 그랜드마스터인 에이블러 정보 조회
SELECT * FROM aivler WHERE codingmaster = 'yes';

-- 코드마스터스 그랜드마스터가 아닌 에이블러 정보 조회
SELECT * FROM aivler WHERE codingmaster != 'yes';

-- 나이가 25세 이하인 에이블러 정보 조회
SELECT * FROM aivler WHERE age <= '25';

-- 김씨 성을 갖는 에이블러
SELECT * FROM aivler WHERE name LIKE '김%';

-- 이름에 민이 들어간 에이블러
SELECT * FROM aivler WHERE name LIKE '%민%';

-- 이름이 승으로 끝나는 에이블러
SELECT * FROM aivler WHERE name LIKE '%승';

/*
6. 논리 연산자
*/

-- 20명 이상의 에이블러가 수강하고 있는 지역 조회
SELECT region FROM class WHERE number >= 20;

-- 코딩마스터스 그랜드마스터이면서 25세 이상인 에이블러 조회
SELECT name FROM aivler WHERE codingmaster ='yes' and age >= 25;

/*
7. 범위 조건과 리스트 조건
*/

-- 나이가 20~25 사이인 에이블러 정보 조회
SELECT * FROM aivler WHERE age >=20 and age <= 25;

-- 부산, 수도권 지역 정보 조회
SELECT * FROM class WHERE region IN ('busan','sudo');

/*
8.NULL 값 비교
*/

SELECT * FROM class WHERE number IS NULL;

SELECT * FROM class WHERE number IS NOT NULL;

/*
9. IFNULL() 함수
*/

-- IFNULL 함수 사용 전
SELECT id, name, age, codingmaster FROM aivler WHERE codingmaster IS NULL;

 

* IFNULL 함수와 COALESCE 함수의 차이점

  • 문법: IFNULL(expr1, expr2)
  • 첫 번째 표현식(expr1)이 NULL이 아니면, expr1의 값이 반환. 그렇지 않으면 두 번째 표현식(expr2)의 값이 반환
  • 문법: COALESCE(expr1, expr2, ...)
  • 인수 목록 중 첫 번째로 NULL이 아닌 값을 반환. 모든 표현식이 NULL이면 COALESCE는 NULL을 반환.
-- IFNULL 함수 사용: codingmaster 열 값이 NULL이면 unknown으로 표시
SELECT id, name, age, IFNULL(codingmaster,'unknown') AS codingmaster 
FROM aivler 
WHERE codingmaster IS NULL;

-- COALESCE() 함수 사용
SELECT id, name, age, COALESCE(codingmaster, 'unknown') AS codingmaster 
FROM aivler 
WHERE codingmaster IS NULL;

 

/*
9. 자동 형 변환
*/

-- 자동 형 변환
SELECT '10' + '20';
SELECT 10 + '20';
SELECT 10 + '20AX';
SELECT 10 + 'LX20';
  1. SELECT '10' + '20';
    • 두 문자열 '10'과 '20'은 숫자로 자동으로 변환
    • 결과는 30
  2. SELECT 10 + '20';
    • 문자열 '20'은 숫자로 자동으로 변환
    • 결과는 30
  3. SELECT 10 + '20AX';
    • '20AX'는 숫자로 변환할 수 없는 문자열이므로 변환할 수 있는 부분인 '20'까지만 숫자로 변환
    • 따라서 '20'만이 연산에 사용되고 결과는 30
  4. SELECT 10 + 'LX20';
    • 'LX20'은 숫자로 변환할 수 없는 문자열이므로 변환할 수 있는 부분인 '10'까지만 숫자로 변환
    • 따라서 '10'만이 연산에 사용되고 결과는 10
-- 문자열 데이터 결합
SELECT CONCAT('10', '20');
SELECT CONCAT(10,'20');
SELECT CONCAT(10,20);
SELECT CONCAT(10,NULL);
  1. SELECT CONCAT('10', '20');
    • 두 문자열 '10'과 '20'을 결합하여 하나의 문자열로 만듦.
    • 결과는 '1020'
  2. SELECT CONCAT(10,'20');
    • 숫자 10은 문자열 '10'으로 변환되고, 문자열 '10'과 '20'을 결합하여 하나의 문자열로 만듦 .
    • 결과는 '1020'
  3. SELECT CONCAT(10,20);
    • 숫자 10과 20은 각각 문자열 '10'과 '20'으로 변환되고, 문자열 '10'과 '20'을 결합하여 하나의 문자열로 만듦.
    • 결과는 '1020'
  4. SELECT CONCAT(10,NULL);
    • 결과는 NULL

이후에 더 올려야겠다.. 여기까지만 해도 힘들다..