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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL convient aux débutants car il est simple à installer, puissant et facile à gérer les données. 1. Installation et configuration simples, adaptées à une variété de systèmes d'exploitation. 2. Prise en charge des opérations de base telles que la création de bases de données et de tables, d'insertion, d'interrogation, de mise à jour et de suppression de données. 3. Fournir des fonctions avancées telles que les opérations de jointure et les sous-questionnaires. 4. Les performances peuvent être améliorées par l'indexation, l'optimisation des requêtes et le partitionnement de la table. 5. Prise en charge des mesures de sauvegarde, de récupération et de sécurité pour garantir la sécurité et la cohérence des données.

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.

Créez une base de données à l'aide de NAVICAT Premium: Connectez-vous au serveur de base de données et entrez les paramètres de connexion. Cliquez avec le bouton droit sur le serveur et sélectionnez Créer une base de données. Entrez le nom de la nouvelle base de données et le jeu de caractères spécifié et la collation. Connectez-vous à la nouvelle base de données et créez le tableau dans le navigateur d'objet. Cliquez avec le bouton droit sur le tableau et sélectionnez Insérer des données pour insérer les données.

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

Étapes pour effectuer SQL dans NAVICAT: Connectez-vous à la base de données. Créez une fenêtre d'éditeur SQL. Écrivez des requêtes ou des scripts SQL. Cliquez sur le bouton Exécuter pour exécuter une requête ou un script. Affichez les résultats (si la requête est exécutée).

Erreurs et solutions courantes Lors de la connexion aux bases de données: nom d'utilisateur ou mot de passe (erreur 1045) Blocs de pare-feu Connexion (erreur 2003) Délai de connexion (erreur 10060) Impossible d'utiliser la connexion à socket (erreur 1042) Erreur de connexion SSL (erreur 10055) Trop de connexions Résultat de l'hôte étant bloqué (erreur 1129)
