[MySQL] Requête de table unique

1. Préparation des tables

La démonstration SQL de l'opération de requête sera basée sur les quatre tables suivantes. Nous créons d'abord ces quatre tables de données et y ajoutons des données.

1. La première table est une table départementale , nommée comme contenant trois champs : numéro de département (deptno), nom du département (dname), emplacement du département (loc)

create table DEPT(  
  DEPTNO int(2) not null,  
  DNAME  VARCHAR(14),  
  LOC    VARCHAR(13)  
);       

Ajoutez une contrainte de clé primaire pour le champ du numéro de service (deptno) :

alter table DEPT  
  add constraint PK_DEPT primary key (DEPTNO); 

Insérer des données dans la table département (dept):

insert into DEPT (DEPTNO, DNAME, LOC)  
values (10, 'ACCOUNTING', 'NEW YORK');  
insert into DEPT (DEPTNO, DNAME, LOC)  
values (20, 'RESEARCH', 'DALLAS');  
insert into DEPT (DEPTNO, DNAME, LOC)  
values (30, 'SALES', 'CHICAGO');  
insert into DEPT (DEPTNO, DNAME, LOC)  
values (40, 'OPERATIONS', 'BOSTON');  

2. La deuxième table est la table des employés (emp), qui contient 8 champs, qui sont le numéro d'employé (empno), le nom de l'employé (ename), le poste (job), le leader direct (mgr) et la date d'entrée (hiredate), salaire (sal), subvention (comm), numéro de département (deptno):

create table EMP  
(  
  EMPNO    int(4) primary key,  
  ENAME    VARCHAR(10),  
  JOB      VARCHAR(9),  
  MGR      int(4),  
  HIREDATE DATE,  
  SAL      double(7,2),  
  COMM     double(7,2),  
  DEPTNO   int(2)  
);  

Ajoutez une contrainte de clé étrangère au champ deptno de la table des employés emp, qui est associé au champ numéro de service (deptno) de la table des services (dept) :

alter table EMP  
  add constraint FK_DEPTNO foreign key (DEPTNO)  
  references DEPT (DEPTNO);  

Insérez des données dans la table des employés (emp) :

insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, null, 20);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, null, 20);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, null, 30);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, null, 10);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, null, 20);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7839, 'KING', 'PRESIDENT', null, '1981-11-17', 5000, null, 10);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7844, 'TURNER', 'SALESMAN', 7698, '1981-09-08', 1500, 0, 30);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, null, 20);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, null, 30);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, null, 20);  
insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)  
values (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, null, 10);  

3. La troisième table est la table des échelons salariaux , qui contient 3 champs, à savoir : échelon salarial (grade), salaire minimum (losal) et salaire maximum (hisal) :

create table SALGRADE  
(  
  GRADE int primary key,  
  LOSAL double(7,2),  
  HISAL double(7,2)  
);  

Insérez des données dans le tableau des échelons salariaux (salgrade) :

insert into SALGRADE (GRADE, LOSAL, HISAL)  
values (1, 700, 1200);  
insert into SALGRADE (GRADE, LOSAL, HISAL)  
values (2, 1201, 1400);  
insert into SALGRADE (GRADE, LOSAL, HISAL)  
values (3, 1401, 2000);  
insert into SALGRADE (GRADE, LOSAL, HISAL)  
values (4, 2001, 3000);  
insert into SALGRADE (GRADE, LOSAL, HISAL)  
values (5, 3001, 9999);  

4. La quatrième table est la table des primes , qui contient 4 champs, à savoir : nom de l'employé (ename), travail de l'employé (job), salaire (sal), comm

create table BONUS  
(  
  ENAME VARCHAR(10),  
  JOB   VARCHAR(9),  
  SAL   double(7,2),  
  COMM  double(7,2)  
);  

Requête à deux tables uniques

Dans les opérations de base de données, la requête à table unique consiste à interroger les données d'une table.

1. Requête simple sur une seule table

Interroger la table emp de la table des employés, * représente toutes les données

select * from emp;

Afficher quelques colonnes :

select empno,ename,sal from emp;

Afficher les lignes partielles : clause where

select * from emp where sal > 2000;

Afficher des colonnes, des lignes :

select empno,ename,job,mgr from emp where sal > 2000;

2. Aliaser le champ de la requête

Vous pouvez omettre le mot-clé pour alias le champ à interroger, et vous pouvez également omettre les guillemets simples et les guillemets doubles attachés à l'alias :

select empno 员工编号,ename 姓名,sal 工资 from emp; 

Utilisez le mot clé as lors de la création d'un alias pour le champ interrogé. L'alias peut également comporter des guillemets simples ou des guillemets doubles. Il n'y a aucune différence entre les deux :

select empno as 员工编号,ename as 姓名,sal as 工资 from emp;
select empno as '员工编号',ename as "姓名",sal as 工资 from emp;

Lorsqu'il y a des symboles spéciaux dans l'alias, les guillemets simples ou les guillemets doubles ne peuvent pas être omis, comme suit, il y a un espace entre les numéros d'employés (les espaces sont des symboles spéciaux)

select empno as 员工 编号,ename as "姓 名",sal as 工资 from emp;

Si le numéro d'employé de l'alias n'utilise pas de guillemets simples ni de guillemets doubles, il renverra une erreur 1064 :

--> 1064 - Vous avez une erreur dans votre syntaxe SQL ; consultez le manuel correspondant à la version de votre serveur MySQL pour connaître la bonne syntaxe à utiliser près de '编号,ename as "姓 名",sal as 工资 from emp' à la ligne 1

3. Les opérateurs arithmétiques peuvent être utilisés lors de l'interrogation des champs

select empno,ename,sal,sal+1000 as '涨薪后',deptno from emp where sal < 2500;
select empno,ename,sal,comm,sal+comm from emp;  

4. Opération de déduplication
Pour dédupliquer les données interrogées, vous devez utiliser le mot-clé distinct

select distinct job from emp;

Si plusieurs colonnes sont incluses après le mot-clé distinct , cela signifie qu'il faut dédupliquer toutes les colonnes suivantes, pas une seule colonne :

select distinct job,deptno from emp; 


5. Tri

Pour trier les données interrogées, vous devez utiliser le mot-clé trier par

Par défaut, il est trié par ordre croissant

select * from emp order by sal;

asc indique l'ordre croissant, qui peut être omis par défaut

select * from emp order by sal asc; 

desc veut dire descendant

select * from emp order by sal desc; 

Dans le cas de sal (salaire) par ordre croissant, deptno (numéro de département) par ordre décroissant

select * from emp order by sal asc ,deptno desc;

Je suppose que tu aimes

Origine blog.csdn.net/hold_on_qlc/article/details/130177603
conseillé
Classement