Station d'approvisionnement de recrue Java --- Supplément d'instruction SQL de base de données MySQL (1)

table des matières

Instruction SQL

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

Pour les champs à croissance automatique, après avoir tronqué la table à l'aide de l'instruction truncate, la valeur revient à la valeur initiale

L'instruction tronquée ne peut pas être annulée

sélectionner la déclaration

Vue d'ensemble des instructions Select

sélectionner la liste de champs à partir de la source de données [où expression conditionnelle] [groupe par champ de regroupement] [ayant une expression conditionnelle]

                                              [trier par champ de tri {[asc] | desc}]

Utilisez la clause select pour spécifier une liste de champs

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

Mots clés spéciaux

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

Requête de pagination

sélectionner la liste de champs à partir de la limite de nom de table [début,] longueur;

Requête multi-table

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

sélectionner la liste de caractères de la table 1 [interne] joindre la table 2 sur les conditions associées;

Alias ​​de table

Nom de la table [as] alias

Une fois que vous avez nommé la table un alias, vous ne pouvez utiliser l'alias que dans l'instruction et le nom de la table d'origine devient invalide

Connexion à trois tables

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;

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

sélectionner la liste des champs

à partir de la table gauche gauche [externe] joint la table droite sur les conditions d'association;

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

sélectionner la liste des champs

à partir de la table gauche droite [externe] joindre la table droite sur les conditions d'association;

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

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:

la différence:

syndicat

union tout


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;
  

 

Je suppose que tu aimes

Origine blog.csdn.net/c202003/article/details/107231597
conseillé
Classement