Maison >php教程 >PHP开发 >99 instructions de requête couramment utilisées dans la base de données Oracle

99 instructions de requête couramment utilisées dans la base de données Oracle

高洛峰
高洛峰original
2017-01-06 13:21:251567parcourir

1. sélectionnez * depuis emp;

2. sélectionnez empno, nom, travail depuis emp;

3. sélectionnez le numéro d'empno, nom nom, travail depuis emp;

4. sélectionnez un emploi dans emp;

5. sélectionnez un emploi distinct dans emp;

6. sélectionnez un emploi distinct, un emploi dans emp;
Explication : Parce que les numéros d'employés sont non répété, il est donc prouvé à ce stade que toutes les colonnes ne sont pas dupliquées, donc les colonnes en double ne peuvent pas être éliminées

7. Interrogez le numéro, le nom et l'emploi de l'employé, mais le format affiché est : numéro d'employé. : 7369, nom Est : smith, le poste est : clear
select 'L'employé dont le numéro est : ' || | emploi de l'em;

8. Trouvez le nom et le salaire annuel de chaque employé
sélectionnez le nom, sal * 12 revenu de l'em;

Trouvez les informations de tous les employés dont le salaire est supérieur à 1500
sélectionnez * depuis emp où sal > 1500;

10. Interrogez les informations sur les employés qui peuvent recevoir une prime chaque mois
sélectionnez * depuis emp où comm n'est pas nul ;

11. Interrogez les employés qui n'ont pas d'informations sur les bonus
select * from emp où comm est nul;

Interrogez les informations des employés dont le salaire de base est supérieur à 1500. et peut recevoir des primes
select * from emp où sal > 1500 et comm n'est pas nul;

Interroger les informations des salariés dont le salaire de base est supérieur à 1500 ou qui peuvent recevoir des primes
select * from emp où sal > 1500 ou comm n'est pas nul;

14. Requête Obtenez les informations des employés dont le salaire de base n'est pas supérieur à 1500 ou qui ne peuvent pas recevoir de primes
select * from emp which not(sal > 1500 et comm n'est pas nul);

15. Recherchez le salaire de base est supérieur à 1500, mais toutes les informations sur l'employé sont inférieures à 3000
sélectionnez * dans emp où sal > sal < 3000;

16. Interrogez toutes les informations sur les employés dont le salaire de base est supérieur ou égal à 1500, mais inférieur ou égal à 3000
sélectionnez * dans emp où sal >= 1500 et sal <= 3000;
sélectionnez * from emp où sal entre 1500 et 3000;

17. Recherchez toutes les informations sur les employés embauchés en 1981 (employés embauchés entre le 1er janvier 1981 et le 31 décembre 1981)
sélectionnez * depuis emp où embauché entre le « 1er janvier 81 » et le « 31 décembre 81 » ;

18. Demande d'interrogation des informations sur l'employé dont le nom est Smith
sélectionnez * depuis emp où ename = 'SMITH';

19. Demande d'interrogation des informations sur l'employé de 7369, 7499, 7521 Informations spécifiques
sélectionnez * from emp où empno = 7369 ou empno = 7499 ou empno = 7521;
sélectionnez * depuis emp où empno in(7369, 7499, 7521);

20. Demande de requête Obtenez les informations spécifiques des employés dont les employés ne sont pas 7369, 7499, 7521
sélectionnez * depuis emp où empno pas dans (7369, 7499, 7521);

21. Demande de savoir si les noms sont smith, allen, king Informations sur l'employé
sélectionnez * from emp où ename in('SMITH', 'ALLEN ', 'KING');

22. Interrogez tous les employés dont la deuxième lettre du nom contient "M" Informations sur l'employé
sélectionnez * from emp où ename comme '_M%';

23. Interroger les informations sur l'employé contenant la lettre M dans le nom de l'employé
select * from emp où ename like '%M%' ';

24. Demande d'interrogation des informations sur l'employé embauché en 1981
select. * de emp où embauché comme '�%';

25. Interrogez les employés dont le salaire contient 5 informations
sélectionnez * de emp où sal comme '%5%';

26. Interrogez les informations sur les employés dont le numéro d'employé n'est pas 7369
select * from emp which empno != 7369;
select * from emp Where empno <>

Demande de tri par salaire. de bas en haut
sélectionnez * frm emp order by sal;
sélectionnez * from emp order by sal asc

Demande de tri par salaire de haut en bas
sélectionnez * from emp order by sal desc;

29. Demande d'interrogation de toutes les informations sur les employés de 20 départements, les informations de requête sont les suivantes Triez le salaire du plus élevé au plus bas Si les salaires sont égaux, triez par date d'emploi à partir de. tôt à tard.
sélectionnez * from emp où deptno = 20 order by sal desc, greetate asc;

30. Changer les lettres minuscules Changer les lettres majuscules en lettres majuscules
sélectionner upper('hello') from dual;

31. Changez les lettres majuscules en lettres minuscules
sélectionnez lower('HELLO WORLD') from dual;

Demande d'interrogation des informations sur l'employé dont le nom est Smithselect * from emp which ename = upper('smith');

33. Utilisez la fonction initcap() pour changer le premier caractère du mot Lettres majuscules

select initcap('hello world') from dual;

34. Changez les noms des employés dans la table des employés en lettres majuscules

sélectionnez initcap(ename) from emp;

Concaténez les chaînes "hello" et "world". "

select concat('hello', 'world') from dual;

36. Caractères communs pour les chaînes de commande La fonction de traitement

select substr('hello', 1, 3) intercepte la chaîne , length('hello') la longueur de la chaîne, replace('hello', 'l', 'x') remplacement de chaîne à partir de dual ;
select substr('hello', 0, 3) intercepte la chaîne, length('hello') la longueur de la chaîne, replace('hello', 'l', 'x') remplacement de chaîne à partir de dual

37. Afficher les noms et les trois derniers caractères de tous les employés
select ename, substr(ename, length(ename) -2) from emp;
select ename, substr(ename, -3, 3) from emp;

38. Utiliser des fonctions numériques pour effectuer des opérations d'arrondi
select round(789.536) from dual;

39. Exiger que la valeur 789.536 soit conservée à deux décimalesselect round (789.536, 2) from dual ; 41. L'utilisation de la fonction trunc() ne conservera aucune décimale et le point décimal n'effectuera pas d'opérations d'arrondi
select trunc(789.536) from dual;

42. Le point décimal peut également être spécifié via trunc() Chiffres réservés
select trunc(789.536, 2) from dual;

Utilisez des nombres négatifs pour représenter les chiffres
select trunc(789.536. , -2) from dual;

44 . Utilisez la fonction mod() pour effectuer l'opération de reste
sélectionnez mod(10, 3) from dual;

Affichez le nombre. de semaines au cours desquelles les employés des 10 départements sont entrés dans l'entreprise (date actuelle - date d'emploi = nombre de jours / 7 = numéro de semaine)
sélectionnez empno, ename, round((sysdate - Hirateate) / 7) from emp où deptno = 10;

46. Fonction date
months_between() : rechercher le nombre de mois dans une plage de dates donnée

add_months() : ajouter le nombre de mois spécifié à la date spécifiée pour trouver le next date

next_day() : La date suivante de la date spécifiée
last_day() : Rechercher le dernier jour du mois à une date donnée

47
select empno, ename, mois_between(sysdate, Hiredate) from emp;
sélectionnez empno, ename, round(months_between(sysdate, Hiredate)) from emp;

48. sélectionnez sysdate, add_months(sysdate, 4) from dual;

49. sélectionnez next_day(sysdate, 'Monday') dans dual;

50. sélectionnez last_day(sysdate) dans dual;

51. ) : Convertir en chaîne

to_number() : Convertir en nombre

to_date() : Convertir en date

52. Interrogez le numéro d'employé, le nom et la date d'emploi de tous les employés

select empno. ,

ename,
to_char(hiredate, 'yyyy') année,
to_char(hiredate, 'mm') mois,
to_char(hiredate, 'dd') jour

from emp;


sélectionnez empno, ename, to_char(hiredate, 'yyyy-mm-dd') depuis emp;

sélectionnez empno, ename, to_char(hiredate, 'fmyyyy-mm-dd') depuis emp;

53. Interrogez le numéro, le nom et le salaire de tous les employés
sélectionnez empno, ename, sal from emp;

select empno, ename, to_char(sal, '99,999') from emp ;

sélectionnez empno, ename, to_char(sal, 'L99,999') from emp;

sélectionnez empno, ename, to_char(sal, '$99,999') from emp;

54. to_number('123') to_number('123') from dual;


55. Convertir une chaîne en un type de date
select to_date('2009-01-01', 'yyyy-mm-dd ') de dual;

56. Trouvez le salaire annuel de chaque employé (obligatoire plus bonus)

sélectionnez empno, ename, sal, comm, (sal comm) * 12 de emp;

sélectionnez empno, ename, sal, comm, nvl(comm, 0), (sal nvl(comm, 0)) * 12 revenue from emp;

57 La fonction decode() est similaire à if.. .elsif...instruction else
select decode(1, 1, 'Le contenu est 1', 2, 'Le contenu est 2', 3, 'Le contenu est 3') from dual;

58. Recherchez le numéro, le nom, la date d'emploi et de travail de l'employé, et demandez que le travail de l'employé soit remplacé par les informations suivantes :
sélectionnez le numéro d'employé empno,
indiquez le nom de l'employé,

date d'embauche. ,

decode(job,
'COMMERC', 'vendeur',

'VENTE', 'personnel de vente',

'MANAGER', 'Manager',
'ANALYSTE', ' Analyst',
'PRESIDENT', 'Président'
) Position
de emp;

59. Produit cartésien (jointure croisée)
sélectionnez * de emp, dept;
sélectionnez * depuis emp cross join dept ;

60. Jointure interne
sélectionnez * depuis emp e, dept d où e.deptno = d.deptno;

sélectionnez * depuis emp e inner join dept d sur e.deptno = d.deptno;

sélectionnez * depuis emp e rejoignez le département d sur e.deptno = d.deptno;

61. Jointure naturelle

sélectionnez * depuis emp natural join dept;
select * from emp e join dept d using(deptno);

62. Demande d'interrogation du numéro d'employé, du nom, du numéro de service, du nom, de l'adresse

select e.empno, e.ename, d.deptno, d.dname, d.loc from emp e, dept d où e. deptno = d.deptno;


63. du supérieur direct de l'employé
sélectionnez e.ename, e.job, m.ename from emp e, emp m où e.mgr = m.empno;

Demande d'interrogation du nom de l'employé, job, le nom du supérieur immédiat de l'employé et le nom du service

sélectionnez e.ename, e.job, m.ename , d.dname from emp e, emp m, dept d où e.mgr = m. empno et e.deptno = d.deptno;

65. Demande d'interrogation du nom, du salaire, du nom du département, du niveau de salaire dans l'entreprise (salgrade) de chaque employé, ainsi que du nom du dirigeant et du niveau de salaire dans l'entreprise
sélectionnez e.ename, e.sal , d.dname, s.grade, m.ename, m.sal, ms.grade
de emp e, dept d, salgrade s, emp m, salgrade ms
où e.deptno = d.deptno
et e.sal entre s.losal et s.hisal
et e.mgr = m.empno
et m.sal entre ms.losal et ms.hisal;

sélectionnez ename. ,
e.sal,
d.dname,
decode(s.grade, 1, 'Cinquième année', 2, 'Quatrième année', 3, 'Troisième année', 4 , 'Deuxième année ', 5, 'Première année'),
m.ename,
m.sal,
decode(ms.grade, 1, 'Cinquième année', 2, 'quatrième année', 3, ' troisième année', 4, 'deuxième année', 5, 'première année')
de emp e, département d, salgrade s, emp m, salgrade ms
où e.deptno = d.deptno et e. sal entre s.losal et s.hisal et e.mgr = m.empno
et m.sal entre ms.losal et ms.hisal;

66. sélectionnez empno, ename, d.deptno, dname, loc from emp e, dept d où e.deptno = d.deptno;
sélectionnez empno, ename, d.deptno, dname, loc from emp e inner join dept d sur e.deptno = d.deptno;

67. Jointure externe gauche
sélectionnez empno, ename, d.deptno, dname, loc from emp e, dept d où e.deptno = d.deptno ( );
sélectionnez empno, ename, d.deptno, dname, loc from emp e left external join dept d on e.deptno = d.deptno;
select empno, ename, d.deptno, dname, loc from emp e left join dept d on e.deptno = d.deptno( );

68. Jointure externe droite
sélectionnez empno, ename, d.deptno, dname, loc from emp e, dept d où e.deptno( ) = d.deptno;
sélectionnez empno, ename, d.deptno, dname, loc depuis emp e jointure externe droite dept d sur e.deptno = d.deptno;
sélectionnez empno, ename, d.deptno, dname, loc depuis emp e rejoignez à droite le département d sur e.deptno = d.deptno;

69. sélectionnez e.empno, e.ename, m.empno, m.ename depuis emp e, emp m où e.mgr = m. empno;

70. sélectionnez e.empno, e.ename, m.empno, m.ename depuis emp e, emp m où e.mgr = m);

71. .
sélectionnez * dans emp e, département d où e.deptno = d.deptno et d.deptno = 30 ;
sélectionnez * dans emp e inner join dept d sur e.deptno = d.deptno où d. deptno = 30;
sélectionnez * from emp e join dept d sur e.deptno = d.deptno où d.deptno = 30;
select * from emp e natural join dept d où deptno = 30;
sélectionnez * depuis emp e rejoignez le département d en utilisant (deptno) où deptno = 30;

72
sélectionnez e.ename, d.deptno, d dname, d.loc depuis emp e jointure externe droite. département d sur e.deptno = d.deptno;
sélectionnez e.ename, d.deptno, d.dname, d.loc depuis emp e, rejoignez à droite le département d sur e .deptno = d.deptno;
select e.ename, d.deptno, d.dname, d.loc from emp e, dept d où e.deptno( ) = d.deptno;

73 . >

74. sélectionnez min(sal) dans emp;

75. sélectionnez max(sal) dans emp;

sélectionnez somme(sal) dans emp;

77. sélectionnez avg(sal) from emp;

78. sélectionnez sum(sal) from emp où deptno = 20;

79 . 20;

80. Trouvez le nombre d'employés dans chaque département

sélectionnez deptno, count(deptno) du groupe emp par deptno;
sélectionnez deptno, count(empno) du groupe emp par deptno ;

81. Trouvez le salaire moyen de chaque département

sélectionnez deptno, avg(sal) du groupe emp par deptno;

82 . , et le nombre d'employés dans chaque département

sélectionnez d.dname, count(e.empno) from emp e, dept d
où e.deptno = d.deptno
groupez par d.dname;

sélectionnez d.deptno, d.dname, temp.c

from (select deptno, count(e.empno) c from emp e group by e.deptno) temp, dept d
where temp .deptno = d.deptno;

83. Demande d'affichage du numéro de département et du salaire moyen où le salaire moyen est supérieur à 2000

sélectionnez deptno, avg(sal) du groupe emp par deptno ayant avg( sal) > 2000;

84. Afficher le titre du poste du personnel non commercial et le salaire mensuel total des employés engagés dans le même emploi, et le salaire mensuel total des employés engagés dans le même emploi doit être supérieur à 5 000, les résultats de sortie sont triés par ordre croissant en fonction du salaire mensuel total.

sélectionnez l'emploi, sum(sal) su de l'emploi emp où <> regroupez 'VENTE' par emploi ayant sum(sal) > 5000 commande par su;

select temp.job, sum(temp.sal) s

from (select job, sal from emp e Where job <> 'VENTE') temp
groupe par temp.job
ayant sum(temp.sal) > 5000
commander par s;

85 Trouvez le salaire du département avec le salaire moyen le plus élevé

sélectionnez max(avg. (sal)) du groupe emp par deptno ;

86. Demande d'interrogation des informations de tous les employés dont le salaire est supérieur au numéro d'employé 7654

sélectionnez * de emp où sal >(sélectionnez sal de emp où empno = 7654);

87. Demande d'interrogation des informations de tous les employés dont le salaire est supérieur à 7654 et qui occupent le même emploi que 7788
sélectionnez * depuis emp
où sal >(sélectionnez sal depuis emp où empno = 7654)
et job = (sélectionner l'emploi de emp où empno = 7788);

88 Demande d'interrogation du nom, de l'emploi, du salaire de l'employé avec le salaire le plus bas
sélectionner le nom, job, sal from emp où sal = (select min(sal) from emp);

89. Demande de requête : nom du département, nombre d'employés dans le département, salaire moyen du département, nom du plus bas employé rémunéré dans le département
sélectionnez d.dname, temp. c, temp.a, e.ename
from dept d,
(select deptno, count(empno) c, moy(sal) a, min(sal) m du groupe emp par deptno) temp,
emp e
où d.deptno = temp.deptno et e.sal = temp.m;

sélectionnez d.deptno, temp .dname, temp.c, temp.a, e.ename, e.sal
from
(select d.dname , count(e.empno) c, avg(e.sal) a, min(e .sal) m
de emp e, dept d
où e.deptno = d.deptno
groupe par d.dname) temp,
emp e,
dept d
où temp.m = e.sal
et temp.dname = d.dname;

90. Recherchez les informations sur les employés au salaire minimum dans chaque département
sélectionnez * de emp où sal in(select min( sal) du groupe emp par deptno);
sélectionnez * from emp où sal =any(select min(sal) from emp group by deptno);
select * from
(select min(sal) m from emp group by deptno) temp,
emp e
where e.sal = temp.m;

91 Dans l'exemple 90, les informations sur l'employé sont supérieures au (petit) salaire le plus bas du groupe. condition de sous-requête
select * from emp which sal > ;any(select min(sal) from emp group by deptno);
select * from empwhere sal > (select min(min(sal)) from emp group par deptno);

92. Dans l'exemple 90, les informations sur l'employé sont inférieures au salaire le plus élevé (supérieur) dans la condition de sous-requête
select * from emp où sal select * from emp which sal < (select max(min(sal)) from emp group by deptno);

93. Dans l'exemple 90, les informations sur l'employé sont. supérieur au salaire le plus élevé (supérieur) dans la condition de sous-requête
sélectionnez * depuis emp où sal >all(sélectionnez min(sal) dans le groupe emp par deptno);
sélectionnez * depuis emp où sal > max(min(sal)) from emp group by deptno );

94. Dans l'exemple 90, les informations sur l'employé sont plus petites que le salaire le plus bas (plus petit) dans la condition de sous-requête
select * from emp où sal sélectionnez * dans emp où sal < (sélectionnez min(min(sal)) dans le groupe emp par deptno);

95. Trouver des informations sur les employés sans primes dans 20 départements
sélectionnez * from emp où (sal, nvl(comm, -1)) dans (select sal, nvl(comm, -1) from emp où deptno = 20);
select * from emp où deptno = 20 et comm est nul ;

96. L'opérateur d'union renvoie toutes les lignes uniques sélectionnées par les deux requêtes
select deptno from emp union select deptno from dept;

97. union L'opérateur all fusionne toutes les lignes sélectionnées par deux requêtes, y compris les lignes en double
select deptno from emp union all select deptno from dept;

98. lignes communes aux deux requêtes Row
select deptno from emp intersect select deptno from dept;

99 L'opérateur moins renvoie uniquement les lignes sélectionnées par la première requête mais non sélectionnées par la deuxième requête, c'est-à-dire. , dans Exclure les lignes qui apparaissent dans le deuxième résultat de requête d'un résultat de requête
sélectionnez deptno from dept moins sélectionnez deptno from emp;

Pour plus d'articles liés aux 99 instructions de requête couramment utilisées dans la base de données Oracle, veuillez faites attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn