SQL-2
LIKE , _ , %
- 맴버 중 '박%' 으로 매치되는 것 검색함
SELECT * FROM MEMBER WHERE NAME ='박%'
- 박으로 시작하는 이름을 찾아봄
SELECT * FROM MEMBER WHERE LIKE NAME ='박%'
- 맴버 중 외자인 박씨를 찾아봄
SELECT * FROM MEMBER WHERE NAME LIKE '박_'
- 맴버 중 박** 를 찾음
SELECT * FROM MEMEBER WHERE NAME LIKE '박__'
SELECT * FROM MEMBER WHERE NAME ='박%'
SELECT * FROM MEMBER WHERE LIKE NAME ='박%'
SELECT * FROM MEMBER WHERE NAME LIKE '박_'
SELECT * FROM MEMEBER WHERE NAME LIKE '박__'
-- 맴버 중 박씨 제외
SELECT * FROM MEMBER WHERE NAME NOT LIKE ='박%'
-- 맴버 이름중 '박' 이 들어간 것
SELECT * FROM MEMEBETR WHERE NAME LIKE ='%박%'
오라클 SQL 에서 정규식 사용하기
기본 정규식을 이용한 패턴 비교
- 전화번호 찾기
정규식
- 0~9 중 하나, [0~9] == \d
-> 01[0169]-\d\d\d\d-\d\d\d\d == 01[0169]-\d{4}-\d{4}
가운대 숫자는 3개 혹은 4개
-> 01[0169]-\d\d\d\d-\d\d\d\d == 01[0169]-\d{3,4}-\d{4}
- [a-zA-Z_0-9] == \w 글자 하나
-> 01[0169]-\d\d\d\d-\d\d\d\d == 01[0169]-\d{4}-\d{4}
가운대 숫자는 3개 혹은 4개
-> 01[0169]-\d\d\d\d-\d\d\d\d == 01[0169]-\d{3,4}-\d{4}
전화번호'만'을 검색하기 위해선 맨 처음에 ^ 기호와 맨 끝에 $ 기호를 붙여줌
Oracle SQl.
REGEXP_LIKE 키워드
SELECT * NOTICE WHERE REGEXP_LIKE(TITLE, 01[016-9]-\d{3,4}-\d{4})
// NOTICE 테이블에서 TITLE 열 내용에 전화번호 규칙이 들어간 행을 찾음
- 이메일 찾기 = 하나 이상의 문자 + @ 하나 이상의 문자 + . + org || com ||net
\w+@\w+.(org|net|com)
ROWNUM 그리고 행 제한하기
- 회원 목록 중 상위 5명만 조회하기
SELECT * FROM MEMBER WHERE ROWNUM BETWEEN 1 AND 5 = O
SELECT * FROM MEMBER WHERE ROWNUM BETWEEN 6 AND 10 = X
SELECT * FROM MEMBER WHERE ROWNUM BETWEEN 1 AND 5 = O
SELECT * FROM MEMBER WHERE ROWNUM BETWEEN 6 AND 10 = X
ROWNUM은 연산 결과 중 자동적으로 부여되는 수 이기 때문에 BETWEEN 6 AND 10 을하면 아무것도 출력되지 않는다 왜냐 1부터 차례대로 쌓이는데 6부터 쌓은다니 조건에 맞지 않기 때문이다
SELECT * FROM (SELECT ROWNUM AS NUM, NOTICE.* FROM NOTICE) WHERE NUM BETWEEN 1 AND 5
SELECT * FROM (SELECT ROWNUM AS NUM, NOTICE.* FROM NOTICE) WHERE NUM BETWEEN 6 AND 10
SELECT ROWNUMB AS NUM , NOTICE.* FROM NOTICE 를 () 로 감싸주었기에 먼저 연산결과 값이 나오고 그 나온 연산결과값 즉 NUM 으로 출력하니 정상적으로 출력된다.
중복 값 제거하기 DISTINCT
- 중복된 나이 제외
SELECT DISTINCT AGE FROM MEMBER
SELECT 구문
구문 순서
- SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY (단 WHERE와 GROUP BY는 함께 사용 불가)
SELECT DISTINCT AGE FROM MEMBER
구문 순서
- SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY (단 WHERE와 GROUP BY는 함께 사용 불가)
FROM에서 격자형 데이터를 준비하고 WHERE에서 필터링 하고 GROUP BY에서 집계하고 집계된 이후 정렬할 것이 있으면 HAVING그런 작업..
- 이름을 기준으로 역순으로 정렬하시오
SELECT * FROM MEMBER ORDER BY NAME DESC
- 회원 중에서 '박'씨 성을 가진 회원을 정렬
SELECT * FROM MEMBER WHERE LIKE '박%' ORDER BY AGE ASC
HIT라는 컬럼을 내림차순으로 정렬 후 중복되는 행이 있을 경우, REGDATA를 기준으로 내림차순
SELECT * FROM NOTICE ORDER BY HIT DESC, REGDATA DESC
Author And Source
이 문제에 관하여(SQL-2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wonjongseo/SQL-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)