Partie 1: 1. Installer Microsoft SQL Server et Management
Qu’est-ce que SQL Server, T-SQL et SSMS ?
SQL Server est un système de gestion de bases de données relationnelles (SGBDR) développée par Microsoft. On l’utilise pour créer, mettre à jour et gérer des bases de données relationnelles. Ce système de gestion de bases prend en charge SQL ainsi que des fonctionnalités supplémentaires appelées T-SQL ou Transact-SQL qui ajoute des constructions de programmation qui ne sont pas natives au language SQL.
Certains des systèmes de gestion de bases de données les plus connus sont MySQL, PostgreSQL, SQLite, Microsoft SQL Server, Oracle Database etc.

Microsoft fournit un ensemble d’outils pour gérer les bases de données SQL Server locales ou distantes telles que SSMS (SQL Server Management Studio), SQL Server Agent, SQL Server Analysis Services, SQL Server Reporting Services, SQL Server Integration Services, etc.
SQL Server Management Studio ou SSMS, est un outil gratuit pour accéder, développer, administrer et gérer les bases de données SQL Server, Azure SQL Databases et Azure Synapse Analytics. Grace à SSMS, on peut gérer le SQL Server à l’aide d’une interface graphique.

SQL et T-SQL sont utilisés dans les secteurs des bases de données. On peut affirmer que ces deux langages de requête sont très similaires . Le SQL standard est un type de langage de programmation appelé langage de requête. SQL est utilisé pour ajouter, récupérer ou mettre à jour des données stockées dans une base de données. Il est utilisé dans de nombreux types de bases de données. Transact-SQL, parfois appelé TSQL, est une extension du langage SQL utilisé principalement dans Microsoft SQL Server. Cela signifie qu’il fournit toutes les fonctionnalités de SQL mais avec quelques extras supplémentaires. On peut le considérer un peu comme un dialecte SQL.
La plupart des principaux fournisseurs de bases de données proposent leurs propres extensions de langage SQL pour leurs propres produits, et TSQL en est l’un des exemples les plus largement utilisés. En termes simples : lorsque vous écrivez des requêtes dans Microsoft SQL Server, vous utilisez effectivement T-SQL. Toutes les applications qui communiquent avec SQL Server, quelle que soit l’interface utilisateur de l’application, le font en envoyant des instructions T-SQL au serveur.
Les différences entre SQL et TSQL :
- SQL est un langage de requête utilisé pour manipuler des données stockées dans une base de données. T-SQL est également un langage de requête, mais c’est une extension de SQL qui est principalement utilisée dans les bases de données et les logiciels Microsoft SQL Server.
- SQL est open-source. T-SQL est développé et détenu par Microsoft.
- Les instructions SQL sont exécutées une par une, également appelées « non procédurales ». T-SQL exécute les instructions de manière « procédurale », ce qui signifie que le code sera traité comme un bloc, logiquement et dans un ordre structuré.
- SQL et T-SQL ont également des mots clés de commande légèrement différents. T-SQL propose également des fonctions qui ne font pas partie du SQL standard.
Partie 2: Créer une base de données – SQL Server
Les données
Les données ne sont rien d’autre que des informations collectées dans divers formats tels que des nombres, du texte, des médias et autres.
Les base de données
Une base de données est une collection organisée d’informations connexes qui sont stockées de manière à pouvoir être facilement consultées, récupérées, gérées et mises à jour. Dans une base de données, on peut organiser les données en lignes et en colonnes sous la forme d’un tableau. L’indexation des données facilite leur recherche et leur récupération en cas de besoin.

Pour créer une base de données afin que les données soient accessibles aux utilisateurs via un seul ensemble de logiciels, on utilise des gestionnaires de base de données (SGBD).

MySQL, SQL Server, Oracle Database, PostgreSQL, etc. sont tous des exemples de bases de données différentes. Ces bases de données modernes sont gérées par un système de gestion de base de données (SGBD). Le langage de requête structuré SQL est utilisé pour opérer sur les données d’une base de données.
--CREER UNE BASE DE DONNÉES
CREATE DATABASE BDD1; --commentaire
create database BDD2;
CREATE DATABASE BDD_4;
--VOIR LES BASES DE DONNÉES
SELECT name FROM sys.databases;
SELECT name, create_date FROM sys.databases;
SELECT name, create_date FROM sys.databases
WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb');
SELECT
mdf.database_id,
mdf.name,
mdf.physical_name as data_file,
ldf.physical_name as log_file,
db_size = CAST((mdf.size * 8.0)/1024 AS DECIMAL(8,2)),
log_size = CAST((ldf.size * 8.0 / 1024) AS DECIMAL(8,2))
FROM (SELECT * FROM sys.master_files WHERE type_desc = 'ROWS' ) mdf
JOIN (SELECT * FROM sys.master_files WHERE type_desc = 'LOG' ) ldf
ON mdf.database_id = ldf.database_id
--EFFACER UNE BASE DE DONNÉES
DROP DATABASE BDD_4;
DROP DATABASE [BDD 3];
--BACKUP DATABASE
BACKUP DATABASE [BDD1]
TO DISK ='G:\Data Analysis\SQL\Transact SQL\Exp\Backup\BDD1.bak'
WITH DIFFERENTIAL;
BACKUP LOG [BDD1]
TO DISK ='G:\Data Analysis\SQL\Transact SQL\Exp\Backup\BDD1_log.bak';
--RESTORE DATABASE
RESTORE DATABASE data_base
FROM DISK = 'G:\Data Analysis\SQL\Transact SQL\Exp\Backup\BDD1.bak';
--RENOMMER LA BASE DE DONNÉES
ALTER DATABASE [database1]
MODIFY NAME = DATABASETEST;
-- USE
USE BDD2;
Partie 3: Créer une table de données – SQL Server
Les tables
Les tables sont des objets de base de données qui contiennent toutes les données d’une base de données. Dans une table, les données sont logiquement organisées en lignes et en colonnes. Chaque colonne représente un champ et chaque ligne représente un enregistrement unique. Chaque colonne est associée à un type de données. Il représente le type de données dans cette colonne. Chaque table porte un nom unique dans une base de données. Une table définie par l’utilisateur peut avoir jusqu’à 1024 colonnes.
Les types de données SQL Server
Dans SQL Server, le type de données spécifie le type de données pouvant être stockées dans une colonne d’une table, telles que des données entières, des données de chaîne, la date et l’heure, des chaînes binaires, etc. L’attribution d’un type de données approprié aux colonnes d’une table est cruciale lors de la conception d’une base de données. Cela affecte les performances et l’efficacité de la base de données.
Voir les types de données (Transact-SQL) sur le site microsoft:
https://learn.microsoft.com/fr-fr/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-ver16
--Creation des table
CREATE TABLE datatable1(id INT,name VARCHAR(100),age INT);
CREATE TABLE [ma table]
(
id INT,
name VARCHAR(200),
age INT
);
--Effacer les tables
DROP TABLE [dbo].[ma table];
CREATE TABLE employees
(
id INT,
name VARCHAR(200),
age INT
);
--INSERT INTO
INSERT INTO [dbo].[employees]
VALUES (3, 'Jonathan', 33),
(4, 'Coly', 25);
--TRUNCATE TABLE
TRUNCATE TABLE [dbo].[employees];
SELECT * FROM [dbo].[employees];
--ALTER TABLE
ALTER TABLE [dbo].[employees]
ADD lastname VARCHAR(100);
ALTER TABLE [dbo].[employees]
DROP COLUMN [lastname];
EXEC sp_rename '[dbo].[employees].[name]','firstname','COLUMN';
ALTER TABLE [dbo].[employees]
ALTER COLUMN [firstname] VARCHAR(200);
EXEC sp_rename '[dbo].[employees]', 'employees_rh';
Partie 4, 5: Clé Primaire et clé étrangère

C’est quoi une clé ?
Dans une base de données relationnelle, les clés sont les éléments les plus importants pour maintenir la relation entre deux tables ou pour identifier de manière unique les données d’une table. La clé primaire est utilisée pour identifier les données de manière unique, par conséquent, deux lignes ne peuvent pas avoir la même clé primaire. Il ne peut pas être nul. D’autre part, la clé étrangère est utilisée pour maintenir la relation entre deux tables.
La clé primaire d’une table agit comme clé étrangère dans une autre table. La clé étrangère dans une table aide à appliquer la contrainte d’intégrité référentielle.
Clé primaire
Une clé primaire est une contrainte qui identifie de manière unique chaque ligne de la table. Il applique l’intégrité des données dans les tables.
- Une table ne peut avoir qu’une seule clé primaire.
- Une clé primaire peut être définie sur une colonne ou sur la combinaison de plusieurs colonnes appelée clé primaire composite.
- Une clé primaire ne peut pas dépasser 16 colonnes
- La clé primaire identifie de manière unique chaque ligne d’une table.
- La colonne Clé primaire n’autorise pas les valeurs NULL ou en double. Cela générera une erreur si on essaye de le faire de le faire.
Clé étrangère
La clé étrangère établit la relation entre les deux tables et applique l’intégrité référentielle dans SQL Server.
- La table ayant la contrainte de clé étrangère est appelée la table enfant et la table référencée par la clé étrangère est appelée la table parent.
- Une contrainte de clé étrangère sur une seule colonne (contrainte de niveau colonne) ne peut référencer qu’une seule colonne dans la table parent et doit avoir le même type de données que la colonne référencée.
- Les contraintes de clé étrangère ne sont pas appliquées sur les tables temporaires.
USE [RH];
CREATE TABLE customer
(
customer_id INT NOT NULL,
firstname VARCHAR(50),
lastname VARCHAR(50)
)
;
CREATE TABLE ordersclient
(
orderid INT,
orderdate DATETIME,
customerid INT
)
;
ALTER TABLE [dbo].[ordersclient]
ADD PRIMARY KEY ([orderid]);
CREATE TABLE orderline
(
orderid INT NOT NULL,
productid INT,
quantity INT
)
;
ALTER TABLE [dbo].[orderline]
ADD CONSTRAINT primary_key PRIMARY KEY (orderid, productid);
Partie 6: SELECT, SELECT DISTINCT, WHERE

--Database
CREATE DATABASE onlinesales;
USE onlinesales;
--Tables
CREATE TABLE employees
(
emp_code VARCHAR(50) NOT NULL PRIMARY KEY,
emp_name VARCHAR(100),
emp_city VARCHAR(50),
comission FLOAT(10),
emp_phone_number VARCHAR(20)
);
INSERT INTO employees VALUES
('A007', 'Maria', 'Montreal', '0.15', '514-25814763'),
('A003', 'Alex ', 'London', '0.13', '075-12458969'),
('A008', 'Alfred', 'New York', '0.12', '011-25874365'),
('A011', 'Yan', 'Boston', '0.15', '055-45625874'),
('A010', 'Natalie', 'Montreal', '0.14', '514-22388644'),
('A012', 'Lucie', 'New York', '0.12', '011-52981425'),
('A005', 'John', 'London', '0.13', '062-21447739'),
('A001', 'Keven', 'Toronto', '0.14', '608-12346674'),
('A002', 'Arthur', 'Montreal', '0.11', '514-12358964'),
('A006', 'Yacine', 'London', '0.15', '062-22255588'),
('A004', 'Margarita', 'Toronto', '0.15', '608-22544166'),
('A009', 'Benjamin', 'Boston', '0.11', '055-22536178');
CREATE TABLE clients
(
client_id VARCHAR(50) NOT NULL PRIMARY KEY,
client_name VARCHAR(100) NOT NULL,
client_city VARCHAR(100),
working_area VARCHAR(100) NOT NULL,
client_country VARCHAR(100) NOT NULL,
grade INT,
opening_amount FLOAT NOT NULL,
receiving_amount FLOAT NOT NULL,
payement_amount FLOAT NOT NULL,
outstanding_amount FLOAT NOT NULL,
phone_number_client VARCHAR(100) NOT NULL,
emp_code VARCHAR(50) NOT NULL REFERENCES employees
);
INSERT INTO clients VALUES
('C00013', 'James', 'Montreal', 'Montreal', 'Canada', '2', '6000.00', '5000.00', '7000.00', '4000.00', '111-111111', 'A003'),
('C00001', 'Micheal', 'New York', 'New York', 'USA', '2', '3000.00', '5000.00', '2000.00', '6000.00', '122-3000000', 'A008'),
('C00020', 'Albert', 'New York', 'New York', 'USA', '3', '5000.00', '7000.00', '6000.00', '6000.00', '', 'A008'),
('C00025', 'Liam', 'Boston', 'Boston', 'USA', '2', '5000.00', '7000.00', '4000.00', '8000.00', '666-6666666', 'A011'),
('C00024', 'Noah', 'London', 'London', 'UK', '2', '4000.00', '9000.00', '7000.00', '6000.00', '999-999999', 'A006'),
('C00015', 'William', 'London', 'London', 'UK', '1', '6000.00', '8000.00', '3000.00', '11000.00', '452-458896', 'A003'),
('C00002', 'Lucas', 'New York', 'New York', 'USA', '3', '5000.00', '7000.00', '9000.00', '3000.00', '785-895625', 'A008'),
('C00018', 'Fleming', 'Brisban', 'Brisban', 'Australia', '2', '7000.00', '7000.00', '9000.00', '5000.00', '785-23565', 'A005'),
('C00021', 'Jack', 'Brisban', 'Brisban', 'Australia', '1', '7000.00', '7000.00', '7000.00', '7000.00', '254-564265', 'A005'),
('C00019', 'William', 'Moskow', 'Moskow', 'Russia', '1', '8000.00', '7000.00', '7000.00', '8000.00', '365-564265', 'A010'),
('C00005', 'Isabella', 'Paris', 'Paris', 'France', '1', '7000.00', '11000.00', '7000.00', '11000.00', '147-25896312', 'A002'),
('C00007', 'Charlotte', 'Montreal', 'Ottawa', 'Canada', '1', '7000.00', '11000.00', '9000.00', '9000.00', '287-564265', 'A010'),
('C00022', 'Henry', 'Boston', 'Boston', 'USA', '2', '7000.00', '11000.00', '9000.00', '9000.00', '113-12345678','A002'),
('C00004', 'Amelia', 'Brisban', 'Brisban', 'Australia', '1', '5000.00', '8000.00', '7000.00', '6000.00', '231-564265', 'A005'),
('C00023', 'Amelie', 'Paris', 'Paris', 'France', '0', '4000.00', '6000.00', '7000.00', '3000.00', 'AAAABAA', 'A006'),
('C00006', 'Sophia', 'Toronto', 'Toronto', 'Canada', '1', '10000.00', '7000.00', '6000.00', '11000.00', '657-564265', 'A004'),
('C00010', 'Charles', 'Hampshair', 'Hampshair', 'UK', '3', '6000.00', '4000.00', '5000.00', '5000.00', '785-564265', 'A009'),
('C00017', 'Theodore', 'Moskow', 'Moskow', 'Russia', '2', '8000.00', '4000.00', '3000.00', '9000.00', '426-564265', 'A007'),
('C00012', 'Steven', 'San Jose', 'San Jose', 'USA', '1', '5000.00', '7000.00', '9000.00', '3000.00', '390-564265', 'A012'),
('C00008', 'Karolina', 'Toronto', 'Toronto', 'Canada', '1', '7000.00', '7000.00', '9000.00', '5000.00', '221-564265', 'A004'),
('C00003', 'Martin', 'Toronto', 'Toronto', 'Canada', '2', '8000.00', '7000.00', '7000.00', '8000.00', 'MJYURFD', 'A004'),
('C00009', 'Olivia', 'Boston', 'Boston', 'USA', '3', '8000.00', '7000.00', '3000.00', '12000.00', 'Phone No', 'A002'),
('C00014', 'Ava', 'Ottawa', 'Montreal', 'Canada', '2', '8000.00', '11000.00', '7000.00', '12000.00', '254-564265', 'A001'),
('C00016', 'Evelyn', 'Montreal', 'Montreal', 'Canada', '2', '8000.00', '11000.00', '7000.00', '12000.00', '254-564265', 'A007'),
('C00011', 'Evelina', 'Toronto', 'Montreal', 'Canada', '3', '7000.00', '11000.00', '7000.00', '11000.00', '2994-', 'A010');
CREATE TABLE orders
(
order_number INT NOT NULL PRIMARY KEY,
order_amount FLOAT NOT NULL,
advance_amount FLOAT NOT NULL,
order_date DATE NOT NULL,
client_code VARCHAR(50) NOT NULL REFERENCES clients,
employees_code VARCHAR(50) NOT NULL REFERENCES employees,
order_description VARCHAR(100) NOT NULL
);
INSERT INTO Orders VALUES
('200100', '1000.00', '600.00', '08/01/2008', 'C00013', 'A003', 'soda; candy; choc'),
('200110', '3000.00', '500.00', '04/15/2008', 'C00019', 'A010', 'soda'),
('200107', '4500.00', '900.00', '08/30/2008', 'C00007', 'A010', 'soda'),
('200112', '2000.00', '400.00', '05/30/2008', 'C00016', 'A007', 'soda'),
('200113', '4000.00', '600.00', '06/10/2008', 'C00022', 'A011', 'candy'),
('200102', '2000.00', '300.00', '05/25/2008', 'C00012', 'A012', 'candy'),
('200114', '3500.00', '2000.00', '08/15/2008', 'C00002', 'A008', 'candy; soda'),
('200122', '2500.00', '400.00', '09/16/2008', 'C00003', 'A004', 'choc'),
('200118', '500.00', '100.00', '07/20/2008', 'C00023', 'A006', 'choc; candy'),
('200119', '4000.00', '700.00', '09/16/2008', 'C00007', 'A010', 'candy'),
('200121', '1500.00', '600.00', '09/23/2008', 'C00008', 'A004', 'soda; candy; choc'),
('200130', '2500.00', '400.00', '07/30/2008', 'C00025', 'A011', 'soda; candy'),
('200134', '4200.00', '1800.00', '09/25/2008', 'C00004', 'A005', 'candy'),
('200108', '4000.00', '600.00', '02/15/2008', 'C00008', 'A004', 'candy'),
('200103', '1500.00', '700.00', '05/15/2008', 'C00021', 'A005', 'soda; candy; choc'),
('200105', '2500.00', '500.00', '07/18/2008', 'C00025', 'A011', 'soda; candy'),
('200109', '3500.00', '800.00', '07/30/2008', 'C00011', 'A010', 'soda; candy; choc'),
('200101', '3000.00', '1000.00', '07/15/2008', 'C00001', 'A008', 'soda; candy'),
('200111', '1000.00', '300.00', '07/10/2008', 'C00020', 'A008', 'choc; soda'),
('200104', '1500.00', '500.00', '03/13/2008', 'C00006', 'A004', 'choc; soda'),
('200106', '2500.00', '700.00', '04/20/2008', 'C00005', 'A002', 'soda; candy'),
('200125', '2000.00', '600.00', '10/10/2008', 'C00018', 'A005', 'candy'),
('200117', '800.00', '200.00', '10/20/2008', 'C00014', 'A001', 'choc'),
('200123', '500.00', '100.00', '09/16/2008', 'C00022', 'A002', 'choc; candy'),
('200120', '500.00', '100.00', '07/20/2008', 'C00009', 'A002', 'choc; candy'),
('200116', '500.00', '100.00', '07/13/2008', 'C00010', 'A009', 'candy; soda'),
('200124', '500.00', '100.00', '06/20/2008', 'C00017', 'A007', 'soda; candy'),
('200126', '500.00', '100.00', '06/24/2008', 'C00022', 'A002', 'soda; candy; choc'),
('200129', '2500.00', '500.00', '07/20/2008', 'C00024', 'A006', 'choc'),
('200127', '2500.00', '400.00', '07/20/2008', 'C00015', 'A003', 'candy'),
('200128', '3500.00', '1500.00', '07/20/2008', 'C00009', 'A002', 'candy'),
('200135', '2000.00', '800.00', '09/16/2008', 'C00007', 'A010', 'candy'),
('200131', '900.00', '150.00', '08/26/2008', 'C00012', 'A012', 'soda'),
('200133', '1200.00', '400.00', '06/29/2008', 'C00009', 'A002', 'soda');
/*###### SELECT #####*/
--retourner des enregistrements dans un tableau de résultat
SELECT * FROM [dbo].[clients];
SELECT * FROM [dbo].[employees];
SELECT * FROM [dbo].[orders];
SELECT [client_id], [client_name], [client_city] FROM [dbo].[clients];
SELECT [emp_name], ([comission] * 100) FROM [dbo].[employees];
SELECT [emp_name], ([comission] * 100) AS comission$ FROM [dbo].[employees];
SELECT [emp_name] AS 'Nom employe', ([comission] * 100) AS comission$ FROM [dbo].[employees];
/*###### SELECT DISTINCT #####*/
--sélectionner uniquement des valeurs distinctes
SELECT [employees_code] FROM [dbo].[orders];
SELECT DISTINCT [employees_code] FROM [dbo].[orders];
SELECT COUNT (DISTINCT [employees_code]) distinctcount FROM [dbo].[orders];
/*###### WHERE #####*/
--filtrer les données dans une table
SELECT [emp_code], [emp_name], [emp_city]
FROM [dbo].[employees]
WHERE [emp_city]='Montreal';
SELECT [emp_code], [emp_name], [comission]
FROM [dbo].[employees]
WHERE [comission] != 0.13;
Partie 7: AND, OR, NOT, IN, LIKE

/***** AND, OR, NOT *****/
--WHERE peut être combinée avec les opérateurs AND, OR et NOT
--AND: afficher les données si toutes les conditions AND sont VRAIES
--OR afficher les données si l'une des conditions OR est VRAIE
--NOT afficher les données si la ou les conditions ne sont PAS VRAIES
SELECT *
FROM [dbo].[orders]
WHERE [employees_code] = 'A003'
OR [employees_code] = 'A004';
SELECT *
FROM [dbo].[orders]
WHERE ([employees_code] = 'A003'OR [employees_code] = 'A004')
AND [order_amount] > 1000;
SELECT *
FROM [dbo].[orders]
WHERE ([employees_code] = 'A003' OR [employees_code] = 'A004')
AND NOT [order_amount] <= 1000;
SELECT *
FROM [dbo].[orders]
WHERE ([employees_code] = 'A003' OR [employees_code] = 'A004')
AND [order_amount]>1000
AND [advance_amount] <=500;
SELECT *
FROM [dbo].[orders]
WHERE NOT ([employees_code] = 'A003' OR [employees_code] = 'A004')
AND [order_amount]>1000
AND [advance_amount] <=500;
/***** IN *****/
-- permet de spécifier plusieurs valeurs dans une WHERE.
-- l'opérateur IN est un raccourci pour plusieurs conditions OR.
SELECT *
FROM [dbo].[orders]
WHERE [employees_code] IN ('A004','A003')
AND [order_amount]>1000
AND [advance_amount] <=500;
/***** BETWEEN *****/
-- permat de sélectionner des valeurs dans une plage de donnée. Les valeurs peuvent être des nombres, du texte ou des dates.
-- l'operateur BETWEEN est inclusif : les valeurs de début et de fin sont incluses dans les resultats.
SELECT *
FROM [dbo].[orders]
WHERE [order_amount] >=500
AND [order_amount]<=1000;
SELECT *
FROM [dbo].[orders]
WHERE [order_amount] BETWEEN 500 AND 1000;
SELECT *
FROM [dbo].[employees]
WHERE [emp_name] NOT BETWEEN 'Arthur' AND 'Lucie';
/***** LIKE *****/
--opérateur LIKE est utilisé dans WHERE pour chercher un critère spécifié
-- (%) représente zéro, un ou plusieurs caractères
-- (_) représente un seul caractère
-- [] représente n'importe quel caractère entre parenthèses (m[ae]n)
-- ^ représente tout caractère qui n'est pas entre parenthèses m[^ae]n (ASCII 94)
-- - représente n'importe quel caractère unique dans une plage spécifiée m[a-e]n (a,b,d,e)
SELECT *
FROM [dbo].[employees]
WHERE [emp_name] LIKE 'Arthur';
SELECT *
FROM [dbo].[employees]
WHERE [emp_name] LIKE '%ur';
SELECT *
FROM [dbo].[employees]
WHERE [emp_name] LIKE 'Art%';
SELECT *
FROM [dbo].[employees]
WHERE [emp_name] LIKE '%rt%';
SELECT *
FROM [dbo].[employees]
WHERE [emp_name] LIKE '_rt%';
SELECT *
FROM [dbo].[employees]
WHERE [emp_name] LIKE '_rt___';
SELECT *
FROM [dbo].[clients]
WHERE [client_name] LIKE 'Ameli[ae]';
SELECT *
FROM [dbo].[clients]
WHERE [client_name] LIKE 'Ameli[^e]';
SELECT *
FROM [dbo].[clients]
WHERE [client_name] LIKE 'Ameli[a-e]';