Oracle�f�[�^�x�[�X�G���W�j�A�Ƃ��Ă̎��͂��ؖ�����ORACLE MASTER���i�B���̓�����ł���Bronze���i�̎擾�͓���Ȃ��B�{�A�ڂƁA�����f�ڒ��̘A�ځuBronze DBA�u���v�ō��i��ڎw�����I�i�Q�l�L���F�uOracle 10g�Ή���ORACLE MASTER�Ƃ́H�v�j
�@�O��Ɉ��������A���₢���킹�ɂ���Ė₢���킹���ʂ�SQL���̏����Ɏg�p������@�ɂ��Ċw�т܂��B�O��uSELECT������SELECT���A���₢���킹�v�ŁA���₢���킹�̈Ӗ��A�\���̋L�q�ɂ��ďЉ�܂����B����͒P��s���₢���킹�A�����s���₢���킹�̎��s���@���w�т܂��傤�B
��1��@Oracle�Ŏg��SQL�̊�b���w��
��2��@SQL�₢���킹�ɂ��s�̐����ƃ\�[�g
��5��@SQL�̊��Ńf�[�^���W�v����
��6��@SQL�ŕ����̕\����f�[�^�����o��
��7��@SQL�̊O�������Ńf�[�^�����o��
��8��@SELECT������SELECT���A���₢���킹
��9��@���₢���킹�̍\�����o����
�ŏI��@SQL�ŕ֗��ȃI�u�W�F�N�g���g�����Ȃ�
1�D�m�F�������������e
2�D�P��s���₢���킹
�@���ʂƂ���1�s��߂����₢���킹�́u�P��s���₢���킹�v�ƌĂ�܂��B�P��s���₢���킹�ł́A�P��s��r���Z�q�i=�A<�A<=�A>�A>=�A!=�j���g�p���邱�Ƃ��ł��܂��B
�@���₢���킹��NULL��߂��ꍇ�A��₢���킹�̌��ʂ�1�s���߂���܂���B���̏ꍇ�uWHERE�� = NULL�v���w�肵�����ƂɂȂ�܂����ANULL�l�́u=�v�ł͔�r�ł��Ȃ����߂ł��B
�����1
���̎������m�F���Ă��������B
ORD_ID CUST_ID ORD_DATE ORDER_TOTAL ------ ------- -------- ----------- 100 100 00-10-17 7500 101 102 01-05-11 8000 102 104 02-09-17 12000 103 103 01-10-21 4500 104 105 00-06-25 6000 105 100 02-06-19 5500 |
�yCUSTOMERS�z
CUST_ID CUST_NAME ------- ---------- 100 SMITH 101 ALLEN 102 WARD 103 JONES 104 SMITH |
���̕��̌��ʂƂ��Đ��������̂�I�����Ȃ����B
SELECT ord_id, cust_id, ord_date FROM orders
WHERE cust_id = (SELECT cust_id FROM customers WHERE cust_name='SMITH');
a�D ORD_ID CUST_ID ORD_DATE ---------- ---------- -------- 105 100 02-06-19 100 100 00-10-17 102 104 02-09-17 b�D ORD_ID CUST_ID ORD_DATE ---------- ---------- -------- 105 100 02-06-19 100 100 00-10-17 c�D ORD_ID CUST_ID ORD_DATE ---------- ---------- -------- 102 104 02-09-17 d�D�G���[�ƂȂ�
�����Fd
�����
�@�O��̏h��Ƃ������ł��B���₢���킹�Ƃ̔�r���Z�q�Ɂu=�v���g�p����ꍇ�A���₢���킹��1�s��߂��K�v������܂��B�����ł���CUSTOMERS�\�ɂ́A���₢���킹�Ŏg�p���Ă���CUST_NAME�uSMITH�v�̃��R�[�h��2�s����܂��̂ŁA���s���ɃG���[�ƂȂ�܂��i����d�j�B
�@�I����a�̌��ʂ́A�uIN�v���Z�q���g�p����Ώo�͂ł��܂��B
SELECT ord_id, cust_id, ord_date FROM orders WHERE cust_id IN (SELECT cust_id FROM customers WHERE cust_name='SMITH'); |
�@�I����b���I����c�̌��ʂ��o�͂���ɂ́A�������K�v�ł��ˁB1�̕��@�Ƃ��āA���₢���킹���ŃO���[�v�����g�p����Ƃ������̂�����܂��B
���I����b�F
SELECT ord_id, cust_id, ord_date FROM orders WHERE cust_id = (SELECT MIN(cust_id) FROM customers WHERE cust_name='SMITH'); |
���I����c�F
SELECT ord_id, cust_id, ord_date FROM orders WHERE cust_id = (SELECT MAX(cust_id) FROM customers WHERE cust_name='SMITH'); |
3�D�����s���₢���킹
�@���ʂƂ��ĕ����s��߂����₢���킹�́u�����s���₢���킹�v�ƌĂ�܂��B�����s���₢���킹�ł́A�����s��r���Z�q�iIN�AANY�AALL�j���g�p���܂��B
IN | ���₢���킹�̌��ʍs�̂����ꂩ�Ɠ����� |
---|---|
ANY | ���₢���킹�̌��ʍs�̂����ꂩ�Ɣ�r����i���Z�q�@ANY�i���₢���킹�j�j |
ALL | ���₢���킹�̌��ʍs�̂��ׂĂƔ�r����i���Z�q�@ALL�i���₢���킹�j�j |
�@�����ꂩ�̒l�Ɣ�r����Ƃ����Ӗ��ł�IN��ANY�͓����ł����AIN�́��Ŕ�r����̂ɑ��AANY�͎w�肵�����Z�q�ŁA�܂�͈͂Ŕ�r���邱�Ƃ��ł���_���قȂ�܂��B
���
�����1
���̎������m�F���Ă��������B
ORD_ID CUST_ID ORD_DATE ORDER_TOTAL ------ ------- -------- ----------- 100 100 00-10-17 7500 101 102 01-05-11 8000 102 104 02-09-17 12000 103 103 01-10-21 4500 104 105 00-06-25 6000 105 101 02-06-19 5500 106 104 01-04-12 9000 107 103 02-11-15 8000 |
CUST_ID CUST_NAME COUN ------- ---------- ---- 100 SMITH LA 101 ALLEN CA 102 WARD LA 103 JONES FR 104 MARTIN US 105 BLAKE IT |
���̕��̌��ʂƂ��Đ��������̂�I�����Ȃ����B
SELECT ord_id, cust_id, ord_date, order_total FROM orders WHERE order_total > ANY (SELECT order_total FROM orders WHERE cust_id IN (SELECT cust_id FROM customers WHERE country IN ('LA', 'IT')));
a�D ORD_ID CUST_ID ORD_DATE ORDER_TOTAL ------ ------- -------- ----------- 104 105 00-06-25 6000 b�D ORD_ID CUST_ID ORD_DATE ORDER_TOTAL ------ ------- -------- ----------- 100 100 00-10-17 7500 101 102 01-05-11 8000 c�D ORD_ID CUST_ID ORD_DATE ORDER_TOTAL ------ ------- -------- ----------- 100 100 00-10-17 7500 101 102 01-05-11 8000 102 104 02-09-17 12000 104 105 00-06-25 6000 106 104 01-04-12 9000 107 103 02-11-15 8000 d�D ORD_ID CUST_ID ORD_DATE ORDER_TOTAL ------ ------- -------- ----------- 100 100 00-10-17 7500 101 102 01-05-11 8000 102 104 02-09-17 12000 106 104 01-04-12 9000 107 103 02-11-15 8000 e�D�G���[�ƂȂ�
�����Fd
�����
�@���̖��̂悤�ɕ��₢���킹������q�ɂȂ��Ă���ꍇ�́A��ԓ����̕��₢���킹����l���Ă����܂��傤�B
�₢���킹1 WHERE�i�₢���킹2 WHERE�i�₢���킹3�j�j
�@�₢���킹3�̌��ʂ��g�p���Ė₢���킹2���s���A���̌��ʂ�₢���킹1�̏����Ɏg�p���܂��B
�i1�j�₢���킹3
SELECT cust_id FROM customers WHERE country IN ('LA', 'IT') |
���̌��ʁACUST_ID��100�A102�A105�̒l���߂�܂��B
�i2�j�₢���킹2
�@�₢���킹3�̌��ʂ��g���ƁA���̂悤�ɂȂ�܂��B
SELECT order_total FROM orders WHERE cust_id IN (100, 102, 105) |
���̌��ʁAORDER_TOTAL��7500�A8000�A6000�̒l���߂�܂��B
�i3�j�₢���킹1
SELECT ord_id, cust_id, ord_date, order_total FROM orders WHERE order_total > ANY (...) |
�@ANY���Z�q�́A�₢���킹2�̌��ʂ̂����ꂩ�Ƃ̔�r�����܂��B7500�A8000�A6000�̂����ꂩ�̒l���傫��ORDER_TOTAL��l�����s�����߂�̂ŁA�uORDER_TOTAL��6000���傫��ORDERS�\�̍s�v�������ƂȂ�܂��B���Z�q�Ƃ��āu>�v���g�p���Ă��܂��̂ŁA6000�Ɠ������l�͊܂܂�܂���B������d�ł��B
4�D�g�b�vN����
�@FROM��ɕ��₢���킹���g�p���A���₢���킹����ORDER BY����g�p����ƁA�\�[�g�ς��ʂ̏W�����쐬���邱�Ƃ��ł��܂��B��₢���킹����ROWNUM�^������g�p���A�擾�������s�����肷��A���N�̃f�[�^��߂����Ƃ��ł��܂��B
SELECT ���X�g FROM (SELECT ���X�g FROM �\�� [WHERE ������] ORDER BY �\�[�g��)
WHERE ROWNUM <= �擾�s��;
�EORDER BY�F�g�b�vN�Ƃ��Ď擾�������w�肷��B����N���擾����Ȃ�ASC�\�[�g�A���N���擾����Ȃ�DESC�\�[�g���g�p����
�EROWNUM�F���ʂ̏W���ɘA�Ԃ�U��^���I�ȗ�B<�A<=���g�p���Ď擾�s�����L�q����
�@ROWNUM�^����́A���݂̕\���̊i�[�����ǂ���ɍs�ɘA�Ԃ�U���Ă��܂��܂��B���N�A����N���擾����ɂ͕��₢���킹�Ń\�[�g���Ă������Ƃ��K�v�ł��B
��F SQL> SELECT empno, ename, sal FROM (SELECT empno, ename, sal FROM emp ORDER BY sal DESC) 2 WHERE ROWNUM <= 3; EMPNO ENAME SAL ---------- ---------- ---------- 7839 KING 5000 7788 SCOTT 3000 7902 FORD 3000 |
5�D�W�����Z�q
�@�����[�V���i���f�[�^�x�[�X�ł́A���w�̏W���_���g�p���ĕK�v�ȍs��߂����Ƃ��\�ł��BOracle�f�[�^�x�[�X�ł́AUNION�AINTERSECT�AMINUS�W�����Z�q���g�p���ďW�������肵�܂��B
UNION | �e�₢���킹�őI�����ꂽ���ׂĂ̍s��߂� |
---|---|
INTERSECT | �����̖₢���킹�őI�����ꂽ�s��߂� |
MINUS | 1�ڂ̖₢���킹�őI�����ꂽ�s����A2�ڂ̖₢���킹�őI�����ꂽ�s������ |
�@������̏W�����Z�q���d���l��r���������ʂ�߂��܂��BUNION ALL�Ƃ����W�����Z�q�����͗�O�ŁA�d���l�����̂܂ܖ߂��܂��B
�@�}1��2�́����قȂ�₢���킹�ƍl���܂��傤�B�����̏W���ɂ�A�AA�AB�AC��4�̒l���A�E���̏W���ɂ�A�AC�AD�AE��4�̒l���i�[����Ă��܂��B�d�Ȃ��Ă���̂́A�����̏W���ɑ��݂��Ă���l�ł��B�W�����Z�q�͂��ꂼ�ꎟ�̒l��߂��܂��B
�@�O���ƍ����2��ɂ킽���āA���₢���킹�ɂ���Ė₢���킹���ʂ�SQL���̏����Ɏg�p������@��������܂����B���̓��e���`�F�b�N���Ă����܂��傤�B
�@����́A�u�f�[�^����v���m�F���܂��B���̏h��������Ă����Ă��������B
�g�����U�N�V�������������镶��2�I�����Ȃ����B
a�DDELETE FROM emp;
b�DROLLBACK TO SAVEPOINT a;
c�DGRANT SELECT ON emp TO hr;
d�DALTER TABLE emp ADD COLUMN jobs VARCHAR2(10);
e�DSELECT empno, ename FROM emp ORDER BY sal;
Copyright © ITmedia, Inc. All Rights Reserved.