Maison >base de données >tutoriel mysql >Résumé des requêtes avancées de MySQL (2)
Points de connaissance : sous-requête EXISTS, sous-requête NOT EXISTS, requête de pagination, requête conjointe UNION
1. Partie Word
①existe existe ②temp temporaire ③zone de district
④contenu ⑤temporaire
2. Partie aperçu
1. Les jointures de tables peuvent-elles être remplacées par des sous-requêtes
Oui
2. Détecter un certain point. plage, quels mots-clés peuvent être utilisés dans la sous-requête
EXISTS
3. Quelles instructions SQL peuvent imbriquer des sous-requêtes
Instructions de requête de données plus complexes Lorsque les données de plusieurs tables sont nécessaires
La sous-requête peut apparaître partout où une expression apparaît
3. Partie de l'exercice
1 Interroger les informations sur les résultats du test de l'étudiant S2
#Onboard 1
SELECT. `studentNo`,`subjectNo`,`studentResult`,`exameDate` FROM `result`
OÙ EXISTE (SELECT `studentNo` FROM `student` WHERE gradeId=2 )
AND studentNo IN (SELECT `studentNo` FROM `student` WHERE gradeId=2)
2. Créer un relevé de notes de l'étudiant
#En ligne 2
SELECT `studentName` AS nom, `gradeName` AS note du cours , `subjectName` AS nom du cours, `exameDate` AS date de l'examen FROM (
SELECT `studentName`,`gradeName`,`subjectName`,`exameDate` FROM ` grade` AS gr,`result` AS re,`student ` AS stu,`subject` AS sub
WHERE gr.`gradeID`=stu.`gradeID` AND re.`studentNo`=stu.`studentNo`
Extraire les résultats vers une table temporaire
#Sur la machine 3
#select subjectNo from `subject` où `subjectName`='Logic Java';#select max(`exameDate`) à partir du résultat de la jointure interne ` subject` sur `result`.`subjectNo`=`subject`.`subjectNo`#where `subjectName`='Logic Java';
# sélectionnez `gradeID` dans `subject` où `subjectName `='Logic Java';
SELECT COUNT(*) AS Nombre de personnes qui devraient être présentes FROM étudiant
WHERE `gradeID`=(SELECT ` gradeID` FROM `subject` WHERE `subjectName`='Logic Java');
SELECT COUNT(*) AS Nombre réel d'arrivées FROM résultat
WHERE `subjectNo`=(SELECT subjectNo FROM ` subject` WHERE `subjectName`='Logic Java')
AND exameDate=(SELECT MAX(`exameDate`) FROM result INNER JOIN `subject` ON `result`.`subjectNo`=`subject`.`subjectNo`
WHERE `subjectName`='Logic Java');
#Nombre d'absents
SELECT((SELECT COUNT(*) FROM student
WHERE `gradeID`=(SELECT `gradeID` FROM `subject ` OÙ `subjectName`='Logic Java'))-
(SELECT COUNT(*) FROM result
WHERE `subjectNo`=(SELECT subjectNo FROM `subject` WHERE `subjectName`='Logic Java')
AND examenDate=(SELECT MAX(`exameDate`) FROM result INNER JOIN `subject` ON `result`.`subjectNo`=`subject`.`subjectNo`
WHERE `subjectName`='Logic Java')) ) AS Nombre d'absents ;
/*select studentName,student.studentNo,studentResult
from student,result
where student.`studentNo`=result.`studentNo`*/
# ADD TO TABLE
CREATE TABLE tempResult(
SELECT studentName,student.studentNo,studentResult
FROM student,result
WHERE student.`studentNo`=result.` studentNo `
)
4. La requête de pagination affiche les informations sur la maison de location
#Sur l'ordinateur 4
SUPPRIMER LA BASE DE DONNÉES SI EXISTE `maison`;
CRÉER LA BASE DE DONNÉES maison ;
USE house;#Table d'informations client
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user`(
`uid` INT(4) NOT NULL COMMENT 'Numéro client' AUTO_INCREMENT PRIMARY KEY,
);
#Tableau d'informations sur les districts et comtésDROP TABLE IF EXISTS `hos_district`;
`did` INT (4) NOT NULL COMMENT 'Numéro du district et du comté' AUTO_INCREMENT PRIMARY KEY,
);
# Informations sur la rue Il y a une clé étrangère dans la table
DROP TABLE IF EXISTS `hos_street`;
CREATE TABLE `hos_street`(
`sid` INT(4) NOT NULL COMMENT 'numéro de rue' AUTO_INCREMENT PRIMARY KEY,
);
#Table de type maisonDROP TABLE IF EXISTS `hos_type`;
`hTid` INT (4) NOT NULL COMMENT 'Numéro du type de maison' AUTO_INCREMENT PRIMARY KEY,
);
#Tableau d'informations sur la maison de locationDROP TABLE IF EXISTS `hos_house`;
`hMid` INT(4) NOT NULL COMMENT 'Numéro de maison de location' AUTO_INCREMENT CLÉ PRIMAIRE,
`hTid` INT (4) NON NULL COMMENTAIRE 'Numéro de type de maison',`prix` DECIMAL NON NULL COMMENTAIRE 'Loyer mensuel',
`topic` VARCHAR(50) NOT NULL COMMENT 'titre',
`contents` VARCHAR(255) NOT NULL COMMENT 'description',
`hTime` TIMESTAMP NOT NULL COMMENT 'Durée de sortie' DEFAULT NOW(),
`copy` VARCHAR(255) NOT NULL COMMENT 'Remarks'
);
#Chaque information de contrainte
# Numéro de district et de comté identifiant de clé étrangère des informations de rue
ALTER TABLE `hos_street` ADD CONSTRAINT fk_stree_distr
FOREIGN KEY (`sDid`) REFERENCES `hos_district` (`did`);
# Informations sur la maison de location et relation entre les différentes tables
ALTER TABLE `hos_house` ADD CONSTRAINT fk_house_user
FOREIGN KEY (`uid`) REFERENCES `sys_user` (`uid`);
ALTER TABLE ` hos_house` AJOUTER UNE CONTRAINTE fk_house_street
RÉFÉRENCES DE CLÉ ÉTRANGÈRE (`sid`) `hos_street` (`sid`);
ALTER TABLE `hos_house` AJOUTER UNE CONTRAINTE fk_house_type
RÉFÉRENCES DE CLÉ ÉTRANGÈRE (`hTid`) `hos_type ` (`hTid`);
#Contraintes par défaut
ALTER TABLE `hos_house` ALTER COLUMN `price` SET DEFAULT 0;
#ALTER TABLE `hos_house` ALTER COLUMN ` hTime` SET DEFAULT now();
#Ajouter des informations
#Table utilisateur
INSERT INTO `house`.`sys_user` (`uName`, `uPassWord`) VALUES (' Xiaomi ', '123'),
('Baishun', '123'),
('Lianji', '123'),
('Dongmei', '123');
#Tableau d'informations sur les districts et les comtés
INSERT INTO `house`.`hos_district` (`dName`) VALUES ('Haidian District'),
('Dongcheng District'),
(' Nancheng District'),
('District de Xicheng'),
('Zone de développement');
# Tableau d'informations sur les rues
INSERT INTO `house`.`hos_street` (`sName ` ) VALEURS ('Wanquan');
INSÉRER DANS `house`.`hos_street` (`sName`, `sDid`) VALEURS ('Wanquan', '1'); hos_street` (`sName`, `sDid`) VALEURS ('Zhongguan', '3');
INSÉRER DANS `house`.`hos_street` (`sName`, `sDid`) VALEURS (' Wanjia', ' 4');
INSERT INTO `house`.`hos_street` (`sName`, `sDid`) VALUES ('海风', '5');
INSERT INTO `house`.`hos_type` (`htName`) VALUES ('Une chambre et un salon');
INSERT INTO `house`.`hos_type` (`htName`) VALUES ('Deux chambres Un salon ');
INSERT INTO `house`.`hos_type` (`htName`) VALUES ('Trois chambres et un salon')
INSERT INTO `house`.`hos_type` (`htName`) VALUES); ( 'Deux chambres et une salle de bain');
INSERT INTO `house`.`hos_type` (`htName`) VALUES ('Une chambre et une salle de bain');
#Maison à louer table d'informations
INSERT INTO `house`.`hos_house` (`uid`, `sid`, `hTid`, `price`, `topic`, `contents`, `hTime`, `copy`)
VALEURS (' 1', '1', '1', '530', 'Chambre avec vue', 'Balcon pour regarder la mer', '2017-7-7', 'Achetez aussi vite que vous en avez besoin'); 🎜>INSÉRER DANS `house `.`hos_house` (`uid`, `sid`, `hTid`, `price`, `topic`, `contents`, `hTime`, `copy`)
VALUES (' 2', '2' , '2', '430', 'Chambre avec lit King', 'Dormir confortablement', '2017-6-9', 'Tellement confortable');
INSÉRER DANS la `maison`.` hos_house` (`uid`, `sid`, `hTid`, `price`, `topic`, `contents`, `hTime`, `copy`)
VALEURS ('3', '3', '3 ', '480', 'Chambre double', 'Hé hé hé', '2016-9-9', 'Comprenez-vous');
INSERT INTO `house`.`hos_house` (`uid`, `); sid`, `hTid`, `price`, `topic`, `contents`, `hTime`, `copy`)
VALEURS ('4', '4', '4', '360', 'Single room', 'Travel essential Select', '2015-8-8', 'En attendant que vous choisissiez');
#À bord 4
(SELECT * FROM ` hos_house` LIMIT 2,2 ; ='Désert';
SELECT `dName`,`sName`,hou.`hTid`,`price`,`topic`,`contents`,`hTime`,`copy`
FROM `hos_house` AS hou,`hos_district` AS dist,`hos_street` AS str,`sys_user` AS us,`hos_type` AS ty
OÙ hou.`uid`=us.`uid` ET hou. `hTid`=ty.` hTid` ET hou.`sid`=str.`sid` ET str.`sDid`=dist.`did`
#Sur l'ordinateur 6
/*sélectionnez le sid dans `hos_house` grouper par sid ayant count(sid)>1 ;
sélectionnez `sDid` dans `hos_street`
où sid=(SELECT sid FROM `hos_house` GROUP BY sid HAVING COUNT(sid)>1);
sélectionnez `dName` dans `hos_district` où `did`=(SELECT `sDid` FROM `hos_street`
SELECT `htName`, `uName`,`dName`,`sName`
FROM `hos_house` AS hou,`hos_district` AS dist,`hos_street` AS str,`sys_user` AS nous, `hos_type` AS tyOÙ hou.`uid`=us.`uid` ET hou.`hTid`=ty.`hTid` ET hou.`sid`=str.`sid` ET str.`sDid` =dist.`did`
AND hou .sid=(SELECT sid FROM `hos_house` GROUP BY sid HAVING COUNT(sid)>1);
Faites une liste de locations de maisons par quartier et comté
#上机7 QUARTER(NOW())获取季度
/*FROM `hos_house` AS hou,`hos_district` AS dist,`hos_street` AS str,`sys_user` AS us,`hos_type` AS ty
GROUPE PAR hou.`hMid`
OÙ hou.`uid`=us.`uid` ET hou.`hTid`=ty.`hTid` ET hou.`sid`=str.`sid` ET str.`sDid`=dist.`did`*/
SELECT QQ AS '季度',dist.`dName` AS '区县',str.`sName` AS '街道',
ty.`htName` AS '户型',CNT AS '房屋数量'
FROM
(
SELECT QUARTER(`hTime`) AS QQ,`sid` AS SI,`hTid` AS HT,COUNT(*) CNT
FROM `hos_house` AS hou
WHERE QUARTER(`hTime`)
GROUP BY QUARTER(`hTime`),`sid`,`hTid`
) AS temp,`hos_district` dist,`hos_street` AS str,`hos_type` AS ty,`hos_house` AS hou
OÙ hou.`hTid`=ty.`hTid` ET hou.`sid`=str.`sid ` AND str.`sDid`=dist.`did`
UNION
SELECT QUARTER(`hTime`),`hos_district`.`dName`,' 小计 ',' ', COUNT(*) AS '房屋数量'
FROM `hos_house`
INNER JOIN `hos_street` ON(hos_house.`sid`=hos_street.`sid`)
INNER JOIN hos_district ON(hos_street.`sDid `=hos_district.`did`)
WHERE QUARTER(`hTime`)
GROUP BY QUARTER(`hTime`),hos_district.`dName`
UNION
SELECT QUARTER(`hTime `),' 合计 ',' ',' ',COUNT(*) AS '房屋数量'
FROM hos_house
WHERE QUARTER(`hTime`)
GROUP BY QUARTER(`hTime`)
ORDER PAR 1,2,3,4
五.总结
UNION有点陌生其它没什么。。。。
欢迎提问,欢迎指错,欢迎讨论学习信息 有需要的私聊 发布评论即可 都能回复的
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!