当前位置:网站首页>Crud de MySQL
Crud de MySQL
2022-07-05 14:49:00 【Neuf chansons d'anli】
Table des matières
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、
边栏推荐
- webRTC SDP mslabel lable
- be careful! Software supply chain security challenges continue to escalate
- 【NVMe2.0b 14-9】NVMe SR-IOV
- Anaconda uses China University of science and technology source
- IPv6与IPv4的区别 网信办等三部推进IPv6规模部署
- Interview shock 62: what are the precautions for group by?
- There is a powerful and good-looking language bird editor, which is better than typora and developed by Alibaba
- 【招聘岗位】基础设施软件开发人员
- useMemo,memo,useRef等相关hooks详解
- 【NVMe2.0b 14-9】NVMe SR-IOV
猜你喜欢
Machine learning notes - gray wolf optimization
基于TI DRV10970驱动直流无刷电机
There is a powerful and good-looking language bird editor, which is better than typora and developed by Alibaba
Super wow fast row, you are worth learning!
Selection and use of bceloss, crossentropyloss, sigmoid, etc. in pytorch classification
【数组和进阶指针经典笔试题12道】这些题,满足你对数组和指针的所有幻想,come on !
Topology visual drawing engine
超级哇塞的快排,你值得学会!
【leetcode周赛总结】LeetCode第 81 场双周赛(6.25)
Solution of commercial supply chain collaboration platform in household appliance industry: lean supply chain system management, boosting enterprise intelligent manufacturing upgrading
随机推荐
Drive brushless DC motor based on Ti drv10970
Detailed explanation of usememo, memo, useref and other relevant hooks
JS bright blind your eyes date selector
Security analysis of Web Architecture
Install and configure Jenkins
[C question set] of Ⅷ
freesurfer运行完recon-all怎么快速查看有没有报错?——核心命令tail重定向
Two Bi development, more than 3000 reports? How to do it?
我想咨询一下,mysql一个事务对于多张表的更新,怎么保证数据一致性的?
Share 20 strange JS expressions and see how many correct answers you can get
[learning notes] stage test 1
直播预告|如何借助自动化工具落地DevOps(文末福利)
可视化任务编排&拖拉拽 | Scaleph 基于 Apache SeaTunnel的数据集成
CPU设计实战-第四章实践任务二用阻塞技术解决相关引发的冲突
基于TI DRV10970驱动直流无刷电机
外盘入金都不是对公转吗,那怎么保障安全?
Thymeleaf th:with use of local variables
MongDB学习笔记
Under the crisis of enterprise development, is digital transformation the future savior of enterprises
SaaS multi tenant solution for FMCG industry to build digital marketing competitiveness of the whole industry chain