2024 동계 모각코

모각코 6주차

jinjuhan 2025. 2. 16. 22:56

SQL

 

IN 연산자

연산자 IN를 사용하면 WHERE절에 여러 개의 값을 지정

SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

'독일', '프랑스' 또는 '영국'의 모든 고객을 반환

 

SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');

'독일', '프랑스', '영국'이 아닌 모든 고객을 반환

 

 

(선택)

SELECT * FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders);

Orders 테이블 에 주문이 있는 모든 고객을 반환

 

SELECT * FROM Customers
WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);

Orders 테이블 에 주문을 하지 않은 모든 고객을 반환

 

 

BETWEEN 연산자

주어진 범위 내에서 값을 선택

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;

가격이 10~20 사이인 모든 제품을 선택

 

SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;

 

 

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20
AND CategoryID IN (1,2,3);

가격이 10~20 사이인 모든 제품을 선택합니다. 또한 CategoryID는 1, 2 또는 3이어야 함.

 

 

SELECT * FROM Products
WHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;

Carnarvon Tigers와 Mozzarella di Giovanni 사이의 ProductName이 알파벳순으로 있는 모든 제품을 선택

 

 

날짜 사이

SELECT * FROM Orders
WHERE OrderDate BETWEEN #07/01/1996# AND #07/31/1996#;

 '01-July-1996'과 '31-July-1996' 사이의 OrderDate를 갖는 모든 주문을 선택

 

 

 

SQL 별칭

SQL 별칭은 테이블이나 테이블의 열에 임시 이름을 지정하는 데 사용

종종 열 이름을 더 읽기 쉽게 만드는 데 사용

해당 쿼리가 지속되는 동안만 존재

AS 키워드를 사용하여 생성

SELECT CustomerID AS ID
FROM Customers;

 

 

AS는 선택사항

SELECT CustomerID ID
FROM Customers;

실제로 대부분의 데이터베이스 언어에서는 AS 키워드를 건너뛰어도 동일한 결과

 

 

공백 문자와 함꼐 별칭 사용

SELECT ProductName AS [My Great Products]
FROM Products;
SELECT ProductName AS "My Great Products"
FROM Products;

 

참고: 일부 데이터베이스 시스템에서는 [ ]와 ""를 모두 허용하고, 일부는 둘 중 하나만 허용

 

열 연결

SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' + Country AS Address
FROM Customers;

4개의 열(주소, 우편번호, 도시 및 국가)을 결합하는 "주소"라는 별칭을 생성

 

MySQL 예제

SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,', ',Country) AS Address
FROM Customers;

 

 

백준 - 스택

12605

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        sc.nextLine();

        for(int i=0;i<N;i++) {
            String str = sc.nextLine();
            StringTokenizer st = new StringTokenizer(str," ");
            Stack stack = new Stack<>();

            System.out.print("Case #"+(i+1)+": ");

            while(st.hasMoreTokens())
                stack.push(st.nextToken());


            while(!stack.empty())
                System.out.print(stack.pop()+" ");

            System.out.println();
        }
    }
}