Base de données MySQL - résumé des bases (présentation, SQL, fonctions, contraintes, requêtes multi-tables, transactions)

Table des matières

Aperçu

concept

MySQL démarre et s'arrête

connexion client

Base de données relationnelle (SGBDR)

SQL

type de données

DDL

DML 

DQL

DCL 

fonction

Fonctions de chaîne

Fonction numérique

fonction date

fonction de processus

contrainte

Requête multi-tables

Relation à plusieurs tables

Produit cartésien

jointure interne

jointure externe

auto-connexion 

Requête syndicale

sous-requête

affaires


Aperçu

concept

  1. Base de données (DB) - un entrepôt où les données sont stockées
  2. Système de gestion de base de données (SGBD) - grand logiciel qui manipule et gère les bases de données
  3. Système de base de données (DBS) - est un système composé d'une base de données et de son logiciel de gestion.
  4. SQL - un langage de programmation pour exploiter des bases de données relationnelles, un ensemble de normes

MySQL démarre et s'arrête

démarrer

démarrage net mysql80

arrêt

arrêt net mysql80

connexion client

commande cmd

mysql [-h 127.0.0.1] [-P 3306] -u racine -p

Base de données relationnelle (SGBDR)

Une base de données basée sur un modèle relationnel et composée de plusieurs tables bidimensionnelles interconnectées.

Caractéristiques:

  1. Utilisez des tableaux pour stocker les données dans un format unifié pour une maintenance facile
  2. Utilisation du langage SQL, normes unifiées et facile à utiliser 

SQL

type de données

Types numériques : principalement des entiers de différentes tailles.

Type de chaîne : clarifiez principalement la différence entre char (chaîne de longueur fixe) et varchar (chaîne de longueur variable).

Type de date : DATE couramment utilisé, notez que la date doit être écrite entre guillemets simples :

taper décrire taille Format portée
DATE valeur de date 3 AAAA-MM-JJ 1000-01-01 au 9999-12-31

DDL

Langage de définition de données Langage de définition de données, utilisé pour définir des objets de données (bases de données, tables, champs)

Opérations de base de données

1. Interroger toutes les bases de données : SHOW DATABASES ;
2. Interroger la base de données actuelle : SELECT DATABASE();
3. Créer : CREATE DATABASE IF NOT EXISTS nom de la base de données DEFAULT CHARSET jeu de caractères COLLATE collation ;

4. Supprimer : DROP DATABASE IF EXISTS nom de la base de données ;

5. Utiliser : UTILISER le nom de la base de données ;

Opérations sur les tables

1. Interrogez toutes les tables de la base de données actuelle

SHOW TABLES;

2. Structure de la table de requête

DESC 表名;

3. Interrogez l'instruction de création de table de la table spécifiée

SHOW CREATE TABLE 表名;

4.Créer un tableau

CREATE TABLE 表名(
    字段1 字段1类型[COMMENT 字段1注释],
    字段2 字段2类型[COMMENT 字段2注释],
    字段3 字段3类型[COMMENT 字段3注释],
    ......
    字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];

5. Ajouter des champs

ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释];

6. Modifier le type de données

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

7. Modifier les noms de champs et les types de champs

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释];

8. Supprimer les champs

ALTER TABLE 表名 DROP 字段名;

9. Modifier le nom de la table

ALTER TABLE 表名 RENAME TO 新表名;

10. Supprimer le tableau

DROP TABLE [IF EXISTS] 表名;

11. Supprimez la table spécifiée et recréez la table

TRUNCATE TABLE 表名;

DML 

Le nom anglais complet de DML est Data Manipulation Language (langage de manipulation de données), qui est utilisé pour ajouter, supprimer et modifier des enregistrements de données dans les tables de la base de données.

1. Ajoutez des données au champ spécifié :

INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...);

2. Ajoutez des données à tous les champs :

INSERT INTO 表名 VALUES(值1,值2,...);

3. Ajoutez des données par lots :

INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...),
                                           (值1,值2,...),
                                           (值1,值2,...),...;
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),...;

4. Modifier les données :

UPDATE 表名 SET 字段名1=值1,字段名2=值2,... [WHERE 条件];

5. Supprimer les données :

DELETE FROM 表名 [WHERE 条件];

DQL

Le nom anglais complet de DQL est Data Query Language, qui est un langage de requête de données utilisé pour interroger les enregistrements dans les tables des bases de données.

  • Requête de base
  • Requête conditionnelle (OÙ)
  • Fonctions d'agrégation (count, max, min, avg, sum)
  • Requête de groupe (GROUP BY)
  • Requête de tri (ORDER BY)
  • Requête de pagination (LIMIT)

Mentionnez brièvement quelques points de connaissances faciles à oublier : 

1. Mot-clé pour supprimer les enregistrements en double : distinct

SELECT DISTINCT 字段列表 FROM 表名;

 2. La différence entre où et avoir (mot-clé de requête de groupe)

  • Le timing d'exécution est différent : Where filtre avant le regroupement, si la condition Where n'est pas remplie, le regroupement ne participera pas ; tandis que Have filtre les résultats après le regroupement.
  • Les conditions de jugement sont différentes : où ne peut pas juger la fonction globale, mais ayant le peut.

Ordre d'exécution : où > fonction d'agrégation > avoir

3. Dans une requête de tri : S'il s'agit d'un tri multi-champs, lorsque la valeur du premier champ est la même, le deuxième champ sera trié.

4. Requête de pagination :

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

L'index de départ commence à 0, index de départ = (numéro de page de requête-1) * nombre d'enregistrements affichés sur chaque page. La requête de pagination
est un dialecte de la base de données. Différentes bases de données ont des implémentations différentes. Dans MySQL, c'est LIMIT
si le premier page de données est interrogée. , l'index de départ peut être omis, directement abrégé en limite 10

5. Ordre d'écriture et ordre d'exécution de l'instruction de requête :

Ordre d'écriture :

SELECT
    liste de champs
FROM
    liste de noms de table
WHERE
    liste de conditions
GROUP BY
    liste de champs de regroupement
HAVING
    liste de conditions de post-regroupement
ORDER BY
    liste de champs de tri
LIMIT
    paramètres de pagination

-------------------------------------------------- ------------

Ordre d'exécution :

FROM
    liste de noms de table
WHERE
    liste de conditions
GROUP BY
    liste de champs de regroupement
HAVING
    liste de conditions de post-regroupement liste     de champs
SELECT ORDER BY     liste de champs de tri LIMIT     paramètres de pagination




DCL 

Le nom anglais complet de DCL est Data Control Language, qui est utilisé pour gérer les utilisateurs de la base de données et contrôler les autorisations d'accès à la base de données.

1. Interroger les utilisateurs

USE mysql;
SELECT * FROM user;

2.Créer un utilisateur

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

3. Modifier le mot de passe de l'utilisateur

ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';

4. Supprimer l'utilisateur

DROP USER '用户名'@'主机名';

Avis:

  • Le nom d'hôte peut utiliser le caractère générique « % ».
  • Ce type de développeur SQL l'exploite rarement, et est principalement utilisé par les DBA (Database Administrator). pour une brève compréhension

5. Autorisations de requête

SHOW GRANTS FOR '用户名'@'主机名';

6. Accorder des autorisations

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

7. Révoquer les autorisations

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

Avis:

  • Utilisez des virgules pour séparer plusieurs autorisations.
  • Lors de l'autorisation, le nom de la base de données et le nom de la table peuvent être remplacés par un caractère générique *, qui représente tout

fonction

Fonctions de chaîne

fonction Fonction
CONCAT(S1,S2,...Sn) Concaténation de chaînes, concaténer S1, S2,...Sn en une chaîne
INFÉRIEUR(str) Convertir toutes les chaînes de caractères en minuscules
SUPÉRIEUR(str) Convertir toutes les chaînes de caractères en majuscules
LPAD(chaîne,n,pad) Remplissage gauche, utilisez le pad de chaîne pour remplir le côté gauche de la chaîne afin d'atteindre n longueurs de chaîne

RPAD(chaîne,n,pad)

Remplissage droit, remplissez le côté droit de la chaîne avec un tampon de chaîne pour atteindre n longueur de chaîne
TRIM(chaîne) Supprimer les espaces de début et de fin de la chaîne
SOUS-CHAÎNE(str,start,len) Renvoie une chaîne de longueur len à partir de la position de départ de la chaîne str

Fonction numérique

fonction Fonction
PLAFOND(x) Arrondi
ÉTAGE(x) Arrondir vers le bas
MOD(x,y) Renvoie le module de x/y
COURU() Renvoie un nombre aléatoire compris entre 0 et 1, avec des décimales aléatoires et excluant 0 et 1.
ROND(x,y) Trouver la valeur arrondie du paramètre x, en conservant y décimales

fonction date

fonction Fonction
CURDATE() Renvoyer la date actuelle
CURTIME() Retourner l'heure actuelle
MAINTENANT() Renvoie la date et l'heure actuelles
ANNÉE(date) Obtenez l'année de la date spécifiée
MOIS(date) Obtenez le mois de la date spécifiée
JOUR(date) Obtenir la date de la date spécifiée
DATE_ADD (date, type d'expression INTERVAL) Renvoie une valeur date/heure plus une valeur temporelle expr
DATEDIFF(date1,date2) Renvoie le nombre de jours entre l'heure de début date1 et l'heure de fin date2

fonction de processus

Fonctions similaires à l'opérateur ternaire en langage C

fonction Fonction
SI(valeur,t,f) Si la valeur est vraie, renvoie t, sinon renvoie f
IFNULL(valeur1,valeur2) Si la valeur n'est pas vide, renvoie la valeur 1, sinon renvoie la valeur 2
CAS QUAND [val1] ALORS [res1] ... ELSE [par défaut] FIN Si val1 est vrai, renvoie res1,... sinon renvoie la valeur par défaut
CASE [expr] QUAND [val1] ALORS [res1] ... ELSE [par défaut] FIN Si la valeur de expr est égale à val1, renvoie res1,...sinon renvoie la valeur par défaut

contrainte

  1. Concept : Les contraintes sont des règles qui agissent sur les champs d'une table pour limiter les données stockées dans la table.
  2. Objectif : Garantir l’exactitude, la validité et l’intégrité des données de la base de données.
  3. Classification:
contrainte décrire Mots clés
contrainte non nulle Les données de ce champ ne peuvent pas être NULL PAS NUL
contrainte unique Assurez-vous que toutes les données de ce champ sont uniques et non dupliquées UNIQUE
contraintes de clé primaire La clé primaire est l'identifiant unique d'une ligne de données et doit être non vide et unique. CLÉ PRIMAIRE
Contraintes par défaut Lors de la sauvegarde des données, si la valeur de ce champ n'est pas précisée, la valeur par défaut est utilisée DÉFAUT
Vérifier les contraintes (après la version 8.0.16) Enregistrez les valeurs de champ qui répondent à une certaine condition VÉRIFIER
contraintes de clé étrangère Utilisé pour établir une connexion entre les données des deux tables afin d'assurer la cohérence et l'intégrité des données. CLÉ ÉTRANGÈRE

Pour les contraintes générales, nous pouvons comprendre leur utilisation en regardant les exemples précédents :

  •  Complétez la création du formulaire comme requis :
Nom de domaine Signification du champ Type de champ Restrictions mot-clé de contrainte
identifiant Identifiant unique int Clé primaire, et grandit automatiquement CLÉ PRIMAIRE, AUTO_INCREMENT
nom Nom varchar(10) Pas vide et unique PAS NULL,UNIQUE
âge âge int Supérieur à 0 et inférieur ou égal à 120 VÉRIFIER
statut État caractère(1) Si cette valeur n'est pas spécifiée, la valeur par défaut est 1 DÉFAUT
genre genre caractère(1) aucun
create table user(
    id int primary key auto_increment comment '主键',
    name varchar(10) not null unique comment '姓名',
    age int check(age > 0 and age <= 120) comment '年龄',
    status char(1) default '1' comment '状态',
    gender char(1) comment '性别'
) comment '用户表';

Focus sur l'utilisation des clés étrangères :

Ajouter une clé étrangère

CREATE TABLE 表名(
    字段名 数据类型,
    ...
    [CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主列表名)
);

-- 或
ALTER TABLE 表名 
    ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCE 主表 (主列表名);

Supprimer la clé étrangère

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

Comportement de suppression/mise à jour de clé étrangère

Comportement illustrer
PAS D'ACTION 当在父表中删除/更新对应记录时,首先检查记录是否有对应外键,如果有则不允许删除/更新。(与RESTRICT一致)
RESTRICT 当在父表中删除/更新对应记录时,首先检查记录是否有对应外键,如果有则不允许删除/更新。(与NO ACTION一致)
CASCADE 当在父表中删除/更新对应记录时,首先检查记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。
SET NULL 当在父表中删除对应记录时,首先检查记录是否有对应外键,如果有则设置子表中该外键值为null(要求该外键允许取null)
SET DEFAULT 父表有变更时,子表将外键列设置成一个默认的值(Innodb不支持)
ALTER TABLE 表名 
    ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCE 主表 (主列表名)
        ON UPDATE CASCADE ON DELETE CASCADE;

多表查询

多表关系

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:

  • 一对多(多对一)
  • 多对多
  • 一对一

 

笛卡尔积

笛卡尔积是指在数学中,两个集合A和集合B的所有的组合情况。

例如A、B 和1、2、3、4组合,不同的组合情况就有八种:

  • A 1
  • A 2
  • A 3
  • A 4
  • B 1
  • B 2
  • B 3
  • B 4

所以,在多表查询时,需要消除无效的笛卡尔积。

内连接

 隐式内连接

SELECT 字段列表 FROM 表1,表2 WHERE 条件...;

显式内连接

SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 连接条件 ...;

外连接

左外连接

SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件 ...;

相当于查询表1(左表)的所有数据,包含表1和表2交集部分的数据

右外连接

SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件...;

相当于查询表2(右表)的所有数据,包含表1和表2交集部分的数据

自连接 

SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件...;

自连接查询,可以是内连接查询,也可以是外连接查询。

联合查询

查询语法

SELECT 字段列表 FROM 表A ...
UNION [ALL]
SELECT 字段列表 FROM 表B ...;

对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。

union all会将全部的数据直接合并在一起,union会对合并之后的数据去重。

子查询

SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

 子查询外部的语句可以是INSERT/UPDATE/DELETE/SELECT 的任何一个。

根据子查询的结果不同,分为:

  • 标量子查询(子查询结果为单个值)
  • 列子查询(子查询结果为一列)
  • 行子查询(子查询结果为一行)
  • Sous-requête de table (les résultats de la sous-requête comportent plusieurs lignes et colonnes)

Selon la position de la sous-requête, elle est divisée en : après WHERE, après FROM et après SELECT.

affaires

Une transaction est un ensemble d'opérations, qui est une unité de travail indivisible.Une transaction soumettra ou révoquera des demandes d'opération au système dans son ensemble, c'est-à-dire que ces opérations réussiront ou échoueront en même temps.

 1. Opérations transactionnelles 

START TRANSACTION; -- 开启事务
COMMIT / ROLLBACK; -- 提交/回滚事务

2. Quatre caractéristiques des affaires

Atomicité, cohérence, isolement, durabilité

 

Atomicité

  • Une transaction est une plus petite unité d’opération indivisible qui réussit dans son intégralité ou échoue dans son intégralité.

Lorsqu'une transaction est exécutée, elle exécutera un ensemble d'instructions SQL dans le même lot. Si une erreur se produit dans une instruction SQL, toutes les instructions SQL du lot seront annulées.

Cohérence

  • Une fois la transaction terminée, toutes les données doivent être dans un état cohérent.

Par exemple, un virement bancaire peut être décomposé en deux actions : déduire un montant de fonds X du compte A, puis ajouter un montant de fonds X au compte B. Si une erreur se produit au cours de ce processus, l'ensemble de l'opération doit être rétabli à son état initial. Assurez-vous que les soldes des comptes combinés de A et B sont cohérents avec l’état initial.

Isolement

  • Le mécanisme d'isolation fourni par le système de base de données garantit que les transactions s'exécutent dans un environnement indépendant qui n'est pas affecté par les opérations simultanées externes.

Par exemple, une transaction modifie un certain élément de données, et à ce moment une autre transaction souhaite également modifier l'élément de données. Cependant, en raison de l'existence de l'isolement, la deuxième transaction attendra que la première transaction termine la modification avant d'effectuer modifications.

Durabilité

  • Une fois qu'une transaction est validée ou annulée, les modifications apportées aux données dans la base de données sont permanentes.

Une fois qu'une transaction est validée, ses modifications dans la base de données doivent être permanentes (la soumission des données est enregistrée sur le disque dur), et les autres opérations ou échecs ultérieurs ne doivent avoir aucun impact sur les modifications de cette transaction.

3. Problèmes de transactions simultanées

(1) Lecture sale

Une transaction lit des données qu'une autre transaction n'a pas encore validées.

(2) Lecture non répétable

Une transaction lit successivement le même enregistrement, mais les données lues deux fois sont différentes, ce qu'on appelle une lecture non répétable.

(3) Lecture fantôme

Lorsqu'une transaction interroge des données selon des conditions, il n'y a pas de ligne de données correspondante, mais lors de l'insertion de données, on constate que cette ligne de données existe déjà, comme si un « fantôme » était apparu.

 

4. Niveau d'isolement des transactions 

READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE(串行化)

 


FIN


Je suppose que tu aimes

Origine blog.csdn.net/li13437542099/article/details/132651303
conseillé
Classement