💅 SQL 입문
지난 시간에는 SSMS 프로그램의 형태와 필수 명령어, 테이블 추가, 주석 등의 사용법을 간략하게 알아보았다. 오늘은 SSMS를 통해 실질적으로 데이터베이스에 질의를 남기고, 결과를 살펴보는 시간을 가져본다.
🤶 SQL 쿼리 (= SQL문)
* 쿼리를 작성한 후 실행 버튼을 누르면 된다. (F5)
* SQL문은 소문자로 써도 상관없다. 즉 대소문자 상관이 없다.
→ 그렇지만, 예약어를 대문자로 쓰고 나머지를 소문자로 쓰는게 가독성이 좋다!
* SQL 문장 하나가 끝나면 세미콜론을 붙여준다.
→ SQL문이 한 문장 밖에 없으면 세미콜론 생략해도 됨
* 전체 쿼리문의 일부분인 특정 SQL 문을 드래그 하고 실행하면 전체 쿼리문이 아닌, 드래그한 해당 쿼리문만 실행된다!
🐑 SELECT : 조건에 맞는 행렬 조회하기
SELECT는 데이터를 조회(READ)하는 역할을 한다. 조건에 맞는 데이터를 화면에 출력한다.
SELECT : 조회할 열 (쉼표로 추가적으로 나열이 가능하다)
FROM : 테이블 이름
SELECT는 항상 FROM 과 같이 기술하며 필수로 입력해야한다! (WHERE, ORDER BY 등등 이런 것들은 생략 가능)
👩💼 전체 데이터 조회하기
SELECT *
FROM players;
*은 '전부 다'를 뜻한다. 즉 위의 질의는 “players 테이블에서 모든 열을 다 가져와라” 라는 의미이다. 한국말로는 가져올 테이블 FROM 부분을 앞에 쓰는 것이 더 자연스럽지만 (테이블에서 ~를 가져와라) SQL문은 영어에서 왔다는 것을 기억하자!
👩💼 원하는 열만 조회하기
SELECT nameFirst, nameLast, birthYear
FROM players;
해당 질의는 “players 테이블에서 nameFirst, nameLast, birthYear 모든 열을 다 가져와라”라는 뜻과 동일하다.
👩💼 별명 붙여주기 : AS
SELECT 열 이름 AS 별칭
SELECT nameFirst AS 이름, nameLast, birthYear
FROM players;
원래 명명된 이름 외에 임의로 열 이름을 바꿔 출력하고자 할 때 AS를 사용한다. nameFirst 열이 이름으로 출력된 것을 확인할 수 있다. 원래의 이름이 영원히 이름으로 바뀐 것이 아니라 임시로 이름으로 출력만 된 것 뿐이다.
🐑 WHERE : 원하는 조건의 데이터만 조회하기
조건 식을 적고 해당 조건에 맞는 데이터만 조회할 수 있다.
순서로는 FROM 다음에 와야 하며, 생략 가능하다.
SELECT nameFirst, nameLast, birthYear
FROM players
WHERE birthYear = 1866; --원하는 조건
birthYear의 열 값이 1866인 행들만 조회한 것을 볼 수 있다.
👩💼 논리 연산자
C++, C#과 다르게 equal 연산자는 ==가 아니라 '='이다.
우선순위 👉 괄호 > AND > OR
SELECT nameFirst, nameLast, birthYear
FROM players
WHERE birthYear != 1866;
birthYear 열 값이 1866이 아닌 행들만 조회한 것을 확인할 수 있다.
SELECT nameFirst AS name, nameLast, birthYear, birthCountry
FROM players
WHERE birthYear = 1974 AND birthCountry = 'USA';
birthYear 열 값이 1974 이고 & birthCountry 열 값이 USA 인 행들만 조회한 것을 확인할 수 있다.
문자열 리터럴은 ' ' 작은 따옴표로 쓴다.
SELECT nameFirst AS name, nameLast, birthYear, birthCountry, weight
FROM players
WHERE (birthYear = 1974 OR birthCountry = 'USA') AND weight > 185;
AND가 OR 보다 우선순위가 더 높다. (먼저 실행됨)
C++, C#과 같이 우선순위 높이려면 괄호를 쓰면 된다.
👩💼 IS NULL, IS NOT NULL
A IS NULL : A 열 값이 NULL 이면 참
A IS NOT NULL : A 열 값이 NULL 이 아니면 참
SELECT *
FROM players
WHERE deathYear != NULL;
NULL 값인지를 알고싶다면 != NULL 하면 안된다. IS NULL을 사용하여야 한다!
SELECT *
FROM players
WHERE deathYear IS NULL;
deathYear 열 값이 NULL 인 행들만 조회한 것을 확인할 수 있다.
SELECT *
FROM players
WHERE deathYear IS NOT NULL;
deathYear 열 값이 NULL 이 아닌 행들만 조회한 것을 확인할 수 있다.
👩💼 LIKE
패턴으로 조회할 수 있다.
_ : 한 자리
→ A LIKE ‘a___’ : A 열의 값이 “a 로 시작하며 뒤에 3 자리 짜리 문자열”인 행을 조회
% : 자리에 상관 없는 모든 값
→ A LIKE ‘%a’ : A 열의 값이 “a 로 끝나는 모든 문자열”인 행을 조회
여담으로 회원이 탈퇴를 하면 회원 DB에서 그 회원 정보를 삭제할 것 같지만, 실제로는 그렇게 하지 않고 임시로 DELETED-닉네임 이런식으로 이름을 수정한다. 탈퇴한 회원이라도 해당 정보를 복구하고 조회해야할 일이 생길 수도 있기 때문에 삭제하지는 않는다. 이럴때 탈퇴한 회원의 정보만 조회하려면 DELETED-% 이런식으로 조회해 볼 수 있을 것이다!
SELECT *
FROM players
WHERE birthCity LIKE 'New%';
birthCity 값이 “NEW”로 시작하는 행을 조회
SELECT *
FROM players
WHERE birthCity LIKE 'New Yor_';
birthCity 값이 “NEW Yor”로 시작하며 그 뒤에 문자는 딱 한자리인 행을 조회
'공부 > 인프런 - Rookiss' 카테고리의 다른 글
Part 5-2-4. SQL 입문 : 수치와 문자열 (1) | 2024.01.25 |
---|---|
Part 5-2-3. SQL 입문 : ORDER BY, TOP, OFFSET (1) | 2024.01.24 |
Part 5-2-1. SQL 입문 : SSMS 입문 (0) | 2024.01.22 |
Part 5-1-1. 개론 : OT 및 환경 설정 (0) | 2024.01.16 |
Part 5. 데이터베이스 (0) | 2024.01.11 |