Maison >base de données >SQL >Quelles sont les instructions de requête SQL ?
Instruction de requête SQL : 1. Afficher la structure de la table [SQL>DESC emp]; 2. Interroger toutes les colonnes [SQL>SELECT * FROM emp]; ; 5. Utiliser des expressions arithmétiques ; 6. Utiliser des symboles d'opérations logiques.
Recommandé (gratuit) : tutoriel SQL
Instruction de requête SQL :
1. Instruction de requête simple
1. 🎜>SQL>DESC emp;
SQL>SELECT * FROM emp;
SQL>SELECT empmo, ename, mgr FROM emp;
SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项
SQL>SELECT * FROM emp WHERE job='CLERK';
SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp;
nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。
SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序)
SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82';
% représente un ou plusieurs caractères, _ représente un caractère, [charlist] représente n'importe quel caractère unique dans la colonne de caractères, [^charlist] ou [!charlist] représente n'importe quel caractère unique ne figurant pas dans la colonne de caractères.
SQL>SELECT * FROM emp WHERE ename like 'S__T%';7. Utiliser dans
SQL>SELECT * FROM emp WHERE job IN ('CLERK','ANALYST');
SQL>SELECT * FROM emp WHERE mgr IS/IS NOT NULL;
SQL>SELECT * FROM emp WHERE (sal>500 or job='MANAGE') and ename like 'J%';
SQL>SELECT * FROM emp ORDER BY deptno, sal DESC; (按部门升序,并按薪酬降序)
SQL>SELECT CASE a WHEN "original_a" THEN "新命名Aa" WHEN "original_b" THEN "新命名Bb" END AS XXX;
Sélectionnez le champ a dans le tableau et nommez-le XXX Lorsque le contenu de a est original_a, le. le contenu est affiché sous la forme "Nouveau nom Aa".
Tableau original
Résultats de la requêtea | b | c |
original_a | ... | ... |
original_b | ... | ... |
XXX |
新命名Aa |
新命名Bb |
SQL>SELECT DATE_FORMAT(start_time,"%Y-%m-%d") as "时间";
1. Regroupement des données (max, min, moy, 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;
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;
Pour un résumé du regroupement des données :
SQL>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;
SQL>SELECT er.ename, ee.ename mgr_name from emp er, emp ee where er.mgr=ee.empno;
5.1 Sous-requête sur 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 service que Smith dans la table de requête. Étant donné que le résultat renvoyé n'est qu'une seule ligne, utilisez "=" pour connecter l'instruction de sous-requête 5.2 Sous-requête multi-lignes
SQL>SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);Interrogez les noms et les emplois des employés ayant le même emploi que le numéro de service 10 dans le tableau, salaire, numéro de département. Comme le résultat renvoyé comporte plusieurs lignes, « IN » est utilisé pour connecter les instructions de sous-requête. 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 ANY
SQL>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);pour interroger le nom, le salaire et le numéro de département de l'employé dont le salaire est supérieur à celui de tout employé portant le numéro de département 30 (à condition que le salaire soit supérieur à un certain employé) . Les deux instructions ci-dessus sont fonctionnellement identiques, mais en termes d'efficacité d'exécution, la fonction sera beaucoup plus élevée. 5.5 Sous-requête multi-colonnes
SQL>SELECT * FROM emp WHERE (job, deptno)=(SELECT job, deptno FROM emp WHERE ename='SMITH');5.6 Utilisation d'une sous-requête dans la clause from
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 paginationChaque ligne de données de la base de données a un Le numéro de ligne correspondant est 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;Pour spécifier la colonne de requête, trier 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 différence définie)
SQL>SELECT ename, sal, job FROM emp WHERE sal>2500 UNION(INTERSECT/UNION ALL/MINUS) SELECT ename, sal, job FROM emp WHERE job='MANAGER';Fusionner le l'efficacité d'exécution de la requête est bien supérieure à celle des requêtes logiques telles que et et ou. 5.10 Utilisez une sous-requête pour insérer des données
SQL>CREATE TABLE myEmp(empID number(4), name varchar2(20), sal number(6), job varchar2(10), dept number(2));Créez d'abord une table vide
SQL>INSERT INTO myEmp(empID, name, sal, job, dept) SELECT empno, ename, sal, job, deptno FROM emp WHERE deptno=10;Insérez ensuite les données avec le numéro de département 10 dans la table emp dans la nouvelle table myEmp pour réaliser une requête par lots de données. 5.11 utilise une requête pour mettre à jour les données du tableau
SQL>UPDATE emp SET(job, sal, comm)=(SELECT job, sal, comm FROM emp where ename='SMITH') WHERE ename='SCOTT';
Recommandations d'apprentissage gratuites associées :
programmation php(vidéo)
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!