Ajout, suppression et modification de MySQL

Vers le Haut 2022-01-15 02:42:41 阅读数:922

ajout suppression et modification mysql

Un..Commandes courantes

  1. Voir les conteneurs de base de données dans cet entrepôt
    Les ordres:show databases; Cette commande permet de visualiser les conteneurs de base de données dans cet entrepôt

image-20211113110105894Conteneur de base de données information_schemaMoyenne,Stockage des données d'information de base du serveur de base de données;

Conteneur de base de données mysqlMoyenne,Ce sont les informations de l'utilisateur、Informations sur le fuseau horaire、Informations sur le tableau、Fonctions、Événements、Procédures stockées, etc.;

Conteneur de base de données performance_schemaMoyenne,N'existe que dans la nouvelle base de données,Stocker des informations sur le rendement;

Conteneur de base de données testMoyenne,Par défaut, l'intérieur est vide,Vous pouvez écrire des informations de table à l'intérieur,Effectuer des essais opérationnels;

2.Passer àmysqlConteneur de base de données
Les ordres:use mysql; Cette commande signifie passer àmysqlConteneur de base de données

3.Afficher toutes les structures de table dans la base de données actuelle
Les ordres:show tables; Cette commande affiche toutes les structures de table de la base de données actuelle

4.Voir les informations de structure de table dans la base de données spécifiée
Les ordres:show tables from test; VoirtestInformations sur la structure des tableaux dans la base de données,Notez que vous pouvez passer àtestVoir dans la base de données

5.Voir le conteneur de base de données actuellement utilisé
Les ordres:select database(); Voir le conteneur de base de données actuellement utilisé

6.DDLDéclaration de création de table
Les ordres:

create table student(
id int,

name varchar(20),

gender char,

birthday datetime
);
7.DDLVoir la structure du tableau
Les ordres:desc student; Voir la structure du tableau

8.DQLVoir les données dans le tableau
Les ordres:select * from student; Voir les données dans le tableau

9.DMLInsérer des données
Les ordres:insert into student values(1,‘Zhang San’,‘Hommes’,‘2019-01-01’); Insérer des données

Attention!:Il peut y avoir confusion,windowsL'encodage par défaut du jeu de caractères du client estGBK,Et l'encodage par défaut du jeu de caractères côté serveur estUTF-8,En cas d'incohérence dans l'encodage des jeux de caractères,Ça va causer du désordre.L'ensemble d'encodage doit être modifié pour le moment,Utilisez les commandes:set names utf8;

10.DMLModifier les données
Les ordres:update student set birthday = ‘2019-02-02’ where id=2; Modifier les données

11.DMLSupprimer les données
Les ordres:delete from student where id = 2; Supprimer les données

12.DDLModifier la structure du tableau
Les ordres:alter table student add column email varchar(24); Modifier la structure du tableau,Ajouter une colonne

13.DDLSupprimer la structure du tableau
Les ordres:drop table student; Supprimer la structure du tableau

14.Sortie
Les ordres:exit Sortie

15.Notes
1). Insensible à la casse

2). Notes

Première catégorie:Note de la ligne courante Utiliser#,Par exemple:#aaa

Deuxième type:Note de la ligne courante Utiliser-- ,Par exemple:-- aaa ,Attention aux espaces

La troisième:Commentaires multilignes Utiliser/* */,Par exemple:/**/,Pas dans les commentaires imbriqués

3). Par ; Fin

2..SQLDéclarations

  1. Qu'est - ce queSQL
    SQL(Structured Query Language)- Oui.“Langage de requête structuré”,C'est le langage de fonctionnement de la base de données relationnelle.Il peut être appliqué à toutes les bases de données relationnelles,Par exemple:MySQL、Oracle、SQServerAttendez..

SQLLes critères sont les suivants::

1986Année,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86

1989Année,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89

1992Année,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92(SQL2)

1999Année,ISO/IEC 9075:1999,SQL:1999(SQL3)

2003Année,ISO/IEC 9075:2003,SQL:2003

2008Année,ISO/IEC 9075:2008,SQL:2008

2011Année,ISO/IEC 9075:2011,SQL:2011

2016Année,ISO/IEC 9075:2016,SQL:2016

Ces critères sont liés àJDKLa même version de,Il y aura toujours des changements de syntaxe dans la nouvelle version.Les bases de données de différentes époques ont mis en œuvre différentes normes.

Bien queSQLPeut être utilisé dans toutes les bases de données relationnelles,Mais beaucoup de bases de données ont encore une certaine syntaxe après la norme,On pourrait appeler ça“Dialectes”.Par exempleMySQLDansLIMITLa déclaration estMySQLDialecte unique,Aucune autre base de données ne supporte!Bien sûr.,OracleOuSQLServerChacun a son propre dialecte.

  1. SQLSyntaxe requise
    SQLLes déclarations peuvent être écrites sur une ou plusieurs lignes,Finissez par un point - virgule;

Vous pouvez utiliser des espaces et des tirets pour améliorer la lisibilité des déclarations;

Les mots clés ne sont pas sensibles à la casse,Les majuscules sont recommandées;

3.SQLClassification
1). DQL(Data Query Language):Langage de requête de données,Utilisé pour interroger les enregistrements(Données) select

2). DML(Data Manipulation Language):Langage de fonctionnement des données,Utilisé pour définir les enregistrements de base de données(Données) insert / update / delete

3). DDL(Data Definition Language):Langage de définition des données,Utilisé pour définir les objets de la base de données:Bibliothèque、Tableau、Colonne, etc. create / drop / alter/desc

4). DCL(Data Control Language):Langage de contrôle des données,Utilisé pour définir les droits d'accès et les niveaux de sécurité

5). TCL(Transaction Control Language) :Langage de contrôle des transactions Présentation des transactionscommit,Transaction rollbackrollback,Enregistrer le pointsavepoint

Trois.DQLLangage de requête de données

1 Concept
DQL(Data Query Language):Langage de requête de données,Utilisé pour interroger les enregistrements(Données) Mise en œuvreselectFonctionnement

DQL C'est le langage de requête de données ,Exécution de la base de donnéesDQLL'instruction ne modifie pas les données,Au lieu de cela, la base de données envoie un ensemble de résultats au client.

2 Syntaxe
SELECT

selection_list /Nom de colonne à interroger/

FROM

table_list /Nom de la table à interroger/

WHERE

condition /Condition de ligne/

GROUP BY

grouping_columns /Grouper les résultats/

HAVING

condition /Conditions de ligne groupées/

ORDER BY

sorting_columns /Trier les résultats/

LIMIT

offset_start, row_count /Résultats limités(Pagination)/
3.1.Requête de base
select Liste des requêtes from Nom du tableau;

Parmi euxselect Liste des requêtes qui suivent , Il peut y avoir plusieurs composants ,Le Centre est séparé par une virgule,Par exemple:
select Champ1,Champ2,Expression from Tableau;
La liste des requêtes peut être:Champ、Expression、Constante、Fonctions, etc

3.2.Requête conditionnelle
select Liste des requêtes from Nom du tableau where Critères de filtrage;
Ordre d'exécution

fromClause
whereClause
selectClause
CAS

– Un.、 Filtrer par expression relationnelle Opérateur relationnel:> < >= <= = <> Supplément:Peut également être utilisé!=,Mais ce n'est pas recommandé
#CAS1: Le numéro de département de la requête n'est pas 100Informations sur les employés pour
select * from dept where dept_id <> 100;
#CAS2:Demande de salaire<15000Nom de、Salaire
select name ‘Nom’,salary ‘Salaire’ from emp where salary < 15000;

– 2.、Filtrer par expression logique Opérateurs logiques:and or not Supplément:Peut également être utilisé&& || ! ,Mais ce n'est pas recommandé
#CAS1: Le numéro de département de la requête n'est pas 50-100 Entre les noms des employés 、Numéro du Département、Boîte aux lettres
select name ,dept_id , email from emp where dept_id not between 50 and 100;
#CAS2: Taux de prime de requête >0.03 Ou Numéro de l'employé 60-110Informations sur les employés entre
select * from emp where com_pct > 0.03 or id between 60 and 110 ;

– Trois、Requête floue like/not like
#CAS1:Le nom de la requête contient des caractèresaInformations sur les employés pour
select * from emp where name like ‘%a%’;
#CAS2: Le nom de la requête contient le dernier caractère eInformations sur les employés pour
select * from emp where name like ‘%e’;
#CAS3: Le nom de la requête contient le premier caractère eInformations sur les employés pour
select * from emp where name like ‘e%’;
#CAS4: Le nom de la requête contient un troisième caractère de xInformations sur les employés pour
select * from emp where name like ‘__x%’;
#CAS5: Le nom de la requête contient le deuxième caractère _Informations sur les employés pour
– \ La barre oblique peut échapper à l'arrière _Soulignement, Représentant ici _ C'est un soulignement normal
select name , salary from emp where name like ‘_%’;
– escape Caractères suivants, Exprimé à cette fin sql Symbole d'évasion utilisé dans , Représentant ici _ C'est un soulignement normal
select name , salary from emp where name like '
#_%’ escape ‘#’;


– Quatre、 Demande si la valeur d'un champ appartient à la liste spécifiée in/not in


– Cinq、 Détermine si la valeur d'un champ se situe dans la plage spécifiée between and/not between and


– Six、La requête estnullChamp is null , La requête n'est pasnullChamp is not null

3.3 Trier la requête order by
select Liste des requêtes from Nom du tableau where Critères de filtrage order by Trier la liste
Ordre d'exécution

fromClause
whereClause
selectClause
order by Clause
1、 La liste de tri peut être un seul champ 、Champs multiples、Expression、Fonctions、Nombre de colonnes、Et les combinaisons ci - dessus

2、Ordre croissant ,Adoption asc ,Comportement par défaut
Ordre décroissant ,Adoption desc

3.4Fonctions communes
Fonctions:Similaire àjava Secondaire “Méthodes”,Pour résoudre un problème, Encapsule une série de commandes écrites ensemble , Exposer uniquement le nom de la fonction ,Pour les appels externes.

3.4.1 Fonctions de chaîne
Nom de la Fonction String Description de la fonction
CONCAT(S1,S2,…,Sn) ConnexionS1,S2,…,SnPour une chaîne
CONCAT(s, S1,S2,…,Sn) Même chose.CONCAT(s1,s2,…)Fonctions,Mais entre chaque chaîne il faut ajouters
CHAR_LENGTH(s) Renvoie la chaînesNombre de caractères pour
LENGTH(s) Renvoie la chaînesNombre d'octets pour,Concernant les jeux de caractères
INSERT(str, index , len, instr) Mettez la chaînestrDeindexPosition de départ,lenLes sous - chaînes longues de caractères sont remplacées par des chaînesinstr
UPPER(s) Ou UCASE(s) Mettez la chaînesToutes les lettres en majuscules
LOWER(s) OuLCASE(s) Mettez la chaînesToutes les lettres de
LEFT(s,n) Renvoie la chaînesÀ l'extrême gauchenCaractères
RIGHT(s,n) Renvoie la chaînesÀ droite.nCaractères
LPAD(str, len, pad) Avec une chaînepadC'est exact.strRemplissage à l'extrême gauche,Jusqu'àstrLa longueur delenCaractères
RPAD(str ,len, pad) Avec une chaînepadC'est exact.strRemplir à l'extrême droite,Jusqu'àstrLa longueur delenCaractères
LTRIM(s) Supprimer la chaînesEspace à gauche
RTRIM(s) Supprimer la chaînesEspace à droite
TRIM(s) Supprimer la chaînesEspaces de début et de fin
TRIM(【BOTH 】s1 FROM s) Supprimer la chaînesDébut et fins1
TRIM(【LEADING】s1 FROM s) Supprimer la chaînesAu débuts1
TRIM(【TRAILING】s1 FROM s) Supprimer la chaînesÀ la fins1
REPEAT(str, n) RetourstrJe répète.nRésultats de
REPLACE(str, a, b) Avec une chaînebRemplacer la chaînestrToutes les chaînes présentes dansa
STRCMP(s1,s2) Comparer les chaîness1,s2
SUBSTRING(s,index,len) Retourner à partir de la chaînesDeindexEmplacementlenCaractères
3.4.2 Fonctions mathématiques
Nom de la fonction mathématique Description de la fonction
ABS(x) RetourxValeur absolue de
CEIL(x) Renvoie plus dexValeur intégrale minimale pour
FLOOR(x) Renvoie plus dexValeur intégrale maximale pour
MOD(x,y) Retourx/yModèle
RAND(x) Retour0~1Valeur aléatoire de
ROUND(x,y) Paramètres de retourxLes chiffres arrondis sont les suivants:y Valeur décimale du BIT
TRUNCATE(x,y) Renvoie le nombrexTronqué àyRésultat de la décimale bit
SQRT(x) RetourxRacine carrée de
POW(x,y) RetourxDeySecondaire
3.4.3 Fonction date - heure
Fonction date - heure Description de la fonction
CURDATE() Ou CURRENT_DATE() Retourner à la date actuelle
CURTIME() Ou CURRENT_TIME() Renvoie l'heure actuelle
NOW() Renvoie la date et l'heure actuelles du système
SYSDATE()
CURRENT_TIMESTAMP()
LOCALTIME()
LOCALTIMESTAMP()
YEAR(date) Renvoie l'année de l'heure spécifiée
MONTH(date) Renvoie le mois à l'heure spécifiée
DAY(date) Renvoie le jour à l'heure spécifiée
HOUR(time) Renvoie l'heure spécifiée
MINUTE(time) Renvoie une minute à l'heure spécifiée
SECOND(time) Renvoie la seconde du temps spécifié
WEEK(date) Retour à la semaine de l'année
WEEKOFYEAR(date)
DAYOFWEEK() Renvoie le jour de la semaine ,Attention!:Dimanche oui1,Lundi oui2,...Samedi, c'est7
WEEKDAY(date) Retourner l'heure spécifiée est le jour de la semaine ,Attention!,Semaine1- Oui.0,Semaine2- Oui.1,...Dimanche oui6
DAYNAME(date) Retour à l'heure spécifiée le jour de la semaine :MONDAY,TUESDAY…SUNDAY
MONTHNAME(date) Renvoie le mois à l'heure spécifiée :January,.....
DATEDIFF(date1,date2) Retourdate1 - date2 Intervalle de date pour
TIMEDIFF(time1, time2) Retourtime1 - time2L'intervalle de temps entre
DATE_ADD(datetime, INTERVALE expr , type) Renvoie la différence entre la date et l'heure donnéesINTERVALDate et heure de la période
DATE_FORMAT(datetime ,fmt) Par chaînefmtDate de formatagedatetimeValeur
STR_TO_DATE(str, fmt) Par chaînefmtC'est exact.strAnalyser,Résoudre à une date
– 5、DATE_FORMAT(datetime ,fmt) Par chaînefmtDate de formatagedatetimeValeur
#CAS:Voir100 Date d'entrée en fonction de l'employé no
select employee_id , hiredate , DATE_FORMAT(hiredate,’%y-%m-%d %H:%i:%s Semaine%w’) from employees where employee_id=100;

– 6、STR_TO_DATE Résoudre la chaîne au type de date dans le format spécifié
#CAS:Voir1998Année6 Renseignements sur les employés qui ont été embauchés avant le mois
select employee_id , hiredate
from employees
where hiredate < STR_TO_DATE(‘1998Année6Mois’,’%YAnnée%mMois’);
3.4.4Fonction de contrôle du processus
Fonction de contrôle du processus Description de la fonction
IF(value,t ,f) SivalueC'est vrai.,Retourt,Sinon, retournez àf
IFNULL(value1, value2) Sivalue1Pas vide,Retourvalue1,Sinon, retournez àvalue2
CASE WHEN Conditions1 THEN result1 WHEN Conditions2 THEN result2…[ELSE resultn] END équivalent àJavaDeif…else if…
CASE expr WHEN Valeur constante1 THEN Valeur1 WHEN Valeur constante1 THEN Valeur1…[ELSE Valeurn] END équivalent àJavaDeswitch
– 1、IFFonctions
– Besoins: S'il y a un bonus , Affiche le bonus Final ,Si ce n'est pas le cas,Afficher0
– IF(expr1,expr2,expr3) expr1Conditions,expr1 Oui, il est affiché. expr2Valeur de,Afficher autrementexpr3Valeur de
select first_name , salary , if(salary>10000,‘Cols blancs’,‘Col bleu’) from employees;
– IFNULL(expr1,expr2) Siexpr1Pournull,Afficherexpr2Valeur,Si nonnull Affiche sa propre valeur
select commission_pct , IFNULL(commission_pct,0) from employees;
select manager_id , IFNULL(manager_id,‘Boss’) from employees;

– 2、CASEFonctions
/*
La situation1 :Similaire àswitchDéclarations, Peut réaliser un jugement équivalent
CASE Expression
WHEN Valeur1 THEN Résultats1
WHEN Valeur2 THEN Résultats2

ELSE Résultatsn
END
/
– CAS: Le numéro de département est 30, Le salaire est indiqué comme suit: 2X; Le numéro de département est 50, Le salaire est indiqué comme suit: 3X; Le numéro de département est 60, Le salaire est indiqué comme suit: 4X;Sinon, rien ne change.;
– Afficher le numéro de département,Nouveaux salaires, Ancien salaire
select
department_id ‘Numéro du Département’ ,
salary ‘ Ancien salaire ’ ,
case department_id
when 30 then salary
2
when 50 then salary3
when 60 then salary
4
else salary
end as ‘newSalary’
from employees;

/*
La situation2:Similaire à multipleIFDéclarations,Réaliser le jugement d'intervalle
CASE
WHEN Conditions1 THEN Résultats1
WHEN Conditions2 THEN Résultats2

ELSE Résultatsn
END
*/
– CAS:Si le salaire>20000,Niveau d'affichageA;Salaire>15000,Niveau d'affichageB;Salaire>10000,Niveau d'affichageC;Sinon,AfficherD
select
salary as ‘Salaire’,
case
when salary>20000 then ‘NiveauA’
when salary>15000 then ‘NiveauB’
when salary>10000 then ‘NiveauC’
else ‘NiveauD’
end as ‘level’
from employees;


3.4.5 Groupe(Agrégation)Fonctions
Les fonctions de regroupement sont souvent utilisées pour effectuer des calculs statistiques sur un ensemble de données , Et finalement obtenir une valeur , Aussi appelé fonction d'agrégation ou fonction statistique ,Les fonctions agrégées sont des fonctions utilisées pour effectuer des opérations longitudinales.


COUNT():La colonne spécifiée par les statistiques n'est pasNULLNombre de lignes d'enregistrement pour;

MAX():Calculer la valeur maximale de la colonne spécifiée,Si la colonne spécifiée est un type de chaîne,Alors, utilisez l'opération de tri de chaîne;

MIN():Calculer la valeur minimale pour la colonne spécifiée,Si la colonne spécifiée est un type de chaîne,Alors, utilisez l'opération de tri de chaîne;

SUM():Calcule la somme des valeurs des colonnes spécifiées,Si le type de colonne spécifié n'est pas un type numérique,Le résultat du calcul est0;

AVG():Calculer la moyenne des colonnes spécifiées,Si le type de colonne spécifié n'est pas un type numérique,Le résultat du calcul est0;

– 1、Les cinq fonctions de regroupement ci - dessus sont ignoréesnullValeur,Sauf quecount()
– 2、sumEtavgGénéralement utilisé pour traiter les types numériques , max、min、countPeut traiter n'importe quel type de données
– 3、Tout va bien.distinctUtiliser,Utilisé pour compter les résultats après l'enlèvement du poids
– 4、countLes paramètres de:Champ、Valeur constante,En général1
La fonction d'agrégation ne peut pas être utilisée dansWHEREMoyenne


– Mauvaise utilisation
SELECT MIN(salary),manager_id
FROM employees
WHERE manager_id IS NOT NULL and MIN(salary)>=6000
GROUP BY manager_id;


– Utilisation correcte
SELECT MIN(salary),manager_id
FROM employees
WHERE manager_id IS NOT NULL
GROUP BY manager_id
HAVING MIN(salary)>=6000;
3.5Requête de groupe
Utilisé lorsque des requêtes groupées sont nécessairesGROUP BYClause, Par exemple, demandez le salaire moyen de chaque ministère , Cela signifie qu'il faut utiliser les ministères pour grouper .

Syntaxe

select Liste des requêtes

from Nom du tableau

where Critères de filtrage

group by Liste des groupes

having Filtre après regroupement

order by Trier la liste;
Ordre d'exécution

from Clause

where Clause

group by Clause

having Clause

select Clause

order by Clause
Utilisation

Les listes de requêtes sont souvent , Grouper les fonctions et les champs groupés

Il existe deux types de filtres dans les requêtes groupées :

Table de base filtrée Mots clés utilisés Emplacement
Filtrage avant regroupement Tableau original where group byDevant
Filtre après regroupement Ensemble de résultats groupés having group byDerrière.
Ordre:where——group by ——having

Résumé:1. Les fonctions de regroupement ne peuvent être conditionnelles que dans havingDerrière

 2.Une fois groupés,select La liste des requêtes ne peut apparaître que group by Champs de regroupement après , Ou une fonction de groupe

3.6Requête de connexion
La requête de connexion est également appelée requête Multi - tables, Lorsque l'instruction de requête implique des champs provenant de plusieurs tables ,La requête de connexion est utilisée

Requête directe Multi - tables ,Des problèmes peuvent survenir: Produit cartésien, Le nombre d'enregistrements est Tableau1 Oui.mD'accord,Tableau2Oui.nD'accord,Résultats=m*nD'accord

# Voir les nouvelles données du tableau
select count() from girl; – 12
select count(
) from boy; – 6

# Le produit cartésien apparaît
select girl.name ‘Femme’ , boy.name ‘Hommes’ from girl , boy; – 72
Cause de l'événement:Aucune condition de connexion valide,Toutes les lignes de tous les tableaux sont reliées entre elles

Comment éviter:Pour éviter les ensembles cartésiens, Ça pourrait être dans WHERE Ajouter une condition de connexion valide

#Solutions:Ajouter une condition de connexion valide
select girl.name ‘Femme’ , boy.name ‘Hommes’ from girl , boy where girl.boyfriend_id = boy.id;
Analyse:

Tant de requêtes de table produisent des résultats qui ne sont pas ce que nous voulons , Comment éliminer les répétitions , Et les enregistrements indésirables , Filtrage conditionnel, bien sûr . Il y a généralement une association entre plusieurs tables à interroger , Ensuite, le produit cartésien est éliminé par la relation de corrélation .

Un.、 Connexion en mode traditionnel :Connexion équivalente——Connexion non équivalente

1.Résultats de la connexion équivalente = Intersection de plusieurs tables
2.nConnexions de table,Au moinsn-1Conditions de connexion
3.Plusieurs tableaux ne sont pas primaires ou secondaires,Aucune exigence de séquence
4.Alias de table en général,Améliorer la lecture et les performances


2.、sql99Syntaxe:Adoptionjoin Connexion par mot - clé

Sens:1999Lancé ensqlSyntaxe
Soutien: Connexion interne:Connexion équivalente Connexion non équivalente Auto - connexion
Connexion externe: Connexion externe gauche Connexion externe droite Toutes les connexions externes(Non pris en charge)
Connexion croisée :Produit cartésien
Connexion naturelle
– SQL92EtSQL99La différence entre:
SQL99,Utiliser JOIN Mots clés Au lieu de la virgule précédente , Et les conditions de connexion et de filtrage sont séparées , Améliorer la lisibilité .!
3.6.1Connexion interne
1). Syntaxe
SELECT Liste des requêtes

FROM Nom du tableau1 Alias [INNER] JOIN Nom du tableau2 Alias

ON Conditions de connexion

WHERE Critères de filtrage

GROUP BY Liste des groupes

HAVING Filtre après regroupement

ORDER BY Trier la liste;
2). Connexion équivalente
– 1. Connexion simple
#CAS:Demander le nom de l'employé et du Ministère
select e.first_name ‘Nom de l'employé’, d.department_name ‘Nom du Département’
from employees e inner join departments d
on e.department_id = d.department_id;

– 2.Ajouter un filtre
#CAS:Numéro du Département de la requête>100 Nom du Département et de la ville où
select d.department_name ‘Nom du Département’, l.city ‘ Nom de la ville ’
from departments d join locations l
on d.location_id = l.location_id
where d.department_id > 100;

– 3.Ajouter un groupe
#CAS:Nombre de départements interrogés par ville
select l.city ‘Les villes’ , count(d.department_id) ‘Nombre de départements’
from departments d join locations l
on d.location_id = l.location_id
group by l.city;

– 4.Ajouter un groupe+Trier
#CAS: Demander le nombre d'employés dans le Ministère >10Nom du Département, Et par ordre décroissant de nombre d'employés
select d.department_name ‘Nom du Département’ , count(e.employee_id) ‘Nombre d'employés’
from employees e join departments d
on e.department_id = d.department_id
group by d.department_name
having count(e.employee_id)>10
order by count(e.employee_id) desc;

3). Connexion non équivalente
#CAS:Numéro du Département de la requête10-90 Entre les niveaux de salaire des employés , Et groupés par niveau
select e.salary , e.department_id , g.grade_level ‘Niveau de rémunération’
from employees e join job_grades g
on e.salary BETWEEN g.lowest_sal and g.highest_sal
where e.department_id BETWEEN 10 and 90;
4). Auto - connexion
#3)、Auto - connexion
#CAS: Demander le nom de l'employé et le nom du chef correspondant
select e.first_name ‘Personnel’ , m.first_name ‘Leader’
from employees e join employees m
on e.manager_id = m.employee_id;
3.6.2Connexion externe
1). Description
Résultats de la requête pour tous les enregistrements dans le tableau principal , S'il y a une correspondance à partir du tableau , Afficher les correspondances ; S'il n'y a pas de correspondance à partir du tableau ,Affichernull

2). Scénario d'application
Il est généralement utilisé pour interroger les enregistrements dans la table principale mais pas dans la table esclave

3). Utilisation
Si vous êtes connecté à gauche ,left joinTableau principal à gauche;

Si vous êtes connecté à droite ,right joinTableau principal à droite;

Gauche./Connexion externe droite = Résultats de la requête de connexion interne + Enregistrements dans le tableau principal et non dans le tableau suivant

Toutes les connexions externes = Résultats de la requête de connexion interne + Tableau1Mais le tableau2 Aucun enregistrement dans + Tableau2Mais le tableau1 Aucun enregistrement dans

4). Syntaxe
select Liste des requêtes

from Tableau1 Alias

left | right | full [outer] join Tableau2 Alias

on Conditions de connexion

where Critères de filtrage;
5). Connexion externe gauche left outer join
SELECT FROM emp e LEFT OUTER JOIN dept d ON e.deptno=d.deptno;
Attention!:OUTERPeut être omis

La connexion à gauche est d'abord de rechercher la table à gauche(C'est - à - dire principalement avec la table de gauche),Ensuite, interrogez le tableau de droite,Le tableau de droite montre les conditions remplies,Affichage des conditions non rempliesNULL.

6). Connexion externe droite right outer join
SELECT FROM emp e RIGHT OUTER JOIN dept d ON e.deptno=d.deptno;
La connexion à droite consiste à interroger d'abord tous les enregistrements de la table de droite,Puis le tableau de gauche montre que les conditions sont remplies,Affichage insatisfaisantNULL.Par exemple, dansdeptDans le tableau40 Le Ministère n'a pas d'employés , Mais dans la connexion droite ,Sidept Tableau de droite , Alors, on trouvera toujours 40Secteur, Mais l'information correspondante sur l'employé est NULL.

Gauche./Connexion externe droite = Résultats de la requête de connexion interne + Enregistrements dans le tableau principal et non dans le tableau suivant

7). Toutes les connexions externes full outer join
Une connexion complète consiste à interroger tous les enregistrements de la table ,Et la répétition n'est pas autorisée.Note::mysql Non pris en charge.

Toutes les connexions externes = Résultats de la requête de connexion interne + Tableau1Mais le tableau2 Aucun enregistrement dans + Tableau2Mais le tableau1 Aucun enregistrement dans

#Toutes les connexions externes(Non pris en charge)
SELECT g.name , b.name
FROM boy b
FULL OUTER JOIN girl g ON g.boyfriend_id = b.id;
– mysql Toutes les connexions externes peuvent être réalisées de la manière suivante
– UNION Requête conjointe
– Toutes les connexions externes
/*
select Liste des requêtes from Tableau1 where Critères de filtrage
union
select Liste des requêtes from Tableau2 where Critères de filtrage

1、 Le nombre de colonnes de requête de plusieurs déclarations de requête à fédérer doit être constant ,Type de requête、 Il est préférable que les champs aient la même signification
2、union Mise en œuvre de la requête de déstockage
union all Mettre en œuvre toutes les requêtes ,Contient des duplicatas

*/

Trouvez toutes les informations sur les déesses et les hommes
SELECT * FROM girl g RIGHT JOIN boy b on g.boyfriend_id = b.id
UNION
SELECT * FROM girl g LEFT JOIN boy b on g.boyfriend_id = b.id
3.6.3 Connexion croisée(Produit cartésien) CROSS JOIN
#Connexion croisée
SELECT g.name , b.name
FROM boy b
CROSS JOIN girl g ;
3.6.4 Connexion naturelle(Peu fréquent) NATURAL JOIN
Tout le monde sait aussi, Les requêtes de connexion produisent des produits cartésiens inutiles , Nous utilisons habituellement l'équation de la relation clé étrangère primaire pour la diviser .

Et la connexion naturelle n'a pas besoin que vous donniez l'équation principale de la clé étrangère , Il va automatiquement trouver cette équation :

Colonnes avec des noms et des types de champs identiques dans les deux tableaux joints comme condition ,Par exempleempEtdept Les tables existent. deptnoColonnes,Et le même type, Donc, ils sont naturellement connectés pour trouver !

Naturellement, il y a d'autres façons de trouver des conditions , Mais il peut y avoir des problèmes d'autres façons !

SELECT FROM emp NATURAL JOIN dept; – Intérieur

SELECT FROM emp NATURAL LEFT JOIN dept; – Extérieur gauche

SELECT FROM emp NATURAL RIGHT JOIN dept; – À droite.
3.7Sous - Requête
Concept

Apparaissant à l'intérieur d'autres déclarations selectDéclarations,Appelé sous - requête ou requête interne

Autres imbriqués à l'intérieur select Instruction de requête pour l'instruction ,Appelé requête principale ou requête externe

Les sous - requêtes ne doivent pas nécessairement apparaître dans selectÀ l'intérieur de l'énoncé,C'est juste apparu dansselect Plus de temps à l'intérieur de l'énoncé !

Classification

Trier par emplacement où la Sous - Requête apparaît :

 1、selectDerrière

​ Exigences: Le résultat de la Sous - requête est une seule ligne et une seule colonne (Sous - Requête scalaire)

 2、fromDerrière

​ Exigences: Le résultat de la Sous - requête peut être plusieurs lignes et plusieurs colonnes

 3、whereOuhavingDerrière

​ Exigences: Le résultat de la Sous - requête doit être une seule colonne ;Sous - requête à une ligne;Sous - Requête multiligne

 4、existsDerrière

​ Exigences: Le résultat de la Sous - requête doit être une seule colonne (Sous - requête connexe)

Parmi euxwhereOuhaving C'est le but. :

Sous - requête à une ligne
Caractéristiques: L'ensemble de résultats de la Sous - requête n'a qu'une ligne, une colonne
Sous - Requête multiligne
Caractéristiques: L'ensemble de résultats de la Sous - requête a plus d'une ligne et une colonne

Caractéristiques

1、 Les déclarations de sous - Requête doivent être placées entre parenthèses , Améliorer la lisibilité du Code

2、 La Sous - requête est exécutée avant la requête principale ,En général, La requête principale utilisera les résultats de la Sous - Requête

3、 Si la Sous - requête est placée dans une condition ,En général, La Sous - requête doit être placée à droite de la condition

 Exemple:where job_id>(Sous - Requête)
Ça ne peut pas être écrit comme:where (Sous - Requête)<job_id

4、 Utilisez l'opérateur de ligne unique pour la Sous - requête de ligne unique : > < >= <= = <>

 Utiliser des opérateurs multilignes pour les sous - requêtes multilignes : in 、any 、all 、not in
in : Déterminer si un champ est dans la liste spécifiée x in(10,30,50)
any : Déterminer si la valeur d'un champ satisfait à l'un ou l'autre
x>any(10,30,50) x>min() x=any(10,30,50) x in(10,30,50)
all : Déterminer si la valeur d'un champ satisfait à toutes les valeurs x >all(10,30,50) x >max()

3.8Requête pagée
Scénario d'application

Quand les données sur la page ,Affichage incomplet d'une page, L'affichage de la pagination est nécessaire

Requête pagéesql La commande demande le serveur de base de données ——> Le serveur répond à plusieurs requêtes de données ——>Page d'accueil

Syntaxe

 select Liste des requêtes
from Tableau1 Alias
join Tableau2 Alias
on Conditions de connexion
where Critères de filtrage
group by Groupe
having Filtre après regroupement
order by Trier la liste
limit Index des entrées de départ, Nombre d'entrées affichées

Parmi eux LIMIT Ligne de départ utilisée pour qualifier les résultats de la requête, Et le nombre de lignes par page .

MySQL limitMots clés

Oracle rownumMots clés

Caractéristiques

 ① Index des entrées de départ si elles ne sont pas écrites ,Par défaut0

​ ②limit Deux paramètres sont pris en charge plus loin
​ Paramètres1: Index des entrées de départ affichées
​ Paramètres2:Nombre d'entrées

Formule
Si le nombre de pages à afficher est page, Le nombre d'entrées par page est size

select *
from employees
limit (page-1)*size , size;


Par exemple:
page size=10
1 limit 0,10
2 limit 10,10
3 limit 20,10
4 limit 30,10
3.9Requête conjointe
Scénario d'application

Lorsque les résultats de la requête proviennent de plusieurs tables , Mais il n'y a pas d'association entre plusieurs tableaux , Les requêtes fédérées sont souvent utilisées à cette époque ,Aussi appeléunionRequête

1、 Le nombre de colonnes de requête de plusieurs déclarations de requête à fédérer doit être constant ,Type de requête、 Il est préférable que les champs aient la même signification
2、union Mise en œuvre de la requête de déstockage
union all Mettre en œuvre toutes les requêtes ,Contient des duplicatas

Résumé: Ordre des requêtes fréquentes
from Clause

 join Clause
on Clause
where Clause
group by Clause
having Clause
select Clause
distinct Clause
order by Clause
limit Clause

Quatre.DML Opérations de données

1.1 Spécifiez le champ à insérer
Syntaxe

INSERT INTO Nom du tableau(Nom de la colonne1,Nom de la colonne2, …) VALUES(Valeur1, Valeur2)

INSERT INTO stus(sid, sname,age,gender) VALUES(‘s_1001’, ‘zhangSan’, 23, ‘male’);

INSERT INTO stus(sid, sname) VALUES(‘s_1001’, ‘zhangSan’);
1.2 Insérer tous les champs
Syntaxe

INSERT INTO Nom du tableau VALUES(Valeur1,Valeur2,…)

Parce qu'aucune colonne à insérer n'a été spécifiée , Indique la valeur de toutes les colonnes insérées dans l'ordre dans lequel elles ont été créées

INSERT INTO stus VALUES(‘s_1002’, ‘liSi’, 32, ‘female’);
Attention!: Toutes les données de chaîne doivent utiliser des guillemets simples

2.Modifier les données
UPDATE Nom du tableau SET Nom de la colonne1=Valeur1, … Nom de la colonnen=Valeurn [WHERE Conditions]

UPDATE stus SET sname=‘zhangSanSan’, age=‘32’, gender=‘female’ WHERE sid=‘s_1001’;

UPDATE stus SET sname=‘liSi’, age=‘20’ WHERE age>50 AND gender=‘male’;

UPDATE stus SET sname=‘wangWu’, age=‘30’ WHERE age>60 OR gender=‘female’;

3.Supprimer les données
DELETE FROM Nom du tableau [WHERE Conditions]

DELETE FROM stus WHERE sid=‘s_1001’;

DELETE FROM stus WHERE sname=‘chenQi’ OR age > 30;

DELETE FROM stus;
DELETE FROM stus WHERE sid=‘s_1001’;

DELETE FROM stus WHERE sname=‘chenQi’ OR age > 30;

DELETE FROM stus;
TRUNCATE TABLE Nom du tableau

TRUNCATE TABLE stus;
/*
Questions d'entrevue
delete
1. DMLFonctionnement Données du tableau
2. Peut être porté lors de la suppression whereConditions
3. DELETE FROM Nom du tableau WHERE Conditions;
4. Renvoie le nombre de lignes touchées après la suppression
5. SoutienTCLFonctionnement,Données supprimées, Peut être reporté en fonction de la transaction rollback,Pour récupérer
6. Après avoir supprimé toutes les données , Les valeurs d'auto - croissance suivront de près la tendance à la baisse

 truncate
1. Données du tableau
2. La suppression n'est pas autorisée whereConditions
3. Syntaxe : truncate table Nom du tableau;
4. Nombre de lignes touchées non retournées après suppression
5. Non pris en chargeTCLFonctionnement
6. Supprimer toutes les données , Les valeurs d'auto - croissance reviennent à leur valeur de départ et continuent de croître
7. Supprimer directement la structure de la table entière , Les données du tableau ne seront pas affectées
8. Rapport d'efficacité de la mise en œuvredeleteÉlevé
drop
1. DDLTableau des opérations
2. La suppression n'est pas autorisée whereConditions
3. Syntaxe:drop table [if exists] Nom du tableau;
4. Nombre de lignes touchées non retournées après suppression
5. Non pris en chargeTCLFonctionnement
6. Supprimer la structure du tableau, Toutes les ressources allouées lors de la création de la table seront également libérées

*/

Cinq.DDLLangage de définition des données

Type de données:
Type numérique,Type de caractère,Type de temps,Type binaire

1.Type numérique
– int:Taille , La valeur par défaut est11 ,Ici.11 Longueur numérique autorisée à écrire IntPourcentage4Octets
– double/float:Type de flotteur,Par exempledouble(5,2)Indique le maximum de5Bits,Il doit y avoir2Décimale, C'est - à - dire que la valeur maximale est 999.99;
– decimal:Type de numéro de point, Utilisez ce type pour représenter l'argent , Parce qu'il n'y a pas de problème de précision manquante ;

2.Type de caractère
/*
char:
1.Type de chaîne de longueur fixe;char(n) nLe champ d'application est0-255Entier entre
2. Combien de temps dure la distribution effective? , Combien de temps? ,
3.Peut ne pas spécifier la longueur ,Par défaut1 ,
4. Genre de stockage ,Marquage
5.Lors de l'interrogation des données,L'espace de queue est supprimé
6.Efficacité élevée
varchar:
1.Type de chaîne de longueur variable;varchar(n) nLe champ d'application est0~65535Entier entre
2. Combien de temps faut - il réellement utiliser , Combien de temps? ,
3.La longueur doit être spécifiée ,
4.Stockage Nom,Mot de passe,Numéro de téléphone portable,Adresse du domicile
5.Lors de l'interrogation des données, L'espace de queue sera laissé
6.Rapport d'efficacité char Faible
text:
1.Type de chaîne; Indique que le texte long est stocké Stockage de la description du produit
/

3 Type de temps
/

date:Type de date,Le format est:yyyy-MM-dd;

time:Type de temps,Le format est:hh:mm:ss

timestamp/datetime:Type d'horodatage;Date+Temps Ce type deyyyyMMddhhmmssOui.
/

4.Type binaire
/

Type Taille(Octets)
TinyBlob 255
Blob 65k
MediumBlob 16m
LongBlob 4G
*/

Contraintes

#Contraintes
/*
1.Contrainte de la clé primaire
primary key Indique que le champ actuel est unique et non vide , La table entière n'a qu'une seule clé primaire , Mais il peut y avoir une clé primaire commune

2.Contraintes des clés étrangères
foreign key La valeur du champ courant doit provenir de la valeur de la clé primaire dans un tableau , Le tableau entier permet de définir plusieurs contraintes de clés étrangères

3.Contrainte non vide
not null Le champ actuel ne peut pas être vide ,Obligatoire, Autoriser plusieurs paramètres
4.Contrainte par défaut
default Le champ actuel peut ne pas remplir de valeur ,Il y aura des valeurs par défaut, Insérer l'utilisation si nécessaire defautMots clés, Autoriser plusieurs réglages


5.Contraintes uniques
unique Le champ actuel ne peut pas être dupliqué , Peut être utilisé pour les surnoms ,Numéro de téléphone portable,Champ unique, Autoriser plusieurs contraintes uniques

6.Vérifier les contraintes:MYSQLNon pris en charge OracleSoutien
check Lorsque la valeur insérée doit être dans notre plage

/

#Questions d'entrevue: La différence entre une contrainte de clé primaire et une contrainte unique ?
/

Mots clés Le sens Nombre d'occurrences Clé commune
Contrainte de la clé primaire PRIMARY KEY Non vide et unique Un seul. Soutien
Contraintes uniques UNIQUE Unique Plusieurs Soutien
/

#Questions d'entrevue:Différences entre les contraintes au niveau des colonnes et des tableaux?
/

Contraintes au niveau des colonnes:
1. Directement après le champ de déclaration Nom du champ Type de données Contraintes
2. Prise en charge des contraintes de clés primaires 、Contrainte par défaut、Contraintes uniques、Vérifier les contraintes、Contrainte non vide
3. Impossible de personnaliser le nom de la contrainte , Le nom de champ est généralement utilisé par défaut comme nom de contrainte

Contraintes au niveau du tableau
1. Après la fin de toutes les déclarations de champ
2. Prise en charge des contraintes de clés primaires 、Contraintes uniques、Vérifier les contraintes、Contraintes des clés étrangères
3.Si utiliséconstraint, Nom de contrainte personnalisé

*/

版权声明:本文为[Vers le Haut]所创,转载请带上原文链接,感谢。 https://javamana.com/2022/01/202201080601056106.html