[손에 잡히는 10분 SQL - 벤 포터 지음, 박남혜 옮김] 책의 학습 후 정리자료입니다.
# SQL
SELECT prod_name
FROM Products;
Products
테이블에서 prod_name
이라고 불리는 하나의 열
을 가져오기 위해 SELECT 문을 사용하였다. SELECT 키워드 바로 오른쪽에 가져오고 싶은 열 이름
을 적고, FROM 절에는 가져올 데이터가 있는 테이블의 이름
을 적는다.;
)으로 분리해야 한다.,
)로 구분하여 모두 나열한다.# SQL
SELECT prod_id, prod_name, prod_price
FROM Products;
Products
테이블에서 데이터를 가져오는데, prod_id
, prod_name
, prod_price
3개의 열 이름을 나열하였고, 각 열은 콤마(,
)로 구분하였다.*
)를 사용하여 모든 열을 가져올 수도 있다.SELECT *
FROM Products;
*
)를 사용하면, 테이블의 모든 열이 반환되는데, 열의 순서는 일반적으로 테이블에서 정의한 순서대로 불러온다.*
)를 사용하지 않는 것이 더 낫다. 원하는 열을 직접 적는 것보다 와일드 카드 문자를 쓰는 것이 시간과 노력을 절약할 수 있지만, 불필요한 열을 가져와 검색 성능을 저하한다.SELECT vend_id
FROM Products
BRS01
, DLL01
, FNG01
로 3개의 판매처를 가지고 있지만 결과는 9개의 레코드를 호출한다.Products
테이블이 9개의 레코드로 구성되어 있기 때문이다.DISTINCT
키워드를 사용하면 된다.DISTINCT
키워드는 중복되는 값을 제거한다.SELECT DISTINCT vend_id
FROM Products
DISTINCT
키워드는 모든 열에 일괄 적용된다. 하나의 열에만 부분적으로 적용할 수는 없다. 만약 SELECT DISTINCT a, b FROM table
라고 적는다면 지정된 두 항목을 결합하여 생성된 고유한 조합이 반환된다.MySQL
, MariaDB
, PostgreSQL
이나 SQLite
를 사용한다면 LIMIT
키워드를 사용하면 된다.SELECT prod_name
FROM Products
LIMIT 3, 4;
LIMIT 3, 4;
의 의미는 Products
테이블에서 추출한 prod_name
열의 레코드 중 인덱스 3
부터 4
개 즉, 인덱스 6번가지의 레코드를 반환하는 것을 의미한다.SELECT prod_name -- 주석
FROM Products
--
)을 사용하여 한 줄 주석을 달 수 있다.CREATE TABLE
문에서 열에 대한 설명을 적는 것은 바람직한 사용 방법이다.SELECT prod_name # 주석
FROM Products
#
으로 시작하는 문장은 주석으로 처리된다./*SELECT prod_name
FROM Products*/
SELECT prod_name
FROM Products
/*
으로 시작해서 */
으로 끝나는 문장은 주석으로 처리된다.Customers
테이블에서 모든 고객 ID(cust_id
)를 가져오는 SQL 문을 작성하라.SELECT cust_id
FROM Customers;
OrderItems
테이블에는 주문 목록을 모두 저장한다(일부는 여러 번 주문되었다). 주문한 제품 목록(prod_id
)을 가져오는 SQL 문을 작성하라(모든 주문이 아니라 고유한 제품 목록이다). 결과로 7개의 행이 표시되어야 한다.SELECT DISTINCT prod_id
FROM OrderItems;
Customers
테이블에서 모든 열을 가져오는 SQL 문을 작성해 보고 고객 ID만 가져오는 SELECT 문을 작성하라. 한 문장을 주석 처리하여 하나만 실행하게 한다(그러고 나서 다른 문장을 주석 처리하여 실행한다).SELECT *
FROM Customers;
/* SELECT cust_id
FROM Customers; */
/* SELECT *
FROM Customers; */
SELECT cust_id
FROM Customers;