SQL Basic
sql tryit editor 웹 에디터 이용
따로 로컬에 환경을 구성할 필요는 아직 느끼지 못해서 웹에서 해보는걸로 대체했다.
구조도 일렬로 쓰거나 줄바꿈을하거나 상관 없고 대소문자도 상관 없다는거 같다. 하지만 일반적으로 예약어(키워드)들은 대문자를 사용하고 나머지를 소문자를 사용하는거 같다.
주석 처리는 --
로 하는 듯
1. SELECT와 FROM
SQL의 시작인데, SELECT는 가져오는 정보, FROM은 가져 올 DB를 의미하는 것 같다.
SELECT 다음에는 가져 올 정보(열)가 오는데, 모든 정보를 가져오고 싶은 경우에는 *를 쓴다.
1
2
| SELECT *
FROM customers
|
1
| SELECT * FROM customers
|
두개 모두 customers의 모든 정보를 가져오는 코드
2. WHERE
SQL에서 조건문 역할을 한다.
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’이 들어가는 나라에 거주하는 고객들의 모든 정보를 가져오는 쿼리
OR
은 IN
으로 AND
는 BETWEEN
으로 특정 상황에서 논리로 바꿔 쓸 수 있는거 같다.
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 만큼 자름
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 문제 푼거
문제는 Hackerrank와 solvesql 이용
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. 모든 데이터 조회하기
2. 특정 칼럼만 조회하기
1
2
| SELECT x, y
FROM points
|
3. 일부 데이터 조회하기
1
2
3
| SELECT *
FROM points
WHERE quartet='I'
|
Comments powered by Disqus.