(2) ------ Oracle fonction à sens unique et les requêtes multi-tables

1. Introduction fonction SQL

2, la fonction à sens unique

3, requêtes multi-tables

SQL fonction introduit

1. Quelle est la fonction SQL?

Insérer ici l'image Description

2 Les deux fonctions SQL:

fonction à sens unique et la fonction multi-ligne

fonction à sens unique

Insérer ici l'image Description

1, l'activation de la fonction de commande

Insérer ici l'image Description
---- INITCAP (Ename) première lettre en majuscule, supérieur (majuscules), inférieure (minuscule) ----
SELECT A. * A emp du OU INITCAP (a.ename) = 'James' et supérieur (a.ename) = 'JAMES'

2, la fonction de commande de caractère

Insérer ici l'image Description
Exemples:

---- Les noms comprennent toutes la variante A est 0 ----
SELECT Remplacer (a.ename, 'A', '0') de EMP Ename A
---- salaire 5, sinon de la gauche 5 commencer par ajouter 0 ----
SELECT LPAD (a.sal, ». 5' , '0') A partir de SAL EMP

3, les fonctions numériques
  • DUAL est une « pseudo-table », il peut être utilisé pour tester l'expression et la fonction

        ---- round: arrondi ----
        SELECT ronde (45,625, 2) du double; -> 45,63

        ---- trunc:截断 ----
        select trunc (45,625, 2) du double; -> 45,62

        ---- mod:求余 ----
        mod de sélection (500, 300) du double; -> 200

4. date
  • Date type de données Oracle contient en fait deux valeurs: la date et l'heure.
  • fonction retourne SYSDATE: la date, l'heure, par exemple: sélectionnez sysdate du double; -> 2020/3/12 00:00:00
  • Fonctions de date
    Insérer ici l'image Description
    5, la fonction de transfert

Insérer ici l'image Description

  • conversion Oracle suit automatiquement (conversions de types de données implicites)
    Insérer ici l'image Description
    Par exemple: sélectionnez '11' + 2 de double; -> 13;

  • Le convertisseur d'affichage
    Insérer ici l'image Description
            ---- rotation de chaîne de date TO_CHAR, digital-to-string ----
            SELECT TO_CHAR (SYSDATE, la DD-MM-YYYY), TO_CHAR (2121,13, 'L000,999.99') du double; -> 12/03/2020, ¥ 002,121.13
            ---- date de transfert de chaîne TO_DATE ----
            SELECT TO_DATE ( '12/03/2020', 'MM-jJ-AAAA) du double; -.> 2020/3 / 12 est
            ---- string-numérique TO_DATE ----
            SELECT to_number ( '¥ 002,121.13', 'L000,999.99') du double; -> 2.121,13
    Insérer ici l'image Description

  • élément Format de date
    Insérer ici l'image Description

    6, la fonction générique
  • NVL (expr1, expr2) -----> Si expr1 est nul, la valeur du choix expr2, sinon choisir leur propre

        ---- table de requête n'a pas le service du personnel numéro d'employé, le numéro du département d'écrire aucun service ----
        SELECT a.ename, NVL (le TO_CHAR (a.mgr), «pas de service) de l' emploi emp a;

  • NVL2 (expr1, expr2, expr3) -----> Si la sélection n'est pas vide expr1 expr2, si la sélection est vide expr3

        ---- requêtes secteur pas de prix de bonus de 1, plus il y a un bonus ---- 0,5
        SELECT a.ename, NVL2 (a.comm, a.comm + 0,5, 1) de emp A

  • NULLIF (expr1, expr2) -----> NULL égale de retour, allant de la expr1 de retour
  • COALESCE (expr1, expr2, ..., exprn) -----> avantages par rapport à COALESCE COALESCE NVL en ce qu 'une pluralité de valeurs peuvent être traitées simultanément en alternance. Si la première expression est vide, la prochaine expression retourne sur d'autres paramètres Coalesce
7, l'expression conditionnelle
  • En utilisant la logique IF-THEN-ELSE dans des instructions SQL
  • Il y a deux façons:
    la CAS expression
    DECODE fonction

        ----- numéro de service pour les employés à l' information de recherche 10, 20, 10 salaires du secteur impression à 1,1 fois, 1,2 fois le salaire dans d' autres secteurs imprimer (CASE) ----
        SELECT a.ename, a.deptno, Cas A .deptno lorsque 10 puis a.sal * 1.1 autre a.sal * 1,2 fin new_sal de emp a;

        ----- (DECODE) ----
        select a.ename, a.deptno, décoder (a.deptno, 10, a.sal * 1.1 * 1.2 a.sal) new_sal de emp a;

  • Une pratique de formation

        ---- 1. Imprimez le « 2020 12 Mars 09:05:08 » la date du système actuel et le format de l' heure (Remarque: Utilisez des guillemets doubles pour ajouter du caractère à ce jour)
        le SELECT le TO_CHAR (sysdate, « AAAA » en "MM" mois "DD" jour « HH: MI: SS « ) du double; ----> 2020 12 Mars 09:05:08

        ---- 2, les numéros de format: 1,234,567.89 1,234,567.89 à
        SELECT TO_CHAR (1234567,89, '999,999,999.99') du double;

        ---- 3, à chaîne numérique, si aucun caractère spécial dans la chaîne, une conversion implicite peut être:
        SELECT « 1234567,89 » de + 100 doubles;

        ---- 4, si la chaîne de caractères spéciale, par exemple , "1,234,567.89", la conversion implicite est pas nécessaire d'utiliser to_number () pour terminer la
        sélection de to_number ( '1,234,567.89', ' 999,999,999.99') + 100 du double; - ---> 1,234,667.89

        ---- 5, la date de la requête comme une requête, généralement l' utilisation to_date (), donc ne pas à une chaîne à ce jour pour se concentrer sur le format de date
        sélectionnez a.ename, a.hiredate de emp un où a.hiredate = to_date ( '20/02/1981', ' aaaa-mm-jj');

        ---- 6, la fin de chaque mois avant - dernier enquête de l' information de deux jours
        . Sélectionnez un * à partir emp un où a.hiredate = LAST_DAY (a.hiredate) - 2;

        ---- 7. salaire des employés calculés
        sélectionner un *, a.sal * 12 + NVL (a.comm, 0) le salaire de emp a .;

Multi-table requête

1, produit cartésien
  • COLLABORATEURS DE TABLE (20 lignes), table Departments (8 lignes), l'ensemble cartésien: 20x8 = 160 lignes

  • Descartes rallye produit dans les conditions suivantes:

        état de connexion omis
        condition de jointure est invalide
        dans toutes les lignes de toutes les tables sont reliées les unes aux autres

  • Comment éviter ensemble cartésien:

        Peut être ajouté dans des conditions de connexion efficaces WHERE.

2, table d'alias
  • Utilisation d' alias, de simplifier la requête. préfixe de table Utiliser peut améliorer l'efficacité.
    Tels que:
SELECT e.employee_id,
       e.last_name,
       e.department_id,
       d.department_id,
       d.location_id
  FROM employees e, departments d
 WHERE e.department_id = d.department_id
3, une pluralité de tables de connexion
  • Raccordement des n-tables, au moins les conditions de connexions n-1. Par exemple: trois tables de connexion, au moins deux conditions de connexion.
4, une connexion non-équivalent
  • table de requête du personnel (emp) des salaires appartiennent à la table d'échelle salariale (sal_grades) dans les premiers fichiers:
select a.ename, a.sal, b.level
  from emp a, sal_grades b
 where a.sal between b.low_sal and hight_sal;
5, les joints intérieur et extérieur
  • En :
    combiné avec deux ou plusieurs lignes de la même colonne d'une table, le jeu de résultats ne contient pas une table et une autre des lignes de table qui ne correspondent pas

  • Connexion externe :
    deux tables satisfont à la condition de jointure dans la ligne de retour d'addition renvoie également à gauche (ou à droite) dans la condition de ligne de la table ne peut être satisfaite lors de la connexion, cette connexion est appelée à gauche (ou à droite) jointure externe. Aucune ligne de correspondance, la table de résultats correspondant est vide (NULL). Lorsque les conditions de clause sont semblables à l'extérieur reliant la connexion interne, mais est connecté à l'arrière de la liste ne correspond pas à la condition d'augmenter l'opérateur externe de la ligne de connexion, à savoir, avec des parenthèses signe plus (+) de

Exemple (jointure externe droite):

select * from emp a, dept b where a.deptno(+) = b.deptno;
6, la connexion naturelle
  • NATURAL JOIN clause crée la connexion équivalente avec les conditions énumérées dans les deux tableaux avec le même nom. Dans la requête de données de table pour satisfaire les conditions équivalentes. Si seulement le même nom de colonne et différents types de données, une erreur se produit.
7, clause ON pour créer une connexion
  • Jointure naturelle condition est répertorié comme une connexion avec le même nom. clause ON peut spécifier des conditions de connexion supplémentaires. La condition de connexion est distincte des autres conditions. clause ON fait des déclarations plus de lisibilité.
  • Clause ON pour créer un multi-jointures de tables
SELECT employee_id, city, department_name
  FROM employees e
  JOIN departments d
    ON d.department_id = e.department_id
  JOIN locations l
    ON d.location_id = l.location_id;
8, puisque la connexion
  • Connectez-vous à leur propre

Par exemple:

  select m.*
  from employees e, employees m
  where e.manager_id = m.employee_id and e.last_name = 'Chen'  
9, à gauche (et à droite) jointure externe et externe complète joint
  • Lors de la connexion les deux tableaux, en plus de la ligne de retour satisfont en outre la condition de jointure pour retourner la condition de ligne de la table à gauche (ou à droite) ne peut être satisfaite, cette connexion est appelée à gauche (ou à droite) jointure externe.

  • Lors de la connexion les deux tableaux, en plus de la ligne de retour satisfont en outre la condition de jointure dans l'état de la ligne de retour est pas satisfait deux tables, cette connexion est appelée une pleine connexion externe.
    Insérer ici l'image Description


Le chapitre suivant, (3) la fonction Oracle ------ regroupement, sous-requêtes, créer et gérer des tables et de traitement des données

Publié 67 articles originaux · a gagné les éloges 19 · vues 9854

Je suppose que tu aimes

Origine blog.csdn.net/qq_41530004/article/details/104809399
conseillé
Classement