SQL
Tis는 Oracle SQL용입니다(일부 기본 사항).
목차
기초
고르다
골재
min
시장 조작
조인
오라클 듀얼 테이블
식을 평가하거나 함수를 호출하는 데 사용되는 모든 사용자가 액세스할 수 있는 특수 테이블입니다.
예시:
SELECT
(10 + 5)/2
FROM
dual;
source에서 가져옴
끊임없는
문자열/멋진 결과를 출력하려면 문자열을 선택하십시오.
SELECT 'There are ' || COUNT(ID) || ' participants'
FROM PARTICIPANTS
사슬 같이 잇다
Oracle SQL에서 문자열을 연결합니다.
중첩
||
함수 대신 CONCAT
연산자를 사용할 수 있습니다.'Tech on' || ' the Net'
Result: 'Tech on the Net'
reference
우수
mod(<>,2) = 0
예시:
SELECT DISTINCT(CITY)
FROM STATION
WHERE MOD(ID,2) =0;
중복 없음
SELECT DISTINCT(COLUMN)
SELECT DISTINCT(CITY)
FROM STATION
WHERE MOD(ID,2) =0;
세다
COUNT(ROW)
개별 행을 계산하려면 다음을 수행하십시오.
COUNT(DISTINCT(ROWS))
처음 X 행
Oracle 12c(here 참조)
Fetch First X Rows only
select *
from the_table
order by object_id
fetch first 10 rows only;
그렇지 않으면,
ROWNUM <= X
SELECT *
FROM (SELECT * FROM MyTbl ORDER BY Fname )
WHERE ROWNUM = 1;
참조 here
패턴매칭 / LIKE
LIKE
/NOT LIKE
- 패턴 매칭 REGEXP_LIKE
/NOT REGEXP_LIKE
- 정규 표현식을 사용한 패턴 일치와일드 카드 문자는 다음과 같습니다.
%
: 임의 개수의 문자_
: 1자예시:
# ending with er
SELECT
first_name,
last_name,
phone
FROM
contacts
WHERE
last_name LIKE '%er'
# Je 1 character and then i
# eg. Jeni/ Jedi
SELECT
first_name,
last_name,
email,
phone
FROM
contacts
WHERE
first_name LIKE 'Je_i'
좋아하지 않는
일치하는 패턴이 없는 문자열을 찾고 싶지 않으세요?
SELECT
first_name, last_name, phone
FROM
contacts
WHERE
phone NOT LIKE '+1%'
reference
REGEXP_LIKE
REGEXP_LIKE(source_string, search_pattern [, match_parameter]);
/* starts with m or n */
SELECT
first_name
FROM
employees
WHERE
REGEXP_LIKE(first_name,'^m|^n','i')
/* does not end with vowel */
SELECT DISTINCT(CITY)
FROM STATION
WHERE NOT REGEXP_LIKE(CITY,'(a|e|i|o|u)$');
reference
하위 문자열
문자열에서 하위 문자열을 추출합니다.
SUBSTR( str, start_position [, substring_length, [, occurrence ]] );
+ve/0 -> 문자열의 처음부터 카운트
0은 첫 번째 문자입니다.
1은 첫 번째 문자일 수도 있습니다.
start_position은 음수일 수 있습니다. 하위 문자열의 첫 번째 문자를 찾기 위해 str의 끝에서 거꾸로 계산합니다
생략하면 start_position에서 문자열 끝까지 문자열을 가져옵니다
예시:
/*get last 3 characters*/
SUBSTR(NAME, -3)
SUBSTR( 'Oracle Substring', - 16, 6 )
SUBSTR( 'Oracle Substring', 1, 6 ) /*result is Oracle*/
reference
주문 기준 / 주문
결과 정렬
ORDER BY
column_1 [ASC | DESC] [NULLS FIRST | NULLS LAST],
column_1 [ASC | DESC] [NULLS FIRST | NULLS LAST],
여러 열을 정렬하려면 다른 인수를 추가하기만 하면 됩니다. SQL은 첫 번째 조건을 먼저 정렬한 다음 두 번째 조건을 기준으로 정렬합니다.
다른 경우라면
CASE
& WHEN
SQL 쿼리에서 if else 논리 사용CASE [ expression ]
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
...
WHEN condition_n THEN result_n
ELSE result
END
상수 값을 반환하는 식을 생략할 수 있습니다(예: hackerrank 이진 트리 질문).
SELECT
CASE
WHEN P IS NULL THEN N || ' Root'
WHEN N IN(SELECT DISTINCT(P) FROM BST) THEN N || ' Inner'
ELSE N || ' Leaf'
END
FROM BST
ORDER BY N;
SELECT
product_name,
list_price,
CASE category_id
WHEN 1
THEN ROUND(list_price * 0.05,2)
WHEN 2
THEN ROUND(List_price * 0.1,2)
ELSE ROUND(list_price * 0.08,2)
END discount
FROM
products
ORDER BY
product_name
그룹화 기준
행을 그룹으로 그룹화
기본 예
SELECT status FROM orders GROUP BY status;
이는 SELECT DISTINCT status FROM orders;
와 동일합니다.함수를 집계합니다. 동일한 customer_id에 대한 order_id 수 찾기
SELECT
customer_id,
COUNT( order_id )
FROM
orders
GROUP BY
customer_id
ORDER BY
customer_id;
널
열 값이 null인지 null이 아닌지 확인하려면
SELECT * FROM 주문
여기서 salesman_id는 NULL입니다.
ORDER BY order_date DESC;
reference
합집합
sum of all or distinct values
SELECT
product_id,
SUM( quantity )
FROM
order_items
SELECT
order_id,
SUM( quantity * unit_price ) order_total
FROM
order_items
평균
calculate average of a group
SELECT AVG( list_price ) avg_list_price
FROM products;
둥근
round off number to decimal place
ROUND(n, integer)
if integer not given it is 0.
SELECT ROUND(15.193,1) "Round" FROM DUAL;
Round
----------
15.2
## round to left of decimal place
SELECT ROUND(15.193,-1) "Round" FROM DUAL;
Round
----------
20
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions135.htm
바닥
Returns the largest integer value that is equal to or less than a number.
FLOOR(5.9)
Result: 5
FLOOR(34.29)
Result: 34
https://www.techonthenet.com/oracle/functions/floor.php
최대
return maximum value of expression
### maximum salary per department
SELECT department, MAX(salary) AS "Highest salary"
FROM employees
GROUP BY department;
### find top earnings (salary * months) & number of employees with top earnings
SELECT MAX(salary*months), COUNT(*) FROM EMPLOYEE
WHERE salary * months = (SELECT MAX(salary*months) FROM EMPLOYEE);
https://www.techonthenet.com/oracle/functions/max.php
조인 유형
왼쪽 또는 오른쪽 테이블의 항목을 제외하려면(왼쪽과 일치하지 않는 오른쪽 항목 가져오기) WHERE .id IS NULL을 시도하십시오.
SELECT
a.id id_a,
a.color color_a,
b.id id_b,
b.color color_b
FROM
palette_a a
RIGHT JOIN palette_b b ON a.color = b.color
WHERE a.id IS NULL;
https://www.oracletutorial.com/oracle-basics/oracle-joins/
조인에서 선택
SELECT SUM(CITY.population)
FROM CITY
FULL OUTER JOIN COUNTRY
ON CITY.CountryCode = COUNTRY.Code
WHERE COUNTRY.Continent = 'Asia';
Reference
이 문제에 관하여(SQL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jing/sql-2jh7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)