- 2,1, la capitalisation de fonction de commande
- 2.2, la fonction de contrôle de caractère
- 2.3 Fonction numérique
- 2.4, la fonction de la date
- 2.5, la fonction de conversion
- 2.6, fonction générique
- 2.7, l'expression conditionnelle
- 3.1, produit cartésien
- Alias 3.2, table
- 3,3, une pluralité de tables de connexion
- 3.4, connexion non équivalent
- 3,5, les jointures intérieures et extérieures
- 3.6, connexion naturelle
- 3.7, la clause ON pour créer une connexion
- 3.8, puisque la connexion
- 3.9, à gauche (et à droite) jointure externe et externe complète joint
SQL fonction introduit
fonction à sens unique et la fonction multi-ligne
fonction à sens unique
---- 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'
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
- 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
- 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
5, la fonction de transfert
-
conversion Oracle suit automatiquement (conversions de types de données implicites)
Par exemple: sélectionnez '11' + 2 de double; -> 13; -
Le convertisseur d'affichage
---- 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
-
élément Format de date
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
- 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
-
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.
- 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
- Raccordement des n-tables, au moins les conditions de connexions n-1. Par exemple: trois tables de connexion, au moins deux conditions de connexion.
- 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;
-
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;
- 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.
- 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;
- 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'
-
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.