当前位置:网站首页>Crud de MySQL

Crud de MySQL

2022-07-05 14:49:00 Neuf chansons d'anli

Table des matières

Préface

Un.、Requête de base

2.、Filtrer la requête

Trois、Trier

Quatre、CAS


Préface

Partagé la dernière foisMySQLGestion de compte pour,Ce que nous allons partager cette fois, c'estCRUD,Peu importe.CRUDIl faut que ça marche.


Un.、Requête de base

#1.Champs individuels dans la table de requête
SELECT department_id FROM t_mysql_employees
	#2.Plusieurs champs dans la table de requête
	SELECT department_id,employee_id FROM t_mysql_employees

	#3.Tous les champs de la table de requête
	SELECT * FROM t_mysql_employees

	#4.Valeurs constantes de requête
	SELECT 100;
	SELECT 'john';
	#5.Expression de requête
	SELECT 100%98;
	#6.Fonction de requête
	SELECT VERSION();
	#7.Alias de départ
	SELECT department_id Numéro du Département FROM t_mysql_employees

	#8.Poids mort
	SELECT DISTINCT department_id FROM t_mysql_employees

	​#CAS:Demander tous les numéros de ministère impliqués dans le tableau des employés
		SELECT DISTINCT department_id FROM t_mysql_employees

	#9.+Le rôle du signe
	SELECT 'join'+1
	SELECT '100'+1

Résultats des opérations:  

  #1.Champs individuels dans la table de requête


    #2.Plusieurs champs dans la table de requête


    #3.Tous les champs de la table de requête


    #4.Valeurs constantes de requête
    SELECT 100;


    SELECT 'john';


    #5.Expression de requête
    SELECT 100%98;


    #6.Fonction de requête
    SELECT VERSION();


    #7.Alias de départ


    #8.Poids mort


    #9.+Le rôle du signe

 

 

 

2.、Filtrer la requête

#Un.、Filtre par expression conditionnelle
    #CAS1:Demande de salaire>12000Informations sur les employés pour
SELECT * FROM t_mysql_employees WHERE salary > 12000

    #CAS2:Le numéro de département de la requête n'est pas égal à90Nom de l'employé et numéro du Ministère pour le no
SELECT first_name,department_id FROM t_mysql_employees WHERE NOT(department_id=90)
    ​
    #2.、Filtrer par expression logique
    #CAS1:Demande de salairezIn10000À20000Nom de l'employé entre、Salaires et primes
SELECT first_name,salary,commission_pct FROM t_mysql_employees WHERE salary BETWEEN 10000 AND 20000

    #CAS2:Le numéro de département de la requête n'est pas dans90À110Entre,Ou un salaire supérieur à15000Informations sur les employés pour
SELECT * FROM t_mysql_employees WHERE NOT(department_id BETWEEN 90 AND 110) or salary > 12000


    #Trois、Requête floue
    #1.like
    #CAS1:Le nom de l'employé de la requête contient des caractèresaInformations sur les employés pour
SELECT * FROM t_mysql_employees WHERE first_name LIKE '%a%'

    #CAS2:Le troisième caractère du nom de l'employé interrogé este,Le cinquième caractère estaNom et salaire de l'employé
SELECT * FROM t_mysql_employees WHERE first_name LIKE '__e_a%'

    #CAS3:Le deuxième caractère du nom de l'employé interrogé est_ Personnel 
SELECT * FROM t_mysql_employees WHERE last_name LIKE 

    #2.between and
    #CAS1:Demander le numéro d'employé à100À120Informations sur les employés entre
SELECT * FROM t_mysql_employees WHERE employee_id BETWEEN 100 AND 120

    #3.in
    #CAS:..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 first_name,job_id FROM t_mysql_employees WHERE job_id IN ('IT_PROG','AD_VP','AD_PRES') 

    #4、is null
    #CAS1:Demandez le nom de l'employé sans prime et le taux de prime
SELECT first_name,commission_pct FROM t_mysql_employees WHERE commission_pct is null
    #CAS2:Rechercher le nom de l'employé avec bonus et le taux de bonus
SELECT first_name,commission_pct FROM t_mysql_employees WHERE not commission_pct is null
    #Sécurité égale <=>
    ​#CAS1:Demandez le nom de l'employé sans prime et le taux de prime
SELECT first_name,commission_pct FROM t_mysql_employees WHERE commission_pct <=> null

    #CAS2:Le salaire de la requête est12000Informations sur les employés pour
SELECT * FROM t_mysql_employees WHERE salary <=>12000 

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

Un.、Filtre par expression conditionnelle
    #CAS1:Demande de salaire>12000Informations sur les employés pour


    #CAS2:Le numéro de département de la requête n'est pas égal à90Nom de l'employé et numéro du Ministère pour le no
    ​
    #2.、Filtrer par expression logique
    #CAS1:Demande de salairezIn10000À20000Nom de l'employé entre、Salaires et primes


    #CAS2:Le numéro de département de la requête n'est pas dans90À110Entre,Ou un salaire supérieur à15000Informations sur les employés pour

 

 

 

 

    #Trois、Requête floue
    #1.like
    #CAS1:Le nom de l'employé de la requête contient des caractèresaInformations sur les employés pour


    #CAS2:Le troisième caractère du nom de l'employé interrogé este,Le cinquième caractère estaNom et salaire de l'employé

 

    #2.between and
    #CAS1:Demander le numéro d'employé à100À120Informations sur les employés entre

    #3.in
    #CAS:..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

 

 

    #4、is null
    #CAS1:Demandez le nom de l'employé sans prime et le taux de prime


    #CAS2:Rechercher le nom de l'employé avec bonus et le taux de bonus

 

 

    #Sécurité égale <=>
    ​#CAS1:Demandez le nom de l'employé sans prime et le taux de prime


    #CAS2:Le salaire de la requête est12000Informations sur les employés pour
    ​
    #is null pk <=>
    IS NULL:Il suffit de jugerNULLValeur,Haute lisibilité,Utilisation recommandée
    <=>   :On peut jugerNULLValeur,Et peut juger les valeurs normales,Faible lisibilité

 
 

Trois、Trier

order by Clause
    ​#1、Trier par un seul champ
    #CAS: Trier par salaire du tableau des employés 
SELECT * FROM t_mysql_employees ORDER BY salary    ​

    #2、Ajouter un filtre réorganiser
    ​#CAS: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    ​

    #3、Trier par expression
    #CAS:Demander des renseignements sur les employés Par ordre décroissant de salaire annuel
SELECT em.salary*12*(1+IFNULL(commission_pct,0)),em.* FROM t_mysql_employees em ORDER BY em.salary*12*(1+IFNULL(commission_pct,0)) DESC
    ​​
    #4、Trier par alias
    #CAS:Demander des renseignements sur les employés Augmentation par année
SELECT em.salary*12*(1+IFNULL(commission_pct,0)),em.* FROM t_mysql_employees em ORDER BY em.salary*12*(1+IFNULL(commission_pct,0)) ASC   

    #5、Trier par fonction
    #CAS:Demander le nom de l'employé,Et par ordre décroissant de longueur de nom
SELECT first_name FROM t_mysql_employees ORDER BY LENGTH(first_name) DESC
    ​​
    #6、Trier par plusieurs champs
    ​#CAS: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


#1.Demander le nom, le numéro de ministère et le salaire annuel de l'employé,Par ordre décroissant de salaire annuel Par ordre croissant de nom
SELECT em.first_name,em.department_id,em.salary*12*(1+IFNULL(commission_pct,0)) FROM t_mysql_employees em ORDER BY em.salary*12(1+IFNULL(commission_pct,0)) DESC,first_name asc

	#2.Sélectionner le salaire non disponible8000À17000Nom et salaire de l'employé,Par ordre décroissant de salaire
	SELECT first_name,salary FROM t_mysql_employees WHERE NOT(salary BETWEEN 8000 AND 17000) ORDER BY salary desc
	
	#3.La boîte aux lettres de requête contienteInformations sur les employés pour,Et réduit d'abord le nombre d'octets de la boîte aux lettres,Puis par numéro de département
	SELECT * FROM t_mysql_employees WHERE email LIKE '%e%' ORDER BY LENGTH(email)DESC,department_id ASC

order by Clause
    ​#1、Trier par un seul champ
    #CAS: Trier par salaire du tableau des employés
    ​
    #2、Ajouter un filtre réorganiser
    ​#CAS: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é
    ​
    #3、Trier par expression
    #CAS:Demander des renseignements sur les employés Par ordre décroissant de salaire annuel
    ​​
    #4、Trier par alias
    #CAS:Demander des renseignements sur les employés Augmentation par année
    ​​
    #5、Trier par fonction
    #CAS:Demander le nom de l'employé,Et par ordre décroissant de longueur de nom
    ​​
    #6、Trier par plusieurs champs
    ​#CAS:Demander des renseignements sur les employés,Demande de réduction de salaire,Appuie encore.employee_idOrdre croissant

 

 

 

  

#1.Demander le nom, le numéro de ministère et le salaire annuel de l'employé,Par ordre décroissant de salaire annuel Par ordre croissant de nom


    #2.Sélectionner le salaire non disponible8000À17000Nom et salaire de l'employé,Par ordre décroissant de salaire

 


    #3.La boîte aux lettres de requête contienteInformations sur les employés pour,Et réduit d'abord le nombre d'octets de la boîte aux lettres,Puis par numéro de département

 

 

Quatre、CAS

·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);









#01)Requête" 01 "Comparaison des cours" 02"Information et notes des élèves ayant obtenu de bons résultats
SELECT  st.*,sc.score AS '01',sc2.score AS '02' FROM t_student st
LEFT JOIN t_score sc ON sc.sid=st.sid AND sc.cid='01'
LEFT JOIN t_score sc2 ON sc2.sid=st.sid AND sc2.cid='02'
WHERE sc.score>sc2.score

#02)La requête existe en même temps" 01 "Cours et" 02 "Situation des cours
SELECT st.* FROM t_student st INNER JOIN t_score sc ON sc.sid=st.sid  AND sc.cid='01'
WHERE st.sid IN (
SELECT st2.sid FROM t_student st2 INNER JOIN t_score sc2 ON sc2.sid=st2.sid AND sc2.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 st.* FROM t_student st INNER JOIN t_score sc ON sc.sid=st.sid  AND sc.cid='01'
WHERE st.sid NOT IN (
SELECT st2.sid FROM t_student st2 INNER JOIN t_score sc2 ON sc2.sid=st2.sid AND sc2.cid='02'
)


#04)La requête n'existe pas" 01 "Cours mais existence" 02 "Situation des cours
SELECT * FROM t_student st INNER JOIN t_score sc ON sc.sid=st.sid AND sc.cid='02'
WHERE st.sid NOT IN (
SELECT st2.sid FROM t_student st2 INNER JOIN t_score sc2 ON sc2.sid=st2.sid AND sc2.cid='01'
)


#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 st.sid,st.sname,ROUND(AVG(sc.score),2) Note moyenne
FROM  t_student st 
LEFT JOIN t_score sc ON st.sid=sc.sid
GROUP BY st.sid HAVING AVG(sc.score)>=60;


#06)Requête danst_scoreTableau renseignements sur les élèves ayant des notes
SELECT st.* FROM t_student st WHERE sid IN(
SELECT sc.sid FROM t_score sc
)

#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 st.sid,st.sname,COUNT(sc.cid),ROUND(SUM(sc.score),2) AS 'Total des réalisations' FROM  t_student st 
LEFT JOIN t_score sc ON sc.sid=st.sid GROUP BY st.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 st.* FROM t_student st WHERE sid IN(
SELECT sid FROM t_score WHERE cid = (
SELECT cid FROM t_course WHERE tid = (
SELECT tid FROM t_teacher WHERE tname = 'Zhang San'
)
)
)

#10)Demander des renseignements sur les étudiants qui n'ont pas suivi tous les cours
SELECT st.*FROM  t_student st WHERE sid NOT IN(
SELECT sid FROM t_score GROUP BY sid HAVING COUNT(cid)>=(SELECT COUNT(cid) FROM t_course)
)

#11)Je n'ai pas appris les requêtes."Zhang San"Nom de l'étudiant pour tout cours donné par l'enseignant
SELECT st.sname FROM t_student st WHERE st.sid NOT IN (
SELECT sc.sid FROM t_score sc 
INNER JOIN t_course c ON c.cid=sc.cid
INNER JOIN t_teacher t ON t.tid=c.tid AND t.tname="Zhang San"
)

#12)Demander le numéro d'étudiant d'un étudiant qui a échoué à deux cours ou plus,Nom et moyenne
SELECT st.sid,st.sname,AVG(sc.score) FROM t_student st
LEFT JOIN t_score sc ON sc.sid=st.sid WHERE sc.sid IN(
SELECT sc.sid FROM t_score sc WHERE sc.score<60 OR sc.score IS NULL GROUP BY sc.sid HAVING COUNT(1)>=2
)
GROUP BY st.sid


#13)Recherche" 01 "La note du cours est inférieure à 60,Information sur les élèves par ordre décroissant
SELECT st.*,sc.score FROM t_student st LEFT JOIN  t_score sc ON sc.sid=st.sid WHERE sc.cid='01' AND sc.score<60 ORDER BY sc.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 st.sid,st.sname,
(IFNULL((sc4.score),0)) "Note moyenne",
(IFNULL((sc.score),0)) "Langues",
(IFNULL((sc2.score),0)) "Mathématiques",
(IFNULL((sc3.score),0))"Anglais" 
FROM t_student st
LEFT JOIN t_score sc  ON sc.sid=st.sid  AND sc.cid="01"
LEFT JOIN t_score sc2 ON sc2.sid=st.sid AND sc2.cid="02"
LEFT JOIN t_score sc3 ON sc3.sid=st.sid AND sc3.cid="03"
LEFT JOIN t_score sc4 ON sc4.sid=st.sid
GROUP BY st.sid 
ORDER BY AVG(sc4.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 c.cid,c.cname,MAX(sc.score) "Le score le plus élevé",MIN(sc.score) "Score minimum",AVG(sc.score) "Note moyenne" 
,((SELECT COUNT(sid) FROM t_score WHERE score>=60 AND cid=c.cid )/(SELECT COUNT(sid) FROM t_score WHERE cid=c.cid)) "Taux de réussite"
,((SELECT COUNT(sid) FROM t_score WHERE score>=70 AND score<80 AND cid=c.cid )/(SELECT COUNT(sid) FROM t_score WHERE cid=c.cid)) "Taux moyen"
,((SELECT COUNT(sid) FROM t_score WHERE score>=80 AND score<90 AND cid=c.cid )/(SELECT COUNT(sid) FROM t_score WHERE cid=c.cid)) "Excellent taux"
,((SELECT COUNT(sid) FROM t_score WHERE score>=90 AND cid=c.cid )/(SELECT COUNT(sid) FROM t_score WHERE cid=c.cid)) "Taux d'excellence"
FROM t_course c
LEFT JOIN t_score sc ON sc.cid=c.cid 
GROUP BY c.cid








1、

2、

 3、

 4、

 5、

 6、

 7、

 8、

 9、

 10、 

 

原网站

版权声明
本文为[Neuf chansons d'anli]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/186/202207051444336175.html