2장) 테이블에서의 데이터 검색
4강) Hello World 실행하기
1. 테이블의 모든 데이터 검색
SELECT * FROM 테이블명;
* (애스터리스크): 모든 열을 의미하는 메타 문자
- 위 명령을 실행하면 테이블의 모든 데이터를 조회할 수 있음.
- (애스터리스크는 자동으로 모든 열로 대체된다고 생각하면 됨.)
2. SQL 명령 실행 방법
- MySQL 클라이언트에서 실행 가능 → 명령 프롬프트에서 실행
- 명령어 입력 규칙
- 각 요소는 스페이스로 구분
- 입력 마지막에 세미콜론(
;) 필수
- 엔터(Enter) 키 입력 시 서버로 명령이 전달되어 실행 → 결과 반환
3. SQL 명령어의 구성
FROM: 처리할 테이블을 지정하는 키워드
SELECT 명령은 여러 개의 구(句, Clause) 로 구성됨.
SELECT, FROM → 구를 결정하는 키워드이자 예약어
4. 데이터베이스 객체와 예약어
- 데이터베이스 객체: 테이블, 뷰 등 이름을 붙여 관리.
- 예약어와 데이터베이스 객체명은 대소문자 구분 없음
- 보통 예약어는 대문자, 데이터베이스 객체명은 소문자로 표기.
5강) 테이블 구조 참조하기
1. 테이블 구조 확인 명령어
DESC 테이블명;
2. DESC 명령 결과 필드
| 필드명 | 설명 |
|---|
| Field | 열(컬럼)의 이름 |
| Type | 해당 열의 자료형 (괄호 안 숫자는 최대 길이) |
| Null | NULL 값 허용 여부 (YES/NO) |
| Key | 해당 열이 키(Key)로 지정되었는지 여부 |
| Default | 기본값 (값이 생략되었을 때 적용) |
| Extra | 자동 증가(AUTO_INCREMENT) 등 추가 속성 |
3. 주요 자료형
INTEGER: 정수값 저장 (소수점 X)
CHAR(n): 고정 길이 문자열 (최대 길이 지정 필수)
VARCHAR(n): 가변 길이 문자열 (데이터 크기에 맞춰 저장 공간 변경)
DATE: 날짜 값 저장
TIME: 시간 값 저장
6강) 검색 조건 지정하기
1. 기본 검색 명령어
SELECT 열1, 열2 FROM 테이블명 WHERE 조건식;
- 구의 순서가 정해져 있음 (변경 불가)
SELECT → 열 선택
FROM → 테이블 지정
WHERE → 조건을 지정하여 행 선택
2. WHERE 구 (행 선택)
- 생략 시 모든 행이 검색 대상
열명, 연산자, 상수로 구성
SELECT * FROM students WHERE no = 2;
no = 2 → no 열 값이 2인 경우만 참
3. 주요 연산자
| 연산자 | 의미 |
|---|
= | 좌변과 우변이 같을 경우 참 |
<> | 좌변과 우변이 다를 경우 참 |
> | 좌변이 우변보다 클 경우 참 |
< | 좌변이 우변보다 작을 경우 참 |
>= | 좌변이 우변보다 크거나 같을 경우 참 |
<= | 좌변이 우변보다 작거나 같을 경우 참 |
4. 문자열 및 날짜/시간 데이터 검색
SELECT * FROM users WHERE name = '김서연';
- 문자열 상수는
' (싱글쿼트)로 감싸서 표기
- 날짜는
YYYY-MM-DD 형식, 시간은 HH:MM:SS 형식 사용
5. NULL 값 검색
SELECT * FROM employees WHERE salary IS NULL;
IS NULL: NULL 값 검색
IS NOT NULL: NULL이 아닌 값 검색
7강) 조건 조합하기
1. 조건 조합 연산자
AND: 모두 참일 경우 참
OR: 하나라도 참이면 참
NOT: 조건의 반대값 반환
2. AND 연산자
- 복수의 조건을 조합할 때 사용
- 좌우 모두 참일 경우 참
SELECT * FROM students WHERE age >= 20 AND gender = 'F';
- 나이가 20 이상이고 여성(F) 인 경우만 조회
3. OR 연산자
SELECT * FROM students WHERE age = 18 OR age = 22;
-
나이가 18이거나 22인 학생 검색
주의할 점!
SELECT * FROM sample24 WHERE no = 1 OR 2;
2는 항상 참이므로 모든 행이 반환됨
올바른 표현:
SELECT * FROM sample24 WHERE no = 1 OR no = 2;
4. 연산자의 우선순위
AND가 OR보다 우선순위가 높음
- 우선순위를 명확히 하기 위해 괄호 사용 권장
SELECT * FROM students WHERE (age >= 18 OR age <= 22) AND gender = 'M';
- 나이가 18 이하 또는 22 이상이며, 남성인 경우 검색
5. NOT 연산자
SELECT * FROM employees WHERE NOT department = 'Sales';
- 'Sales' 부서를 제외한 나머지 직원 검색
8강) 패턴 매칭에 의한 검색
1. LIKE 연산자
- 특정 문자나 문자열 포함 여부를 검색할 때 사용
- 부분 일치 검색 가능
SELECT * FROM users WHERE name LIKE '김%';
2. LIKE 연산자의 패턴
| 패턴 | 의미 |
|---|
% | 임의의 문자 또는 문자열 (빈 문자열 포함) |
_ | 한 개의 임의 문자 |
SELECT * FROM books WHERE title LIKE '%SQL%';
3. % 와일드카드 사용 예시
| 검색 조건 | 설명 |
|---|
'SQL%' | 'SQL'로 시작하는 문자열 검색 |
'%SQL%' | 중간에 'SQL'이 포함된 문자열 검색 |
'%SQL' | 'SQL'로 끝나는 문자열 검색 |
4. 특수 문자 검색 (%, _ 등)
SELECT * FROM messages WHERE text LIKE '%\%%';
5. ' (작은따옴표) 포함된 문자열 검색
SELECT * FROM comments WHERE text LIKE 'It''s a great day!';
- It’s a great day! 가 포함된 문자열 검색
--- 연습문제 ---
1.1
2.3
3.1