Tapez alors les requètes suivantes (suivies de la touche Entrée à chaque fois) :
shell> mysql --user=root mysql
mysql> GRANT
SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON nomdelabase.*
TO custom@localhost
IDENTIFIED BY 'stupid';
Remarques :
- sous linux, le nom "Mabase" est différent de "mabase"
- après création, il faut accèder à la base
(voir plus haut)
- on peut ouvrir mysql avec une table existante (par exemple "mysql -u
yeb_sql -p mabase").
On peut alors utiliser
DESCRIBE shop;
pour afficher une description de cette base.
INSERT INTO shop VALUES (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69), (3,'D',1.25),(4,'D',19.95);
puis
mysql> SELECT * FROM shop;
donne
+-----+----+----+
| article | dealer | price |
+-----+----+----+
| 0001 |
A | 3.45 |
| 0001 |
B | 3.99 |
| 0002 |
A | 10.99 |
| 0003 |
B | 1.45 |
| 0003 |
C | 1.69 |
| 0003 |
D | 1.25 |
| 0004 |
D | 19.95 |
+-----+---+----+
Autre solution : trier les lignes par ordre décroissant et ne prendre que la première ligne :
SELECT article, dealer, price
FROM shop
ORDER BY price DESC
LIMIT 1
SELECT article, MAX(price) AS price
FROM shop
GROUP BY article
donne :
+----+----+
| article | price |
+----+----+
| 0001 | 3.99 |
| 0002 | 10.99 |
| 0003 | 1.69 |
| 0004 | 19.95 |
+----+----+
ou encore
SELECT article,
SUBSTRING( MAX(
CONCAT(LPAD(price,6,'0'),dealer) ), 7) AS dealer,
0.00+LEFT( MAX(
CONCAT(LPAD(price,6,'0'),dealer) ), 6) AS price
FROM shop
GROUP BY article;
qui donneront
+----+-----+----+
| article | dealer | price |
+----+-----+----+
| 0001 |
B | 3.99 |
| 0002 |
A | 10.99 |
| 0003 |
C | 1.69 |
| 0004 |
D | 19.95 |
+----+----+----+
select
@min_price:=min(price),@max_price:=max(price) from shop;
select * from shop where price=@min_price or
price=@max_price;
donne
+-----+----+----+
| article | dealer | price |
+-----+----+----+
| 0003 |
D | 1.25 |
| 0004 |
D | 19.95 |
+-----+---+-----+