드디어 미루고 미루던 SQL 공부를 시작했다!(이제 예전에 샀던 책이 아닌 다른 책으로....ㅎ) 데이터베이스의 기본적인 개념은 예전에 정리를 했으니 바로 문법공부로 넘어갈까 한다!
+) Mac에서 터미널로 MySQL 실행하기
(MySQL이 설치되어 있다는 가정하에 진행)
1. mysql.server start
2. mysql -uroot -p -> 비밀번호 입력
🤔 만약 1번에서 오류가 난다면? (참고 : https://signature95.tistory.com/27)
+) Mac에서 터미널로 MySQL 종료하기
1. exit
2. mysql.server stop
표 형식의 데이터는 '행(레코드)'와 '열(컬럼/필드)'로 구성된다.
select는 데이터베이스의 데이터를 읽어올 수 있다.
SELECT * FROM 테이블명;
⚠️ 주의할 점은 명령이 끝나고 꼭 세미콜론(;)을 넣고 Enter 키를 눌러야 한다.
-> 만약 세미콜론을 넣지 않는다면 명령이 끝나지 않았다 인식하여 계속 명령어를 입력할 수 있다.
예시
+)
만약 데이터베이스를 선택하지 않고 바로 SELECT 구문을 실행한다면 다음과 같은 오류가 발생할 수 있다. 따라서use 데이터베이스
를 입력해 데이터베이스를 선택해 주어야 한다.
DESC 명령으로 테이블에 어떤 열이 정의되어 있는지 알 수 있다.
SELECT 열1,열2 FROM 테이블명 WHERE 조건식
열 지정 순서는 임의로 정할 수 있다.
WHERE 구는 FROM 구의 뒤에 표기하며, WHERE 뒤에 검색 조건을 표기한다.
조건식은 '열과 연산자, 상수로 구성되는 식'이다.
<비교 연산자>
⚠️ 문자열형, 날짜시간형을 비교할 경우 싱글쿼트('')로 둘러싸 표기해야한다.
예시
sample21에서 no가 2인 행 추출
⬇️
⚠️ OR보다 AND 쪽이 우선 순위가 높다. -> 괄호로 우선 순위를 변경할 수 있다.
열 LIKE 패턴
특정 문자나 문자열이 포함되어 있는지를 검색하고 싶은 경우 패턴 매칭 또는 부분 검색을 사용한다.
패턴을 정의할 떄는 %_
와 같은 메타문자를 사용할 수 있다.
👉🏻 메타문자 : 패턴 매칭 시 '임의의 문자 또는 문자열'에 매치하는 부분을 지정하지 위해 쓰이는 특수문자
%문자열%
로 적어야한다.만약 %을 검색하고 싶다면?
WHERE text LIKE '%\%%'
만약 문자열 상수 '의 이스케이프
' -> ' '' '
SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명 ASC/DESC
예시 1
나이를 내림차순으로 정렬
예시 2
복수의 열을 정렬 / sample32를 a열과 b열로 내림차순으로 정렬
SELECT 열명 FROM 테이블명 LIMIT 행수 [OFFSET 시작행]
LIMIT 구는 SELECT 명령의 마지막에 지정하는 것으로 WHERE 구나 ORDER BY 구의 뒤에 지정한다.
예시 1
⬇️
예시 2
+ - * / % MOD
예시
AS 열명
⚠️ 별명을 한글로 지정하는 경우 여러 가지로 오작동하는 경우가 많으므로 더블쿼드(MySQL에서는 백쿼트)로 둘러싸서 지정한다.
예시 1
price*quantity 식에 amount라는 별명 붙이기
예시 2
만약 WHERE 구의 조건식을 지정하고 싶다면?❌❌❌
SELECT *,price*quantity AS amount FROM sample34 WHERE amount >=2000;
이렇게 지정하면 오류가 난다!
🤔 WHERE 구 -> SELECT 구 순서로 처리되기 때문!
🙆🏻♀️🙆🏻♀️🙆🏻♀️
SELECT *,price*quantity AS amount FROM sample34 WHERE price*quantity >=2000;
예시 3
ORDER BY 구는 SELECT 구 다음으로 처리되기 때문에 별명을 사용할 수 있다.SELECT *,price*quantity AS amount FROM sample34 ORDER BY amount DESC;
문자열 결합이란 문자열 데이터를 결합하는 연산이다.
⚠️ 문자열 결합이지만 수치 데이터도 문제없이 연산할 수 있다. 단, 문자열로 결합한 결과는 문자열형이 된다.
SUBSTRING 함수는 문자열의 일부분을 계산해서 반환해준다.
SUBSTRING('20140125001',1,4) -> '2014'
TRIM 함수는 문자열의 앞뒤로 여분의 스페이스가 있을 경우 이를 제거해주는 함수이다.
TRIM('ABC ') -> 'ABC'
CHARACTER_LENGTH 함수는 문자열의 길이를 계산해 수치로 반환해준다.
CASE WHEN 조건식1 THEN 식1
[WHEN 조건식2 THEN 식2 ...]
[ELSE 식3]
END
예시
⚠️ NULL 값을 반환하는 경우라면 COALESCE 함수를 사용하면 더 쉽게 변환할 수 있다.SELECT a,COALESCE(a,0) FROM sample37;