Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- stable diffusion
- dp
- 과제형 코딩테스트
- diffusion models
- ip-adapter
- colorization
- classifier-free guidance
- controlNet
- 포스코 코딩테스트
- Image Generation
- kt인적성
- KT
- manganinja
- Generative Models
- ddim
- 포스코 채용
- 프로그래머스
- 코딩테스트
- posco 채용
- DDPM
- 논문 리뷰
Archives
- Today
- Total
Paul's Grit
[SQL] SQL 논리 연산자: AND, OR, NOT, BETWEEN, IN, LIKE 본문
1-1. 데이터베이스 이동 & 테이블 생성
USE testdb;
CREATE TABLE celeb
(
ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
NAME varchar(32) NOT NULL DEFAULT '',
BIRTHDAY date,
AGE int,
SEX char(1),
JOB_TITLE varchar(32),
AGENCY varchar(32)
);
DESC celeb;
1-2. 데이터 추가
INSERT INTO celeb
VALUES
(1, '아이유', '1993-05-16', 29, 'F', '가수, 텔런트', 'EDAM엔터테이먼트'),
(2, '이미주', '1994-09-23', 28, 'F', '가수', '울림엔터테이먼트'),
(3, '송강', '1994-04-23', 28, 'M', '텔런트', '나무엑터스'),
(4, '강동원', '1981-01-18', 41, 'M', '영화배우, 텔런트', 'YG엔터테이먼트'),
(5, '유재석', '1972-08-14', 50, 'M', 'MC, 개그맨', '안테나'),
(6, '차승원', '1970-06-07', 48, 'M', '영화배우, 모델', 'YG엔터테이먼트'),
(7, '이수현', '1999-05-04', 23, 'F', '가수', 'YG엔터테이먼트');
SELECT * FROM celeb;
2. AND
2-1. AND: 조건을 모두 만족하는 경우 TRUE
남자이고 나이가 40보다 큰 데이터를 이름의 역순으로 정렬하여 검색
SELECT * FROM celeb WHERE sex='M' AND age>40 ORDER BY name;
3. OR
3-1. OR: 하나의 조건이라도 만족하는 경우 TRUE
YG엔터테이먼트 소속이거나 나무엑터스 소속인 연예인 중, 나이가 30세 보다 작은 데이터
SELECT * FROM celeb WHERE (agency='YG엔터테이먼트' OR agency='나무엑터스') AND age<30;
4. NOT
4-1. NOT: 조건을 만족하지 않는 경우 TRUE
생일이 1990년 이후이면서 여자가 아니거나, 생일이 1979년 이전이면서 소속사가 안테나가 아닌 데이터 검색
SELECT * FROM celeb
WHERE (birthday > 19891231 AND NOT sex='F')
OR (birthday < 19800101 and not agency = '안테나');
5. BETWEEN
5-1. BETWEEN: 조건값이 범위 사이에 있으면 TRUE
- 비교 연산자 사용: 나이가 20세에서 40세 사이의 데이터 검색 (등호 포함하는 범위!!)
SELECT * FROM celeb WHERE age>= 20 AND age<=40;
- BETWEEN 사용 나이가 20세에서 40세 사이의 데이터 검색
SELECT * FROM celeb WHERE age BETWEEN 20 AND 40;
생년월일이 1980년에서 1995년 사이가 아니면서 여자이거나, 소속사가 YG엔터테이먼트이면서 나이가 20세에서 45 세 사이가 아닌 데이터 검색
SELECT * FROM celeb
WHERE (NOT birthday BETWEEN 19800101 AND 19951231 AND sex='F')
OR (agency='YG엔터테이먼트' AND NOT age BETWEEN 20 AND 45);
6. IN
6-1. IN: 목록안에 조건값이 존재하는 경우 TRUE
- OR 사용: 나이가 28세, 48세 중 하나인 데이터 검색
SELECT * FROM celeb WHERE age=28 OR age=48;
- IN 사용: 나이가 28세, 48세 중 하나인 데이터 검색
SELECT * FROM celeb WHERE age IN (28, 48);
소속사가 나무엑터스, 안테나, 울림엔터테이먼트가 아니면서, 성별이 여자거나 나이가 45세 이상인 데이터 검색
SELECT * FROM celeb
WHERE NOT agency IN ('나무엑터스', '안테나', '울림엔터테이먼트') AND (sex='F' OR age>=45);
7. LIKE
7-1. LIKE: 조건값이 패턴에 맞으면 TRUE
소속사 이름이 ‘YG엔터테이먼트’ 인 데이터를 검색
SELECT * FROM celeb WHERE agency LIKE 'YG엔터테이먼트';
7-2. 'OO'으로 시작하는 데이터 검색
'YG’로 시작하는 소속사 이름을 가진 데이터를 검색
SELECT * FROM celeb WHERE agency LIKE 'YG%';
7-3. 'OO'으로 끝나는 데이터 검색
‘엔터테이먼트’로 끝나는 소속사 이름을 가진 데이터를 검색
SELECT * FROM celeb WHERE agency LIKE '%엔터테이먼트';
7-4. 'OO'가 포함된 데이터를 검색
직업명에 ‘가수’가 포함된 데이터를 검색
SELECT * FROM celeb WHERE job_title LIKE '%가수%';
7-4. O몇째 글자가 'O'인 데이터를 검색
소속사 이름의 두번째 글자가 G인 데이터를 검색
SELECT * FROM celeb WHERE agency LIKE '_G%';
7-5. 응용
직업명이 ‘가' 로 시작하고 최소 2글자 이상인 데이터 검색
SELECT * FROM celeb WHERE job_title LIKE '가_%';
직업명이 '가' 로 시작하고 최소 5글자 이상인 데이터 검색
SELECT * FROM celeb WHERE job_title LIKE '가____%';
직업명이 ‘영'으로 시작하고 '모델’로 끝나는 데이터 검색
SELECT * FROM celeb WHERE job_title LIKE '영%모델';
영화배우와 텔런트를 병행하는 연예인 검색
SELECT * FROM celeb
WHERE job_title LIKE '%영화배우%' AND job_title LIKE '%텔런트%';
직업이 두개 이상인 연예인 중 영화배우 혹은 텔런트가 아닌 연예인 검색
SELECT * FROM celeb
WHERE job_title LIKE '%,%'
AND NOT (job_title LIKE '%영화배우%' OR job_title LIKE '%텔런트%');
'Data Analysis > SQL' 카테고리의 다른 글
[SQL] SQL JOIN (0) | 2023.08.28 |
---|---|
[SQL] SQL UNION (1) | 2023.08.25 |
[SQL] SQL 정렬: ORDER BY (2) | 2023.08.25 |
[SQL] SQL 기본적인 명령어: SELECT, INSERT, UPDATE, DELETE (0) | 2023.08.24 |
[SQL] Table (0) | 2023.08.24 |