table des matières
L'instruction tronquée n'est pas une instruction DML
2> Syntaxe: tronquer le nom de la table de la table
3> La différence entre et supprimer l'instruction
L'instruction tronquée ne peut pas être annulée
Vue d'ensemble des instructions Select
[trier par champ de tri {[asc] | desc}]
Utilisez la clause select pour spécifier une liste de champs
Champ ou expression [en tant que] alias
sélectionnez la version () comme numéro de version, maintenant () l'heure actuelle du serveur;
Instruction de requête de base
distinct supprimer les lignes en double
sélectionnez une liste de champs distincte à partir du nom de la table;
Utilisez limit pour limiter le nombre de lignes affichées
sélectionner la liste de champs à partir de la limite de nom de table [début,] longueur;
sélectionner la liste des champs
sélectionner la liste des champs
à partir de la table gauche gauche [externe] joint la table droite sur les conditions d'association;
sélectionner la liste des champs
Si vous souhaitez afficher tout le contenu des deux tableaux dans le jeu de résultats
Connexion externe complète --- MySQL ne prend pas en charge la syntaxe
sélectionner la liste des champs
MySQL prend en charge l'instruction d'union grammaticale union all instruction
Instruction SQL
tronquer
L'instruction tronquée n'est pas une instruction DML
1> Le rôle du nom tronqué
2> Syntaxe: tronquer le nom de la table de la table
3> La différence entre et supprimer l'instruction
- L'instruction truncate ne peut pas être utilisée dans la table primaire (même s'il n'y a pas de données dans la table secondaire
- truncate table student; # // Il n'y a pas de données de la table choisir
- supprimer la table élève; # // correct
Pour les champs à croissance automatique, après avoir tronqué la table à l'aide de l'instruction truncate, la valeur revient à la valeur initiale
insert into exam values(null,90); stu_no 8
truncate table exam;
insert into exam values(null,90); stu_no 1
L'instruction tronquée ne peut pas être annulée
sélectionner la déclaration
Vue d'ensemble des instructions Select
grammaire
sélectionner la liste des champs à partir de la source de données [où expression conditionnelle] [regrouper par champ de regroupement] [avoir une expression conditionnelle] [classer par champ de tri {[asc] | desc}]
parmi eux
- Liste de champs : formuler des champs de recherche
- Source de données: table ou vue récupérée
- clause where : formulation des conditions de filtre pour les lignes de données
- Clause Group by : selon le champ de regroupement, les lignes de données sont divisées en plusieurs groupes et des statistiques récapitulatives sont effectuées
- clause ayant : filtrer les données groupées
- clause order by : trier le jeu de résultats, la valeur par défaut est l'ordre croissant
Utilisez la clause select pour spécifier une liste de champs
Comment spécifier la liste de champs
- *: Représente tous les champs de la source de données
- Liste de champs : une liste de champs séparés par des virgules pour spécifier le nombre de champs à récupérer
- Nom de la table. * : Dans une requête multi-table, spécifiez tous les champs d'une table
- Nom de la table. Champ : dans une requête à plusieurs tables, spécifiez un champ dans une table
- Expression : l'expression peut contenir des opérations arithmétiques, des fonctions, etc.
Exemple
Récupérez le numéro de version de MySQL. Heure du serveur
select version(),now();
Alias nommé
Champ ou expression [en tant que] alias
sélectionnez la version () comme numéro de version, maintenant () l'heure actuelle du serveur;
Instruction de requête de base
grammaire:
sélectionnez la liste de champs à partir du nom de la table;
Exemples:
Lister tous les champs du tableau
SELECT * FROM student;
Énumérez certains champs du tableau
select student_no,student_name,student_contact from student;
Champ pour nommer l'alias
select student_no as 学号,student_name 姓名,student_contact 联系方式 from student;
Utiliser l'expression
select stu_no 学号,score 卷面成绩,score*0.7+30 综合成绩 from exam;
Mots clés spéciaux
distinct supprimer les lignes en double
grammaire:
sélectionnez une liste de champs distincte à partir du nom de la table;
Exemple:
select class_no from student;
Tri sur une seule colonne
select distinct class_no from student;
Trier par plusieurs colonnes
use information schema;
show tables; --显示当前数据库中所有表的名字
desc tables; -- 查看表tables的表结构
select table schema 数据库名,table name 表名,table type 表类型from infomation schea table;
select distinct table schema数据库名from information schema . tables;
select distinct table_ type from information schema. tables;
select distinct table_ schema 数据库名,table_ type 表的类型
information schema . tables;
Utilisez limit pour limiter le nombre de lignes affichées
Requête de pagination
grammaire:
sélectionner la liste de champs à partir de la limite de nom de table [début,] longueur;
parmi eux
start : indique à partir des premières lignes pour démarrer la recherche, la valeur par défaut est 0, ce qui signifie la première ligne
length: indique le nombre de lignes à récupérer
Exemple
Répertoriez les 10 premières lignes de la table information_schema.tables pour afficher table_schema, table_name ;
select table_schema 数据库名,table_name 表名 from information_schema.tables limit 10;
Exercice: afficher 10 lignes par page, lister la page 7 dans le tableau des tableaux
select table_schema 数据库名,table_name 表名 from information_schema.tables limit 60,10;
Requête multi-table
Exigences: Liste des étudiants et leurs informations de classe, y compris la carte d'étudiant, le nom et le nom de la classe
Carte d'étudiant, nom: étudiant
Nom de la classe: classes
Champs associés: student.class_no, classes.class_no,
Conditions d'association: student.class_no = classes.class_no,
Types de requête multi-table
Connexion interne: les lignes de données qui remplissent les conditions d'association sont récupérées et celles qui ne remplissent pas les conditions d'association sont filtrées
Jointure externe: l'ensemble de résultats de la jointure externe = l'ensemble de résultats de la jointure interne + la ligne de données qui ne correspond pas
Connexion interne
grammaire
sélectionner la liste de caractères de la table 1 [interne] joindre la table 2 sur les conditions associées;
Exigences: Liste des étudiants et leurs informations de classe, y compris la carte d'étudiant, le nom et le nom de la classe
Carte d'étudiant, nom: étudiant
Nom de la classe: classes
Champs associés: student.class_no, classes.class_no,
Conditions d'association: student.class_no = classes.class_no;
select student.student_no,student.student_name,classes.class_no
from student join classes on student.class_no=classes.class_no;
Insérer une ligne de données dans la table des élèves sans cours
insert into student values('2018006','小明','20000000',null);
Insérer une ligne de données dans la table de classe
insert into classes(null,'2018机械自动化2班','机电工程');
La connexion interne ne correspond pas aux données ne seront pas affichées
select student.student_no 学号,student.student_name 姓名,classes.class_no 班级名称
from student join classes on student.class_no=classes.class_no;
Alias de table
Nom de la table [as] alias
select s.student_no 学号,s.student_name 姓名,c.class_no 班级名称
from student s join classes c on s.class_no=c.class_no;
Présentation d'erreur
Pour la table une fois le nom d'alias, vous ne pouvez utiliser l'alias dans l'instruction, le nom de la table d'origine sur l'échec
select student.student_no 学号,s.student_name 姓名,c.class_no 班级名称
from student s join classes c on s.class_no=c.class_no;
Si plusieurs tables se joignent, aucun champ du même nom ne peut être omis avant que le nom de la table des champs ou des défauts d' alias modifiés réduiront l'efficacité de l'instruction de requête SQL
select student no 学号,student name 姓名,class name 班级
from student s join classes c on s.class_no=c.class_no;
Connexion à trois tables
Insérez les données de test dans le tableau de sélection des cours choisissez
student_no course_no score () choose_time
L'instruction SQL est la suivante
insérer dans choisir des valeurs (...);
grammaire
sélectionner la liste des champs
à partir de la table 1 [interne] table de jointure 2 sur la condition d'association 1 [interne] table de jointure 3 sur la condition d'association 2;
Exemple;
select s.student_on 学号,s.student_name 姓名, cs.course_name 课程 ,ch.score 成绩
from student s join choose ch on s.student_no = ch.student_on join course cs on cs.course_on = ch.course_on;
Exercer:
Dressez la liste des informations sur l'enseignant et les cours enseignés , y compris le numéro de poste, le nom, le nom du cours et le nombre maximum de personnes de l'enseignant
select t.teacher_on 教师工号,t.teacher_name 姓名,c.course_name 课程,c.up_limit 人数
from teacher t join course c on t.teacher_on=c.teacher_on;
L'identifiant professionnel de l'enseignant, le nom, le nom du cours et l'ID étudiant de l'élève qui a suivi le cours
select t.teacher_on 教师工号,t.teacher_name 姓名,c.course_name 课程,c.up_limit 人数
from teacher t join course c on t.teacher_on=c.teacher_on join choose ch on c.course_on = ch.coure_on;
Jointure externe
Connexion externe gauche:
Ensemble de résultats de jointure externe gauche = ensemble de résultats de jointure interne + données sans correspondance dans le tableau de gauche
grammaire
sélectionner la liste des champs
à partir de la table gauche gauche [externe] joint la table droite sur les conditions d'association;
Exemple:
Répertoriez tous les élèves et leurs informations de classe
select s.student_on 学号,s.student_name 姓名,c.calss_name 班级
from student s left join classes c on s.class_on = c.class_on;
Connexion externe droite:
Ensemble de résultats de jointure externe droite = ensemble de résultats de jointure interne + données sans correspondance dans la table de droite
grammaire:
sélectionner la liste des champs
à partir de la table gauche droite [externe] joindre la table droite sur les conditions d'association;
Exemple:
Répertoriez tous les élèves et leurs informations de classe
select s.student_on 学号,s.student_name 姓名,c.calss_name 班级
from classes c right join student s on s.class_on = c.class_on;
Si vous souhaitez afficher tout le contenu des deux tableaux dans le jeu de résultats
Connexion externe complète --- MySQL ne prend pas en charge la syntaxe
Ensemble de résultats de jointure externe complet = ensemble de résultats de jointure interne + données qui ne correspondent pas dans les deux tables
Syntaxe:
sélectionner la liste des champs
à partir de la table de gauche complète [externe] jointure de la table de droite sur les conditions d'association;
MySQL prend en charge l'instruction d'union grammaticale union all instruction
effet:
Affichez les résultats des deux sélections dans leur ensemble.
Les conditions sont remplies: 1. Le nombre de colonnes dans les deux requêtes de sélection doit être le même;
2. Le type de données de chaque colonne doit être similaire;
la différence:
Union tout est l'union des résultats de deux instructions select. L'union consiste à supprimer les données en double sous le résultat de l'union tous
syndicat
Utilisez l'union pour réaliser les fonctions ci-dessus
select s.student_on 学号,s.student_name 姓名,c.calss_name 班级
from student s left join classes c on s.class_on = c.class_on
union
select s.student_on 学号,s.student_name 姓名,c.calss_name 班级
from student s right join classes c on s.class_on = c.class_on;
Si le nombre de listes de champs des deux tables connectées par union est incohérent, vous pouvez affecter null à la table avec moins de listes de champs, et si vous n'attribuez pas de valeur, une erreur sera signalée.
select * from student union select *,null from teacher;
union tout
select s.student_on 学号,s.student_name 姓名,c.calss_name 班级
from student s left join classes c on s.class_on = c.class_on
union all
select s.student_on 学号,s.student_name 姓名,c.calss_name 班级
from student s right join classes c on s.class_on = c.class_on;