1. SELECT
용도: TABLE 데이터 조회
SELECT * FROM EMPLOYEE_EJH; -- 모든 필드의 모든 데이터 조회
SELECT * -- 필드 선택
FROM EMPLOYEE_EJH -- 조회테이블
WHERE EMP_NM IS NULL; -- 레코드 조건 (WHERE 절은 생략 가능)
SELECT TEL, EMPNO -- 필드 선택
FROM CUSTOMER_EJH; -- 테이블 선택
-- MySQL은 SELECT 절에 문자열이 들어와도 조회 가능,
-- 컬럼명을 더블클릭해서 갖고 와서 조회해도 됨
1) 조건 조회를 위한 연산자
(1) 비교 연산자
비교연산자: 값을 비교하고자 할 때, 사용하는 연산자
>, <, <=, >=, <>, !=, = (같은 것을 비교할 때, "="(하나)만 사용함)
-- 문자열도 작거나 큼을 비교할 수 있음
SELECT TEL, EMPNO
FROM CUSTOMER_EJH
WHERE EMPNO >= '00001'; -- 00001 ~ 00011 까지 모두 조회됨
-- 날짜가 2022-12-31 이전인 주문 데이터 조회
SELECT *
FROM ORDER_EJH
WHERE ORDERDATE <= CONVERT(VARCHAR, '2022-12-31');
-- WHERE ORDERDATE <= '2022-12-31'; -- 도 가능, DATETIME이 저장되는 형식이 문자열이기 때문?
문자열이나 날짜 형식 또한 작거나 큼을 비교할 수 있다.
getDate()와 convert()를 이용한 날짜 비교
http://www.songtory.com/post/001004/1/195
[MS-SQL] getDate() 와 convert() 를 이용 날짜비교 : [songtory.com]
SQL 에서 날짜 비교를 할때 많이 사용하게 getDate() 입니다. 오늘 날짜보다 큰걸 구해오는 쿼리는 아래와 같음. SELECT * FROM TBL WHRE reg_date >= GETDATE(); 위처럼 쓰면 되는데 이게 이러면 만약 오늘이 10
www.songtory.com
(2) 논리 연산자
AND, OR: 여러 개의 조건 연결 시 사용.
SELECT * FROM ORDER_EJH
WHERE MENUNO = 'A0000002'
and ORDERDATE <= '2022-12-31';
항상 AND가 우선순위이기 때문에 ()로 묶어서 쿼리를 작성하는 습관을 들이시는게 좋습니다
-- 문제 1. 수업명이 수학이거나 아이디가 3보다 크면서, 성적이 80점 이상인 학생 데이터
-- 잘못 작성된 쿼리
SELECT * FROM 포켓몬_EJH
WHERE 수업명 = '수학'
or 아이디 > 3
and 성적 >= 80;
-- 아이디가 3보다 크면서 성적이 80점 이상이거나, 수업명이 수학인 학생 데이터 출력됨
-- 올바르게 작성된 쿼리
SELECT * FROM 포켓몬_EJH
WHERE (수업명 = '수학'
or 아이디 > 3)
and 성적 >= 80;
-- 수업명이 수학이거나 아이디가 3보다 크면서, 성적이 80점 이상인 학생 데이터 출력됨
(3) LIKE 연산자
%와 _: 일부 문자열 비교 시 사용
-- 이름에 J가 들어가는 고객 정보 조회
SELECT *
FROM CUSTOMER_EJH
WHERE NAME LIKE '%J%'; -- 시작과 끝에 다른 문자가 들어가도 상관 없음
SELECT *
FROM CUSTOMER_EJH
WHERE NAME LIKE 'J_____'; -- 끝에 5자리가 더 있는 데이터 조회
이곳에 정리가 대단히 잘 되어있다. (만약 링크가 안 열린다면 문자열 부분일치 검색이라고 검색해보자)
https://lcs1245.tistory.com/entry/SQL-LIKE-%EC%97%B0%EC%82%B0%EC%9E%90-%EB%AC%B8%EC%9E%90%EC%97%B4-%EB%B6%80%EB%B6%84%EC%9D%BC%EC%B9%98-%EA%B2%80%EC%83%89
SQL LIKE 연산자 - 문자열 부분일치 검색 [ % / _ ]
LIKE 연산자는 문자열의 패턴을 검색하는 데 사용을 합니다 우리가 '라면'이라고 검색을 하면 정확하게 라면이라는 글 또는 사전의 내용이 검색되기도 하지만 동시에 '라면을 먹었다' '짜장라면'
lcs1245.tistory.com
(4) BETWEEN연산자
문자열 일부 비교 시 사용
-- 날짜가 2022-12-31 이전인 데이터 조회
SELECT *
FROM ORDER_EJH
WHERE ORDERDATE <= '2022-12-31';
-- 날짜가 2022년인 데이터 조회
SELECT *
FROM ORDER_EJH
WHERE ORDERDATE BETWEEN '2022-01-01' AND '2022-12-31';
-- 고객정보 중 한국인을 조회하는 경우
BETWEEN '가' AND '힇'; -- 이렇게도 사용할 수 있다.
(5) IN 연산자
특정 값들 포함 여부 지정
-- 한식, 중식인 메뉴 조회
SELECT *
FROM ORDERSHEET_EJH
WHERE MENUTYPE IN ('한식', '중식');
-- 위 구문과 아래 구문은 같다
SELECT *
FROM ORDERSHEET_EJH
WHERE MENUTYPE = '한식' OR MENUTYPE = '중식';
(6) NOT IN 연산자
특정 값들 불포함 여부 지정
-- 한식, 중식인 메뉴 조회
SELECT *
FROM ORDERSHEET_EJH
WHERE MENUTYPE NOT IN ('한식', '중식');
SELECT *
FROM ORDERSHEET_EJH
WHERE MENUTYPE != '한식' AND MENUTYPE <> '중식';
(7) IS NULL / NOT NULL 연산자
NULL 값 여부 확인
SELECT *
FROM CUSTOMER_EJH
WHERE TEL IS NULL;
-- 6. 이름이 홍으로 시작하면서 3글자인 고객정보를 조회 (LIKE 연산자만 사용)
SELECT *
FROM CUSTOMER_EJH
WHERE NAME LIKE '홍__';
-- 위 구문과 아래 구문은 같다
SELECT *
FROM CUSTOMER_EJH
WHERE NAME LIKE '홍%'
AND LEN(NAME) = 3;
'SQL' 카테고리의 다른 글
[SQL] 9장. DML(UPDATE), 발생하는 오류 (0) | 2023.04.27 |
---|---|
[SQL] 8장. DML(INSERT), 발생하는 오류 (0) | 2023.04.27 |
[SQL] 6장. DDL(DROP, ALTER) (0) | 2023.04.27 |
[SQL] 5장. 단축키 (0) | 2023.04.27 |
[SQL] 4장. 기본키, 외래키, 제약 조건 (MSSQL) (0) | 2023.04.27 |