Maison base de données tutoriel mysql Une brève introduction au mode serveur SQL de Mysql

Une brève introduction au mode serveur SQL de Mysql

Apr 01, 2017 am 10:42 AM

mysql Modes du serveur SQL
Le serveur MySQL peut fonctionner dans différents modes SQL, et différents modes peuvent être appliqués à différents clients. De cette façon, chaque application peut personnaliser le mode de fonctionnement du serveur en fonction de ses propres besoins.
Le schéma définit quelle syntaxe SQL MySQL doit prendre en charge et quel type de contrôles de validation des données doivent être effectués. Cela facilite l'utilisation de MySQL dans différents environnements et avec d'autres serveurs de bases de données. Vous pouvez définir le mode SQL par défaut en démarrant mysqld avec l'option --sql-mode="modes". Cette valeur peut également être laissée vide (--sql-mode = "") si vous souhaitez la réinitialiser. Vous pouvez également utiliser l'instruction SET [SESSION|GLOBAL] sql_mode='modes' pour définir la variable sql_mode

après le démarrage afin de changer le mode SQL. La définition d'une variable GLOBAL nécessite l'autorisation SUPER et affecte le fonctionnement de tous les clients connectés à partir de ce moment. La définition de la variable SESSION n'affecte que le client actuel. Tout client peut modifier sa valeur sql_mode de session à tout moment. Modesis est une série de modes différents séparés par des virgules («, »). Vous pouvez utiliser l'instruction SELECT @@sql_mode pour interroger
le mode actuel. La valeur par défaut est vide (aucun mode n'est défini). Valeur sql_mode principalement importante
・ANSI
Modifier la syntaxe et le comportement pour les rendre plus cohérents avec le SQL standard.
・STRICT_TRANS_TABLES
Abandonnez l'instruction si la valeur donnée ne peut pas être insérée dans la table de transaction. Pour les tables non transactionnelles, si une valeur apparaît dans la ligne 1 d'une instruction à une seule ligne ou d'une instruction à plusieurs lignes, l'instruction est ignorée. Une description plus détaillée est donnée plus loin dans cette section.
・TRADITIONNEL
Faites en sorte que MySQL se comporte comme un système de base de données SQL "traditionnel". Une description simple de ce mode consiste à « donner une erreur au lieu d'un avertissement » lorsqu'une valeur incorrecte est insérée dans une colonne. Remarque
 : abandonnez INSERT/UPDATE dès qu'une erreur est trouvée. Ce n'est pas ce que vous voulez si vous utilisez un moteur de stockage non transactionnel, car les modifications de données apportées avant l'erreur ne seront pas "reconduites", ce qui entraînera des mises à jour "seulement partiellement effectuées". Ce manuel fait référence au « mode strict », ce qui signifie un mode dans lequel au moins STRICT _TRANS_TABLES ou STRICT _ALL_TABLES est activé. Tous les modes pris en charge sont décrits ci-dessous :

・ALLOW_INVALID_DATES
Ne vérifiez pas toutes les dates en mode strict. Vérifie uniquement les mois entre 1 et 12 et les jours entre 1 et 31. Ceci est important dans les applications Web lorsque vous obtenez l'année, le mois et le jour à partir de trois champs différents et que vous souhaitez enregistrer exactement ce que l'utilisateur a inséré (sans validation de date). Ce mode fonctionne pour les colonnes DATE et DATETIME. Ne convient pas aux colonnes TIMESTAMP, qui nécessitent une validation de date. Avec le mode strict activé, le serveur nécessite un mois et un jour valides, pas seulement dans les plages 1 à 12 et 1 à 31 respectivement. Par exemple, « 2004-04-31 » est légal lorsque le mode strict est désactivé, mais illégal lorsque le mode strict est activé. Pour permettre le masquage des dates fixes en mode strict, ALLOW_INVALID_DATES doit également être activé.

・ANSI_QUOTES
Traitez '"' comme un guillemet d'identification (caractère de guillemet '''), et non comme un caractère de guillemet pour chaîne
. En mode ANSI, vous pouvez utilisez toujours ''' pour citer l'identifiant Avec ANSI_QUOTES activé, vous ne pouvez pas citer une chaîne avec des guillemets doubles, car elle est interprétée comme l'identifiant ・ERROR_FOR_pISION_BY_ZEROEn mode strict, pendant. INSERT ou UPDATE, s'il est divisé par zéro (ou MOD(X, 0)), une erreur est générée (sinon un avertissement) lors de la division par zéro. MySQL renvoie
NULL Si utilisé dans INSERT IGNORE ou UPDATE. IGNORER, MySQL génère un avertissement de division par zéro, mais le résultat de l'opération est NULL L'ordre de priorité de l'opérateur est
expression Par exemple, NOT a BETWEEN b AND c est interprété comme NOT (. a ENTRE b ET c). Dans certaines anciennes versions de MySQL, l'expression est interprétée comme (NON a) ENTRE b ET c). Activez le mode HIGH_NOT_PRECEDENCESQL pour obtenir le résultat priorité
supérieur précédent.

mysql> SET sql_mode = '';

mysql> SELECT NOT 1 BETWEEN -5 AND 5;

        -> 0

mysql> SET sql_mode = 'broken_not';

mysql> SELECT NOT 1 BETWEEN -5 AND 5;

        -> 1
Copier après la connexion

・IGNORE_SPACE
autorise les espaces entre les noms de fonctions et '('. Force tous les noms de fonctions à être traités comme des mots enregistrés. Le résultat est que si vous Pour accéder à un nom de base de données, de table ou de colonne enregistré sous forme de mot, vous devez le référencer. Par exemple, grâce à la fonction USER(), le nom de la table utilisateur dans la base de données mysql et la colonne Utilisateur dans la table. sont sauvegardés, vous devez donc les citer :

SELECT "User" FROM mysql."user";
Copier après la connexion

・NO_AUTO_CREATE_USER
防止GRANT自动创建新用户,除非还指定了密码。
・NO_AUTO_VALUE_ON_ZERO
NO_AUTO_VALUE_ON_ZERO影响AUTO_INCREMENT列的处理。一般情况,你可以向该列插入NULL或0生成下一个序列号。NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一个序列号。
如果将0保存到表的AUTO_INCREMENT列,该模式会很有用。(不推荐采用该惯例)。例如,如果你用mysqldump转储表并重载,MySQL遇到0值一般会生成新的序列号,生成的表的内容与转储的表不同。重载转储文件前启用NO_AUTO_VALUE_ON_ZERO可以解决该问题。mysqldump在输出中自动包括启用NO_AUTO_VALUE_ON_ZERO的语句。
・NO_BACKSLASH_ESCAPES
禁用反斜线字符(‘\')做为字符串内的退出字符。启用该模式,反斜线则成为普通字符。
・NO_DIR_IN_CREATE
创建表时,忽视所有INDEX DIRECTORY和DATA DIRECTORY指令。该选项对从复制服务器有用。
・NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎。
・NO_FIELD_OPTIONS
不要在SHOW CREATE TABLE的输出中打印MySQL专用列选项。该模式在可移植模式(portability mode)下用于mysqldump。
・NO_KEY_OPTIONS
不要在SHOW CREATE TABLE的输出中打印MySQL专用索引选项。该模式在可移植模式(portability mode)下用于mysqldump。
・NO_TABLE_OPTIONS
不要在SHOW CREATE TABLE的输出中打印MySQL专用表选项(例如ENGINE)。该模式在可移植模式(portability mode)下用于mysqldump。
・NO_UNSIGNED_SUBTRACTION
在减运算中,如果某个操作数没有符号,不要将结果标记为UNSIGNED。请注意这样使UNSIGNED BIGINT不能100%用于上下文中。参见12.8节,“Cast函数和操作符”。
・NO_ZERO_DATE
在严格模式,不要将 '0000-00-00'做为合法日期。你仍然可以用IGNORE选项插入零日期。在非严格模式,可以接受该日期,但会生成警告。
・NO_ZERO_IN_DAT
在严格模式,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入'0000-00-00'。在非严格模式,可以接受该日期,但会生成警告。
・ONLY_FULL_GROUP_BY
不要让GROUP BY部分中的查询指向未选择的列。
・PIPES_AS_CONCAT
将||视为字符串连接操作符(+)(同CONCAT()),而不视为OR。
・REAL_AS_FLOAT
将REAL视为FLOAT的同义词,而不是DOUBLE的同义词。
・STRICT_TRANS_TABLES
为所有存储引擎启用严格模式。非法数据值被拒绝。后面有详细说明。
・STRICT_TRANS_TABLES
为事务存储引擎启用严格模式,也可能为非事务存储引擎启用严格模式。后面有详细说明。
严格模式控制MySQL如何处理非法或丢失的输入值。有几种原因可以使一个值为非法。例如,数据类型错误,不适合列,或超出范围。当新插入的行不包含某列的没有显示定义DEFAULT子句的值,则该值被丢失。
对于事务表,当启用STRICT_ALL_TABLES或STRICT_TRANS_TABLES模式时,如果语句中有非法或丢失值,则会出现错误。语句被放弃并滚动。
对于非事务表,如果插入或更新的第1行出现坏值,两种模式的行为相同。语句被放弃,表保持不变。如果语句插入或修改多行,并且坏值出现在第2或后面的行,结果取决于启用了哪个严格选项:
・对于STRICT_ALL_TABLES,MySQL返回错误并忽视剩余的行。但是,在这种情况下,前面的行已经被插入或更新。这说明你可以部分更新,这可能不是你想要的。要避免这点,最好使用单行语句,因为这样可以不更改表即可以放弃。
・对于STRICT_TRANS_TABLES,MySQL将非法值转换为最接近该列的合法值并插入调整后的值。如果值丢失,MySQL在列中插入隐式 默认值。在任何情况下,MySQL都会生成警告而不是给出错误并继续执行语句。13.1.5节,“CREATE TABLE语法”描述了隐式默认值。
Le mode strict n'autorise pas les dates illégales, telles que « 2004-04-31 ». Il n'autorise pas les dates interdites utilisant la partie « zéro », telles que les dates « 2004-04-00 » ou « zéro ». Pour le désactiver, activez les modes SQL NO_ZERO_IN_DATE et NO_ZERO_DATE basés sur le mode strict.
Si vous n'utilisez pas le mode strict (c'est-à-dire n'activez pas le mode STRICT_TRANS_TABLES ou STRICT_ALL_TABLES), MySQL insérera les valeurs ajustées et donnera un avertissement pour les valeurs illégales ou manquantes. En mode strict, vous pouvez le faire via INSERT IGNORE ou UPDATE IGNORE. Voir Section 13.5.4.22, « Syntaxe SHOW warns ».


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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Compétences de traitement de structures de données volumineuses de PHP Compétences de traitement de structures de données volumineuses de PHP May 08, 2024 am 10:24 AM

Compétences en matière de traitement de la structure des Big Data : Chunking : décomposez l'ensemble de données et traitez-le en morceaux pour réduire la consommation de mémoire. Générateur : générez des éléments de données un par un sans charger l'intégralité de l'ensemble de données, adapté à des ensembles de données illimités. Streaming : lisez des fichiers ou interrogez les résultats ligne par ligne, adapté aux fichiers volumineux ou aux données distantes. Stockage externe : pour les ensembles de données très volumineux, stockez les données dans une base de données ou NoSQL.

Comment optimiser les performances des requêtes MySQL en PHP ? Comment optimiser les performances des requêtes MySQL en PHP ? Jun 03, 2024 pm 08:11 PM

Les performances des requêtes MySQL peuvent être optimisées en créant des index qui réduisent le temps de recherche d'une complexité linéaire à une complexité logarithmique. Utilisez PreparedStatements pour empêcher l’injection SQL et améliorer les performances des requêtes. Limitez les résultats des requêtes et réduisez la quantité de données traitées par le serveur. Optimisez les requêtes de jointure, notamment en utilisant des types de jointure appropriés, en créant des index et en envisageant l'utilisation de sous-requêtes. Analyser les requêtes pour identifier les goulots d'étranglement ; utiliser la mise en cache pour réduire la charge de la base de données ; optimiser le code PHP afin de minimiser les frais généraux.

Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Comment utiliser la sauvegarde et la restauration MySQL en PHP ? Jun 03, 2024 pm 12:19 PM

La sauvegarde et la restauration d'une base de données MySQL en PHP peuvent être réalisées en suivant ces étapes : Sauvegarder la base de données : Utilisez la commande mysqldump pour vider la base de données dans un fichier SQL. Restaurer la base de données : utilisez la commande mysql pour restaurer la base de données à partir de fichiers SQL.

Comment insérer des données dans une table MySQL en utilisant PHP ? Comment insérer des données dans une table MySQL en utilisant PHP ? Jun 02, 2024 pm 02:26 PM

Comment insérer des données dans une table MySQL ? Connectez-vous à la base de données : utilisez mysqli pour établir une connexion à la base de données. Préparez la requête SQL : Écrivez une instruction INSERT pour spécifier les colonnes et les valeurs à insérer. Exécuter la requête : utilisez la méthode query() pour exécuter la requête d'insertion en cas de succès, un message de confirmation sera généré.

Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Comment corriger les erreurs mysql_native_password non chargé sur MySQL 8.4 Dec 09, 2024 am 11:42 AM

L'un des changements majeurs introduits dans MySQL 8.4 (la dernière version LTS en 2024) est que le plugin « MySQL Native Password » n'est plus activé par défaut. De plus, MySQL 9.0 supprime complètement ce plugin. Ce changement affecte PHP et d'autres applications

Comment utiliser les procédures stockées MySQL en PHP ? Comment utiliser les procédures stockées MySQL en PHP ? Jun 02, 2024 pm 02:13 PM

Pour utiliser les procédures stockées MySQL en PHP : Utilisez PDO ou l'extension MySQLi pour vous connecter à une base de données MySQL. Préparez l'instruction pour appeler la procédure stockée. Exécutez la procédure stockée. Traitez le jeu de résultats (si la procédure stockée renvoie des résultats). Fermez la connexion à la base de données.

Comment créer une table MySQL en utilisant PHP ? Comment créer une table MySQL en utilisant PHP ? Jun 04, 2024 pm 01:57 PM

La création d'une table MySQL à l'aide de PHP nécessite les étapes suivantes : Connectez-vous à la base de données. Créez la base de données si elle n'existe pas. Sélectionnez une base de données. Créer un tableau. Exécutez la requête. Fermez la connexion.

La différence entre la base de données Oracle et MySQL La différence entre la base de données Oracle et MySQL May 10, 2024 am 01:54 AM

La base de données Oracle et MySQL sont toutes deux des bases de données basées sur le modèle relationnel, mais Oracle est supérieur en termes de compatibilité, d'évolutivité, de types de données et de sécurité ; tandis que MySQL se concentre sur la vitesse et la flexibilité et est plus adapté aux ensembles de données de petite et moyenne taille. ① Oracle propose une large gamme de types de données, ② fournit des fonctionnalités de sécurité avancées, ③ convient aux applications de niveau entreprise ; ① MySQL prend en charge les types de données NoSQL, ② a moins de mesures de sécurité et ③ convient aux applications de petite et moyenne taille.

See all articles