04강. Hello World 실행하기
1. 'SELECT * FROM 테이블명' 실행
SELECT * FROM 테이블명;
SELECT, *, FROM 사이에 스페이스 넣어 구분, 명령의 마지막에 세미콜론(;) 붙인 후 엔터
2. SELECT 명령 구분
SELECT : 데이터베이스의 데이터 읽어올 수 있음
애스터리스크(*) : '모든 열'을 의미하는 메타문자
FROM : 처리 대상을 지정하는 키워드, FROM 뒤에 테이블명 지정
SELECT * FROM 테이블명; SELECT 구 FROM 구 |
SELECT 명령은 '구'라는 단위로 나눌 수 있음
3. 예약어와 데이터베이스 객체명
SELECT, FROM: 구를 결정하는 키워드이자 예약어
데이터베이스에는 테이블 외에 다양한 데이터를 저장하거나 관리하는 '어떤 것'을 만들 수 있음
'어떤 것' : '데이터베이스 객체'
데이터베이스 객체는 이름을 붙여 관리, 통상적으로 데이터베이스 객체명과 예약어에 동일한 이름 사용 불가
예약어와 데이터베이스 객체명은 대소문자 구별X
select * from sample21; Select * From Sample21; SELECT * FROM SAMPLE21; |
모두 동일하게 동작
4. Hello World를 실행한 결과 = 테이블
SELECT 명령 실행 → 표 형식의 데이터 출력됨
표 형식의 데이터 → '행(레코드)'과 '열(컬럼/필드)'로 구성됨
셀: 각각의 행과 열이 만나는 부분
no | name | birthday | address |
1 | 박준용 | 1976-10-18 | 대구광역시 수성구 |
2 | 김재진 | NULL | 대구광역시 동구 |
3 | 홍길동 | NULL | 서울특별시 마포구 |
각 행의 no열 값 : 1, 2, 3 같은 연속적인 숫자로 이루어짐
수치형 데이터 : 숫자만으로 구성된 데이터 → 오른쪽 정렬로 표시됨
name 열 : 사람 이름이 저장되어 있음
문자열형 데이터 : 임의의 문자로 구성된 데이터 → 왼쪽 정렬로 표시됨
birthday 열 : 날짜 데이터가 저장되어 있음
날짜시간형 데이터 : 날짜와 시각을 나타내는 데이터 → 왼쪽 정렬로 표시됨
데이터는 자료형으로 분류할 수 있고 열은 하나의 자료형만 가질 수 있음
5. 값이 없는 데이터 = NULL
NULL은 특별한 데이터 값으로 아무것도 저장되어 있지 않은 상태
05강. 테이블 구조 참조하기
1. DESC 명령
DESC 테이블명;
DESC명령으로 테이블에 어떤 열이 정의되어 있는지 알 수 있음 (DESC는 SQL 명령X)
- Field : 열 이름
- Type : 해당 열의 '자료형'
- Null : NULL 값을 허용할 것인지 아닌지를 나타내는 제약사항
- Key : 해당 열이 '키'로 지정되어 있는지를 나타냄
- Default : 그 열에 주어진 '기본값'
2. 자료형
- INTEGER 형 : 수치형의 하나로 정수값을 저장할 수 있는 자료형
- CHAR 형 :문자열형의 하나로 문자열을 저장할 수 있는 자료형, 열의 최대 길이 지정해야 함, '고정 길이 문자열' 자료형
- VARCHAR 형 : 문자열을 저장할 수 있는 자료형, 데이터 크기에 맞춰 저장공간의 크기 변함, '가변 길이 문자열' 자료형
- DATE 형 : 날짜값을 저장할 수 있는 자료형
- TIME 형 : 시간을 저장할 수 있는 자료형
06강. 검색 조건 지정하기
1. SELECT 구에서 열 지정하기
SELECT 열1, 열2… FROM 테이블명;
열을 한정하기 위해서는 * 대신 열명 지정
콤마(,)를 이용하여 열을 구분 지어 여러 개 지정 가능
열을 지정하지 않거나, 존재하지 않는 열을 지정할 시 에러 발생
2. WHERE 구에서 행 지정하기
SELECT 열 FROM 테이블명 WHERE 조건식;
많은 행 속에서 필요한 데이터만 검색하기 위해 WHERE 구 사용, FROM 구의 뒤에 표기
- 구의 순서와 생략
SQL에서는 구의 순서가 정해져 있어 바꿔 적을 수 없음
구에는 생략 가능한 구가 있음
WHERE 구를 생략하는 경우 테이블 내의 모든 행이 검색대상이 됨
- WHERE 구
조건식: 열과 연산자, 상수로 구성되는 식
WHERE 구의 조건에 일치하는 행만 결과로 반환됨
- 조건식
조건식 'no = 2' |
no 열 값이 2인 경우 참이 되는 조건식
'no' : 열 이름
'=' : 연산자
'2' : 상수
조건식은 참 또는 거짓의 진리값을 반환하는 식으로 비교 연산자를 사용해 표현
- 값이 서로 다른 경우 '<>'
서로 다른 값인지를 비교하는 연산자, 다를 경우 참이 됨
3. 문자열형의 상수
수치형 조건식의 경우 비교할 숫자를 그대로 조건식에 표기하는 반면,
문자열형을 비교할 경우 싱글쿼트(' ')로 둘러싸 표개햐아함
날짜시간형의 경우에도 싱글쿼트로 둘러싸 표기, 연월일 하이픈(-)으로 구분, 시각 시분초 콜론(:)으로 구분
4. NULL값 검색
- IS NULL
NULL 값을 검색할 경우에는 'IS NULL' 을 사용
5. 비교 연산자
- = 연산자 : 좌변과 우변의 값이 같을 경우 참
- <> 연산자 : 좌변과 우변의 값이 같지 않을 경우 참
- > 연산자 : 좌변의 값이 우변의 값보다 클 경우 참, 같거나 작을 경우 거짓
- >= 연산자 : 좌변의 값이 우변의 값보다 크거나 같을 경우 참, 작을 경우 거짓
- < 연산자 : 좌변의 값이 우변의 값보다 작을 경우 참, 같거나 클 경우 거짓
- <= 연산자 : 좌변의 값이 우변의 값보다 작거나 같을 경우 참, 클 경우 거짓
=은 <나 >뒤에 붙임(=>나 =<는 틀린 표기법)
>=, <= 의 경우 사이에 스페이스를 넣으면 연산자 두개로 판단하여 에러 발생
07강. 조건 조합하기
AND, OR, NOT의 3가지 방법을 사용하여 복수의 조건을 조합할 수 있음
1. AND로 조합하기
조건식1 AND 조건식2
논리 연산자의 하나로, 좌우에 항목이 필요한 이항 연산자
좌우의 식 모두 참일 경우 참 반환
2. OR로 조합하기
조건식1 OR 조건식2
논리 연산자의 하나로, 좌우에 항목이 필요한 이항 연산자
좌우의 식 중 어느쪽이든 조건을 만족하면 참 반환
3. AND와 OR를 사용할 경우 주의할 점
AND 연산자나 OR 연산자의 좌우로 조건식이 아닌 열이나 상수만을 지정해도 에러가 발생하지는 않으나 기대한 결과값을 얻을 수 없음
ex) no 열의 값이 1 또는 2인 행을 추출하고 싶은 경우
SELECT * FROM 테이블명 WHERE no=1 OR 2; (X)
SELECT * FROM 테이블명 WHERE no=1 OR no=2; (O)
- AND와 OR를 조합해 사용하기
SELECT * FROM 테이블명 WHERE a<> AND b<>0;
SELECT * FROM 테이블명 WHERE a=1 OR a=2 AND b=1 OR b=2;
0, 1, 2라는 3개의 값이 있을 경우, 위의 식과 아래 식은 다른 결과값을 가짐
- 연산자의 우선 순위
결과가 다른 이유는 AND와 OR의 우선순위가 다르기 때문
AND가 OR에 비해 우선 순위가 높음
SELECT * FROM 테이블명 WHERE a=1 OR a=2 AND b=1 OR b=2;
SELECT * FROM 테이블명 WHERE a=1 OR (a=2 AND b=1) OR b=2;
a=2 AND b=1이 먼저 계산됨
SELECT * FROM 테이블명 WHERE (a=1 OR a=2) AND (b=1 OR b=2);
괄호를 활용하여 우선 순위를 변경할 수 있음
일반적으로 OR 조건식은 조건이 잘못 지정되는 것을 미연에 방지할 수 있도록 괄호로 묶어 지정
4. NOT으로 조합
NOT 조건식
오른쪽에만 항목을 지정하는 단항 연산자
오른쪽에 지정한 조건식의 반대 값을 반환, 조건식이 참인 경우 NOT은 거짓을 반환
08강. 패턴 매칭에 의한 검색
LIKE 술어를 사용하여 문자열의 일부분을 비교하는 '부분 검색(패턴 매칭)' 가능
1. LIKE로 패턴 매칭하기
열명 LIKE '패턴'
LIKE 왼쪽에는 매칭 대상 지정, 오른쪽에는 패턴을 문자열로 지정
수치형 상수는 지정할 수 없음
메타문자: 패턴 매칭 시 '임의의 문자 또는 문자열'에 매치하는 부분을 지정하기 위해 쓰이는 특수 문자
% : 임의의 문자열을 의미
_ : 임의의 문자 하나를 의미
( * 는 LIKE에서 사용 불가)
SELECT * FROM 테이블명 WHERE 열명 LIKE 'SQL%';
해당하는 열에서 문자열 'SQL'로 시작하는 행을 출력 (전방 일치)
SELECT * FROM 테이블명 WHERE 열명 LIKE '%SQL%';
해당하는 열에서 문자열 'SQL'이 존재하는 행을 출력 (중간 일치)
SELECT * FROM 테이블명 WHERE 열명 LIKE '%SQL';
해당하는 열에서 문자열 'SQL'로 끝나는 행을 출력 (후방 일치)
%는 임의의 문자열과 매치하며, 빈 문자열에도 매치함
2. LIKE로 %를 검색하기
메타문자와 동일한 문자 %나 _를 검색하고자 하는 경우, 메타문자와 구분할 필요가 있음
LIKE로 %를 검색하는 경우에는 '\%'와 같이 %앞에 \를 붙임 (이스케이프)
ex) WHERE text LIKE '%\%%'
LIKE로 _를 검색하는 경우에는 \_
3. 문자열 상수 '의 이스케이프
문자열 상수 안에 '를 포함하고 싶은 경우 '를 2개 연속해서 기술하는 것으로 이스케이프 처리
It's → 'It''s'
' 하나만 문자열 데이터일 경우
' → ''''
'백엔드 > SQL 첫걸음' 카테고리의 다른 글
6장 데이터베이스 객체 작성과 삭제 (0) | 2024.10.12 |
---|---|
5장 집계와 서브쿼리 (0) | 2024.10.11 |
4장 데이터의 추가, 삭제, 갱신 (0) | 2024.10.05 |
3장 정렬과 연산 (0) | 2024.10.05 |
1장 데이터베이스와 SQL (0) | 2024.09.27 |