Plusieurs types de colonnes: entier signé/non-signé 1, 2, 3, 4et 8 bytes long, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET et ENUM types. 7.2 Types de colonnes.
Jointures ultra rapides, grce à un optimiseur de jointures à une passe.
Les requêtes SELECT et WHERE supportent tous les opérateurs et fonctions. Exemple:
mysql> SELECT CONCAT(first_name, " ", last_name) FROM nom_table
WHERE income/dependents > 10000 AND age > 30;
Les fonctions SQL sont implémentées à travers des classes de librairies extrêmement optimisées et devraient fonctionner aussi vite qu'elles peuvent! En général il n'y a plus d'allocation mémoire après une requête d'initialisation.
Support pour les clauses des instructions SQL GROUP BY et ORDER BY . Support pour le groupe d'instructions (COUNT(), COUNT(DISTINCT), AVG(), STD(), SUM(), MAX() et MIN()).
Support pour LEFT OUTER JOIN avec la syntaxe ANSI SQL et ODBC.
Le mélange des tables de différentes bases de données est supporté dans une même requête (après la version 3.22).
Système flexible et sécurisé de droits et de mots de passe, et qui autorise une vérification faites sur l'hôte. Les mots de passe sont sécurisés depuis que la gestion des mots de passe est crypté entre le client et le serveur.
ODBC (Open-DataBase-Connectivity) pour Windows95 (avec source). Toutes les fonctions ODBC 2.5 et d'autres. Vous pouvez, par exemple, utiliser Access pour vous connecter au serveur MySQL. 16 MySQL et ODBC
Tables rapides à B-tree avec compression des index.
16 index par tables sont autorisés. Chaque index consiste en 1 et 15 colonnes ou parties de colonnes. La longueur maximale d'un index est de 256 bytes (ceci peut être modifié lors de la compilation MySQL). Un index devrait utiliser un préfixe CHAR ou VARCHAR .
Enregistrements de longueur fixe ou variable.
Les Tables de hashage en mémoire, qui sont utilisées comme des tables temporaires.
Gestion de grandes bases de données. Nous utilisons MySQL avec des bases de 50,000,000 enregistrements.
Toutes les colonnes ont des valeurs par défaut. Vous pouvez utiliser INSERT pour insérer un ensemble de colonnes; les colonnes qui n'ont de valeurs explicites sont initialisées à leur valeur par défaut.
Utilise GNU Automake, Autoconf et libtool pour la portabilité.
Ecrit en C et C++. Testé avec un nombre conséquent de compilateurs différents.
Système efficace d'allocation mémoire thread-based.
Pas de perte de mémoire. Testé avec un détecteur de perte de mémoire commercial (purify).
Inclus isamchk, un utilitaire rapide pour le contrôle, l'optimisation et la réparation des tables. 13 Maintenance d'un serveur MySQL
Support de l' ISO-8859-1 Latin1. Par exemple, les caractères scandinaves @ringaccent{a}, @"a and @"o sont autorisés dans le nom des tables et des colonnes.
Toutes les données sont sauvegardées sous le format ISO-8859-1 Latin1. Les comparaisons de colonnes en chaînes de caractères normales sont "insensible à la casse".
Le tri est cohérent avec la norme ISO-8859-1 Latin1. Il est possible de le changer dans le source en ajoutant un nouveau tableau de tri. Pour voir un exemple de tri avancé, regardez le code Tchèque. MySQL supporte différentes polices qui peuvent être spécifiées à la compilation.
Alias sur les tables et colonnes comme dans le standard SQL92.
DELETE, INSERT, REPLACE et UPDATE retournent le nombre de lignes traitées.
Les noms de fonction restent disponibles pour les tables et les colonnes. Par exemple, ABS reste un nom de colonne valide. L'unique restriction est que lors de l'appel d'une fonction, les espaces entre le nom de la fonction et les parenthèses '(' qui suivent ne sont pas autorisées. 7.30 Mots reservés par MySQL
Tous les programmes de MySQL dispose d'une aide en ligne, accessible grce à l'option --help ou -?.
Les clients se connectent au serveur MySQL en utilisant les connexions TCP/IP, les sockets Unix ou les pipes nommés sous NT.
La commande spécifique à MySQLSHOW peut être utilisée pour avoir des informations concernant les bases de données, les tables et les index. La commande EXPLAIN peut être utilisée pour déterminer comment l'optimiseur résout la requête.