TIL-44, SQL SELECT
( 전체 열 불러오기 * )
SELECT *
FROM Users;
// Users의 데이터베이스에서 모든 열(*)의 정보들을 가져온다
( 원하는 Col(열)만 보기 )
SELECT name
FROM Users;
// Users의 데이터베이스에서 name 열의 정보들을 가져온다
( Col(열) 이름 변경 )
SELECT name AS '이름'
FROM Users;
// Users의 데이터베이스에서 name 열을 '이름' 으로 변경한 뒤 정보들을 가져온다
( WHERE로 테이블 핸들링 )
SELECT *
FROM Users
WHERE name = '남훈';
// Users의 데이터베이스에서 모든 테이블(*)을 가져온 뒤 name 행에서 '남훈' 을 가진 정보를 가져온다.
SELECT *
FROM Users
WHERE age > 19;
// Users의 데이터베이스에서 모든 테이블(*)을 가져온 뒤 age행에서 19 이상인 정보를 가져온다.
( ORDER BY로 정렬하기 )
SELECT *
FROM Users
ORDER BY age DESC;
// Users의 데이터베이스에서 모든 테이블(*)을 가져온 뒤 age행을 내림차순 정렬한다
// DESC는 내림차순 정렬, ASC는 오름차순 정렬 (ASC 생략시 기본 오름차순 정렬)
( LIMIT 으로 불러올 정보 제한 )
SELECT *
FROM Users
LIMIT 10;
// Users의 데이터베이스에서 모든 테이블(*)의 정보들을 10개까지만 가져온다.
( 위에 나온 녀석들을 전부 사용해서 연습 )
SELECT age AS '나이'
FROM Users
WHERE age > 19
ORDER BY age DESC
LIMIT 20;
/* Users의 데이터베이스에서 age열을 '나이'로 변경해서 가지고 오고,
age 열은 19 이상, 내림차순으로 20개만 나타낸다. */
연산자 사용
( 기본 연산자 )
SELECT 1 + 2;
SELECT 5 - 3.5 AS Minus;
SELECT 4 * (4 - 2), 'Hello';
SELECT 10 % 3;
위와 같이 SELECT로 기본 연산자 사용이 가능하다.
Javascript와 다르게, 문자열은 숫자 '0'으로 인식한다.
(JS에서는 '안녕' + 1 입력시 숫자를 문자열로 편입해 '안녕1'이 되지만,
SQL에선 '안녕' + 1 입력시 문자열을 '0'으로 인식해 1이 된다.)
SELECT 'hi' + 1; // 1
SELECT 'hi' * 100; // 0
( Boolean 연산자 )
SELECT TRUE, FALSE; // 1, 0
SELECT !TRUE, NOT TRUE; // 0, 0
SELECT *
FROM User
WHERE TRUE;
// User 데이터베이스에서 전체 테이블(*)을 선택하고, TRUE인 행들을 전부 읽는다.
( Betweet )
SELECT 3 BETWEEN 1 AND 10; // 1
// 3이 1과 10 사이에 있다
SELECT 'banana' BETWEEN 'Apple' AND 'coconut';
// 'banana'의 첫 글자 b가 'Apple'의 a와 coconut의 c 사이에 있다.
// 대소문자 구분하지 않는다.
( IN, NOT IN )
SELECT 5 + 5 IN (5, 10, 20); // 1
// 5 + 5 (10)이 (5, 10, 20)중에 있다.
( LIKE '%', LIKE '_' )
SELECT 'APPLE' LIKE 'A%'; // 1
// A로 시작한다
SELECT 'APPLE' LIKE '%E'; // 1
// E로 끝난다
// %는 n개의 단어가 있다는 것. A%면 A뒤로 n개의 단어,
// %E면 E앞으로 n개의 단어가 있다는 것.
SELECT 'APPLE' LIKE 'A____'; // 1
// A뒤로 _(4개). 5글자라는 것.
SELECT 'APPLE' LIKE '_____'; // 1
SELECT 'APPLE' LIKE 'A_PL_'; // 1
연산자 정리
+, -, *, /
각각 더하기, 빼기, 곱하기, 나누기%, MOD
나머지IS
양쪽이 모두 TRUE 또는 FALSEIS NOT
한쪽은 TRUE, 한쪽은 FALSEAND, &&
양쪽이 모두 TRUE일 때만 TRUEOR, ||
한쪽이 TRUE면 TRUE=
양쪽이 같음!==, <>
양쪽이 다름>, <
한쪽 값이 더 큼>=, <=
같거나 큼BETWEEN {MIN} AND {MAX}
두 값 사이에 있음NOT BETWEEN {MIN} AND {MAX}
두 갑 사이가 아닌 곳에 있음IN (...)
괄호 안의 값들 가운데 있음NOT IN (...)
괄호 안의 값들 가운데 없음LIKE '...%...'
0~n 개의 문자를 가진 패턴LIKE '..._...'
_의 갯수만큼 문자를 가진 패턴