Maison >base de données >tutoriel mysql >Introduction détaillée à un résumé complet des instructions fréquemment utilisées dans MySql

Introduction détaillée à un résumé complet des instructions fréquemment utilisées dans MySql

黄舟
黄舟original
2017-03-21 13:24:041038parcourir

L'éditeur ci-dessous vous apportera un résumé complet des instructions fréquemment utilisées dans MySql (un article à lire absolument). L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Venez jeter un oeil avec l'éditeur

Les points de connaissances résumés ci-dessous sont tous fréquemment utilisés, et ce sont tous des informations utiles, alors conservez-les dans votre collection.

/* Démarrer MySQL */

net start mysql

/* Se connecter et se déconnecter du serveur*/

mysql -h adresse -P port -u nom d'utilisateur -p mot de passe

/* Ignorer la vérification des autorisations pour vous connecter à MySQL */

mysqld --skip-grant-tables
-- Changer le mot de passe root
Fonction de cryptage du mot de passe password()
update mysql.user set password=password('root');

AFFICHER LA LISTE DES PROCESSUS -- Afficher quels threads sont en cours d'exécution
AFFICHER LES VARIABLES --

/* Fonctionnement de la base de données*/ ------------------

-- Afficher la base de données actuelle
select database();
-- Afficher l'heure actuelle, le nom d'utilisateur, la version de la base de données
select now(), user(), version();
-- Créer une bibliothèque
créer une base de données [ if n'existe pas] Option de base de données de nom de base de données
Option de base de données :
CHARACTER SET charset_name
COLLATE collation_name
-- Afficher les bibliothèques existantes
afficher les bases de données [comme 'modèle']
--Afficher les informations actuelles de la bibliothèque
afficher la création du nom de la base de données
--modifier les informations sur l'option de la bibliothèque
modifier les informations sur l'option du nom de la bibliothèque de la base de données
--supprimerBibliothèque
supprimer la base de données[ si elle existe] Nom de la base de données
En même temps, supprimez le répertoire lié à la base de données et son contenu

/* Opérations de table*/ --- ---------------

-- Créer une table
créer une table [temporaire][ si elle n'existe pas] [nom de la bibliothèque .]Nom de la table (définition de la structure de la table)[Options de la table]
Chaque champ doit avoir un type de données
Table temporaire, la table disparaît automatiquement à la fin de la session

Pour la définition du champ :


Type de données du nom du champ [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [ UNIQUE [KEY] [ PRIMAIRE] CLÉ] [COMMENTAIRE 'chaîne']


-- Options de la table
-- Jeu de caractères
CHARSET = charset_name
Si la table n'est pas définie, le jeu de caractères de la base de données sera utilisé
-- Moteur de stockage
ENGINE = engine_name
Les tables utilisent différentes structures de données lors de la gestion des données. Différentes structures conduiront à différentes méthodes de traitement et opérations de fonctionnalités fournies.
Moteurs courants : exemple de fusion InnoDB MyISAM Memory/Heap BDB Archive CSV MaxDB
Différents moteurs sont utilisés dans différents des moyens sont utilisés pour enregistrer la structure et les données de la table
                                                                                ing-ing- étant utilisé pour enregistrer le fichier journal SHOW ENGINES -- Afficher les informations d'état du moteur de stockage
SHOW ENGINE engine name {LOGS|STATUS} -- Afficher le journal ou les informations d'état du moteur de stockage
-- Répertoire des fichiers de données
DATA DIRECTORY = 'Directory'
-- Répertoire des fichiers d'index
INDEX DIRECTORY = ' Directory'
-- Commentaire de table
COMMENT = 'string'
-- Option de partition
PARTITION BY .. (Voir le manuel pour plus de détails)
--Afficher toutes les tables
SHOW TABLES[ LIKE 'motif']
SHOW TABLES FROM nom de la table
-- Afficher l'organisation de la table
SHOW CREATE TABLE nom de la table (informations plus détaillées)
DESC nom de la table/DESCRIBE table name/EXPLAIN table name/SHOW COLUMNS FROM table name [LIKE 'PATTERN']
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']
- -
Modifier la table
-- Options pour modifier la table elle-même Options pour la table de nom de table ALTER TABLE
EG: ALTER TABLE nom de table ENGINE=MYISAM;
-- Redémarrer la table Nommage
RENAME TABLE nom de table d'origine AU nouveau nom de table
RENAME TABLE nom de table original TO nom de base de données.nom de table (la table peut être déplacée vers une autre base de données)
-- RENAME peut échanger deux noms de table - Modifier le champ du formulaire <.> FIRST - signifie l'ajouter au premier
ADD PRIMARY KEY (nom du champ) - Créer une clé primaire
ADD UNIQUE [nom de l'index] (nom du champ) - Créer un index unique
ADD INDEX [index name] (nom du champ) - Créer un index normal
ADD
DROP[ COLUMN] Nom du champ - Supprimer le champ
MODIFY[ COLUMN] Champ du nom du champ
Attributs
- - Prend en charge la modification du champ Attributs, les noms de champ ne peuvent pas être modifiés (tous les attributs d'origine doivent également être écrits)
Modifier [colonne] Nom du champ d'origine Nouvel nom de champ Les attributs de champ ne prennent pas en charge la modification de la touche primaire du nom de nom de champ - supprimez la touche principale (vous il faut supprimer son attribut AUTO_INCREMENT avant de supprimer la clé primaire)
DROP INDEX nom de l'index - supprimer l'index
DROP FOREIGN KEY clé étrangère - supprimer la clé étrangère

-- supprimer la table
DROP TABLE[IF EXISTS] nom de la table...
-- Effacer la table data
TRUNCATE [TABLE] Nom de la table
-- copier la structure de la table
CREATE TABLE nom de la table LIKE nom de la table à copier
-- copier la structure et les données de la table
CREATE TABLE nom de la table [AS ] SELECT * FROM nom de la table à copier
-- Vérifiez si la table contient des erreurs
CHECK TABLE tbl_name [, tbl_name] ... [option] ...
-- Optimisez la table
OPTIMISER [LOCAL | NO_WRITE_TO_BINLOG] TABLE nom_table [, nom_table] ...
--Réparer la table
RÉPARER [LOCAL | NO_WRITE_TO_BINLOG] TABLE nom_table [, nom_table] ... [RAPIDE] [ÉTENDU] [USE_FRM]
-- Table d'analyse
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

/* Opération sur les données*/ -- ----------------

-- Ajouter
INSERT [INTO] nom de la table [(liste de champs)] VALUES (liste de valeurs ) )[, (liste de valeurs), ...]
   — Si la liste de valeurs à insérer contient tous les champs et est dans le même ordre, la liste des champs peut être omise.
-- Plusieurs enregistrements de données peuvent être insérés en même temps !
REPLACE est exactement le même que INSERT et est interchangeable.
INSERT [INTO] nom de la table SET nom du champ = valeur [, nom du champ = valeur, ...]
-- Vérifiez
SELECT liste de champs FROM nom de la table [autres clauses]
-- Plusieurs champs de plusieurs tables
-- Les autres clauses ne peuvent pas être utilisées
-- La liste des champs peut être remplacée par * pour représenter tous les champs
-- Supprimer
DELETE FROM table nom [supprimer la clause de condition]
S'il n'y a pas de clause de condition, tous les
seront supprimés--change
UPDATE nom de la table SET nom du champ=nouvelle valeur[, nom du champ=nouvelle valeur] [ Mise à jourConditions]

/*Encodage du jeu de caractères*/ ------------------

--L'encodage peut être défini pour MySQL, les bases de données, les tables et les champs

--L'encodage des données et l'encodage du client n'ont pas besoin d'être cohérents

AFFICHER LES VARIABLES COMME 'character_set_ %' -- Afficher tous les éléments d'encodage du jeu de caractères
Character_set_client L'encodage utilisé lorsque le client envoie des données au serveur
Character_set_results L'encodage utilisé par le serveur pour renvoyer les résultats au client
Character_set_connection Encodage de la couche de connexion

SET Nom de la variable = Valeur de la variable

set Character_set_client = gbk;
set Character_set_results = gbk;
set Character_set_connection = gbk;
SET NAMES GBK; -- Assez Après avoir terminé les trois paramètres ci-dessus

-- Ensemble de vérification

L'ensemble de vérification est utilisé pour le tri
AFFICHER LE JEU DE CARACTÈRES [LIKE 'motif']/SHOW CHARSET [LIKE 'motif '] Afficher tous les jeux de caractères
AFFICHER LA COLLATION [LIKE 'motif'] Afficher tous les jeux de classement
encodage du jeu de caractères du jeu de caractères
assembler l'encodage du jeu de classement

/* Données tapez (type de colonne) */ ------------------

1 Type numérique.

-- a. Type entier--------

Type Plage d'octets (bit signé)
tinyint 1 octet -128 ~ 127 Bits non signés : 0 ~ 255
smallint 2 octets -32768 ~ 32767
mediumint 3 octets -8388608 ~ 8388607
int 4 octets
bigint 8 octets

int(M) M représente le nombre total de chiffres

- Il y a un bit de signe par défaut, modification d'attribut non signé

- Largeur d'affichage, si un certain nombre n'est pas suffisant pour le nombre de chiffres défini lors de la définition du champ, remplissez-le avec 0 devant, modification de l'attribut zerofill

Exemple : int(5) Insérez un nombre '123', remplissez-le suivi de '00123'

- Plus c'est petit, mieux c'est si les exigences sont remplies.

- 1 signifie que la valeur booléenne est vraie, 0 signifie que la valeur booléenne est fausse. MySQL n'a pas de type booléen, représenté par les entiers 0 et 1. Tinyint(1) est couramment utilisé pour représenter le type booléen.

-- b. Virgule flottante ----------

Type Plage d'octets

float (simple précision) 4 octets

double (double précision) 8 octets

le type à virgule flottante prend en charge à la fois l'attribut non signé de bit de signe et l'attribut de remplissage nul de largeur d'affichage.

Différent du type entier, 0 sera complété avant et après.

Lors de la définition du type à virgule flottante, vous devez spécifier le nombre total de chiffres et le nombre de décimales.

float(M, D) double(M, D)

M représente le nombre total de chiffres et D représente le nombre de décimales.

La taille de M et D déterminera la plage des nombres à virgule flottante. Différent de la plage fixe d’entiers.

M représente à la fois le nombre total de chiffres (hors points décimaux et signes) et la largeur d'affichage (y compris tous les symboles d'affichage).

Prend en charge la notation scientifique.

Les nombres à virgule flottante représentent des valeurs approximatives.

-- c. Nombre à virgule fixe---------

décimal — longueur variable

decimal(M, D) M représente également le nombre total de chiffres et D représente le nombre de décimales.

Enregistrez une valeur précise et les données ne changeront pas, contrairement à l'arrondi des nombres à virgule flottante.

Convertissez le nombre à virgule flottante en String pour enregistrer, chaque nombre à 9 chiffres est enregistré sous 4 octets.

2. Type de chaîne

-- un char, varchar ----------

char Chaîne de longueur fixe, rapide, mais gaspille de l'espace

varchar Chaîne de longueur variable, lente, mais économisant de l'espace

M représente la longueur maximale pouvant être stockée, cette longueur est en caractères Nombre , pas le nombre d'octets.

Différents encodages occupent différents espaces.

char, jusqu'à 255 caractères, quel que soit l'encodage.

varchar, jusqu'à 65535 caractères, lié à l'encodage.

La longueur maximale d'un enregistrement valide ne peut pas dépasser 65535 octets.

utf8 a une longueur maximale de 21844 caractères, gbk a une longueur maximale de 32766 caractères et latin1 a une longueur maximale de 65532 caractères

varchar est de longueur variable et l'espace de stockage doit le faire. être utilisé pour enregistrer la longueur de varchar Si les données font moins de 255 octets, un octet est utilisé pour enregistrer la longueur, sinon deux octets sont nécessaires pour l'enregistrer. La longueur effective maximale de

varchar est déterminée par la taille maximale de la ligne et le jeu de caractères utilisé.

La longueur effective maximale est de 65532 octets, car lorsque varchar stocke une chaîne, le premier octet est vide et il n'y a pas de données, puis deux octets sont nécessaires pour stocker la longueur de la chaîne donc la longueur effective. est 64432-1-2 = 65532 octets.

Exemple : Si une table est définie comme CREATE TABLE tb(c1 int, c2 char(30), c3 varchar(N)) charset=utf8; Quelle est la valeur maximale de N ? Réponse : (65535-1-2-4-30*3)/3

-- blob, texte ----------

chaîne binaire blob (chaîne d'octets)

tinyblob, blob, mediumblob, longblob

texte chaîne non binaire (chaîne de caractères)

tinytext , text, mediumtext, longtext

text Lors de la définition, la longueur n'a pas besoin d'être définie et la longueur totale ne sera pas calculée. Lors de la définition du

type de texte, la valeur par défaut ne peut pas être donnée

-- binaire, varbinaire ----------

est similaire à char et varchar, utilisé pour enregistrer des chaînes binaires, c'est-à-dire pour enregistrer des chaînes d'octets au lieu de chaînes de caractères.

char, varchar, text correspondent à binaire, varbinary, blob.

3. Types de date et d'heure

en général. utiliser un entier Enregistrez l' horodatage car PHP peut facilement formater l'horodatage.

datetime 8 octets Date et heure 1000-01-01 00:00:00 au 9999-12-31 23:59:59

date 3 octets Date 1000-01-01 à 9999 - 12- 31

horodatage 4 octets horodatage 19700101000000 au 19/01/2038 03:14:07

heure 3 octets heure -838:59:5 9 à 838:59:59

année 1 octet Année 1901 - 2155

datetime « AAAA-MM-JJ hh:mm:ss »
horodatage « AA-MM-JJ hh:mm:ss »
« AAAAMMJJhhmmss »
« AAAAMMJJhhmmss »
« AAAAMMJJhhmmss
» AAAA-MM-JJ »
« AA-MM-JJ »
« AAAAMMJJ »
« AAMMJJ"
"hhmmss"
année « AAAA »
« YY »
« YYYY »
YY



4. >
--

Énumération (enum) ----- -----

enum(val1, val2, val3...)

Faites une seule sélection parmi les valeurs connues. Le nombre maximum est 65535.

Lorsque la valeur d'énumération est enregistrée, elle est enregistrée sous la forme d'un entier de 2 octets (smallint). Chaque valeur d'énumération, dans l'ordre de la position enregistrée, commence à 1 et augmente une par une. se comporte comme un type chaîne, mais est stocké sous forme d'entier.

L'index d'une valeur NULL est NULL.

La valeur d'index de la valeur d'erreur de chaîne vide est 0.

-- set ----------

set(val1, val2, val3 ... )

créer un onglet de tableau (gender set('male', 'female', 'none') );insérer dans l'onglet les valeurs ('male, female');
Peut avoir jusqu'à 64 membres différents. Stocké en bigint, 8 octets au total. Prend la forme d'une
opération sur bits

.

Lors de la création d'un tableau, les espaces de fin dans les valeurs des membres SET seront automatiquement supprimés.

/* Sélectionnez le type*/

-- Perspective PHP

1 Les fonctions sont satisfaites

2. L'espace de stockage doit être aussi petit que possible et l'efficacité du traitement est plus élevée3. Tenez compte des problèmes de compatibilité

--Stockage IP---------




Stockez simplement, chaîne disponible
2. Si un calcul, une recherche, etc. sont nécessaires, il peut être stocké sous la forme d'un entier non signé de 4 octets, c'est-à-dire non signé

1) Fonction PHPconversion

ip2long peut être converti en type entier, mais il y aura un problème de transport de symboles. Doit être formaté comme un entier non signé.

Utilisez la fonction sprintf pour formater la chaîne

sprintf("%u", ip2long('192.168.3.134'));Ensuite, utilisez long2ip pour convertir l'entier chaîne IP arrière

2) Conversion de fonction MySQL (entier non signé, UNSIGNED)

INET_ATON('127.0.0.1') Convertir l'IP en entier

INET_NTOA(2130706433 ) Convertir un entier en IP

/* Attributs de colonne (ColonneContrainte) */ -------- ------ ----



1. Clé primaire- peut identifier de manière unique le champ de l'enregistrement. peut être utilisée comme clé primaire. - Une table ne peut avoir qu’une seule clé primaire.

- La clé primaire est unique.

- Lors de la déclaration d'un champ, utilisez la clé primaire pour l'identifier. peut également être déclaré après la liste des champs

Exemple : créer un onglet de table (id int, stu varchar(10), clé primaire (id));
- La valeur du champ clé primaire ne peut pas être nulle.
- La clé primaire peut être composée de plusieurs champs. A ce stade, une méthode déclarée après la liste des champs est requise.
Exemple : créer un onglet de table (id int, stu varchar(10), age int, clé primaire (stu, age));

2. )

afin que la valeur d'un certain champ ne puisse pas être répétée.

3. Contrainte nulle

null n'est pas un type de données, c'est un attribut de la colonne.
Indique si la colonne actuelle peut être nulle, ce qui signifie qu'il n'y a rien.
null, autorisé à être vide. défaut.
non nul, le vide n'est pas autorisé.
insérer dans les valeurs de l'onglet (null, 'val');
-- Cela signifie définir la valeur du premier champ sur null, selon que le champ est autorisé ou non à être nul

4. Attribut de valeur par défaut par défaut

La valeur par défaut du champ actuel.
insérer dans l'onglet valeurs (par défaut, 'val'); -- Cela signifie forcer à utiliser la valeur par défaut .
créer un onglet de table (add_time timestamp default current_timestamp);
-- signifie définir l'horodatage de l'heure actuelle comme valeur par défaut.
current_date, current_time

5. Contrainte de croissance automatique auto_increment

La croissance automatique doit être un index (clé primaire ou unique)

Un seul champ peut être auto-incrémenté.

La valeur par défaut est 1 pour démarrer la croissance automatique. Il peut être défini via l'attribut de table auto_increment = x, ou alter table tbl auto_increment = x;

6. Exemple : créer un onglet de table ( id int ) commenter 'comment content'

7. Les contraintes de clé étrangère

sont utilisées pour limiter le maître. table et la table esclave Intégrité des données. alter table t1 ajouter une contrainte `t1_t2_fk` clé étrangère (t1_id) références t2(id);

--Associer la clé étrangère t1_id de la table t1 au champ id de la table t2.

--Chaque clé étrangère a un nom. Vous pouvez spécifier

par contrainte. La table où existe la clé étrangère est appelée la table esclave (sous-table), et la table pointée par la clé étrangère est appelée. la table maître (table parent).

Fonction : Maintenir la cohérence et l'intégrité des données. L'objectif principal est de contrôler les données stockées dans la table de clés étrangères (table esclave).

Dans MySQL, vous pouvez utiliser des contraintes de clé étrangère sur le moteur InnoDB :

Syntaxe :

la clé étrangère (champ de clé étrangère) fait référence à la table principale name ( Champs associés) [Action lorsque l'enregistrement de la table maître est supprimé] [Action lorsque l'enregistrement de la table maître est mis à jour] A ce moment, il est nécessaire de détecter une clé étrangère de la table esclave qui doit être limité à la valeur existante de la table principale. La clé étrangère peut être définie sur null lorsqu'il n'y a pas d'association. Le principe est que la colonne de clé étrangère n'est pas nulle.

Vous ne pouvez pas spécifier l'action lorsque l'enregistrement de la table principale est modifié ou mis à jour, alors l'opération de la table principale sera rejetée à ce moment.

Si on précise sur mise à jour ou sur suppression : Lors de la suppression ou de la mise à jour, vous avez le choix entre plusieurs opérations :

1. fonctionnement en cascade. Les données de la table maître sont mises à jour (mise à jour de la valeur de clé primaire) et la table esclave est également mise à jour (mise à jour de la valeur de clé étrangère). Les enregistrements de la table maître sont supprimés et les enregistrements associés de la table esclave sont également supprimés. 2. définissez null, définissez sur null. Les données de la table principale sont mises à jour (la valeur de la clé primaire est mise à jour) et la clé étrangère de la table secondaire est définie sur null. L'enregistrement de la table primaire est supprimé et la clé étrangère de l'enregistrement associé à la table secondaire est définie sur null. Mais notez que la colonne de clé étrangère ne doit avoir aucune contrainte d'attribut non nulle.

3. restreindre, refuser la suppression et la mise à jour de la table parent.

Notez que les clés étrangères ne sont prises en charge que par le moteur de stockage InnoDB. Les autres moteurs ne sont pas pris en charge.

/* Spécifications de création de table*/ ------------------

-- Format normal, NF
- Chaque table enregistre les informations d'une entité
- Chacune a un champ ID comme clé primaire
- Table atomique de clé primaire ID
-- 1NF, Première forme normale
Les champs ne peuvent pas être divisés davantage, alors la première forme normale est satisfaite.
-- 2NF, Deuxième forme normale
Sous le principe de satisfaire la première forme normale, une dépendance partielle ne peut pas se produire.
Les dépendances partielles peuvent être évitées en éliminant les clés primaires correspondantes. Ajoutez des mots-clés à une seule colonne.
-- 3NF, Troisième forme normale
Sous le principe de satisfaire la deuxième forme normale, les dépendances transitives ne peuvent pas se produire.
Un certain champ dépend de la clé primaire, et d'autres champs dépendent de ce champ. C'est une dépendance transitive.
Mettez les données d'une entité dans un tableau.

/* sélectionnez */ ------------------

sélectionnez [tous |distinct] select_expr from -> où -> grouper par [fonction totale] -> trier par -> 🎜>

--* peut être utilisé pour représenter tous les champs. Select * from tb;
-- Vous pouvez utiliser des
expressions
(les formules de calcul, les appels de fonction et les champs sont également des expressions)

select stu, 29 25, now() from tb ;

-- Vous pouvez utiliser des alias pour chaque colonne. Convient pour simplifier l’identification des colonnes et éviter la duplication de plusieurs identifiants de colonnes.
          - Utilisez le mot-clé as, ou vous pouvez omettre as.
          Sélectionnez stu 10 comme add10 de tb ;

from clause

est utilisé pour identifier la source de la requête.
-- Vous pouvez donner un alias à la table. Utilisez le mot-clé as.
Sélectionnez * from tb1 as tt, tb2 as bb
- from clause, plusieurs tables peuvent apparaître en même temps.

    — Plusieurs tableaux seront superposés horizontalement et les données formeront un produit cartésien.

             sélectionnez * parmi tb1, tb2 ;

c. clause Where


-- la source de données obtenue à partir de Filter dans. -- L'entier 1 représente vrai, 0 représente faux. -- L'expression est composée de
opérateur
et d'opération
tableau

.

                                                                                                                                                                                                                              ;, >=, > , !, &&, ||,
dans (pas) nul, (pas) comme, (pas) dans, (pas) entre et, est (pas), et, ou, non,
d groupe par clause, clause de regroupement



groupe par champ/alias [méthode de tri]
Le regroupement sera trié ultérieurement. Ordre croissant : ASC, ordre décroissant : DESC

La [fonction totale] suivante doit être utilisée avec group by :

count Renvoie le nombre de valeurs différentes non NULL count(*), count(field)
sum sum
max trouver la valeur maximale
min trouver la valeur minimale

avg trouver la valeur moyenne

group_concat renvoie un résultat de chaîne avec non NULL valeurs issues de la concaténation d'un groupe.
Concaténation de chaînes
au sein du groupe.

e. clause ayant, clause conditionnelle



La fonction et l'utilisation sont les mêmes que là où, mais le timing d'exécution est différent.
Where exécute les données de détection au début et filtre les données d'origine.
Devoir filtrer à nouveau les résultats filtrés.
Le champ ayant doit être interrogé et le champ où doit exister dans la table de données.
Where ne peut pas utiliser les alias de champ, mais l'a fait. Parce que lorsque le code WHERE est exécuté, la valeur de la colonne n'a peut-être pas encore été déterminée.
Où la fonction totale ne peut pas être utilisée. Généralement, have
n'est utilisé que lorsqu'une fonction d'agrégation est nécessaire. La norme SQL exige que HAVING fasse référence aux colonnes dans la clause GROUP BY ou soit utilisé dans les colonnes de la fonction d'agrégation.

f. ordre par clause, clause de tri

ordre par champ de tri/alias méthode de tri [, champ de tri/ Alias ​​​​méthode de tri]...
Ordre croissant : ASC, Ordre décroissant : DESC
Prend en charge le tri de plusieurs champs.

g. clause limite, clause limite le nombre de résultats

limite uniquement le nombre de résultats traités. Traitez les résultats traités comme une collection, avec l'index commençant à 0 dans l'ordre dans lequel les enregistrements apparaissent.
limiter la position de départ, obtenir le nombre d'éléments
Omettre le premier paramètre signifie partir de l'index 0. limit Obtenez le nombre d'enregistrements

h distincts, toutes les options

distincts suppriment les enregistrements en double
La valeur par défaut est tout, tous les enregistrements

/* UNION */ ------------------

Combinez les résultats de plusieurs requêtes de sélection dans un ensemble de résultats.
SELECT ... UNION [ALL|DISTINCT] SELECT ...
Mode DISTINCT par défaut, c'est-à-dire que toutes les lignes renvoyées sont uniques
Il est recommandé de mettre chaque requête SELECT entre parenthèses.
Lors du tri par ORDER BY, LIMIT doit être ajouté pour la combinaison.
Il faut que le nombre de champs interrogés par chaque sélection soit le même.
La liste des champs (numéro, type) de chaque requête de sélection doit être cohérente, car les noms de champs dans les résultats sont basés sur la première instruction de sélection.

/* Sous-requête*/ ------------------

- Les sous-requêtes doivent être placées entre parenthèses.

--from type

L'exigence après from est une table et le résultat de la sous-requête doit être un alias.
- Simplifiez les conditions au sein de chaque requête.
- Le type from doit générer une table temporaire à partir du résultat, qui peut être utilisée pour libérer le verrou de la table d'origine.
- La sous-requête renvoie une table, sous-requête de table.
sélectionnez * from (sélectionnez * from tb où id>0) comme sous-from où id>1;

-- où type

- La sous-requête renvoie une valeur, sous-requête scalaire.
- Pas besoin d'alias la sous-requête.
- La table de la sous-requête Where ne peut pas être directement mise à jour.
sélectionnez * from tb où money = (select max(money) from tb);

-- sous-requête de colonne

if sub -query Le résultat de la requête renvoie une colonne.
Utilisez in ou not in pour terminer la requête
conditions existe et n'existe pas
Si la sous-requête renvoie des données, renvoyez 1 ou 0. Souvent utilisé pour déterminer les conditions.
                                                                                            sélectionner la colonne 1 à partir de t1 là où il existe (sélectionner * à partir de t2 );
                                                                                                                                                                                                                                                            

Les constructeurs de lignes sont souvent utilisés à des fins de comparaison avec des sous-requêtes qui renvoient deux colonnes ou plus.

-- Opérateur spécial
!= all() Équivalent à not in
= some() Équivalent à in. any est un alias de some

!= some() Ce n'est pas égal à not in, ni égal à l'un d'eux.

Tous, certains peuvent être utilisés avec d'autres opérateurs.


/* Requête de jointure (rejoindre) */ ------------------



Pour connecter les champs de plusieurs tables, vous pouvez préciser les conditions de connexion.
-- Jointure interne(jointure interne)
- La valeur par défaut est la jointure interne, la jointure interne peut être omise.
- La connexion ne peut être envoyée que si les données existent. Autrement dit, le résultat de la connexion ne peut pas contenir de lignes vides.
on représente la condition de connexion. Son expression conditionnelle est similaire à Where. Vous pouvez également omettre la condition (indiquant que la condition est toujours vraie)
Vous pouvez également utiliser où pour exprimer la condition de connexion.
Il existe également using, mais les noms de champs doivent être les mêmes. using (nom du champ)

-- Jointure croisée jointure croisée
C'est-à-dire une jointure interne sans conditions.
select * from tb1 cross join tb2;
-- external join (outer join)
- Si les données n'existent pas, elles apparaîtront également dans le résultat de la connexion.
-- Jointure externe gauche jointure gauche
Si les données n'existent pas, les enregistrements de la table de gauche apparaîtront et la table de droite est remplie de valeurs nulles
-- Jointure externe droite jointure droite
Si le les données n'existent pas, la table de droite L'enregistrement apparaîtra et la table de gauche est remplie de null
-- jointure naturelle (jointure naturelle)
Détermine automatiquement les conditions de connexion pour terminer la connexion.
Cela équivaut à omettre using, et le même nom de champ sera automatiquement trouvé.
jointure naturelle
jointure naturelle à gauche
jointure naturelle à droite

sélectionnez info.id, info.name, info.stu_num, extra_info.hobby, extra_info.sex from info, extra_info où info. stu_num = extra_info.stu_id;

/* Importation et exportation*/ ------------------

sélectionnez * dans le fichier adresse du fichier [format de contrôle] à partir du nom de la table ; -- Exporter les données de la table
charger les données [local] adresse du fichier infile [remplacer|ignorer] into table nom de la table [format de contrôle] ; -- Importer des données
Le délimiteur par défaut des données générées est le caractère de tabulation
Si local n'est pas spécifié, le fichier de données doit être sur le serveur
Remplacer et ignorer le mot-clé paires de contrôle Traitement en double des enregistrements de clé unique existants
--Format de contrôle

champs Format du champ de contrôle
Par défaut : champs terminés par 't' entouré de ' ' échappé par '\'
terminé par 'string' -- terminé
entouré par 'char' -- enveloppé
échappé par 'char' -- échappé
-- Exemple :
SELECT a ,b,a b INTO OUTFILE '/tmp/result.text'
CHAMPS TERMINÉS PAR ',' OPTIONNELLEMENT ENCLOS PAR '"'
LIGNES TERMINÉES PAR 'n'
FROM test_table;

lignes Format de ligne de contrôle

Par défaut : lignes terminées par 'n'
terminées par 'chaîne' -- terminées

/* insert */ ------------------

Les données obtenues par l'instruction select peuvent être insert d'insertion utilisé.

Vous pouvez omettre la spécification des colonnes et exiger des valeurs () entre parenthèses pour fournir des valeurs pour tous les champs apparaissant dans l'ordre des colonnes.
Ou utilisez la syntaxe définie.
insert into tbl_name set field=value,...;

peut utiliser plusieurs valeurs à la fois, sous la forme de (), (), ();.
insérer dans les valeurs de nom_tbl ​​(), (), ();

Vous pouvez utiliser des expressions lors de la spécification des valeurs de colonne.
insérer dans les valeurs de nom_tbl ​​(field_value, 10 10, now());
Vous pouvez utiliser une valeur spéciale par défaut, ce qui signifie que la colonne utilise la valeur par défaut.
insérer dans les valeurs de nom_tbl ​​(field_value, par défaut);

peut utiliser le résultat d'une requête comme valeur à insérer.
insert into tbl_name select ...;

peut spécifier de mettre à jour les informations d'autres colonnes de clé non primaire lorsque la valeur insérée a un conflit de clé primaire (ou d'index unique).
insérer dans tbl_name valeurs/set/select sur la clé en double mise à jour field=value, …;

/* supprimer */ ------------ ------

DELETE FROM tbl_name [WHEREwhere_definition] [ORDER BY ...] [LIMIT row_count]

Supprimer selon les conditions

Spécifiez le nombre maximum d'enregistrements à supprimer. Limite

Peut être supprimé en triant les conditions. order by limit

prend en charge la suppression de plusieurs tables, en utilisant une syntaxe de connexion similaire.
delete from doit supprimer les données de plusieurs tables 1 et 2 en utilisant les conditions d'opération de connexion aux tables.

/*tronquer*/ ------------------

TRUNCATE [TABLE] tbl_name
Effacer les données
Supprimer et reconstruire la table

Différence :

1, tronquer consiste à supprimer la table et créez-la à nouveau, supprimer consiste à supprimer

2 élément par élément, tronquer réinitialise la valeur de auto_increment. Et delete ne sait pas

3. Truncate ne sait pas combien d'éléments ont été supprimés, mais delete le sait.

4, lorsqu'il est utilisé sur une table partitionnée, tronquer conservera la partition


/* Sauvegarde et restauration*/ ------ -- ----------

Sauvegarde, enregistrez la structure des données et les données dans le tableau.

Utilisez la commande mysqldump pour terminer.

-- Exporter

1 Exporter une table
mysqldump -u username -p password library name table name> a.sql)
2. Exporter plusieurs tables
mysqldump -u nom d'utilisateur -p mot de passe nom de la base de données table 1 table 2 table 3 >
mysqldump -u nom d'utilisateur-p mot de passe nom de la bibliothèque> Nom du fichier (D:/a.sql)
4 Exporter une bibliothèque
mysqldump -u nom d'utilisateur-p mot de passe-B nom de la bibliothèque> :/a.sql)

Peut comporter des conditions de sauvegarde avec -w

-- Import

1 lors de la connexion à MySQL. :

Fichier de sauvegarde source

2. Lorsque vous ne vous connectez pas

mysql -u nom d'utilisateur -p mot de passe nom de la base de données < Fichier de sauvegarde

/*
Vue */ ------------------

Qu'est-ce qu'une vue :

Une vue est une table virtuelle dont le contenu est défini par une requête. Comme une vraie table, une vue contient une série de colonnes et de lignes de données nommées. Cependant, les vues n'existent pas sous forme d'ensembles de valeurs de données stockés dans la base de données. Les données de ligne et de colonne proviennent des tables référencées par la requête qui définit la vue et sont générées dynamiquement lorsque la vue est référencée.


La vue a un fichier de structure de table mais pas de fichier de données.


Les vues agissent comme des filtres pour les tables sous-jacentes auxquelles elles font référence. Les filtres pour les vues définies peuvent provenir d'une ou plusieurs tables de la base de données actuelle ou d'

autres bases de données, ou d'autres vues. Il n'y a aucune restriction sur les requêtes via les vues, et il existe peu de restrictions sur la modification des données via celles-ci.

View est l'instruction SQL de la requête stockée dans la base de données. C'est principalement pour deux raisons :

SécuritéPour des raisons, la vue peut masquer certaines données, telles que : Social. Dans le tableau Fonds de sécurité, vous pouvez utiliser la vue pour afficher uniquement le nom et l'adresse sans afficher le numéro de sécurité sociale et le numéro de salaire. Une autre raison est qu'elle peut rendre les requêtes complexes faciles à comprendre et à utiliser.

-- Créer une vue

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE}] VIEW view_name [(column_list)] AS select_statement

- Le nom de la vue doit être unique et ne peut pas avoir le même nom que la table.
- La vue peut utiliser les noms de colonnes interrogés par l'instruction select, ou vous pouvez spécifier vous-même les noms de colonnes correspondants.
- Vous pouvez spécifier l'algorithme exécuté par la vue, spécifié via ALGORITHM.
- Si column_list existe, le nombre doit être égal au nombre de colonnes récupérées par l'instruction SELECT

-- Afficher la structure

SHOW CREATE VIEW view_name

-- Supprimer la vue

- Après la suppression de la vue, les données existent toujours.


- Plusieurs vues peuvent être supprimées en même temps.

DROP VIEW [IF EXISTS] view_name ...

-- Modifier la structure de la vue

- Généralement ne modifiez pas la vue, car non toutes les mises à jour, les vues sont mappées aux tables.

ALTER VIEW view_name [(column_list)] AS select_statement

-- Fonction d'affichage

1. Simplifier la logique métier

2. Pour les clients. Masquer la vraie structure de la table à la fin

--Afficher l'algorithme (ALGORITHME)

MERGE Fusionner

Fusionner la requête l'instruction de la vue, doit être fusionnée avec la requête externe avant de s'exécuter !
TEMPTABLE Table temporaire
Une fois la vue exécutée, une table temporaire est formée, puis la requête externe est effectuée !
UNDEFINED Non défini (par défaut) signifie que MySQL sélectionne indépendamment l'algorithme correspondant.

/* Transaction (transaction) */ ----------------- - -

Une transaction fait référence à un ensemble logique d'opérations. Chaque unité qui compose cet ensemble d'opérations réussira ou échouera.
- Prend en charge le succès collectif ou la révocation collective du SQL continu.
- La transaction est une fonction de la base de données en auto-apprentissage des données.
- Vous devez utiliser le moteur de stockage InnoDB ou BDB pour prendre en charge la fonctionnalité de soumission automatique.
- InnoDB est appelé un moteur sécurisé pour les transactions.

--Ouverture de la transaction
START TRANSACTION; ou BEGIN;
Une fois la transaction ouverte, toutes les instructions SQL exécutées sont reconnues comme des instructions SQL dans la transaction en cours.
--Soumission de transaction
COMMIT;
--Annulation de transaction
ROLLBACK;
S'il y a un problème avec certaines opérations, il est mappé avant le démarrage de la transaction.

-- Caractéristiques des transactions
1. Atomicité
Une transaction est une unité de travail indivisible. Soit toutes les opérations de la transaction se produisent, soit aucune ne se produit.
2. Cohérence
L'intégrité des données avant et après la transaction doit être cohérente.
- Les données externes sont cohérentes au début et à la fin de la transaction
- Les opérations sont continues pendant toute la transaction
3. Isolation (Isolation)
Lorsque plusieurs utilisateurs accèdent simultanément à la base de données, un seul utilisateur Transactions ne peut pas être interféré par les transactions des autres utilisateurs et les données entre plusieurs transactions simultanées doivent être isolées les unes des autres.
4. Durabilité
Une fois qu'une transaction est validée, ses modifications apportées aux données de la base de données sont permanentes.

--Implémentation de la transaction
1. L'exigence est le type de table pris en charge par la transaction
2. Démarrez la transaction avant d'exécuter un ensemble d'opérations associées
3. Après l'ensemble des opérations les opérations sont terminées, toutes réussissent, puis validez ; en cas d'échec, choisissez de revenir en arrière et vous reviendrez au point de sauvegarde où la transaction a commencé.

--Le principe de la transaction
Il est complété en utilisant la fonction autocommit d'InnoDB.
Une fois que MySQL ordinaire a exécuté l'instruction, l'opération de soumission de données en cours peut être visible par les autres clients.
La transaction désactive temporairement le mécanisme de « validation automatique » et nécessite une validation pour soumettre l'opération de données persistantes.

-- Remarque
1. Les instructions du langage de définition de données (DDL) ne peuvent pas être annulées, telles que les instructions permettant de créer ou d'annuler une base de données et de créer, annuler ou modifier des tables. ou instruction de stockage du sous-programme.
2. Les transactions ne peuvent pas être imbriquées

--Point de sauvegarde
Nom du point de sauvegarde SAVEPOINT - définir un point de sauvegarde de transaction
ROLLBACK TO SAVEPOINT nom du point de sauvegarde - revenir au point de sauvegarde
RELEASE SAVEPOINT Nom du point de sauvegarde - Supprimer le point de sauvegarde

--Paramètre de la fonctionnalité de validation automatique d'InnoDB
SET autocommit = 0|1 ; 0 signifie désactiver la validation automatique, 1 signifie l'activer. validation automatique.
- S'il est désactivé, les résultats des opérations ordinaires ne seront pas visibles par les autres clients et une validation est requise avant que l'opération sur les données puisse être persistante.
- Vous pouvez également désactiver la soumission automatique pour activer les transactions. Mais contrairement à START TRANSACTION,
SET autocommit modifie de manière permanente les paramètres du serveur jusqu'à ce que les paramètres soient modifiés la prochaine fois. (Pour la connexion actuelle)
Et START TRANSACTION enregistre le statut avant l'ouverture, et une fois la transaction validée ou annulée, la transaction doit être rouverte. (Pour la transaction en cours)


/* Verrouiller la table*/
Le verrouillage de table est uniquement utilisé pour empêcher d'autres clients de lire et d'écrire de manière incorrecte
MyISAM prend en charge le verrouillage de table et InnoDB le prend en charge Verrouillage de ligne
--Lock
LOCK TABLES tbl_name [AS alias]
--Unlock
UNLOCK TABLES


/* Trigger*/ ------ - -----------
Le déclencheur est un objet de base de données nommé lié à la table Lorsqu'un événement spécifique se produit dans la table, l'objet sera activé
Surveillance : Ajout, modification, suppression. de dossiers.

--Create trigger
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt
Paramètres :
trigger_time est le temps d'action du programme de déclenchement. Cela peut être avant ou après pour indiquer si le déclencheur est déclenché avant ou après l'instruction qui l'active.
trigger_event précise le type d'instruction qui active le déclencheur
INSERT : active le déclencheur lorsqu'une nouvelle ligne est insérée dans la table
UPDATE : active le déclencheur lorsqu'une ligne est modifiée
DELETE : supprime un ligne de la table Le programme déclencheur est activé lorsque
tbl_name : La table surveillée doit être une table permanente. Le programme déclencheur ne peut pas être associé à la table ou à la vue TEMPORAIRE.
trigger_stmt : instruction exécutée lorsque le programme déclencheur est activé. Pour exécuter plusieurs instructions, vous pouvez utiliser la structure d'instruction composée BEGIN...END

-- Supprimer
DROP TRIGGER [schema_name.]trigger_name

Vous pouvez utiliser l'ancien et le nouveau au lieu de ancien et nouveau Les données de
Opération de mise à jour, ancienne avant la mise à jour, nouvelle après la mise à jour
Opération de suppression, uniquement ancienne.
Opération d'ajout, uniquement nouvelle.

-- Remarque
. 1. Il ne peut pas y avoir deux déclencheurs pour une table donnée avec le même moment d’action et le même événement.


-- Fonction de concaténation de caractères
concat(str1[, str2,...])

-- Instruction de branchement
if condition then
Instruction d'exécution
elseif condition then
Instruction d'exécution
else
Instruction d'exécution
end if;

-- Modifier le caractère de fin de l'instruction le plus à l'extérieur
délimiteur Symbole de fin personnalisé
Instruction SQL
Symbole de fin personnalisé

délimiteur ; - Revenir au point-virgule d'origine

-- Wrapper du bloc d'instructions
begin
Bloc d'instructions
end

-- Exécution spéciale
1. Tant qu'un enregistrement est ajouté, le programme sera déclenché.
2. L'insertion dans la syntaxe de mise à jour de la clé en double déclenchera :
S'il n'y a pas d'enregistrement en double, elle se déclenchera avant l'insertion, après l'insertion
S'il y a un enregistrement en double et qu'il est mis à jour, il le sera ; déclencher avant l'insertion, avant la mise à jour, après la mise à jour ;
S'il y a un enregistrement en double mais qu'aucune mise à jour ne se produit, déclencher avant l'insertion, avant la mise à jour
3. Syntaxe de remplacement : s'il y a un enregistrement, exécuter avant l'insertion, avant la suppression. , après suppression, après insertion


/* SQLProgrammation */ ------------------

--// Variables locales---- ------
-- Déclaration de variable
declare var_name[,...] type [valeur par défaut]
Ceci L'instruction est utilisée pour déclarer des variables locales. Pour fournir une valeur par défaut pour une variable, incluez une clause par défaut. La valeur peut être spécifiée sous forme d'expression et n'a pas besoin d'être une constante. S'il n'y a pas de clause par défaut, la valeur initiale est nulle.

-- Assignation
Utilisez les instructions set et select into pour attribuer des valeurs aux variables.

- Remarque : les variables globales (variables définies par l'utilisateur) peuvent être utilisées dans les fonctions


--// Variables globales----------
--Définition et affectation
L'instruction set peut définir et attribuer des valeurs aux variables.
set @var = value;
Vous pouvez également utiliser l'instruction select into pour initialiser et attribuer une valeur à une variable. Cela nécessite que l'instruction select ne puisse renvoyer qu'une seule ligne, mais il peut s'agir de plusieurs champs, ce qui signifie que plusieurs variables se voient attribuer des valeurs en même temps. Le nombre de variables doit être cohérent avec le nombre de colonnes dans la requête. .
Vous pouvez également considérer l'instruction d'affectation comme une expression et l'exécuter via select. À ce stade, afin d'éviter que = soit traité comme un opérateur relationnel, utilisez plutôt :=. (L'instruction set peut utiliser = et :=).
select @var:=20;
select @v1:=id, @v2=name from t1 limit 1;
select * from tbl_name Where @var:=30;

select into peut affecter les données obtenues à partir de la requête dans la table à une variable.
-| select max(height) into @max_height from tb;

-- Nom de variable personnalisé
Afin d'éviter les variables définies par l'utilisateur et les identifiants système (généralement des champs) dans le nom de l'instruction select ), les variables définies par l'utilisateur utilisent @ comme symbole de départ avant le nom de la variable.
@var=10;

- Une fois la variable définie, elle est valable tout au long de la session (de connexion à la déconnexion)


--// Structure de contrôle--- - ------
-- if instruction
if search_condition then
Statement_list
[elseif search_condition then
Statement_list]
...
[else
Statement_list ]
end if;

-- case instruction
CASE value WHEN [compare-value] THEN result
[WHEN [compare-value] THEN result ...]
[ ELSE résultat]
END


-- while boucle
[begin_label:] while search_condition do
Statement_list
end while [end_label];

- Si vous devez terminer la boucle while au début de la boucle, vous devez utiliser des étiquettes qui doivent apparaître par paires.

- Quitter la boucle
Quitter toute la boucle quitter
Quitter la boucle actuelle itérer
Déterminer quelle boucle quitter par l'étiquette de sortie


--/ / Fonction intégrée ----------
-- Fonction numérique
abs(x)      — Valeur absolue abs(-10.9) = 10
format( x, d) -- Formater la millième valeur format(1234567.456, 2) = 1,234,567.46
ceil(x) -- Arrondir ceil(10.1) = 11
floor(x) -- Arrondir le plancher (10.1) = 10
round(x) -- Arrondir à l'entier le plus proche
mod(m, n) -- m%n m mod n Trouver le reste 10%3=1
pi() -- Obtenir pi
pow(m, n) -- m^n
sqrt(x) -- Racine carrée arithmétique
rand() -- Nombre aléatoire
truncate(x, d) -- Tronquer en d décimal lieux

-- Fonctions d'heure et de date
now(), current_timestamp(); -- Date et heure actuelles
current_date(); -- Date actuelle
current_time(); Heure actuelle
date('aaaa-mm-jj hh:ii:ss'); -- Récupère la partie date
time('aaaa-mm-jj hh:ii:ss'); partie horaire
date_format('aaaa-mm-jj hh:ii:ss', '%d %y %a %d %m %b %j'); >unix_timestamp(); -- - Récupère l'horodatage Unix
from_unixtime(); -- Récupère l'heure à partir de l'horodatage

-- Fonction de chaîne

length(string) -- Longueur de la chaîne, octets
char_length(string )                                                                                                                                                                                                                                                           replace_str replace search_str
instr(string,substring) -- Renvoie la position où la sous-chaîne apparaît pour la première fois dans la chaîne
concat(string [,...]) -- Concatène la chaîne
charset( str) -- Renvoie le jeu de caractères de la chaîne
lcase(string) — Convertit en minuscule
left(string, length) — Prend les caractères de longueur à partir de la gauche dans string2
load_file(file_name) — Lire à partir du fichier Obtenez le contenu
locate(substring, string [,start_position]) - Identique à instr, mais vous pouvez spécifier la position de départ
lpad(string, length, pad) - Répétez l'ajout d'un pad au début de la chaîne jusqu'à ce que la longueur de la chaîne Pour length
ltrim(string) — Supprimer les espaces de début
repeat(string, count)   — Répéter le nombre de fois
rpad(string, length, pad)       — Utiliser pad après str jusqu'à la longueur est la longueur
rtrim(string) — Supprimer les espaces back-end
strcmp(string1,string2)  —Comparez la taille de deux chaînes caractère par caractère

-- Fonction de traitement
cas lorsque [ condition ] then result [when [condition] then result ...] [else result] end Multi-branch

if(expr1,expr2,expr3) Double branche.


-- Fonction d'agrégation
count()

sum();

max();
min();
avg();
group_concat()

--Autres fonctions couramment utilisées
md5();

default();



--// Fonction de stockage,

Fonction personnalisée

----------
-- Nouveau CREATE FUNCTION function_name (liste de paramètres) RETURN
S Type de valeur de retour
Corps de la fonction

- Le nom de la fonction doit être un identifiant légal et ne doit pas entrer en conflit avec des mots-clés existants.
- Une fonction doit appartenir à une certaine base de données. Vous pouvez utiliser la forme db_name.funciton_name pour exécuter la base de données à laquelle appartient la fonction actuelle, sinon c'est la base de données actuelle.
- La partie paramètre se compose du "nom du paramètre" et du "type de paramètre". Plusieurs paramètres sont séparés par des virgules.
- Le corps de la fonction se compose de plusieurs instructions MySQL disponibles,
contrôle de processus , déclaration de variable et autres instructions.
- Plusieurs instructions doivent être incluses à l'aide des blocs d'instructions start...end.
- Il doit y avoir une instruction return return value.

-- Supprimer
DROP FUNCTION [IF EXISTS] function_name;

-- View
SHOW FUNCTION STATUS LIKE 'partten'
SHOW CREATE FUNCTION function_name;

--Modifier
ALTER FUNCTION function_name option de fonction


--// Procédure de stockage, fonction personnalisée----------
-- Définition
Une procédure stockée stockée est un morceau de code (procédure) constitué de SQL stocké dans la base de données.
Une procédure stockée est généralement utilisée pour compléter un élément de logique métier, tel que l'enregistrement, le paiement par équipe, l'entreposage des commandes, etc.
Une fonction se concentre généralement sur une certaine fonction et est considérée comme un service pour d'autres programmes. Elle doit appeler la fonction dans d'autres instructions. Cependant, une procédure stockée ne peut pas être appelée par d'autres personnes et est exécutée par elle-même via un appel.

--Créer
CREATE PROCEDURE sp_name (liste de paramètres)
Corps de la procédure

liste de paramètres : différent de la liste des paramètres de la fonction , le paramètre le type doit être spécifié
IN, représente le type d'entrée
OUT, représente le type de sortie
INOUT, représente le type mixte

Notez qu'il n'y a pas de valeur de retour.


/* Procédure stockée */ ------------------

Une procédure stockée est une collection de codes exécutables. Il préfère la logique métier aux fonctions.
Appel : nom de la procédure CALL
-- Remarque
- Il n'y a pas de valeur de retour.
- Ne peut être appelé que seul et ne peut pas être mélangé avec d'autres instructions

-- Paramètre
IN|OUT|INOUT Nom du paramètre Type de données
IN Entrée : pendant le processus d'appel, saisissez le data Paramètres à l'intérieur du corps du processus
OUT Sortie : pendant le processus appelant, le résultat du corps du processus est renvoyé au client
INOUT Entrée et sortie : il peut s'agir d'une entrée ou d'une sortie

-- Syntaxe
Nom du processus CREATE PROCEDURE (liste de paramètres)
BEGIN
​​​​Corps du processus
END


/* Utilisateur et Gestion des autorisations */ -- ----------------

Tableau d'informations utilisateur : mysql.user
-- Actualiser les autorisations
FLUSH PRIVILEGES
--Ajouter un utilisateur
CREATE USER Nom d'utilisateur IDENTIFIÉ PAR [MOT DE PASSE] Mot de passe (chaîne de caractères )
- Vous devez disposer de l'autorisation globale CREATE USER de la base de données mysql, ou avoir l'autorisation INSERT.
- Les utilisateurs peuvent uniquement être créés, mais les autorisations ne peuvent pas être accordées.
- Nom d'utilisateur, faites attention aux guillemets : tels que 'user_name'@'192.168.1.1'
- Le mot de passe a également besoin de guillemets, et le mot de passe numérique pur a également besoin de guillemets
- Pour spécifiez le mot de passe en texte brut, ignorez-le mot-clé PASSWORD. Pour spécifier le mot de passe sous forme de valeur hachée renvoyée par la fonction PASSWORD(), incluez le mot-clé PASSWORD
-- Rename user
RENAME USER old_user TO new_user
-- Set password
SET PASSWORD = PASSWORD( 'password') -- Définir un mot de passe pour l'utilisateur actuel
SET PASSWORD FOR username = PASSWORD('password') -- Définir un mot de passe pour l'utilisateur spécifié
-- Supprimer l'utilisateur
DROP USER username
-- Attribuer des autorisations/Ajouter un utilisateur
GRANT liste d'autorisations SUR le nom de la table AU nom d'utilisateur [IDENTIFIÉ PAR [MOT DE PASSE] 'mot de passe']
- tous les privilèges signifient toutes les autorisations
- *.* représente toutes les tables de toutes les bibliothèques
- le nom de la bibliothèque représente une table sous une certaine bibliothèque
-- Afficher les autorisations
AFFICHER LES SUBVENTIONS POUR le nom d'utilisateur
-- Afficher les autorisations de l'utilisateur actuel.
SHOW GRANTS ; ou SHOW GRANTS FOR CURRENT_USER ; ou SHOW GRANTS FOR CURRENT_USER();
-- révoquer les autorisations
REVOKE la liste d'autorisations SUR le nom de la table FROM nom d'utilisateur
REVOKE TOUS LES PRIVILEGES, GRANT OPTION FROM user name -- Révoquer toutes les autorisations
-- Niveaux d'autorisation
-- Pour utiliser GRANT ou REVOKE, vous devez disposer de l'autorisation GRANT OPTION et vous devez utiliser l'autorisation que vous accordez ou révoquez.
Niveau global : les autorisations globales s'appliquent à toutes les bases de données d'un serveur donné
GRANT ALL ON *.* et REVOKE ALL ON *.* accordent et révoquent uniquement les autorisations globales.
Niveau de base de données : les autorisations de base de données s'appliquent à toutes les cibles d'une base de données donnée, mysql.db, mysql.host
GRANT ALL ON db_name.* et REVOKE ALL ON db_name.* accordent et révoquent uniquement les autorisations de base de données.
Niveau table : les autorisations de table s'appliquent à toutes les colonnes d'une table donnée, mysql.talbes_priv
GRANT ALL ON db_name.tbl_name et REVOKE ALL ON db_name.tbl_name accordent et révoquent uniquement les autorisations de table.
Niveau colonne : les autorisations de colonne s'appliquent à une seule colonne dans une table donnée, mysql.columns_priv
Lors de l'utilisation de REVOKE, vous devez spécifier la même colonne que la colonne autorisée.
-- Liste des autorisations
TOUS [PRIVILEGES]--Définir toutes les autorisations simples sauf GRANT OPTION
ALTER--Autoriser ALTER TABLE
ALTER ROUTINE--Modifier ou annuler les sous-classes stockées PROCEDURE
CREATE — Autoriser CREATE TABLE
CREATE ROUTINE — Créer des sous-programmes stockés
CREATE TEMPORARY TABLES — Autoriser CREATE TEMPORARY TABLE
CREATE USER — Autoriser CREATE USER, DROP USER, RENAME USER et REVOKE TOUS LES PRIVILÈGES.
CREATE VIEW — Autoriser l'utilisation de CREATE VIEW
DELETE — Autoriser l'utilisation de DELETE
DROP — Autoriser l'utilisation de DROP TABLE
EXECUTE — — Autoriser l'utilisateur à exécuter les sous-programmes stockés
FILE — Autoriser SELECT...INTO OUTFILE et LOAD DATA INFILE
INDEX - Autoriser CREATE INDEX et DROP INDEX
INSERT - Autoriser INSERT
LOCK TABLES - Autoriser les tables pour lesquelles vous disposez des autorisations SELECT LOCK TABLES
PROCESS -- Autoriser SHOW FULL PROCESSLIST
REFERENCES -- Non implémenté
RELOAD -- Autoriser FLUSH
REPLICATION CLIENT -- Autoriser l'utilisateur à demander l'adresse d'un serveur esclave ou maître
REPLICATION SLAVE -- Utilisé pour les serveurs esclaves de réplication (lire les événements du journal binaire du serveur maître)
SELECT -- Autorisé à utiliser SELECT
SHOW DATABASES -- Afficher toutes les bases de données
SHOW VIEW -- Autorisé à être utilisé SHOW CREATE VIEW
SHUTDOWN - Autoriser à utiliser mysqladmin shutdown
SUPER - Autoriser à utiliser les instructions CHANGE MASTER, KILL, PURGE MASTER LOGS et SET GLOBAL, commande de débogage mysqladmin ; Vous permet de vous connecter (une fois) même si max_connections a été atteint.
UPDATE -- Autoriser l'utilisation de UPDATE
USAGE -- Synonymes de "aucune autorisation"
GRANT OPTION -- Autoriser l'octroi de l'autorisation


/* Maintenance de la table*/
- - Analyse et distribution des mots clés de la table de stockage
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE nom de la table...
--Vérifiez les erreurs dans une ou plusieurs tables
CHECK TABLE tbl_name [, tbl_name] ... [option ] ...
option = {QUICK | FAST | EXTENDED | CHANGED>
-- Défragmenter les fichiers de données
OPTIMIZE [LOCAL |

/* Divers*/ ------------------

1. Les backticks (`) peuvent être utilisés comme identifiants (noms de bibliothèques, noms de tables, nom du champ, index, alias) pour éviter les noms en double avec des mots-clés ! Le chinois peut également être utilisé comme identifiant !

2. Chaque répertoire de bibliothèque possède un fichier d'options db.opt qui enregistre la base de données actuelle.

3. Commentaires :

Commentaire sur une seule ligne# Contenu du commentaire

Commentaire sur plusieurs lignes/* Contenu du commentaire*/
Commentaire sur une seule ligne --Contenu du commentaire (style de commentaire SQL standard , nécessite le double Ajoutez un espace après le tiret (espace, TAB, nouvelle ligne, etc.))

4. Modèle

caractère générique  :

_ N'importe quel caractère unique

. % Tous les caractères multiples, y compris le caractère zéro
Les guillemets simples doivent être échappés '

5 Le terminateur de l'instruction dans la ligne de commande CMD peut être ";", "G", "g", ce qui n'affecte que les résultats d'affichage. Ailleurs, terminez par un point-virgule. Le délimiteur peut modifier le terminateur de l'instruction de la conversation en cours.

6. SQL n'est pas sensible à la casse

7. Effacer les instructions existantes : c

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:
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