当前位置:网站首页>Mysql - CRUD

Mysql - CRUD

2022-07-06 00:00:00 Lion TOW

Table des matières

Un.、Requête de base

2.、Filtrer et trier les données

Trois、Requête de groupe


Un.、Requête de base

        1、Syntaxe:select  Liste des requêtes  from Nom du tableau


        2、Caractéristiques:

        ①、La liste des requêtes peut être:Champs du tableau、Valeur constante、Expression、Fonctions

        ②、Le résultat de la requête est un tableau virtuel


        3、 Instruction de requête:

                3.1Champs individuels dans la table de requête:

SELECT last_name FROM t_mysql_employees;

                3.2:Plusieurs champs dans la table de requête:

SELECT last_name,salary,email FROM t_mysql_employees;

                3.3:Tous les champs de la table de requête:( Méthode polyvalente de l'entreprise I , Parce que l'efficacité est plus rapide )
Mode 1:

SELECT
  `employee_id`,
  `first_name`,
  `last_name`,
  `phone_number`,
  `last_name`,
  `job_id`,
  `phone_number`,
  `job_id`,
  `salary`,
  `commission_pct`,
  `manager_id`,
  `department_id`,
  `hiredate`
FROM
  t_mysql_employees ;

Mode 2:

SELECT * FROM t_mysql_employees;

                 3.4:Valeurs constantes de requête:


SELECT 100;
SELECT 'john';

Résultats:

                3.5:Valeurs constantes de requête: 

SELECT 100%98;

Résultats: 

                3.6:Fonction de requête:

SELECT VERSION();

 Résultats:

                3.7: Objet de l'alias :

                                          ①Facile à comprendre
                                          ②Si le champ à interroger a un double nom,L'utilisation d'alias permet de distinguer

                  3.7.1:Mode 1:Utiliseras: 

SELECT 100%98 AS Résultats;
SELECT salary AS "out put" FROM t_mysql_employees;

Résultats des opérations:

                3.7.2:Mode 2:Utiliser des espaces:

SELECT last_name Nom de famille,first_name Nom FROM t_mysql_employees;

                3.8:Poids mort: Supprimer les champs dupliqués du tableau

SELECT DISTINCT department_id FROM t_mysql_employees;

                3.9:+Le rôle du signe:AvecJAVADans+Comparer
                                  javaDans+No.:
                                                       ①Opérateur,Les deux opérandes sont numériques
                                                       ②Connecteur,Tant qu'un opérande est une chaîne
                                  mysqlDans+No.: Fonction unique :Opérateur

                       3.9.1+ Plusieurs cas de No. :
                                  1、Les deux opérandes sont numériques,Ajouter:

select 100+90;

Résultats des opérations:

                        2、Tant que l'un des côtés est de type caractère, Convertir une valeur de type caractère en valeur numérique ,Si la conversion est réussie,Continuer l'addition: 

select '123'+90

Résultats:

                        3、Si la conversion échoue,Convertit les valeurs de type caractère en0:

select 'john'+90;

Résultats:

                        4、Tant que l'un d'eux estnull,Le résultat doit êtrenull:

select null+10;

Résultats:


2.、Filtrer et trier les données

        1、Filtre par expression conditionnelle:

SELECT * FROM t_mysql_employees WHERE salary>12000;

        2、Filtrer par expression logique:

CAS1:Demande de salairezIn10000À20000Nom de l'employé entre、Salaires et primes

SELECT last_name, salary, commission_pct FROM t_mysql_employees WHERE salary>=10000 AND salary<=20000;

        3、Requête floue:

                3.1、like:       

CAS2:Le nom de l'employé de la requête contient des caractèresaInformations sur les employés pour

select * from employees where last_name like '%a%';

                 3.2、between and:

CAS3:Demander le numéro d'employé à100À120Informations sur les employés entre

SELECT * FROM t_mysql_employees WHERE employee_id <= 120 AND employee_id>=100;

 Comparer:

SELECT
*
FROM
t_mysql_employees
WHERE
employee_id BETWEEN 100 AND 120;

                 3.3、in:Sens:Déterminer si la valeur d'un champ appartient àinUn élément de la Liste 

CAS4:..Le numéro de travail de l'employé interrogé est IT_PROG、AD_VP、AD_PRESUn nom d'employé et un numéro d'emploi

SELECT
last_name,
job_id
FROM
t_mysql_employees
WHERE
job_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES'

Comparer:

SELECT
last_name,
job_id
FROM
t_mysql_employees
WHERE
job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');

                 3.4、is null       is not null:

CAS5:Demandez le nom de l'employé sans prime et le taux de prime; La requête a presque le nom de l'employé et le taux de prime


SELECT
last_name,
commission_pct
FROM
t_mysql_employees
WHERE
commission_pct IS NULL;



SELECT
last_name,
commission_pct
FROM
t_mysql_employees
WHERE
commission_pct IS NOT NULL;

                 3.6Sécurité égale <=>

CAS6:Demandez le nom de l'employé sans prime et le taux de prime

SELECT
last_name,
commission_pct
FROM
t_mysql_employees
WHERE
commission_pct <=>NULL;

                is null Et la sécurité égale la différence :

 IS NULL:Il suffit de jugerNULLValeur,Haute lisibilité,Utilisation recommandée
 <=>   :On peut jugerNULLValeur,Et peut juger les valeurs normales,Faible lisibilité

        4、order by Clause:Trier la requête

        Syntaxe:select Liste des requêtes from Nom du tableau【where Critères de filtrage】order by Champs ou expressions triés;

Caractéristiques:

1、ascReprésente l'ordre croissant,Peut être omisdescReprésente l'ordre décroissant
                                                   

 2、order byLa clause peut supporter Champ unique、Alias、Expression、Fonctions、Champs multiples
                                                     

3、order byClause à la fin de l'instruction de requête,Sauf quelimitClause 

                4.1Trier par un seul champ: 

SELECT * FROM t_mysql_employees ORDER BY salary DESC;

                4.2Ajouter un filtre réorganiser: 

CAS7:Numéro du Département de la requête>=90Informations sur les employés pour,Et par ordre décroissant de numéro d'employé

SELECT * FROM t_mysql_employees WHERE department_id>=90 ORDER BY employee_id DESC;

                4.3Trier par expression: 

SELECT *,salary*12*(1+IFNULL(commission_pct,0)) FROM t_mysql_employees ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

                4.4Trier par expression:

CAS8:Demander des renseignements sur les employés Augmentation par année

SELECT *,salary*12*(1+IFNULL(commission_pct,0)) Salaire annuel FROM t_mysql_employees ORDER BY Salaire annuel ASC;

                 4.5Trier par fonction:

CAS9:Demander le nom de l'employé,Et par ordre décroissant de longueur de nom

SELECT LENGTH(last_name),last_name FROM t_mysql_employees ORDER BY LENGTH(last_name) DESC;

                4.6Trier par fonction:

CAS10:Demander des renseignements sur les employés,Demande de réduction de salaire,Appuie encore.employee_idOrdre croissant


SELECT * FROM t_mysql_employees ORDER BY salary DESC,employee_id ASC;

Trois、Requête de groupe

Fonction:À des fins statistiques,Aussi appelé fonction d'agrégation ou fonction statistique ou fonction de groupe

Classification: sum Somme、avg Moyenne、max Max. 、min Minimum 、count Nombre calculé

Caractéristiques:1、sum、avgGénéralement utilisé pour traiter les types numériques max、min、countPeut traiter n'importe quel type de
           2、Toutes les fonctions de regroupement ci - dessus sont ignoréesnullValeur
           3、Oui.distinctMise en œuvre de l'opération de déstockage par colocation
           4、count Une description séparée de la fonction est généralement utilisée count(*)Utilisé comme nombre de lignes statistiques
​           5、Les exigences relatives aux champs à interroger avec les fonctions de regroupement sont les suivantes:group byChamps suivants

        1、Utilisation simple:

SELECT SUM(salary) FROM t_mysql_employees;
SELECT AVG(salary) FROM t_mysql_employees;
SELECT MIN(salary) FROM t_mysql_employees;
SELECT MAX(salary) FROM t_mysql_employees;
SELECT COUNT(salary) FROM t_mysql_employees;

        2、 Quels types de paramètres supportent :


SELECT SUM(last_name) ,AVG(last_name) FROM t_mysql_employees;
SELECT SUM(hiredate) ,AVG(hiredate) FROM t_mysql_employees;
​
SELECT MAX(last_name),MIN(last_name) FROM t_mysql_employees;
​
SELECT MAX(hiredate),MIN(hiredate) FROM t_mysql_employees;
​
SELECT COUNT(commission_pct) FROM t_mysql_employees;
SELECT COUNT(last_name) FROM t_mysql_employees;

        3、Ignorernull:

SELECT SUM(commission_pct) ,AVG(commission_pct),SUM(commission_pct)/35,SUM(commission_pct)/107 FROM t_mysql_employees;
​
SELECT MAX(commission_pct) ,MIN(commission_pct) FROM t_mysql_employees;
​
SELECT COUNT(commission_pct) FROM t_mysql_employees;
SELECT commission_pct FROM t_mysql_employees;

        4、EtdistinctCollocation:

SELECT SUM(DISTINCT salary),SUM(salary) FROM t_mysql_employees;
​
SELECT COUNT(DISTINCT salary),COUNT(salary) FROM t_mysql_employees;

        5、countDescription détaillée de la fonction:


SELECT COUNT(salary) FROM t_mysql_employees;
​
SELECT COUNT(*) FROM t_mysql_employees;
​
SELECT COUNT(1) FROM t_mysql_employees;

        6、 Les champs que les fonctions de regroupement interrogent ensemble sont limités employee_id C'est le plus petit. :

SELECT AVG(salary),employee_id FROM t_mysql_employees;

Analyse de cas finale :

Un.、 Tableau exigences structurelles :


-- 1.Formulaire étudiant-t_student
-- sid Étudiant No.,sname Nom de l'étudiant,sage Âge des élèves,ssex Sexe de l'étudiant

-- 2.Tableau des enseignants-t_teacher
-- tid Nombre d'enseignants,tname Nom de l'enseignant

-- 3.Programme de cours-t_course
-- cid Numéro du cours,cname Nom du cours,tid Nom de l'enseignant

-- 4.Feuille de notes-t_score
-- sid Étudiant No.,cid Numéro du cours,score Résultats


-- Formulaire étudiant
insert into t_student values('01' , 'Zhao Lei' , '1990-01-01' , 'Hommes');
insert into t_student values('02' , 'Argent et électricité' , '1990-12-21' , 'Hommes');
insert into t_student values('03' , 'Sun Feng' , '1990-12-20' , 'Hommes');
insert into t_student values('04' , 'Li Yun' , '1990-12-06' , 'Hommes');
insert into t_student values('05' , 'Zhou Mei' , '1991-12-01' , 'Femme');
insert into t_student values('06' , 'Wu Lan' , '1992-01-01' , 'Femme');
insert into t_student values('07' , 'Zheng Zhu' , '1989-01-01' , 'Femme');
insert into t_student values('09' , 'Zhang San' , '2017-12-20' , 'Femme');
insert into t_student values('10' , 'Li - si.' , '2017-12-25' , 'Femme');
insert into t_student values('11' , 'Li - si.' , '2012-06-06' , 'Femme');
insert into t_student values('12' , 'Zhao Liu' , '2013-06-13' , 'Femme');
insert into t_student values('13' , 'Sun Qi' , '2014-06-01' , 'Femme');

-- Tableau des enseignants
insert into t_teacher values('01' , 'Zhang San');
insert into t_teacher values('02' , 'Li - si.');
insert into t_teacher values('03' , 'Wang Wu');

-- Programme de cours
insert into t_course values('01' , 'Langues' , '02');
insert into t_course values('02' , 'Mathématiques' , '01');
insert into t_course values('03' , 'Anglais' , '03');

-- Feuille de notes
insert into t_score values('01' , '01' , 80);
insert into t_score values('01' , '02' , 90);
insert into t_score values('01' , '03' , 99);
insert into t_score values('02' , '01' , 70);
insert into t_score values('02' , '02' , 60);
insert into t_score values('02' , '03' , 80);
insert into t_score values('03' , '01' , 80);
insert into t_score values('03' , '02' , 80);
insert into t_score values('03' , '03' , 80);
insert into t_score values('04' , '01' , 50);
insert into t_score values('04' , '02' , 30);
insert into t_score values('04' , '03' , 20);
insert into t_score values('05' , '01' , 76);
insert into t_score values('05' , '02' , 87);
insert into t_score values('06' , '01' , 31);
insert into t_score values('06' , '03' , 34);
insert into t_score values('07' , '02' , 89);
insert into t_score values('07' , '03' , 98);





2.、Titre:
01)Requête" 01 "Comparaison des cours" 02 "Information et notes des élèves ayant obtenu de bons résultats
 
select a.*,b.score,c.score from t_student a,t_score b,t_score c where a.sid=b.sid and a.sid=c.sid and b.cid='01' and c.cid='02' and b.score > c.score
 
02)La requête existe en même temps" 01 "Cours et" 02 "Situation des cours
 
select a.*,b.cid,c.cid from t_student a,t_score b,t_score c where a.sid=b.sid and a.sid=c.sid and b.cid='01' and c.cid='02' 
 
03)La requête existe" 01 "Cours mais peut ne pas exister" 02 "Situation des cours(Afficher comme s'il n'existe pas null )
select a.*,b.cid,c.cid from t_student a,t_score b,t_score c where a.sid=b.sid and a.sid=c.sid and b.cid='01' and c.cid not in('02')
 
04)La requête n'existe pas" 01 "Cours mais existence" 02 "Situation des cours
select a.*,b.cid,c.cid from t_student a,t_score b,t_score c where a.sid=b.sid and a.sid=c.sid and c.cid not in('01') and b.cid='02' 
 
05)Le score moyen de la requête est supérieur ou égal à 60 Numéro de l'étudiant et nom de l'étudiant et note moyenne de l'étudiant
select a.sid,a.sname,AVG(b.score) from t_student a,t_score b where a.sid = b.sid GROUP BY b.sid HAVING AVG(b.score)>=60
 
 
06)Requête danst_scoreTableau renseignements sur les élèves ayant des notes
select * from t_student where sid not in(select DISTINCT(sid) from t_score)
 
 
07)Demander le numéro d'étudiant de tous les étudiants、Nom de l'étudiant、Nombre total de cours sélectionnés、Note globale pour tous les cours(Aucun résultat affiché comme null )
 
select a.sid,a.sname,COUNT(b.cid),SUM(b.score) from t_student a,t_score b where a.sid = b.sid GROUP BY b.sid
 
08)Requête「Lee.」Nombre d'enseignants
 
select count(*) from t_teacher where tname like 'Lee.%'
 
09)J'ai étudié les requêtes.「Zhang San」Informations sur les élèves enseignés par l'enseignant
 
select a.*,c.tname  from t_student a , t_score b ,t_teacher c ,t_course d where a.sid=b.sid and b.cid = d.cid and d.tid = c.tid and b.cid='01'
 
 
10)Demander des renseignements sur les étudiants qui n'ont pas suivi tous les cours
select * from t_student  where sid not in(select a.sid from t_student a,t_score b,t_score c,t_score d where a.sid=b.sid and a.sid=c.sid and b.cid='01' and c.cid='02' and d.cid='03') 
11)Je n'ai pas appris les requêtes."Zhang San"Nom de l'étudiant pour tout cours donné par l'enseignant
select sname from t_student where sname not in(select a.sname  from t_student a , t_score b ,t_teacher c ,t_course d where a.sid=b.sid and b.cid = d.cid and d.tid = c.tid and b.cid='01')
12)Demander le numéro d'étudiant d'un étudiant qui a échoué à deux cours ou plus,Nom et moyenne
 
select * from t_student a,t_score b where a.sid=b.sid and a.sid in(select c.sid from t_score c where c.score<60 GROUP BY c.sid HAVING COUNT(*)>1)
 
13)Recherche" 01 "La note du cours est inférieure à 60,Information sur les élèves par ordre décroissant
 
select a.* from t_student a,t_score b where a.sid=b.sid and b.cid='01' and b.score<60 ORDER BY b.score desc
 
14)Afficher les notes de tous les cours et les notes moyennes de tous les étudiants par moyenne de haut en bas
 
select a.*,AVG(b.score) from t_student a,t_score b where a.sid = b.sid GROUP BY b.sid  HAVING AVG(b.score)>=0 ORDER BY AVG(b.score) desc
 
15)Demander la note maximale de chaque section、Notes minimales et moyennes:
Afficher comme suit::Cours ID,Cours name,Le score le plus élevé,Score minimum,Note moyenne,Taux de réussite,Taux moyen,Excellent taux,Le taux d'excellence est de>=60,Moyenne:70-80,Excellent:80-90,Excellent pour:>=90
Numéro du cours et nombre de candidats requis,Résultats de la requête par ordre décroissant de nombre de personnes,Si le nombre est le même,Par numéro de cours
 
select a.cid,cname,max(a.score)'Le score le plus élevé',min(a.score)'Score minimum',avg(a.score)'Note moyenne',((select count(sid) from t_score where score>=60 and cid=b.cid )/(select count(sid) from t_score where cid=b.cid)) 'Taux de réussite' from t_score a
inner join t_course b on a.cid = b.cid
group by b.cid;
 

原网站

版权声明
本文为[Lion TOW]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/186/202207052356321455.html