Maison >base de données >SQL >Quelles sont les instructions de requête SQL courantes ?
Les instructions de requête SQL courantes incluent : 1. Afficher la structure de la table [SQL>DESC emp;]; 2. Interroger toutes les colonnes [SQL>SELECT * FROM emp]; ]; 4. Interrogez la ligne spécifiée [SQL>SELECT * FROM].
Les instructions de requête SQL courantes sont :
1.
1. Afficher la structure de la tableSQL>DESC emp;
SQL>SELECT * FROM emp;
SQL>SELECT empmo, ename, mgr FROM emp;SQL>SELECT DISTINCT mgr FROM emp; Afficher uniquement les éléments avec des résultats différents
4 Interroger la ligne spécifiée
SQL>SELECT * FROM emp WHERE job='CLERK';5 . Utiliser l'expression arithmétique
SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp;
nvl(comm,1) signifie que s'il y a une valeur dans comm, alors nvl(comm,1)=comm; , alors nvl(comm,1)=0. SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal est un alias et peut être trié par alias)
SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82';6. l'opération similaire Caractères (%, _)
% représente un ou plusieurs caractères, _ représente un caractère, [charlist] représente n'importe quel caractère dans la colonne de caractères, [^charlist] ou [!charlist ] n'existe pas. Aucun caractère dans une colonne de caractères. SQL>SELECT * FROM emp WHERE ename like 'S__T%';
SQL>SELECT * FROM emp WHERE job IN ('CLERK','ANALYST');
8. Interrogez l'instruction indiquant que le contenu du champ est vide/non vide
SQL>SELECT * FROM emp WHERE mgr IS/IS NOT NULL;
9. Utilisez les symboles d'opération logique
SQL>SELECT * FROM emp WHERE (sal>500 or job='MANAGE') and ename like 'J%';
10. Triez les résultats de la requête par la valeur du champ
SQL>SELECT * FROM emp ORDER BY deptno, sal DESC;
(par ordre croissant). par département, et par ordre décroissant par salaire)
11. Cas d'utilisation... quand... puis... fin du traitement des résultats de la requête
SQL>SELECT CASE a WHEN "original_a" THEN "New name Aa" WHEN "original_b" THEN "New name Bb" END AS XXX ; Sélectionnez le champ a dans la table et nommez-le XXX. le contenu de a est original_a, le contenu est affiché sous la forme "Nouveau nom Aa".
12. Formater les données de dateSQL>SELECT DATE_FORMAT(start_time,"%Y-%m-%d") as "时间";
2. Requête complexe
1. min,avg,sum,count)
SQL>SELECT MAX(sal),MIN(age),AVG(sal),SUM(sal) from emp; SQL>SELECT * FROM emp where sal=(SELECT MAX(sal) from emp)); SQL>SELEC COUNT(*) FROM emp;
2. group by (utilisé pour regrouper les statistiques sur les résultats de la requête) et clause ayant (utilisée pour limiter les résultats d'affichage du groupe)
SQL>SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno; SQL>SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by deptno,job having AVG(sal)<2000;
Résumé du regroupement de données : a. Les fonctions de regroupement ne peuvent apparaître que dans les listes de sélection, avec des clauses triées par (ne peuvent pas apparaître dans où)
b. contient groupe par, ayant, ordre par en même temps, alors leur ordre est groupe par, ayant, ordre par.
c. S'il y a des colonnes, des expressions et des fonctions de regroupement dans la colonne sélectionnée, ces colonnes et expressions doivent apparaître dans la clause group by, sinon une erreur se produira. Autrement dit : le nom de la colonne dans la clause SELECT doit être une colonne de regroupement ou une fonction de colonne
L'utilisation de group by n'est pas une condition préalable à l'utilisation de have.
3. Requête multi-tablesSQL>SELECT e.name,e.sal,d.dname FROM emp e, dept d WHERE e.deptno=d.deptno order by d.deptno; SQL>SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s WHER e.sal BETWEEN s.losal AND s.hisal; Select a.*, b.x, c.y from a left outer join (Select * from tablex where condition1)b on a.id=b.id left outer join (Select * from tabley where condition2)c on a.id=c.id where condition3;
Utilisez les données sélectionnées comme nouvelle table pour effectuer une requête de jointure gauche à partir de : https://q.cnblogs. com/q /67530/
4. Auto-jointure (faisant référence à la requête de connexion de la même table)SQL>SELECT er.ename, ee.ename mgr_name from emp er, emp ee where er.mgr=ee.empno;
5. autres instructions SQL) instruction select, également appelée requête imbriquée)
5.1 Sous-requête à une seule ligne SQL>SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename='SMITH');
Interrogez les noms des personnes du même département que Smith dans la table. Étant donné que le résultat renvoyé n'est qu'une seule ligne, utilisez "=" pour connecter l'instruction de sous-requête
SQL>SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);
5.3 Utilisez ALL
SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ALL (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MAX(sal) FROM emp WHERE deptno=30);
pour interroger le nom, le salaire et le numéro de service des employés dont le salaire est supérieur à celui de tous les employés portant le numéro de service 30. Les deux instructions ci-dessus sont fonctionnellement identiques, mais en termes d'efficacité d'exécution, la fonction sera beaucoup plus élevée.
5.4 Utilisez ANYSQL>SELECT ename,sal,deptno FROM emp WHERE sal> ANY (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MIN(sal) FROM emp WHERE deptno=30);
SQL>SELECT * FROM emp WHERE (job, deptno)=(SELECT job, deptno FROM emp WHERE ename='SMITH');
SQL>SELECT emp.deptno,emp.ename,emp.sal,t_avgsal.avgsal FROM emp,(SELECT emp.deptno,avg(emp.sal) avgsal FROM emp GROUP BY emp.deptno) t_avgsal where emp.deptno=t_avgsal.deptno AND emp.sal>t_avgsal.avgsal ORDER BY emp.deptno;
5.7 Requête de pagination
Chaque ligne de données dans la base de données Chacun a un numéro de ligne correspondant, appelé rownum.
SQL>SELECT a2.* FROM (SELECT a1.*, ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal) a1 WHERE ROWNUM<=10) a2 WHERE rn>=6;
Spécifiez les colonnes de requête, triez les résultats de la requête, etc. Il vous suffit de modifier la sous-requête la plus interne.
5.8 Créer une nouvelle table avec les résultats de la requête
SQL>CREATE TABLE mytable (id,name,sal,job,deptno) AS SELECT empno,ename,sal,job,deptno FROM emp;
5.9 Requête de fusion (union union, intersection, union all union+intersection, moins ensemble de différences)
SQL>SELECT ename, sal, job FROM emp WHERE sal>2500 UNION(INTERSECT/UNION ALL/MINUS) SELECT ename, sal, job FROM emp WHERE job='MANAGER';
合并查询的执行效率远高于and,or等逻辑查询。
5.10 使用子查询插入数据
SQL>CREATE TABLE myEmp(empID number(4), name varchar2(20), sal number(6), job varchar2(10), dept number(2));
先建一张空表;
SQL>INSERT INTO myEmp(empID, name, sal, job, dept) SELECT empno, ename, sal, job, deptno FROM emp WHERE deptno=10;
再将emp表中部门号为10的数据插入到新表myEmp中,实现数据的批量查询。
5.11 使用了查询更新表中的数据
SQL>UPDATE emp SET(job, sal, comm)=(SELECT job, sal, comm FROM emp where ename='SMITH') WHERE ename='SCOTT';
相关免费学习推荐:SQL视频教程
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!