Maison base de données tutoriel mysql Résumé des requêtes avancées de MySQL (2)

Résumé des requêtes avancées de MySQL (2)

Jun 30, 2017 pm 03:23 PM
mysql

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';

#Nombre de personnes qui devraient être présentes

SELECT COUNT(*) AS Nombre de personnes qui devraient être présentes FROM étudiant
WHERE `gradeID`=(SELECT ` gradeID` FROM `subject` WHERE `subjectName`='Logic Java');

# Nombre réel d'arrivées

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

DROP TABLE IF EXISTS tempResult;

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,

`uName` VARCHAR(50) COMMENT 'Nom du client',

`uPassWord` VARCHAR(50) COMMENT 'Mot de passe client'

);

#Tableau d'informations sur les districts et comtés

DROP TABLE IF EXISTS `hos_district`;

CREATE TABLE `hos_district`(


`did` INT (4) NOT NULL COMMENT 'Numéro du district et du comté' AUTO_INCREMENT PRIMARY KEY,

`dName` VARCHAR(50) NOT NULL COMMENT 'Nom du district et du comté'

);

# 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,

`sName` VARCHAR(50) COMMENT 'street name',

`sDid` INT(4) NOT NULL COMMENT 'numéro de district et de comté'

);

#Table de type maison

DROP TABLE IF EXISTS `hos_type`;

CREATE TABLE `hos_type`(


`hTid` INT (4) NOT NULL COMMENT 'Numéro du type de maison' AUTO_INCREMENT PRIMARY KEY,

`htName` VARCHAR(50) NOT NULL COMMENT 'Nom du type de maison'

);

#Tableau d'informations sur la maison de location

DROP TABLE IF EXISTS `hos_house`;

CREATE TABLE `hos_house`(


`hMid` INT(4) NOT NULL COMMENT 'Numéro de maison de location' AUTO_INCREMENT CLÉ PRIMAIRE,

`uid` INT(4) NON NULL COMMENTAIRE 'numéro de client',

`sid` INT(4) NON NULL COMMENTAIRE 'numéro de district et de comté',

`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');

#Table de type maison

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

CRÉER UNE TABLE TEMPORAIRE temp_house

(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`

AND hou.`uid`=(SELECT `uid` FROM ` sys_user` WHERE uName='大 Desert ');

6. Faites une liste de locations de maisons par district et comté


#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`

WHERE sid=(SELECT sid FROM `hos_house` GROUP BY sid HAVING COUNT(sid)>1)) ;*/

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 ty

OÙ 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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

MySQL: la facilité de gestion des données pour les débutants MySQL: la facilité de gestion des données pour les débutants Apr 09, 2025 am 12:07 AM

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.

Comment ouvrir phpmyadmin Comment ouvrir phpmyadmin Apr 10, 2025 pm 10:51 PM

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: Compétences essentielles pour les développeurs MySQL et SQL: Compétences essentielles pour les développeurs Apr 10, 2025 am 09:30 AM

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.

Comment créer Navicat Premium Comment créer Navicat Premium Apr 09, 2025 am 07:09 AM

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: Concepts simples pour l'apprentissage facile MySQL: Concepts simples pour l'apprentissage facile Apr 10, 2025 am 09:29 AM

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.

Comment créer une nouvelle connexion à MySQL dans Navicat Comment créer une nouvelle connexion à MySQL dans Navicat Apr 09, 2025 am 07:21 AM

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.

Comment exécuter SQL dans Navicat Comment exécuter SQL dans Navicat Apr 08, 2025 pm 11:42 PM

É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).

Navicat se connecte au code et à la solution d'erreur de base de données Navicat se connecte au code et à la solution d'erreur de base de données Apr 08, 2025 pm 11:06 PM

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)

See all articles