basics.source
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:5k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. ---------------------------------------------------------------------------
  2. --
  3. -- basics.sql-
  4. --    Tutorial on the basics (table creation and data manipulation)
  5. --
  6. --
  7. -- Copyright (c) 1994, Andrew Yu, University of California
  8. --
  9. -- $Id: basics.source,v 1.3 1999/07/08 15:27:01 momjian Exp $
  10. --
  11. ---------------------------------------------------------------------------
  12. -----------------------------
  13. -- Creating a table:
  14. -- a CREATE TABLE is used to create base tables. POSTGRES SQL has
  15. -- its own set of built-in types. (Note that keywords are case-
  16. -- insensitive but identifiers are case-sensitive.)
  17. -----------------------------
  18. CREATE TABLE weather (
  19. city varchar(80),
  20. temp_lo int, -- low temperature
  21. temp_hi int, -- high temperature
  22. prcp float8, -- precipitation
  23. date date
  24. );
  25. CREATE TABLE cities (
  26. name varchar(80),
  27. location point
  28. );
  29. -----------------------------
  30. -- Inserting data:
  31. -- an INSERT statement is used to insert a new row into a table. There 
  32. -- are several ways you can specify what columns the data should go to.
  33. -----------------------------
  34. -- 1. the simplest case is when the list of value correspond to the order of
  35. --    the columns specified in CREATE TABLE.
  36. INSERT INTO weather 
  37.    VALUES ('San Francisco', 46, 50, 0.25, '11/27/1994');
  38. INSERT INTO cities 
  39.    VALUES ('San Francisco', '(-194.0, 53.0)');
  40. -- 2. you can also specify what column the values correspond to. (The columns
  41. --    can be specified in any order. You may also omit any number of columns.
  42. --    eg. unknown precipitation below)
  43. INSERT INTO weather (city, temp_lo, temp_hi, prcp, date)
  44.    VALUES ('San Francisco', 43, 57, 0.0, '11/29/1994');
  45. INSERT INTO weather (date, city, temp_hi, temp_lo)
  46.    VALUES ('11/29/1994', 'Hayward', 54, 37);
  47. -----------------------------
  48. -- Retrieving data:
  49. -- a SELECT statement is used for retrieving data. The basic syntax is
  50. -- SELECT columns FROM tables WHERE predicates
  51. -----------------------------
  52. -- a simple one would be
  53. SELECT * FROM weather;
  54. -- you may also specify expressions in the target list (the 'AS column'
  55. -- specifies the column name of the result. It is optional.)
  56. SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;
  57. -- if you want to retrieve rows that satisfy certain condition (ie. a
  58. -- restriction), specify the condition in WHERE. The following retrieves
  59. -- the weather of San Francisco on rainy days.
  60. SELECT *
  61. FROM weather
  62. WHERE city = 'San Francisco' 
  63.    and prcp > 0.0;
  64. -- here is a more complicated one. Duplicates are removed when DISTINCT is
  65. -- specified. ORDER BY specifies the column to sort on. (Just to make sure the
  66. -- following won't confuse you, DISTINCT and ORDER BY can be used separately.)
  67. SELECT DISTINCT city
  68. FROM weather
  69. ORDER BY city;
  70. -----------------------------
  71. -- Retrieving data into other classes:
  72. -- a SELECT ... INTO statement can be used to retrieve data into
  73. -- another class.
  74. -----------------------------
  75. SELECT * INTO TABLE mytemp 
  76. FROM weather
  77. WHERE city = 'San Francisco' 
  78.    and prcp > 0.0;
  79. SELECT * from mytemp;
  80. -----------------------------
  81. -- Aggregates
  82. -----------------------------
  83. SELECT max(temp_lo)
  84. FROM weather;
  85. -- Aggregate with GROUP BY
  86. SELECT city, max(temp_lo)
  87. FROM weather 
  88. GROUP BY city;
  89. -----------------------------
  90. -- Joining tables:
  91. -- queries can access multiple tables at once or access the same table
  92. -- in such a way that multiple instances of the table are being processed
  93. -- at the same time.
  94. -----------------------------
  95. -- suppose we want to find all the records that are in the temperature range
  96. -- of other records. W1 and W2 are aliases for weather.
  97. SELECT W1.city, W1.temp_lo, W1.temp_hi, 
  98.        W2.city, W2.temp_lo, W2.temp_hi
  99. FROM weather W1, weather W2
  100. WHERE W1.temp_lo < W2.temp_lo 
  101.    and W1.temp_hi > W2.temp_hi;
  102. -- let's join two tables. The following joins the weather table
  103. -- and the cities table.
  104. SELECT city, location, prcp, date
  105. FROM weather, cities
  106. WHERE name = city;
  107. -- since the column names are all different, we don't have to specify the
  108. -- table name. If you want to be clear, you can do the following. They give
  109. -- identical results, of course.
  110. SELECT w.city, c.location, w.prcp, w.date
  111. FROM weather w, cities c
  112. WHERE c.name = w.city;
  113. -----------------------------
  114. -- Updating data:
  115. -- an UPDATE statement is used for updating data. 
  116. -----------------------------
  117. -- suppose you discover the temperature readings are all off by 2 degrees as
  118. -- of Nov 28, you may update the data as follow:
  119. UPDATE weather
  120.   SET temp_hi = temp_hi - 2,  temp_lo = temp_lo - 2
  121.   WHERE date > '11/28/1994';
  122. SELECT * from weather;
  123. -----------------------------
  124. -- Deleting data:
  125. -- a DELETE statement is used for deleting rows from a table.
  126. -----------------------------
  127. -- suppose you are no longer interested in the weather of Hayward, you can
  128. -- do the following to delete those rows from the table
  129. DELETE FROM weather WHERE city = 'Hayward';
  130. SELECT * from weather;
  131. -- you can also delete all the rows in a table by doing the following. (This
  132. -- is different from DROP TABLE which removes the table in addition to the 
  133. -- removing the rows.)
  134. DELETE FROM weather;
  135. SELECT * from weather;
  136. -----------------------------
  137. -- Removing the tables:
  138. -- DROP TABLE is used to remove tables. After you have done this, you
  139. --      can no longer use those tables.
  140. -----------------------------
  141. DROP TABLE weather, cities, mytemp;