Résumé des connaissances MySql

Table des matières

1. Types de données couramment utilisés

Deuxièmement, l'index de la base de données

Qu'est-ce qu'un index de base de données

Le rôle de l'indice

Plus d'index, c'est mieux ?

Classification de l'indice

Trois, instruction sql

insérer

renouveler

supprimer

Renseigner

        requête générale

        sous-requête

        Requête de table de jointure

Quatrièmement, certaines fonctions couramment utilisées

grouper par groupement

trier par sorte

La clause HAVING filtre les groupes en fonction des conditions

Formater la date ou l'heure - date_format()

limite

compter()

ENTRE

MOY()

Déduplication DISTINCT

Injection SQL


1. Types de données couramment utilisés

 entier

        Plage de stockage : -2**32~2**32-1

bigint

        Plage de numéros : -2**63 - 2**63-1

flotter

        float(m,d), où m représente les chiffres significatifs et d représente les décimales

        Le chiffre effectif est de convertir la décimale actuelle : 12345,12 en notation scientifique : 1,234512*10**5

        La valeur maximale de m est 7

double

        double (m,d) où m représente les chiffres significatifs et d représente les décimales

        La valeur maximale de m est 15

décimal

        En ce qui concerne le montant, utilisez la décimale

        décimal(m,d), où m représente les chiffres significatifs et d représente les décimales

        La valeur maximale de m est 65

        Avantages : Il n'y aura pas de problèmes de précision, car l'essence du stockage décimal est qu'il existe sous forme de chaîne, il n'y aura donc pas de problème de perte de précision

carboniser

        Représente une chaîne de caractères de longueur fixe d'une longueur de 255 octets. Les caractères chinois occupent 3-4 octets

varchar

        Représente une chaîne de longueur indéterminée d'une longueur de 0 à 65 525 octets

texte

        Type de texte long, la longueur maximale est de 64 Ko

texte long

        Type de texte très volumineux, la longueur maximale occupe 4 Go

date-heure

        Si le fuseau horaire actuel change, le type datetime ne changera pas et il sera cohérent avec la date stockée

horodatage

        Le type d'horodatage perd le changement si le fuseau horaire change

Deuxièmement, l'index de la base de données

  1. Qu'est-ce qu'un index de base de données

            L'index de base de données est une structure de données triée dans le système de gestion de base de données pour aider à une requête rapide et mettre à jour les données dans la table de la base de données. En plus des données, les systèmes de base de données maintiennent également des structures de données qui satisfont des algorithmes de recherche spécifiques, et ces structures de données font référence à des données d'une certaine manière. Cette structure de données est un index. En bref, un index est comme un livre, un répertoire de dictionnaires. Si vous considérez cet article comme une base de données, alors le répertoire supérieur équivaut à l'index

  2. Le rôle de l'indice

    1. L'objectif principal est la systématisation du processus d'enquête

    2. En créant un index unique, l'unicité du champ correspondant dans l'index peut être garantie

    3. Réduit le temps consacré au regroupement et au tri dans les requêtes lors de l'utilisation de clauses de regroupement et de tri pour la récupération de données

  3. Plus d'index, c'est mieux ?

    Tout d'abord : plus vous créez d'index, mieux c'est

    1. La création d'index et la maintenance d'index prennent du temps, et le temps augmente avec la quantité de données

    2. L'index doit occuper de l'espace physique. Si un index clusterisé est créé, l'espace occupé sera plus grand

    3. Lors de l'ajout, de la suppression et de la modification de données dans la table , cela prendra plus de temps, car l'index doit également être maintenu

  4. Classification de l'indice

    1. Index de clé primaire : une fois la base de données définie comme clé primaire, un index sera créé automatiquement

#随表一起建索引:
CREATE TABLE customer (id INT(10) UNSIGNED ,customer_no VARCHAR(200)
  PRIMARY KEY(id) 
);

#使用AUTO_INCREMENT关键字的列必须有索引(只要有索引就行)。
CREATE TABLE customer2 (id INT(10) UNSIGNED AUTO_INCREMENT, customer_no VARCHAR(200),
  PRIMARY KEY(id) 
);

#单独建主键索引:
ALTER TABLE customer add PRIMARY KEY customer(customer_no);  

#删除建主键索引:
ALTER TABLE customer drop PRIMARY KEY ;  

#修改建主键索引:
#必须先删除掉(drop)原索引,再新建(add)索引

2. Index ordinaire (index à une seule colonne) : un index ne contient qu'une seule colonne et une table de données peut avoir plusieurs index à une seule colonne

#随表一起建索引:
CREATE TABLE customer (id INT(10) UNSIGNED  AUTO_INCREMENT ,customer_no VARCHAR(200),customer_name VARCHAR(200),
  PRIMARY KEY(id),    # 主键索引
  KEY (customer_name)  # 单列索引
);

#随表一起建立的索引 索引名同 列名(customer_name)

#单独建单值索引:
CREATE INDEX idx_customer_name ON customer(customer_name);  # 创建名称为 “idx_customer_name” 的普通索引

#删除索引: 删除名称为“idx_customer_name” 的普通索引
DROP INDEX idx_customer_name ;

3. Index unique : la valeur de l'index doit être unique, mais les valeurs nulles sont autorisées

Champ "UNIQUE" : la contrainte identifie de manière unique chaque enregistrement dans la table de la base de données.

#随表一起建索引:
CREATE TABLE customer (id INT(10) UNSIGNED  AUTO_INCREMENT ,customer_no VARCHAR(200),customer_name VARCHAR(200),
  PRIMARY KEY(id),
  KEY (customer_name),
  UNIQUE (customer_no) # 唯一性约束
);

#建立 唯一索引时必须保证所有的值是唯一的(除了null),若有重复数据,会报错。   

#单独建唯一索引:
CREATE UNIQUE INDEX idx_customer_no ON customer(customer_no); 

#删除索引:
DROP INDEX idx_customer_no on customer ;

4. Index composite : un index contient plusieurs colonnes ;

        Les index composites nécessitent moins de surcharge lors des opérations de base de données que plusieurs index à colonne unique.

Scénario d'utilisation : si les données d'une table comportent plusieurs champs qui apparaissent toujours en même temps lors de l'interrogation, ces champs peuvent être utilisés comme index composite, et la formation d'une couverture d'index peut améliorer l'efficacité des requêtes !

-- 随表一起建索引:
CREATE TABLE customer (id INT(10) UNSIGNED  AUTO_INCREMENT ,customer_no VARCHAR(200),customer_name VARCHAR(200),
  PRIMARY KEY(id),    # 主键索引
  KEY (customer_name),    # 单列索引
  UNIQUE (customer_name),    # 单列索引唯一值约束
  KEY (customer_no,customer_name)    # 复合索引
);

#单独建索引:
CREATE INDEX idx_no_name ON customer(customer_no,customer_name); 

#删除索引:
DROP INDEX idx_no_name  on customer ;

5. Index clusterisé et index non clusterisé

6. Indice dense et indice clairsemé

7. Index clusterisé et index non clusterisé

Il y en a trop, je n'en ai jamais rencontré en vrai travail, et je ne sais pas à quoi ça sert, quand il s'agira vraiment de ces index, je ferai des compléments spécifiques.

Trois, instruction sql

insérer

-- 普通插入
insert into table values('xx','xx','xx')

-- 查询插入
insert into student(name, age, class) select `name`, `age`, `class` from student

renouveler

-- 和where条件搭配使用
update table set column1_name = value1 where 条件


-- 更新多个列
update table set column1_name = value1, column2_name = value2,...WHERE condition;

supprimer

-- 删除表
drop 表名


-- 清空表里的内容:删除所有数据,保留表结构,不能撤销还原,速度快
truncate table 表名


-- 删除表,表数据和表结构一起删除,速度快
drop form 表名


-- 删除表里的部分内容:逐行删除,不适合大量数据删除,速度慢
delete from 表名 where 列名="value "

Renseigner

        requête générale

-- 简单查询
Select * from 表名
Select * from 表名 where 条件

        sous-requête

-- 子查询
-- 子sql查询出来的结果是主sql的条件
Select * from 表名 where(select * from 表名 where 条件)

        Requête de table de jointure

-- 左连接(left join)
-- 左连接以左表为主,会展示左表所有的数据,右表只展示符合条件的数据
Select  t1.字段1,t2.字段2  From table1 t1
Left join table2  t2 on  t1.id  =  t2.id


-- 右连接(right join)
-- 右连接以右表为主,会展示右表所有数据,左表数据只展示符合条件的数据
Select  t1.字段1,t2.字段2  From table1 t1
right join table2  t2 on  t1.id  =  t2.id


-- 内连接(inner join)
-- 主要是获取两个表中字段匹配关系的表。查询关联字段共同拥有的数据,用两个表相同的字段和内容相关联起来。
select * from table1 as 别名1 
inner join table2 as 别名2 
on 别名1.字段名1=别名2.字段名1;

select * from user as u 
inner join student as s on u.id=s.id;。

-- 全连接(FULL JOIN )
-- 返回连接的表中的所有数据,不管是否匹配

-- 交叉连接(CROSS JOIN)
如果在连接两个表时未指定连接条件,则数据库系统会将第一个表的每一行与第二个表的每一行合并。这种连接称为交叉连接或笛卡尔乘积

Quatrièmement, certaines fonctions couramment utilisées

grouper par groupement

La clause GROUP BY est utilisée conjointement avec l'instruction SELECT et les fonctions d'agrégation pour regrouper les lignes par valeurs de colonne communes

SELECT t1.dept_name, count(t2.emp_id) AS total_employees
FROM departments AS t1 
LEFT JOIN employees AS t2
ON t1.dept_id = t2.dept_id
GROUP BY t1.dept_name;

trier par sorte

Normalement, lorsque vous extrayez des données d'une table à l'aide d'une instruction SELECT, les lignes du jeu de résultats ne sont pas dans un ordre particulier. Si vous souhaitez organiser le jeu de résultats dans un ordre spécifique, vous pouvez spécifier une clause ORDER BY à la fin de l'instruction, qui indique au programme comment trier les données renvoyées par la requête. L'ordre de tri par défaut est croissant.

SELECT column_list FROM table_name ORDER BY column_name ASC|DESC;

La clause HAVING filtre les groupes en fonction des conditions

La clause HAVING est souvent utilisée avec la clause GROUP BY pour spécifier des conditions de filtrage pour des groupes ou des collections. La clause HAVING ne peut être utilisée qu'avec l'instruction SELECT

 Par exemple : maintenant, au lieu de simplement rechercher les noms des employés et de leurs services, recherchez les noms des services sans employés.

SELECT t1.dept_name, count(t2.emp_id) AS total_employees
FROM departments AS t1 
LEFT JOIN employees AS t2
ON t1.dept_id = t2.dept_id
GROUP BY t1.dept_name
HAVING total_employees = 0;

Formater la date ou l'heure - date_format()

SELECT name, DATE_FORMAT(birth_date, '%M %e, %Y') FROM users;

limite

1. Lorsque la limite utilise un paramètre

        Par exemple : limite 10 

        Cela signifie interroger les 10 premières lignes de données de la table, --récupérer les 10 premières lignes de données

2. Lorsque la limite utilise deux paramètres

        Par exemple : limite 2,5

        Le premier paramètre indique quelle ligne de données commencer à vérifier, et le deuxième paramètre indique le nombre de données à vérifier, "limite 2,5" ; signifie commencer à partir de la troisième ligne de données et prendre 5 données

***Lorsque deux paramètres sont spécifiés, le premier paramètre spécifie le décalage de la première ligne à renvoyer, c'est-à-dire le point de départ, tandis que le second paramètre spécifie le nombre maximum de lignes à renvoyer. Le décalage de la ligne initiale est 0 (pas 1).

compter()

La fonction COUNT() renvoie le nombre de lignes correspondant aux critères spécifiés.

1. La fonction COUNT(column_name) 
        renvoie le nombre de valeurs dans la colonne spécifiée (NULL n'est pas compté) :

SELECT COUNT(column_name) FROM table_name;

2. Syntaxe SQL COUNT(DISTINCT nom_colonne)

        La fonction COUNT(DISTINCT column_name) renvoie le nombre de valeurs distinctes pour la colonne spécifiée :

SELECT COUNT(DISTINCT column_name) FROM table_name;

countRésumé :

        count(*) : compte le nombre de lignes, null ne sera pas ignoré

        count (nom de la colonne): le nombre de lignes qui répondent aux critères dans une seule colonne, et les valeurs nulles seront ignorées

        count(1) : compte le nombre de lignes et ignore les valeurs nulles

L'efficacité d'exécution de count

ENTRE

1. L'opérateur IN est un opérateur logique utilisé pour vérifier si une valeur particulière existe dans un ensemble de valeurs. Sa syntaxe de base peut être donnée par :

SELECT column_list FROM table_name
WHERE column_name IN (value1, value1,...);

2、entre

Parfois, vous souhaitez sélectionner une ligne si les valeurs d'une colonne se situent dans une certaine plage. Ce type de condition est courant lorsque vous travaillez avec des données numériques.

Pour exécuter des requêtes basées sur de telles conditions, vous pouvez utiliser l'opérateur BETWEEN. C'est un opérateur logique qui vous permet de spécifier une plage à tester, comme ceci :

SELECT column1_name, column2_name, columnN_name 
FROM table_name 
WHERE column_name BETWEEN min_value AND max_value;

MOY()

La fonction AVG() renvoie la valeur moyenne d'une colonne numérique.

SELECT AVG(column_name) FROM table_name

Déduplication DISTINCT

Lors de la récupération de données à partir d'une table de base de données, le jeu de résultats peut contenir des lignes ou des valeurs en double. Si vous souhaitez supprimer ces valeurs en double, vous pouvez spécifier le mot clé DISTINCT directement après le mot clé SELECT, comme suit :

SELECT DISTINCT column_list FROM table_name;

Injection SQL

qu'est-ce que l'injection sql

L'injection SQL est une attaque par laquelle un attaquant injecte ou exécute un code SQL malveillant via un navigateur dans des données saisies dans un serveur d'application, telles que la saisie d'un formulaire Web.

Injection SQL - Tutoriel de base en ligne

Je suppose que tu aimes

Origine blog.csdn.net/Jiazengzeng/article/details/124041099
conseillé
Classement