45개의 유용한 Oracle 쿼리 문 요약
1. 현재 달의 첫날에 이 명령을 실행하면 현재 달의 첫날로 빠르게 돌아갈 수 있습니다."SYSDATE"를 모든 날짜 값으로 대체해서 조회 날짜를 지정할 수 있습니다.
SELECT TRUNC (SYSDATE, 'MONTH') "First day of current month"
FROM DUAL;
2. 현재 달의 마지막 날 가져오기
이 검색어는 위의 문장과 유사하고 윤년을 충분히 고려했기 때문에 2월에 29일이 있으면 29/2로 돌아간다."SYSDATE"를 모든 날짜 값으로 대체해서 조회 날짜를 지정할 수 있습니다.
SELECT TRUNC (LAST_DAY (SYSDATE)) "Last day of current month"
FROM DUAL;
3. 현재 년도를 획득하는 첫날은 매년 1월 1일이다. 이 검색어는 저장 과정에서 사용할 수 있고 현재 년도의 첫날에 대해 계산을 해야 할 때이다."SYSDATE"를 모든 날짜 값으로 대체해서 조회 날짜를 지정할 수 있습니다.
SELECT TRUNC (SYSDATE, 'YEAR') "Year First Day" FROM DUAL;
4. 현재 연도의 마지막 날 가져오기
위의 조회문과 유사하다."SYSDATE"를 모든 날짜 값으로 대체해서 조회 날짜를 지정할 수 있습니다.
SELECT ADD_MONTHS (TRUNC (SYSDATE, 'YEAR'), 12) - 1 "Year Last Day" FROM DUAL
5. 현재 월의 일수 얻기
이 문장은 매우 유용해서 현재 달의 일수를 계산해 낼 수 있다."SYSDATE"를 모든 날짜 값으로 대체해서 조회 날짜를 지정할 수 있습니다.
SELECT CAST (TO_CHAR (LAST_DAY (SYSDATE), 'dd') AS INT) number_of_days FROM DUAL;
6. 현재 월의 남은 일수 아래의 문장을 가져와 현재 월의 남은 일수를 계산한다."SYSDATE"를 모든 날짜 값으로 대체해서 조회 날짜를 지정할 수 있습니다.
SELECT SYSDATE,
LAST_DAY (SYSDATE) "Last",
LAST_DAY (SYSDATE) - SYSDATE "Days left"
FROM DUAL;
7. 두 날짜 사이의 일수를 얻기 위해 이 문장을 사용하면 두 날짜가 다른 두 날짜의 자체 검사 일수를 얻을 수 있다.
SELECT ROUND ( (MONTHS_BETWEEN ('01-Feb-2014', '01-Mar-2012') * 30), 0) num_of_days FROM DUAL;
OR
SELECT TRUNC(sysdate) - TRUNC(e.hire_date) FROM employees;
만약 특정 날짜의 일수를 조회할 필요가 있다면 두 번째 조회 문구를 사용할 수 있습니다.이 예는 직원의 입사 일수를 계산하는 것이다.
8. 현재 연도가 지난달까지 매달 시작되고 끝난 날짜를 표시합니다
이것은 현재 연도의 매달 시작과 끝의 날짜를 나타내는 똑똑한 검색어구입니다. 이것은 몇 가지 종류의 계산을 할 수 있습니다."SYSDATE"를 모든 날짜 값으로 대체해서 조회 날짜를 지정할 수 있습니다.
SELECT ADD_MONTHS (TRUNC (SYSDATE, 'MONTH'), i) start_date,
TRUNC (LAST_DAY (ADD_MONTHS (SYSDATE, i))) end_date
FROM XMLTABLE (
'for $i in 0 to xs:int(D) return $i'
PASSING XMLELEMENT (
d,
FLOOR (
MONTHS_BETWEEN (
ADD_MONTHS (TRUNC (SYSDATE, 'YEAR') - 1, 12),
SYSDATE)))
COLUMNS i INTEGER PATH '.');
9. 지금까지 오늘의 지난 초수를 획득(00:00부터 계산)
SELECT (SYSDATE - TRUNC (SYSDATE)) * 24 * 60 * 60 num_of_sec_since_morning FROM DUAL;
10. 오늘 남은 초(23:59:59까지 획득)
SELECT (TRUNC (SYSDATE+1) - SYSDATE) * 24 * 60 * 60 num_of_sec_left FROM DUAL;
데이터 사전 조회
11. 현재 데이터베이스 모드에서 지정한 테이블이 있는지 확인
이것은 간단한 조회문구입니다. 현재 데이터베이스에 당신이 만들고 싶은 테이블이 있는지 확인하고, 테이블 스크립트를 다시 실행할 수 있으며, 현재 사용자가 지정한 테이블을 만들었는지 확인할 수 있습니다. (이 조회문이 어떤 환경에서 실행되었는지에 따라 조회할 수 있습니다.)
SELECT table_name
FROM user_tables
WHERE table_name = 'TABLE_NAME';
12. 현재 테이블에 지정된 열이 있는지 확인
이것은 테이블에 지정한 열이 있는지 확인하기 위한 간단한 검색 문구입니다. Alter TABLE를 사용하여 새 열을 테이블에 추가하려고 시도할 때 매우 유용합니다. 이 열이 이미 존재하는지 알려 줍니다.
SELECT column_name AS FOUND
FROM user_tab_cols
WHERE table_name = 'TABLE_NAME' AND column_name = 'COLUMN_NAME';
13. 테이블 구조 표시
이 질의문에는 테이블의 DDL 상태 정보가 표시됩니다.우리는 이미'TABLE'를 첫 번째 정보로 제출했음을 주의하세요.이 질의문은 모든 데이터베이스 객체에 대한 DDL 상태 정보를 가져오는 데도 사용됩니다.예를 들어 첫 번째 파라미터를'VIEW'로 바꾸고 두 번째 파라미터를 보기의 이름으로 바꾸면 보기의 DDL 정보를 조회할 수 있다.
SELECT DBMS_METADATA.get_ddl ('TABLE', 'TABLE_NAME', 'USER_NAME') FROM DUAL;
14. 현재 모드를 가져옵니다. 이것은 현재 모드의 이름을 얻을 수 있는 또 다른 검색어입니다.
SELECT SYS_CONTEXT ('userenv', 'current_schema') FROM DUAL;
15. 현재 모드를 수정하는 것은 현재 모드를 수정할 수 있는 또 다른 검색 문장입니다. 스크립트가 지정한 사용자 아래에서 실행되기를 원할 때 매우 유용하고 안전한 방법입니다.
ALTER SESSION SET CURRENT_SCHEMA = new_schema;
데이터베이스 관리 쿼리
16. 데이터베이스 버전 정보
Oracle 데이터베이스 버전으로 돌아가기
SELECT * FROM v$version;
17. 데이터베이스 기본 정보
시스템의 기본 정보를 되돌려줍니다.
SELECT username,
profile,
default_tablespace,
temporary_tablespace
FROM dba_users;
18. 데이터베이스 문자 설정 정보 데이터베이스 문자 설정 정보 표시
SELECT * FROM nls_database_parameters;
19. Oracle 버전 가져오기
SELECT VALUE
FROM v$system_parameter
WHERE name = 'compatible';
20. 대소문자를 구분하는 데이터를 저장하지만 인덱스는 대소문자를 구분하지 않는다
어떤 때는 데이터베이스에서 독립된 데이터를 조회하고 싶을 수도 있고, UPPER (...) =UPPER(..) 대소문자를 구분하지 않는 검색을 하기 위해 색인을 대소문자를 구분하지 않고 그렇게 많은 공간을 차지하지 않도록 하려면 이 문장이 당신의 요구를 충족시킬 수 있다.
CREATE TABLE tab (col1 VARCHAR2 (10));
CREATE INDEX idx1
ON tab (UPPER (col1));
ANALYZE TABLE a COMPUTE STATISTICS;
21. 데이터 파일이 추가되지 않은 테이블 공간 조정
테이블 공간 크기를 조정하기 위한 다른 DDL 쿼리
ALTER DATABASE DATAFILE '/work/oradata/STARTST/STAR02D.dbf' resize 2000M;
22. 검사표 공간의 자동 확장 스위치
주어진 테이블 공간에서 자동 확장 스위치를 열었는지 조회하기
SELECT SUBSTR (file_name, 1, 50), AUTOEXTENSIBLE FROM dba_data_files;
(OR)
SELECT tablespace_name, AUTOEXTENSIBLE FROM dba_data_files;
23. 테이블 공간에 데이터 파일 추가
테이블 공간에 데이터 파일 추가
ALTER TABLESPACE data01 ADD DATAFILE '/work/oradata/STARTST/data01.dbf'
SIZE 1000M AUTOEXTEND OFF;
24. 데이터 파일 크기 증가
지정한 테이블 공간의 크기를 늘려줍니다
ALTER DATABASE DATAFILE '/u01/app/Test_data_01.dbf' RESIZE 2G;
25. 조회 데이터베이스의 실제 크기
실제 데이터베이스 크기를 GB 단위로 제공
SELECT SUM (bytes) / 1024 / 1024 / 1024 AS GB FROM dba_data_files;
26. 데이터베이스에서 데이터가 차지하는 크기나 데이터베이스 사용 디테일을 조회하여 데이터베이스에서 데이터가 차지하는 공간 크기
SELECT SUM (bytes) / 1024 / 1024 / 1024 AS GB FROM dba_segments;
27. 쿼리 모드 또는 사용자 크기를 MB 단위로 사용자 공간 크기 제공
SELECT SUM (bytes / 1024 / 1024) "size"
FROM dba_segments
WHERE owner = '&owner';
28. 조회 데이터베이스에서 모든 사용자가 마지막으로 사용하는 SQL 조회 이 조회 문구는 현재 데이터베이스에서 모든 사용자가 마지막으로 사용하는 SQL 문구를 표시합니다.
SELECT S.USERNAME || '(' || s.sid || ')-' || s.osuser UNAME,
s.program || '-' || s.terminal || '(' || s.machine || ')' PROG,
s.sid || '/' || s.serial# sid,
s.status "Status",
p.spid,
sql_text sqltext
FROM v$sqltext_with_newlines t, V$SESSION s, v$process p
WHERE t.address = s.sql_address
AND p.addr = s.paddr(+)
AND t.hash_value = s.sql_hash_value
ORDER BY s.sid, t.piece;
성능 관련 조회 29.사용자 CPU 사용률 조회
이 문장은 모든 사용자의 CPU 사용률을 표시하는데 사용되며 사용자가 데이터베이스 부하 상황을 이해하는 데 도움이 된다
SELECT ss.username, se.SID, VALUE / 100 cpu_usage_seconds
FROM v$session ss, v$sesstat se, v$statname sn
WHERE se.STATISTIC# = sn.STATISTIC#
AND NAME LIKE '%CPU used by this session%'
AND se.SID = ss.SID
AND ss.status = 'ACTIVE'
AND ss.username IS NOT NULL
ORDER BY VALUE DESC;
30. 데이터베이스 긴 조회 진행 상황 조회 실행 중인 긴 조회 진행 상황 표시
SELECT a.sid,
a.serial#,
b.username,
opname OPERATION,
target OBJECT,
TRUNC (elapsed_seconds, 5) "ET (s)",
TO_CHAR (start_time, 'HH24:MI:SS') start_time,
ROUND ( (sofar / totalwork) * 100, 2) "COMPLETE (%)"
FROM v$session_longops a, v$session b
WHERE a.sid = b.sid
AND b.username NOT IN ('SYS', 'SYSTEM')
AND totalwork > 0
ORDER BY elapsed_seconds;
31. 현재 세션 ID, 프로세스 ID, 클라이언트 ID 등을 가져오면 프로세스 ID와 세션 ID로 voodoo magic를 만들고 싶은 사용자에게 제공합니다.
SELECT b.sid,
b.serial#,
a.spid processid,
b.process clientpid
FROM v$process a, v$session b
WHERE a.addr = b.paddr AND b.audsid = USERENV ('sessionid');
•V$SESSION.SID AND V$SESSION.SERIAL#은 데이터베이스 프로세스 ID • V$PROCESS입니다.SPID는 데이터베이스 서버 백그라운드 프로세스 ID • V$SESSION입니다.PROCESS는 클라이언트 PROCESS ID, ON 윈도우즈 it IS: separated THE FIRST # IS THE PROCESS ID ON THE client AND 2nd one IS THE READ id입니다.
32. 특정한 패턴이나 테이블에서 실행된 마지막 SQL 문장을 조회한다
SELECT CREATED, TIMESTAMP, last_ddl_time
FROM all_objects
WHERE OWNER = 'MYSCHEMA'
AND OBJECT_TYPE = 'TABLE'
AND OBJECT_NAME = 'EMPLOYEE_TABLE';
33. 읽기 실행당 상위 10개의 SQL 쿼리
SELECT *
FROM ( SELECT ROWNUM,
SUBSTR (a.sql_text, 1, 200) sql_text,
TRUNC (
a.disk_reads / DECODE (a.executions, 0, 1, a.executions))
reads_per_execution,
a.buffer_gets,
a.disk_reads,
a.executions,
a.sorts,
a.address
FROM v$sqlarea a
ORDER BY 3 DESC)
WHERE ROWNUM < 10;
34. 뷰에서 실제 Oracle 접속 조회 및 표시
SELECT osuser,
username,
machine,
program
FROM v$session
ORDER BY osuser;
35. 연결 프로그램을 열어 연결을 여는 그룹을 조회하고 표시
SELECT program application, COUNT (program) Numero_Sesiones
FROM v$session
GROUP BY program
ORDER BY Numero_Sesiones DESC;
36. Oracle에 연결된 사용자 및 사용자의 세션 수를 쿼리 및 표시
SELECT username Usuario_Oracle, COUNT (username) Numero_Sesiones
FROM v$session
GROUP BY username
ORDER BY Numero_Sesiones DESC;
37. 소유자의 대상 수량 얻기
SELECT owner, COUNT (owner) number_of_objects
FROM dba_objects
GROUP BY owner
ORDER BY number_of_objects DESC;
38. 숫자를 문자로 변환하여 더 많은 정보를 볼 수 있음: Converting number into words in Oracle
SELECT TO_CHAR (TO_DATE (1526, 'j'), 'jsp') FROM DUAL;
출력:
one thousand five hundred twenty-six
39. 가방의 원본 코드에서 문자열 조회
이 질의문은 모든 패키지의 소스 코드에서'FOO'를 검색합니다.SOMETHING '은 사용자가 원본 코드에서 특정한 저장 프로세스나 함수 호출을 찾을 수 있도록 도와줍니다.
--search a string foo_something in package source code
SELECT *
FROM dba_source
WHERE UPPER (text) LIKE '%FOO_SOMETHING%'
AND owner = 'USER_NAME';
40. 쉼표로 구분된 데이터를 표에 삽입한다
쉼표로 구분된 문자열을 테이블에 삽입하고 싶을 때, 예를 들어 IN이나 NOT IN 같은 다른 검색 문구를 사용할 수 있다.여기서 우리는'AA,BB,CC,DD,EE,FF'를 A,BB,CC 등을 일렬로 포함하는 시계로 바꾸면 이 문자열을 다른 시계에 쉽게 삽입하고 관련 조작을 신속하게 할 수 있다.
WITH csv
AS (SELECT 'AA,BB,CC,DD,EE,FF'
AS csvdata
FROM DUAL)
SELECT REGEXP_SUBSTR (csv.csvdata, '[^,]+', 1, LEVEL) pivot_char
FROM DUAL, csv
CONNECT BY REGEXP_SUBSTR (csv.csvdata,'[^,]+', 1, LEVEL) IS NOT NULL;
41. 조회표의 마지막 기록
이 검색 문장은 매우 직접적이다. 표에 메인 키가 없거나 사용자가 최대 메인 키가 최신의 기록인지 아닌지를 확인하지 못할 때 이 문장을 사용하여 표의 마지막 기록을 조회할 수 있다.
SELECT *
FROM employees
WHERE ROWID IN (SELECT MAX (ROWID) FROM employees);
(OR)
SELECT * FROM employees
MINUS
SELECT *
FROM employees
WHERE ROWNUM < (SELECT COUNT (*) FROM employees);
42. Oracle에서 행 데이터 곱셈
이 검색어는 줄마다 수치 곱셈을 하기 위해 복잡한 수학 함수를 사용한다.자세한 내용은 Row Data Multiplication In Oracle 참조
WITH tbl
AS (SELECT -2 num FROM DUAL
UNION
SELECT -3 num FROM DUAL
UNION
SELECT -4 num FROM DUAL),
sign_val
AS (SELECT CASE MOD (COUNT (*), 2) WHEN 0 THEN 1 ELSE -1 END val
FROM tbl
WHERE num < 0)
SELECT EXP (SUM (LN (ABS (num)))) * val
FROM tbl, sign_val
GROUP BY val;
43. Oracle에서 랜덤 데이터 생성
모든 개발자들은 데이터베이스를 테스트하기 위해 무작위 데이터를 쉽게 만들 수 있기를 원한다. 아래의 이 조회문은 당신을 만족시킬 수 있다. 이것은 Oracle에서 무작위 데이터를 생성하여 표에 삽입할 수 있다.자세한 내용은 Random Data in Oracle 을 참조하십시오.
SELECT LEVEL empl_id,
MOD (ROWNUM, 50000) dept_id,
TRUNC (DBMS_RANDOM.VALUE (1000, 500000), 2) salary,
DECODE (ROUND (DBMS_RANDOM.VALUE (1, 2)), 1, 'M', 2, 'F') gender,
TO_DATE (
ROUND (DBMS_RANDOM.VALUE (1, 28))
|| '-'
|| ROUND (DBMS_RANDOM.VALUE (1, 12))
|| '-'
|| ROUND (DBMS_RANDOM.VALUE (1900, 2010)),
'DD-MM-YYYY')
dob,
DBMS_RANDOM.STRING ('x', DBMS_RANDOM.VALUE (20, 50)) address
FROM DUAL
CONNECT BY LEVEL < 10000;
44. Oracle에서 무작위 수치를 생성합니다. 이것은 Oracle의 일반적인 무작위 수치 생성기입니다.이것은 0-100 사이의 무작위 수치를 생성할 수 있습니다. 만약 당신이 수치 범위를 설정하고 싶다면 곱셈을 바꾸면 됩니다.
--generate random number between 0 and 100
SELECT ROUND (DBMS_RANDOM.VALUE () * 100) + 1 AS random_num FROM DUAL;
45. 테이블에 데이터가 있는지 확인
이것은 많은 중국어 쓰기 방법이 있습니다.count(*)를 사용하여 표의 줄의 수량을 볼 수 있지만, 이 검색 문장은 비교적 효율적이고 빠르며, 우리는 단지 표에 어떤 데이터가 있는지 알고 싶을 뿐입니다.
SELECT 1
FROM TABLE_NAME
WHERE ROWNUM = 1;
Oracle 개발자의 부담을 줄일 수 있는 유용한 검색어를 알고 있다면 댓글에 공유해 보세요:)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.