


Analyse d'exemples d'opérations de base de base de données MySQL
1. Introduction à MySQL
1. Classification des logiciels de gestion de bases de données
Principalement divisé en relationnel et non relationnel.
On peut simplement comprendre que les bases de données relationnelles doivent avoir une structure de table, tandis que les bases de données non relationnelles stockent des données clé-valeur et n'ont pas de structure de table.
Type relationnel : tel que sqllite, db2, oracle, access, sql server, MySQL Remarque : les instructions sql sont universelles.
Non relationnel : mongodb, redis, memcache
2, MySQL
MySQL est un système de gestion de base de données relationnelle développé par la société suédoise MySQL AB et est actuellement un produit d'Oracle.
MySQL est l'un des systèmes de gestion de bases de données relationnelles les plus populaires En termes d'applications WEB, MySQL est le meilleur logiciel d'application SGBDR (système de gestion de bases de données relationnelles).
Le langage SQL est le langage standardisé le plus couramment utilisé et est utilisé pour accéder à la base de données MySQL. Le logiciel MySQL adopte une double politique de licence et est divisé en version communautaire et version commerciale. En raison de sa petite taille, de sa vitesse rapide, de son faible coût total de possession et surtout de ses caractéristiques open source, MySQL est généralement choisi comme base de données de site Web pour le site Web. développement de sites Internet de petite et moyenne taille.
MySQL nous fournit des packages d'installation open source pour divers systèmes d'exploitation, notamment Mac, Linux et Windows.
2. Moteur de stockage (également appelé type de table)
Les données dans MySQL sont stockées dans des fichiers (ou en mémoire) à l'aide de diverses technologies. Différentes technologies utilisent leurs propres mécanismes de stockage, techniques d'indexation et niveaux de verrouillage, offrant ainsi une variété de fonctionnalités et de capacités. MySQL fait référence à ces différentes technologies et fonctions associées sous le nom de moteurs de stockage, qui peuvent également être appelés types de tables.
MySQL est configuré par défaut avec de nombreux moteurs de stockage différents, qui peuvent être prédéfinis ou activés sur le serveur MySQL.
1. Moteurs de stockage courants et scénarios applicables
InnoDB : Utilisé pour les applications de traitement de transactions, prenant en charge les clés étrangères et les verrous au niveau des lignes. Si l'application a des exigences relativement élevées en matière d'intégrité des choses et nécessite une cohérence des données dans des conditions simultanées, et que les opérations de données incluent de nombreuses opérations de mise à jour et de suppression en plus de l'insertion et de la requête, alors le moteur de stockage InnoDB est plus approprié.
En plus de réduire efficacement les blocages causés par les suppressions et les mises à jour, InnoDB peut également garantir la soumission et l'annulation complètes des transactions. C'est un choix approprié pour les systèmes tels que les systèmes de facturation ou les systèmes financiers qui ont des exigences élevées en matière d'exactitude des données.MyISAM : Si l'application est principalement basée sur des opérations de lecture et d'insertion, avec seulement quelques opérations de mise à jour et de suppression, et n'a pas d'exigences élevées en matière d'intégrité et de concurrence des transactions, alors vous pouvez choisir ce moteur de stockage.
Mémoire : Enregistre toutes les données en mémoire, offrant un accès extrêmement rapide dans les environnements où les enregistrements et autres données similaires doivent être rapidement localisés.
L'inconvénient de la mémoire est qu'il existe une limite sur la taille de la table. Bien que les données puissent être restaurées normalement si la base de données se termine anormalement, une fois la base de données fermée, les données stockées dans la mémoire seront perdues.
Les moteurs de stockage pris en charge par MySQL incluent InnoDB, MyISAM, MEMORY, CSV, BLACKHOLE, NDB, FEDERATED, MRG_MYISAM, ARCHIVE, PERFORMANCE_SCHEMA.
Parmi eux, NDB et InnoDB fournissent des tables sécurisées pour les transactions, et d'autres moteurs de stockage sont des tables non sécurisées pour les transactions.
2. L'utilisation du moteur de stockage dans mysql
# 查看当前的默认存储引擎: mysql> show variables like "default_storage_engine"; # 查询当前数据库支持的存储引擎 mysql> show engines \G;
1 Spécifiez le moteur de stockage lors de la création de la table
mysql> create table ai(id bigint(12),name varchar(200)) ENGINE=MyISAM; mysql> create table country(id int(4),cname varchar(50)) ENGINE=InnoDB; # 也可以使用alter table语句,修改一个已经存在的表的存储引擎。 mysql> alter table ai engine = innodb;
2 Spécifiez le moteur de stockage dans le fichier de configuration
# my.ini文件 [mysqld] default-storage-engine=INNODB
3. la structure de la table
Il existe deux façons d'afficher la structure de la table :
- desc[nom de la table] et décrire[nom de la table] : Ces deux méthodes ont le même effet et peuvent afficher la structure actuelle de la table.
- show create table [tablename] : en plus de voir la définition de la table, vous pouvez également voir des informations telles que le moteur (moteur de stockage) et le jeu de caractères (jeu de caractères). Utilisez l'option G pour organiser les enregistrements verticalement, ce qui facilite l'affichage des enregistrements plus longs. )
- Exemple :
mysql> desc staff_info; +-------+-----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | name | varchar(50) | YES | | NULL | | | age | int(3) | YES | | NULL | | | sex | enum('male','female') | YES | | NULL | | | phone | bigint(11) | YES | | NULL | | | job | varchar(11) | YES | | NULL | | +-------+-----------------------+------+-----+---------+-------+ rows in set (0.00 sec) mysql> show create table staff_info\G; *************************** 1. row *************************** Table: staff_info Create Table: CREATE TABLE `staff_info` ( `id` int(11) DEFAULT NULL, `name` varchar(50) DEFAULT NULL, `age` int(3) DEFAULT NULL, `sex` enum('male','female') DEFAULT NULL, `phone` bigint(11) DEFAULT NULL, `job` varchar(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 row in set (0.01 sec) ERROR: No query specified
2. Colonne de croissance automatique
Le champ contraint augmente automatiquement et le champ contraint doit être contraint par la clé primaire en même temps
--不指定id,则自动增长 create table student(id int primary key auto_increment,name varchar(20),sex enum('male','female') default 'male'); mysql> desc student; +-------+-----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-----------------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(20) | YES | | NULL | | | sex | enum('male','female') | YES | | male | | +-------+-----------------------+------+-----+---------+----------------+ mysql> insert into student(name) values ('nick'),('tank') ; mysql> select * from student; +----+------+------+ | id | name | sex | +----+------+------+ | 1 | nick | male | | 2 | tank | male | +----+------+------+ --也可以指定id mysql> insert into student values(4,'asb','female'); Query OK, 1 row affected (0.00 sec) mysql> insert into student values(7,'wsb','female'); Query OK, 1 row affected (0.00 sec) mysql> select * from student; +----+------+--------+ | id | name | sex | +----+------+--------+ | 1 | nick | male | | 2 | tank | male | | 4 | asb | female | | 7 | wsb | female | +----+------+--------+ --对于自增的字段,在用delete删除后,再插入值,该字段仍按照删除前的位置继续增长 mysql> delete from student; Query OK, 4 rows affected (0.00 sec) mysql> select * from student; Empty set (0.00 sec) mysql> insert into student(name) values('ysb'); mysql> select * from student; +----+------+------+ | id | name | sex | +----+------+------+ | 8 | ysb | male | +----+------+------+ --应该用truncate清空表,比起delete一条一条地删除记录,truncate是直接清空表,在删除大表时用它 mysql> truncate student; Query OK, 0 rows affected (0.01 sec) mysql> insert into student(name) values('nick'); Query OK, 1 row affected (0.01 sec) mysql> select * from student; +----+------+------+ | id | name | sex | +----+------+------+ | 1 | nick | male | +----+------+------+ row in set (0.00 sec) --在创建完表后,修改自增字段的起始值 mysql> create table student(id int primary key auto_increment, name varchar(20),sex enum('male','female') default 'male'); mysql> alter table student auto_increment=3 ; mysql> show create table student; ....... ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 --也可以创建表时指定auto_increment的初始值,注意初始值的设置为表选项,应该放到括号外 mysql> create table student(id int primary key auto_increment, name varchar(20),sex enum('male','female') default 'male' )auto_increment=3 ;
4.
1. ENUM et SET Le nom chinois du type
- ENUM est appelé type d'énumération et sa plage de valeurs doit être affichée via l'énumération lors de la création d'une table.
- ENUM vous permet uniquement de sélectionner une seule valeur dans une collection de valeurs, pas plusieurs valeurs à la fois. Objectif : Choix unique : Sélectionnez le sexe
Pour 255 à 65 535 membres, 2 octets de stockage sont requis
Le maximum autorisé est de 65 535 membres ;
- SET est très similaire à ENUM. C'est également un objet chaîne et peut contenir 0 à 64 membres. Le stockage varie selon le membre.
- Le type d'ensemble vous permet de sélectionner arbitrairement 1 ou plusieurs éléments de la valeur définie pour la combinaison. L'injection ne sera pas autorisée pour le contenu hors plage et les valeurs en double seront automatiquement dédupliquées. Utilisation : Choix multiple : loisirs et sexe
SET:
1-8个成员的集合,占1个字节
9-16个成员的集合,占2个字节
17-24个成员的集合,占3个字节
25-32个成员的集合,占4个字节
33-64个成员的集合,占8个字节
2、set/enum示例
mysql> create table t10 (name char(20),gender enum('female','male') ); Query OK, 0 rows affected (0.01 sec) -- 选择enum('female','male')中的一项作为gender的值,可以正常插入 mysql> insert into t10 values ('nick','male'); Query OK, 1 row affected (0.00 sec) -- 不能同时插入'male,female'两个值,也不能插入不属于'male,female'的值 mysql> insert into t10 values ('nick','male,female'); ERROR 1265 (01000): Data truncated for column 'gender' at row 1 mysql> create table t11 (name char(20),hobby set('抽烟','喝酒','烫头','翻车') ); Query OK, 0 rows affected (0.01 sec) -- 可以任意选择set('抽烟','喝酒','烫头','翻车')中的项,并自带去重功能 mysql> insert into t11 values ('tank','烫头,喝酒,烫头'); Query OK, 1 row affected (0.01 sec) mysql> select * from t11; +------+---------------+ | name | hobby | +------+---------------+ | tank | 喝酒,烫头 | +------+---------------+ row in set (0.00 sec) -- 不能选择不属于set('抽烟','喝酒','烫头','翻车')中的项, mysql> insert into t11 values ('jason','烫头,翻车,看妹子'); ERROR 1265 (01000): Data truncated for column 'hobby' at row 1
五、MySQL表查询
1、限制查询的记录数(limit)
示例:
SELECT * FROM employee ORDER BY salary DESC LIMIT 3; --默认初始位置为0 SELECT * FROM employee ORDER BY salary DESC LIMIT 0 , 5 ; --从第0开始,即先出第一条,然后包含这一条在内往后查5条 SELECT * FROM employee ORDER BY salary DESC LIMIT 5 , 5 ; --从第5开始,即先出第6条,然后包含这一条在内往后查5条
2、使用正则表达式查询
小结:对字符串匹配的方式
WHERE emp_name = 'nick';
WHERE emp_name LIKE 'sea%';
WHERE emp_name REGEXP 'on$';
SELECT * FROM employee WHERE emp_name REGEXP '^jas'; SELECT * FROM employee WHERE emp_name REGEXP 'on$'; SELECT * FROM employee WHERE emp_name REGEXP 'm{2}';
六、数据备份(命令行)
1、 数据库的逻辑备份
--语法: mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql --示例: --单库备份 mysqldump -uroot –p123 mysql > c:\db1.sql mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql --多库备份 mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql --备份所有库 mysqldump -uroot -p123 --all-databases > all.sql
2、 数据恢复
--方法一: [root@nick backup]-- mysql -uroot -p123 < /backup/all.sql --方法二: mysql> use db1; mysql> SET SQL_LOG_BIN=0; --关闭二进制日志,只对当前session生效 mysql> source /root/db1.sql
七、事务和锁(SQL)
begin; -- 开启事务 select * from emp where id = 1 for update; -- 查询id值,for update添加行锁; update emp set salary=10000 where id = 1; -- 完成更新 commit; -- 提交事务
八、执行计划Explain
执行计划:让mysql预估执行操作(一般正确)
Explain语法:
explain select … from … [where …]
Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效果,可以帮助选择更好的索引和优化查询语句,写出更好的优化语句。
具体用法和字段含义可以参考官网explain-output ,这里需要强调rows是核心指标,绝大部分rows小的语句执行一定很快(rows:显示MySQL认为它执行查询时必须检查的行数。)。所以优化语句基本上都是在优化rows。
例如:
explain select * from news;
输出:
+--+-----------+-----+----+-------------+---+-------+---+----+-----+ |id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra| +--+-----------+-----+----+-------------+---+-------+---+----+----—+
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL convient aux débutants car il est simple à installer, puissant et facile à gérer les données. 1. Installation et configuration simples, adaptées à une variété de systèmes d'exploitation. 2. Prise en charge des opérations de base telles que la création de bases de données et de tables, d'insertion, d'interrogation, de mise à jour et de suppression de données. 3. Fournir des fonctions avancées telles que les opérations de jointure et les sous-questionnaires. 4. Les performances peuvent être améliorées par l'indexation, l'optimisation des requêtes et le partitionnement de la table. 5. Prise en charge des mesures de sauvegarde, de récupération et de sécurité pour garantir la sécurité et la cohérence des données.

Navicat lui-même ne stocke pas le mot de passe de la base de données et ne peut récupérer que le mot de passe chiffré. Solution: 1. Vérifiez le gestionnaire de mots de passe; 2. Vérifiez la fonction "Remember Motway" de Navicat; 3. Réinitialisez le mot de passe de la base de données; 4. Contactez l'administrateur de la base de données.

Créez une base de données à l'aide de NAVICAT Premium: Connectez-vous au serveur de base de données et entrez les paramètres de connexion. Cliquez avec le bouton droit sur le serveur et sélectionnez Créer une base de données. Entrez le nom de la nouvelle base de données et le jeu de caractères spécifié et la collation. Connectez-vous à la nouvelle base de données et créez le tableau dans le navigateur d'objet. Cliquez avec le bouton droit sur le tableau et sélectionnez Insérer des données pour insérer les données.

La copie d'une table dans MySQL nécessite la création de nouvelles tables, l'insertion de données, la définition de clés étrangères, la copie des index, les déclencheurs, les procédures stockées et les fonctions. Les étapes spécifiques incluent: la création d'une nouvelle table avec la même structure. Insérez les données de la table d'origine dans une nouvelle table. Définissez la même contrainte de clé étrangère (si le tableau d'origine en a un). Créer le même index. Créez le même déclencheur (si le tableau d'origine en a un). Créez la même procédure ou fonction stockée (si la table d'origine est utilisée).

NAVICAT pour MARIADB ne peut pas afficher directement le mot de passe de la base de données car le mot de passe est stocké sous forme cryptée. Pour garantir la sécurité de la base de données, il existe trois façons de réinitialiser votre mot de passe: réinitialisez votre mot de passe via Navicat et définissez un mot de passe complexe. Affichez le fichier de configuration (non recommandé, haut risque). Utilisez des outils de ligne de commande système (non recommandés, vous devez être compétent dans les outils de ligne de commande).

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

Étapes pour effectuer SQL dans NAVICAT: Connectez-vous à la base de données. Créez une fenêtre d'éditeur SQL. Écrivez des requêtes ou des scripts SQL. Cliquez sur le bouton Exécuter pour exécuter une requête ou un script. Affichez les résultats (si la requête est exécutée).

Raisons courantes pour lesquelles Navicat ne peut pas se connecter à la base de données et à ses solutions: 1. Vérifiez l'état d'exécution du serveur; 2. Vérifiez les informations de connexion; 3. Réglez les paramètres du pare-feu; 4. Configurer l'accès à distance; 5. Dépannage des problèmes de réseau; 6. Vérifier les autorisations; 7. Assurer la compatibilité de la version; 8. Dépannage d'autres possibilités.
