Home 기초 SQL 정리
Post
Cancel

기초 SQL 정리

SQL Basic

sql tryit editor 웹 에디터 이용

따로 로컬에 환경을 구성할 필요는 아직 느끼지 못해서 웹에서 해보는걸로 대체했다.
구조도 일렬로 쓰거나 줄바꿈을하거나 상관 없고 대소문자도 상관 없다는거 같다. 하지만 일반적으로 예약어(키워드)들은 대문자를 사용하고 나머지를 소문자를 사용하는거 같다.
주석 처리는 --로 하는 듯

1. SELECT와 FROM

1
2
SELECT
FROM

SQL의 시작인데, SELECT는 가져오는 정보, FROM은 가져 올 DB를 의미하는 것 같다.
SELECT 다음에는 가져 올 정보(열)가 오는데, 모든 정보를 가져오고 싶은 경우에는 *를 쓴다.

1
2
SELECT *
FROM customers
1
SELECT * FROM customers

두개 모두 customers의 모든 정보를 가져오는 코드

2. WHERE

SQL에서 조건문 역할을 한다.

1
2
3
SELECT
FROM
WHERE
1
SELECT customername, address FROM customers WHERE city='London'

런던에 거주하는 고객들의 이름과 주소를 가져오는 쿼리

WHERE절에서 많이 사용하는 예약어

  • OR
  • AND
  • IN
  • BETWEEN
  • IS:
    • 테이블에서 특정 값을 찾을 때 사용하지만, =를 사용하는게 더 빠르다고 한다
    • NULL 값은 IS를 이용해서만 검색할 수 있는거 같다
  • LIKE:
    • 특정 문자를 검색할 때 사용
    • 와일드 카드와 함께 사용함

와일드 카드

  • % :
    • ‘어떤 문자가 와도 상관이 없다’는 의미
      • ‘a%’:
      • a%: a로 시작하는 모든 값
      • %a: a로 끝나는 모든 값
      • %a%: a가 있는 모든 값
      • _a%: 두번째 인덱스에 a가 있는 모든 값
      • a%o: a로 시작해서 o로 끝나는 모든 값
  • _ :
    • 글자수를 제한 시킬 수 있음
  • 예약어를 그대로 사용하고 싶으면 \ 사용

보통 직관적으로 이해 할 수 있었던거 같다.

1
2
3
SELECT *
FROM customers
WHERE country LIKE '%r%'

국가 이름에 ‘r’이 들어가는 나라에 거주하는 고객들의 모든 정보를 가져오는 쿼리
ORIN으로 ANDBETWEEN으로 특정 상황에서 논리로 바꿔 쓸 수 있는거 같다.

1
2
WHERE city='cond1' OR city='cond2'
WHERE city in ['cond1', 'cond2']
1
2
WHERE x>5 AND x<9
WHERE x BETWEEN 5 AND 9

3. ORDER BY

정렬하기

1
2
3
4
SELECT
FROM
WHERE
OREDER BY

사용하지 않는 구문은 제외하고 기본적인 순서만 맞춰 사용하면 된다.

1
2
3
SELECT *
FROM customers
ORDER BY cutomerid DESC

cutomerid를 기준으로 내림차순해 모든 고객 정보를 출력하는 쿼리

1
2
3
4
SELECT *
FROM products
WHERE price>=20
ORDER BY price ASC

가격이 20이 넘는 제품들의 모든 정보를 오름차순으로 정렬해 출력하는 쿼리

1
2
3
4
SELECT name
FROM students
WHERE marks > 75
ORDER BY name, id ASC

marks가 75를 초과하는 학생들의 이름을 오름차순(디폴트)으로 정렬하고 같은 marks를 가진 경우에는 id를 기준으로 오름차순해 출력하는 쿼리

4. 기타 도움되는 함수 및 기능

1. SQL 문자열 자르기

  • LEFT(str, len): str을 왼쪽에서 len 만큼 자름
  • RIGHT(str, len): str을 오른쪽에서 len 만큼 자름
  • SUBSTRING(str, start, len): str의 start에서 len 만큼 자름
    • SUBSTR()도 동일

2. 소수점 처리

몇자리를 남길건지 입력해줘야 함

  • CEIL(): 올림
  • FLOOR(): 내림
  • ROUND(): 반올림

3. 별칭 주기 AS

띄어쓰기가 들어간 경우 " "로 묶어줘야 함

1
2
3
SELECT name AS station_name
FROM station
WHERE local = '마포구'
1
2
3
SELECT name AS "station name"
FROM station
WHERE local = '마포구'

SQL 문제 푼거

문제는 Hackerranksolvesql 이용

1. Hackerrank SQL 문제 풀어본거

1. Revising the Select Query 1

1
2
3
SELECT *
FROM city
WHERE countrycode='USA' AND population>100000

2. Select By ID

1
2
3
SELECT *
FROM city
WHERE id='1661'

3. Weather Observation Station 6

1
2
3
4
5
6
7
8
-- LIKE IN으로 변환 가능? -> MYSQL은 기능이 없음
SELECT DISTINCT city -- DISTINCT은 중복을 출력하지 않는 옵션
FROM station
WHERE city LIKE 'a%'
OR city LIKE 'e%'
OR city LIKE 'i%'
OR city LIKE 'o%'
OR city LIKE 'u%'

4. Weather Observation Station 12

1
2
3
4
5
6
7
8
9
10
11
12
SELECT DISTINCT city
FROM station
WHERE city NOT LIKE 'a%'
AND city NOT LIKE 'e%'
AND city NOT LIKE 'i%'
AND city NOT LIKE 'o%'
AND city NOT LIKE 'u%'
AND city NOT LIKE '%a'
AND city NOT LIKE '%e'
AND city NOT LIKE '%i'
AND city NOT LIKE '%o'
AND city NOT LIKE '%u'

5. Employee Names

1
2
3
SELECT name
FROM Employee
ORDER BY name ASC

6. Employee Salaries

1
2
3
4
SELECT name
FROM Employee
WHERE salary > 2000 AND months < 10
ORDER BY employee_id ASC

7. Higher Than 75 Marks

1
2
3
4
SELECT Name
FROM STUDENTS
WHERE Marks > 75
ORDER BY RIGHT(Name, 3), ID ASC

8. Weatjer Observation Station 15

1
2
3
4
5
SELECT ROUND(long_w, 4)
FROM station
WHERE lat_n < 137.2345
ORDER BY lat_n DESC
LIMIT 1

2. solvesql 문제 풀어본거

1. 모든 데이터 조회하기

1
2
SELECT *
FROM points

2. 특정 칼럼만 조회하기

1
2
SELECT x, y
FROM points

3. 일부 데이터 조회하기

1
2
3
SELECT *
FROM points
WHERE quartet='I'
This post is licensed under CC BY 4.0 by the author.

백준 1009 분산처리

기초 SQL 정리 2

Comments powered by Disqus.