A Gentle Introduction to

SQL


Pick an engine:

ACME AccountsgoogleComptes de POINT CULMINANT

Details of the database.googleDétails de la base de données.

Some items from the database.googleQuelques articles de la base de données.

1a Identify customers 'C001', 'C005' googleIdentifiez les clients 'C001 ', 'C005 '

1b Identify products 'P001', 'P007' googleIdentifiez les produits 'P001 ', 'P007 '

Invoices and receiptsgoogleFactures et reçus

2a View the payments made by customer 'C001' googleRegardez les paiements effectués par le client 'C001 '

2b View the shipments made to customer 'C001' by date order googleRegardez les expéditions faites au client 'C001 'par ordre de date

Preparing accountsgooglePréparation des comptes

3a Prepare a list of all items purchased by customer 'C001', show the date, the product description, the unit price, the quantity shipped and the total value (quantity * price). googlePréparez une liste de tous les articles achetés par le client 'C001 ', montrez la date, la description de produit, le prix unitaire, la quantité embarquée et toute la valeur (quantité * prix).

3b Calculate the total value of all items shipped to customer 'C001' on 23rd July 1998. The SQL standard way to write this date is googleCalculez toute la valeur de tous les articles embarqués au client 'C001 'le 23 juillet 1998. La manière standard de SQL d'écrire cette date est DATE '1998-07-23'googleDATE '1998-07-23 '

3c Prepare a shipping statement for customer 'C001' it should show the date, the legend 'Delivery' and the total value of the products shipped on each day. googlePréparez un rapport d'expédition pour le client 'C001 'qu'il devrait montrer la date, la légende la 'livraison 'et toute la valeur des produits embarqués chaque jour.

3d Prepare a receipts statement for customer 'C001' it should show the date, the notes and the amount received. googlePréparez un rapport de reçus pour le client 'C001 'qu'il devrait montrer la date, les notes et la quantité reçues.

3e Use the UNION command to prepare a full statement for customer 'C001' - it should be laid out as follows. (Note that the values shown below are not correct.) You may be able to use '' or NULL for blank values - if necessary use 0. googleEmployez la commande des SYNDICATS de préparer un plein rapport pour le client 'C001 '- il devrait être présenté comme suit. (note que les valeurs montrées ci-dessous ne sont pas correctes.) Vous pouvez pouvoir employer le ''ou ANNULER pour des valeurs blanches - au besoin l'utilisation 0.

  10-JUL-1998 Delivery       100.00
  15-JUL-1998 Cheque                       100.00
  22-JUL-1998 Delivery       210.00
  23-JUL-1998 Delivery        45.00
  23-JUL-1998 Cash                         255.00
 

The following googleLe suivant VIEWgoogleVUE , accountline has been created (if not create it yourself). It shows one line for each payment or shipment, money out is negative (a debit), money in positive (a credit).google, l'accountline a été créé (si ne pas le créer vous-même). Il montre une ligne pour chaque paiement ou l'expédition, argent dehors est négative (un débit), argent dans le positif (un crédit).

CREATE VIEW accountline AS
  SELECT shipped.badguy AS badguy, shipped.sdate AS LineDate,
        'Delivery' AS Legend, -[price]*[quantity] AS amount
    FROM product, shipped 
    WHERE product.id = shipped.product
UNION
  SELECT receipt.badguy, receipt.rdate,notes, amount
    FROM receipt
    ORDER BY linedate;
4a Issue the command to see the accountline. googlePubliez la commande de voir l'accountline.

4b Create a list showing the outstanding balance for each customer. googleCréez une liste montrant l'équilibre exceptionnel pour chaque client.

What is wrong with this database.googleCe qui est erroné avec cette base de données.

  1. There is no mechanism for recording returns. Suggest what action should be taken when faulty goods are returned and money refunded.googleIl n'y a aucun mécanisme pour des retours d'enregistrement. Suggérez ce que l'action devrait être prise quand des marchandises défectueuses sont retournées et argent être remboursée.
  2. The price of item P001 is to be increased. What effect will this have on the calculated balance for customers who previously purchased the item? Suggest how the structure of the database should be amended to prevent this problem.googleLe prix de l'article P001 doit être augmenté. Quel effet est-ce que ceci a sur l'équilibre calculé pour les clients qui ont précédemment acheté l'article? Suggérez comment la structure de la base de données devrait être modifiée pour empêcher ce problème.
  3. All goods must be purchased at list price. In practice discounts may be given on an ad-hoc basis. Suggest how such discounts might be recorded.googleToutes les marchandises doivent être achetées au prix courant. Dans la pratique des escomptes peuvent être donnés sur une base ade-hoc. Suggérez comment de tels escomptes pourraient être enregistrés.
  4. As it stands the data will just grow and grow. It may be desirable to have a consolidation routine which removes old records and leaves an outstanding balance for each customer. This is unlikely to be worth doing for technical reasons. You could store hundreds of years worth of data for a small company at only a marginal cost of processing time or disk space.googleSans modification les données juste se développeront et se développeront. Il peut être souhaitable d'avoir une routine de consolidation qui enlève de vieux disques et laisse un équilibre exceptionnel pour chaque client. Il est peu susceptible être c'intéressant faire pour des raisons techniques. Vous pourriez stocker des centaines de valeur d'années de données pour une petite compagnie seulement à un coût marginal de durée de la transformation ou d'espace disque.

Tutorial Six: Edinburgh BusesgoogleCours d'instruction Six: Autobus D'Edimbourg concerns self joins and includes some ridiculously complex SQL queriesgooglel'individu de soucis joint et inclut quelques questions ridiculement complexes de SQL