SQL中級-復習5
2873 ワード
CREATE TABLE DEPT3
(DEPTNO NUMBER(10),
DNAME VARCHAR2(14) CONSTRAINT DEPT3_DNAME_UN UNIQUE,
LOC VARCHAR2(10))
UNIQUE:重複データがない列に使用します.PRIMARY KEYとは異なり、NULL値を入力できます.CREATE TABLE DEPT5
(DEPTNO NUMBER(10)
,DNAME VARCHAR2(14)
,LOC VARCHAR2(10) CONSTRAINT DEPT5_LOC_NN NOT NULL)
NOT NULL:テーブルの特定のカラムにNULL値を入力できません.CREATE TABLE EMP6
( EMPNO NUMBER(10)
, ENAME VARCHAR2(20)
, SAL NUMBER(10) CONSTRAINT EMP6_SAL_CK
CHECK (SAL BETWEEN 0 AND 6000))
CHECK:特定のカラムで特定の条件のデータのみを入力または変更する制約を制限します.WITH JOB_SUMSAL AS (SELECT JOB
, SUM(SAL) as 토탈
FROM emp
GROUP BY job)
SELECT job
, 토탈
FROM job_sumsal
WHERE 토탈 > (SELECT AVG(토탈)
FROM job_sumsal)
WITH:パフォーマンスを向上させるために、1つのSQLで長時間のSQLを繰り返し使用します.WITH job_sumsal AS (SELECT job
, SUM(sal) 토탈
FROM emp
GROUP BY job)
, deptno_sumsal as (SELECT deptno
, SUM(sal) 토탈
FROM emp
GROUP BY deptno
HAVING SUM(sal) > (SELECT AVG(토탈) + 3000
FROM job_sumsal)
)
SELECT deptno
, 토탈
FROM deptno_sumsal
SUBQUERYFACTORNG:WITHセクションのクエリの結果をテンポラリ・テーブルに生成することを指します.WITH LOOP_TABLE as (SELECT level as NUM
FROM dual
CONNECT BY level <= 9)
SELECT '2' || 'X' || NUM || '=' || 2 * NUM as "2단"
FROM LOOP_TABLE
CONNECT BY LEVEL:任意の数の行を返したい場合に使用します.
WITH LOOP_TABLE as (SELECT level as NUM
FROM dual
CONNECT BY level <= 9),
GUGU_TABLE as (SELECT level + 1 as GUGU
FROM dual
CONNECT BY level <= 8)
SELECT TO_CHAR(A.NUM) || 'X' || TO_CHAR(B.GUGU) || '=' || TO_CHAR(B.GUGU * A.NUM) as 구구단
FROM LOOP_TABLE A, GUGU_TABLE B
WITHセクションと階層クエリー文を使用すると、SQLを使用して二重ループ文を実装できます.WITH LOOP_TABLE as (SELECT LEVEL as NUM
FROM dual
CONNECT BY LEVEL <= 8)
SELECT LPAD('★', num, '★') as STAR
FROM LOOP_TABLE
LPADを利用して、NUM出力の数字で星を埋めて出力します.LPADの2番目のパラメータの数字に従って数字の桁数を指定し、1番目のパラメータの値は先に星を出力し、残りの位置に星を埋めます.
Reference
この問題について(SQL中級-復習5), 我々は、より多くの情報をここで見つけました https://velog.io/@gugu_dragon/SQL-중급-복습-5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol