ࡱ> }~` bjbjss 1,,,,,,,@(((8`$d@ n=\ """?a D '$hK, K,,` ,,  x,,l p݈"(LHv0ZSp$l,l(MW[MMMKKXMMM@@@D@@@D@@@,,,,,, SQL in MS Access  TOC \o "1-3" \h \z  HYPERLINK \l "_Toc175466750" ******************** BASIC DATA RETRIEVAL ****************  PAGEREF _Toc175466750 \h 2  HYPERLINK \l "_Toc175466751" Simple Retrieval  PAGEREF _Toc175466751 \h 2  HYPERLINK \l "_Toc175466752" Sorting  PAGEREF _Toc175466752 \h 6  HYPERLINK \l "_Toc175466753" Built-In Functions  PAGEREF _Toc175466753 \h 7  HYPERLINK \l "_Toc175466754" Subqueries  PAGEREF _Toc175466754 \h 8  HYPERLINK \l "_Toc175466755" Grouping  PAGEREF _Toc175466755 \h 11  HYPERLINK \l "_Toc175466756" Querying Multiple Tables  PAGEREF _Toc175466756 \h 14  HYPERLINK \l "_Toc175466757" ************** MORE ADVANCED QUERIES ***********  PAGEREF _Toc175466757 \h 18  HYPERLINK \l "_Toc175466758" Using An Alias  PAGEREF _Toc175466758 \h 18  HYPERLINK \l "_Toc175466759" More Involved Joins  PAGEREF _Toc175466759 \h 18  HYPERLINK \l "_Toc175466760" Union, Intersection, and Difference  PAGEREF _Toc175466760 \h 20  HYPERLINK \l "_Toc175466761" All and ANY  PAGEREF _Toc175466761 \h 21  HYPERLINK \l "_Toc175466762" ************************ DATA DEFINITION STATEMENTS ********  PAGEREF _Toc175466762 \h 23  HYPERLINK \l "_Toc175466763" Modifying Data in a Database  PAGEREF _Toc175466763 \h 23  HYPERLINK \l "_Toc175466764" Appendix A. Data for the exercises.  PAGEREF _Toc175466764 \h 25  HYPERLINK \l "_Toc175466765" SALESREP  PAGEREF _Toc175466765 \h 25  HYPERLINK \l "_Toc175466766" ORDERS  PAGEREF _Toc175466766 \h 25  HYPERLINK \l "_Toc175466767" ORDERLIN  PAGEREF _Toc175466767 \h 25  HYPERLINK \l "_Toc175466768" PART  PAGEREF _Toc175466768 \h 26  HYPERLINK \l "_Toc175466769" Appendix 2. SQL Reserved Words.  PAGEREF _Toc175466769 \h 27  HYPERLINK \l "_Toc175466770" Appendix 3. Selected SQL Syntax.  PAGEREF _Toc175466770 \h 30  SQL Tutorial ******************** BASIC DATA RETRIEVAL **************** Simple Retrieval The basic form of an SQL expression is simple. It is merely SELECT_FROM_WHERE. After the SELECT, list those columns that you wish to have displayed. After the FROM, list the table or tables that are involved in the query. Finally, after the WHERE, list any conditions that apply to the data you wish to retrieve. The tables that match the examples are printed at the end of this tutorial. Example 1: Retrieve certain columns and all rows. Statement: List the number, description and amount on hand of all parts. Since we want all parts listed there is no need for the WHERE clause (we have no restrictions). The query is thus: SELECT PART_NUMB, PART_DESC, ON_HAND FROM PART The query will retrieve: PART_NUMB PART_DESC ON_HAND  AX12 IRON 104 AZ52 SKATES 20 BA74 BASEBALL 40 BH22 TOASTER 95 BT04 STOVE 11 BZ66 WASHER 52 CA14 SKILLET 2 CB03 BIKE 44 CX11 MIXER 112 CZ81 WEIGHTS 208 Example 2: Retrieve all columns and rows. Statement: List the entire orders table. You could use the same structure shown in example 1. However, there is a shortcut. Instead of listing all of the column names after the SELECT, you can use the symbol *. This indicates that you want all columns listed (in the order in which they have been described to the system during data definition). If you want all columns but in a different order, you would have to type the names of the columns in the order in which you want them to appear. In this case, assuming that the normal order is appropriate, the query would be: SELECT * FROM PART The query will retrieve: ORDER_NUMB ORDERDATE CUST_NUMB 12489 09/02/1987 124 12491 09/02/1987 311 12494 09/04/1987 315 12495 09/04/1987 256 12498 09/05/1987 522 12500 09/05/1987 124 12504 09/05/1987 522 Example 3: Use of the WHERE clause. Statement: What is the first and last name of customer 405? SELECT CUST_FIRST, CUST_LAST FROM CUSTOMER WHERE CUST_NUMB = 405 The query will retrieve: CUST_FIRST CUST_LAST  Al Williams Example 4: Use of a compound condition within the WHERE clause. Statement: List the number and description of all parts that are in warehouse 2 and have over 50 units on hand. Compound conditions are possible within the WHERE clause using AND, OR, and NOT. In this case, you have: SELECT PART_NUMB, PART_DESC FROM PART WHERE WHSE_NUMB = 2 AND ON_HAND > 50 The query will retrieve: PART_NUMB PART_DESC  CZ81 WEIGHTS The condition in the WHERE clause does not have to be equal. Any of the normal comparison operators =, >, >=, <, <= may be used, as well as, ~= (not equal). Example 5: Use of computed fields. Statement: Find the available credit for all customers who have at least a $500 credit limit. There is no column AVAILABLE_CREDIT in our database. It is, however, computable from two columns which are present, CREDIT_LIM and CURR_BAL (AVAILABLE_CREDIT = CREDIT_LIM - CURR_BAL). There are two possible ways around this problem. If the DBMS that we are using supports virtual columns (columns that are not physically stored but rather are computed from existing columns when needed), then AVAILABLE_CREDIT could have been described to the system as a virtual column during the definition of the CUSTOMER table, and we could use it in this query. Assuming that, for whatever reason, this has not been done, we have a second solution to the problem. SQL permits us to specify computations within the SQL expression. In this case, we would have: SELECT CUST_NUMB, CUST_FIRST, CUST_LAST, CREDIT_LIM - CURR_BAL FROM CUSTOMER WHERE CREDIT_LIM >= 500 The query will retrieve: CUST_NUMB CUST_FIRST CUST_LAST 4  124 Sally Adams 81.25 256 Ann Samuels 789.25 405 Al Williams 598.25 412 Sally Adams 91.25 522 Mary Nelson 750.50 587 Judy Roberts 442.25 622 Dan Martin -75.50 Note that the heading for the available credit column is simply the number 4. Since this column does not exist in the CUSTOMER table, the computer does not know how to label the column and instead uses the number 4 (for the fourth column). There is a facility within SQL to change any of the column headings to whatever you desire. For now, though, just accept the headings that SQL will produce automatically. (There is some variation among different versions of SQL concerning the column headings for computed columns. Your version may very well treat them differently.) Example 6: Use of LIKE. Statement: List the first and last name and the address, city, and state of all the customers who live in Ada. Because of the way our CUSTOMER table has been designed, this is a relatively simple query and there would be no use for the LIKE clause. You would simply use the following SQL statement: SELECT CUST_FIRST, CUST_LAST, CUST_ADDR, CUST_CITY, CUST_STATE WHERE CUST_CITY = Ada Lets say that the CUSTOMER table had been designed differently and the customer address, city, and state were all included under one column titled CUST_ADDR. For example, customer 311s record would now look like: CUST_NUMB CUST_FIRST CUST_LAST CUST_ADDR CURR_BAL CREDIT_LIM SLSRP_NUMB 311 Don Charles 48 College,Ira, MI 200.10 300 3 Now how would you perform the same query that we performed above? In an instance like this when the city is just a portion of the column labeled CUST_ADDR, and thus anyone living in Ada has Ada somewhere within his or her address, you can use the LIKE clause. SELECT CUST_NUMB, CUST_FIRST, CUST_LAST, CUST_ADDR FROM CUSTOMER WHERE CUST_ADDR LIKE %Ada% The symbol % is used as a wild card. Thus, we are asking for all customers whose address is LIKE some collection of characters, followed by Ada, followed by some other characters. Note that this query would also pick up a customer whose address was 576 Adabell, Lansing, MI. We would probably be safer to have asked for an address like %,Ada,% although this would have missed an address entered as 108 Pine, Ada , MI since this address does not contain the string of characters ,Ada, but rather ,Ada ,. Sorting Example 7: Use of ORDER BY and IN. Statement: List all customers ordered by last name. List all customers who have a credit limit of $300 or $1000 ordered by last name. List all customers whose first name begins with A ordered by last name. In a relational database, the order of the rows is considered immaterial. Therefore, if the order in which the data is displayed is important to you, then you should request that the results be displayed in the desired order through your query. In SQL, this is done through an ORDER BY clause. 7A: SELECT CUST_FIRST, CUST_LAST FROM CUSTOMER ORDER BY CUST_LAST The query will retrieve: CUST_FIRST CUST_LAST  Sally Adams Sally Adams Joe Baker Don Charles Tom Daniels Dan Martin Mary Nelson Judy Roberts Ann Samuels Al Williams 7B: SELECT CUST_FIRST, CUST_LAST FROM CUSTOMER WHERE CREDIT_LIM IN (300,1000) ORDER BY CUST_LAST 7C: SELECT CUST_FIRST, CUST_LAST FROM CUSTOMER WHERE CUST_LAST LIKE A% ORDER BY CUST_LAST You should use name LIKE A% instead of %A% because name LIKE %A% would give you all the customers whose name had the letter A anywhere within the last name. Example 8: Sorting with multiple keys, descending order. Statement: List the customer number, first and last name, and credit limit of all customers, ordered by decreasing credit limit and by customer number within credit limit. This is accomplished as follows: SELECT CUST_NUMB, CUST_FIRST, CUST_LAST, CREDIT_LIM FROM CUSTOMER ORDER BY CREDIT_LIM DESC, CUST_NUMB The query will retrieve: CUST_NUMB CUST_FIRST CUST_LAST CREDIT_LIM  412 Sally Adams 1000 256 Ann Samuels 800 405 Al Williams 800 522 Mary Nelson 800 124 Sally Adams 500 587 Judy Roberts 500 622 Dan Martin 500 311 Don Charles 300 315 Tom Daniels 300 567 Joe Baker 300 Built-In Functions SQL has several built-in functions: COUNT - count of the number of values in a column SUM - sum of the values in a column AVG - average of the values in a column MAX - largest of the values in a column MIN - smallest of the values in a column Example 9: Use of the built-in function COUNT. Statement: How many different types of parts are in the item class AP? In this query, we are interested in the number of rows that contain the item class called AP. The query should be stated as follows: SELECT COUNT (PART_NUMB) FROM PART WHERE ITEM_CLASS = AP The query will retrieve: 1 2 Example 10: Use of COUNT and SUM. Statement: Find the number of customers and the total of their balances. SELECT COUNT (CUST_NUMB), SUM(CURR_BAL) FROM CUSTOMER The query will retrieve: 1 2  10 2944.8 Subqueries Example 11: Nesting Queries. Statement: What is the largest credit limit of any customer of sales representative 6? Which customers have this credit limit? Find the answer to part B in one step. 11A. SELECT MAX(CREDIT_LIM) FROM CUSTOMER WHERE SLSRP_NUMB = 6 The query will retrieve: 1 800 11B. (After you see the answer from part A) SELECT CUST_NUMB, CUST_FIRST, CUST_LAST FROM CUSTOMER WHERE CREDIT_LIM = 800 The query will retrieve: CUST_NUMB CUST_FIRST CUST_LAST  256 Ann Samuels 11C: In part C, you are going to accomplish the same thing that you accomplished in parts A and B, but in one step. You can accomplish this through a nesting query: SELECT CUST_NUMB, CUST_FIRST, CUST_LAST FROM CUSTOMER WHERE CREDIT_LIMIT IN (SELECT MAX(CREDIT_LIM) FROM CUSTOMER WHERE SLSRP_NUMB = 6) The query will retrieve the same results as in 11B. The portion of the SQL statement that is contained in the parenthesis is called a subquery. The subquery is evaluated first and then the outer query is evaluated in relation to the subquery. Example 12: Use of Distinct. Statement: Find the numbers of all customers who currently have orders. Find the numbers of all customers who currently have orders, making sure to list each customer only once. Count the number of customers who currently have orders. 12A: The formulation for this query is quite simple if you think about what the question is asking. If a customer currently has an order, then the customers number must appear in at least one row of the ORDERS table. Therefore the query should be written as follows: SELECT CUST_NUMB FROM ORDERS The query will retrieve: CUST_NUMB  124 311 315 256 522 124 522 13B: When you look at the answer to part A, you will see that some of the customer numbers appear more than once. If you want to ensure that this duplication does not occur, you can use the DISTINCT clause. SELECT DISTINCT CUST_NUMB FROM ORDERS The query will retrieve: CUST_NUMB  124 256 311 315 522 13C: Part C involves counting. Although counting has been discussed before, it is important to mention it again when we are discussing the DISTINCT clause. Without the DISTINCT clause, duplicate numbers may be counted twice as the following examples demonstrate: SELECT COUNT(CUST_NUMB) FROM ORDERS The query will retrieve: 1 7 SELECT COUNT(DISTINCT CUST_NUMB) FROM ORDERS The query will retrieve: 1 5 The same effect can be achieved by the following query: SELECT COUNT(CUST_NUMB) FROM CUSTOMER WHERE CUST_NUMB IN (SELECT DISTINCT CUST_NUMB FROM ORDERS) Example 13: Use of a built-in function in a subquery. Statement: List the number and first and last name of all customers whose balance is over the average balance of all customers. SELECT CUST_NUMB,CUST_FIRST, CUST_LAST, CURR_BAL FROM CUSTOMER WHERE CURR_BAL > (SELECT AVG(CURR_BAL) FROM CUSTOMER) The query will retrieve: CUST_NUMB CUST_FIRST CUST_LAST CURR_BAL  124 Sally Adams 418.75 315 Tom Daniels 320.75 412 Sally Adams 908.75 622 Dan Martin 575.50 Grouping Example 14: Using GROUP BY and HAVING. Statement: List the order total for each order. List the order total for those orders that amount to over $700. 14A: The order total is equal to the sum of number of products ordered multiplied by their respective quoted prices for each order number. The query should be written as follows: SELECT ORDER_NUMB, SUM(NUM_ORDERD * QUOTEPRICE) FROM ORDERLIN GROUP BY ORDER_NUMB ORDER BY ORDER_NUMB The query will retrieve: ORDER_NUMB 2  12489 164.45 12491 714.94 12494 700.00 12495 115.90 12498 65.70 12500 402.99 12504 217.98 14B: In part B we are including a restriction. This restriction does not apply to individual rows but rather to groups. Since the WHERE clause applies only to rows, it should not be used in a case such as this. In this particular situation you should use a HAVING clause. SELECT ORDER_NUMB, SUM(NUM_ORDERD * QUOTEPRICE) FROM ORDERLIN GROUP BY ORDER_NUMB HAVING SUM(NUM_ORDERD * QUOTEPRICE) > 700 ORDER BY ORDER_NUMB The query will retrieve: ORDER_NUMB 2  12491 714.94 Example 15: HAVING vs WHERE. Statement: List each credit limit together with the number of customers who have this limit. Same as query A, but only list those credit limits held by more than one customer. List each credit limit together with the number of customers of sales representative 3 who have this limit. Sale as query C, but only list those credit limits held by more than one customer. 15A. In order to count the number of customers who have a particular credit limit, the data must be GROUPed BY this credit limit. The query should be written as follows: SELECT CREDIT_LIM, COUNT(CUST_NUMB) FROM CUSTOMER GROUP BY CREDIT_LIM The query will retrieve: CREDIT_LIM 2  300 3 500 3 800 3 1000 1 15B. Since this condition involves a group total, a HAVING clause must be used. The query should be written as follows: SELECT CREDIT_LIM, COUNT(CUST_NUMB) FROM CUSTOMER GROUP BY CREDIT_LIM HAVING COUNT(CUST_NUMB) > 1 The query will retrieve: CREDIT_LIM 2  300 3 500 3 800 3 15C: This condition only involves rows rather than groups, so the WHERE clause should be used here. The query should be written as follows: SELECT CREDIT_LIM, COUNT(CUST_NUMB) FROM CUSTOMER WHERE SLSRP_NUMB = 3 GROUP BY CREDIT_LIM The query will retrieve: CREDIT_LIM 2  500 2 1000 1 15D: In part D, both a WHERE clause and a HAVING clause are needed since the conditions involve both rows and groups. The query should be written as follows: SELECT CREDIT_LIM, COUNT(CUST_NUMB) FROM CUSTOMER WHERE SLSRP_NUMB = 3 GROUP BY CREDIT_LIM HAVING COUNT(CUST_NUMB) > 1 The query will retrieve: CREDIT_LIM 2  500 2 Querying Multiple Tables Example 16: Joining two tables together. Statement: For each part that is on order, find the part number, number ordered, and unit price of the part. A part is considered to be on order if there is a row in the ORDERLIN table in which the part appears. You can easily find the part number and number of parts ordered in the ORDERLIN table. However, the unit price can only be found in the PART table. In order to satisfy this query, the PART table and the ORDERLIN table must be joined together. In this instance, the process of joining tables involves finding part numbers in the ORDERLIN table that match up to the corresponding part numbers in the PART table. The query should be written as follows: SELECT ORDER_NUMB, ORDERLIN.PART_NUMB, UNIT_PRICE FROM ORDERLIN, PART WHERE ORDERLIN.PART_NUMB = PART.PART_NUMB The query will retrieve: ORDER_NUMB PART_NUMB UNIT_PRICE  12489 AX12 17.95 12491 BTO4 402.99 12491 BZ66 311.95 12494 CB03 187.50 12495 CX11 57.95 12498 AZ52 24.95 12498 BA74 4.95 12500 BT04 402.99 12504 CZ81 108.99 Here we indicated all fields that we wanted to display in the SELECT clause. In the FROM clause, we list the tables that are involved in the query. In the WHERE clause we give the condition that will restrict the data to be retrieved to only those rows from the two relations that match. Example 17: Comparison of JOIN and the use of IN. Statement: Find the description of all parts included in order number 12498. This query also involves both the PART table and the ORDERLIN table so it is very similar to the query that we just wrote. The query should be written as follows: SELECT PART_DESC FROM ORDERLIN, PART WHERE ORDERLIN. PART_NUMB = PART.PART_NUMB AND ORDER_NUMB = 12498 The query will retrieve: PART_DESC  SKATES BASEBALL It is important to notice that ORDERLIN was listed in the FROM clause even though there were no fields from the ORDERLIN relation that were to be displayed. Because a field from the ORDERLIN relation was listed in the WHERE clause, the ORDERLIN table must be listed in the FROM clause. Another approach could be taken in this situation involving the IN clause and a subquery. We could first find all of the part numbers in the ORDERLIN relation that appear on any row in which the order number is 12498 as a subquery. Next we find the descriptions of any parts whose part number is in this list. The query would be written as follows: SELECT PART_DESC FROM PART WHERE PART.PART_NUMB IN (SELECT ORDERLIN.PART_NUMB FROM ORDERLIN WHERE ORDER_NUMB = 12498) Example 18: Comparison of IN and EXISTS. Statement: Find the number and date of those orders that contain part BT04. Find the number and date of those orders that do not contain part BT04. 18A: This query is similar to the previous example and could thus be handled in either of the two ways given by the previous example. Using the formulation involving IN would give: SELECT ORDERS.ORDER_NUMB, ORDERDATE FROM ORDERS WHERE ORDERS.ORDER_NUMB IN (SELECT ORDERLIN.ORDER_NUMB FROM ORDERLIN WHERE PART_NUMB = BT04) The query will retrieve: ORDER_NUMB ORDERDATE  12491 90287 12500 90587 18B: This query could be handled in essentially the same way, except that the IN would be replaced by NOT IN. An alternative formulation can be given using the SQL word EXISTS. However, in this case, we would use NOT EXISTS. The query should be written as follows: SELECT ORDER_NUMB, ORDERDATE FROM ORDERS WHERE NOT EXISTS (SELECT * FROM ORDERLIN WHERE ORDERS.ORDER_NUMB = ORDERLIN.ORDER_NUMB AND PART_NUMB = BT04) For each order number in the ORDERS table, the subquery is selecting those rows of the ORDERLIN table on which the order number matches the order number from the ORDERS table and the part number is BT04 Example 19: Subquery within a Subquery. Statement: Find all of the numbers and dates of those orders that include a part located in warehouse 3. You can approach this problem by determining the list of part numbers in the PART relation for those parts that are located in warehouse 3. Once you have completed that, you can obtain a list of order numbers in the ORDERLIN relation where the corresponding part number is in your previous part number list. Finally, you can retrieve those order numbers and dates in the ORDERS relation for which the order number is in the list of order numbers obtained in your second step. The query would be written as follows: SELECT ORDER_NUMB, ORDERDATE FROM ORDERS WHERE ORDER_NUMB IN (SELECT ORDER_NUMB FROM ORDERLIN WHERE PART_NUMB IN (SELECT PART_NUMB FROM PART WHERE WHSE_NUMB = 3)) The query will retrieve: ORDER_NUMB ORDERDATE  12489 90287 12491 90287 12495 90487 You could perform this query in an alternative fashion by joining all the tables rather than using subqueries. The query should be written as follows: SELECT ORDERS.ORDER_NUMB, ORDERDATE FROM ORDERLIN, ORDERS, PART WHERE ORDERLIN.ORDER_NUMB = ORDERS.ORDER_NUMB AND ORDERLIN.PART_NUMB = PART.PART_NUMB AND WHSE_NUMB = 3 This query would produce the same results as the previous query. Example 20: A Comprehensive Example. Statement: List the customer number, the order number, the order date and the order total for all of those orders whose total is over $100. The query should be written as follows: SELECT CUST_NUMB, ORDERS.ORDER_NUMB, ORDERDATE, SUM(NUM_ORDERD * QUOTEPRICE) FROM ORDERS, ORDERLIN WHERE ORDERS.ORDER_NUMB = ORDERLIN.ORDER_NUMB GROUP BY ORDERS.ORDER_NUMB, CUST_NUMB, ORDERDATE HAVING SUM(NUM_ORDERD * QUOTEPRICE) > 100 ORDER BY ORDERS.ORDER_NUMB The query will retrieve: CUST_NUMB ORDER_NUMB ORDERDATE 4  124 12489 90287 164.45 311 12491 90287 714.94 315 12494 90487 700.00 256 12495 90487 115.90 124 12500 90587 402.99 522 12504 90587 217.98 ************** MORE ADVANCED QUERIES *********** Using An Alias Example 21: Use of an alias. Statement: List the number and first and last name of all sales representatives together with the number and first and last name of all the customers they represent. When tables are listed in the FROM clause, you have the option of giving each table an alias or alternate name that you can use throughout the rest of your statement. You do this by immediately following the table with the alias. There should not be any commas separating the table and the alias. Aliases allow you to simplify your statement. An example of a query using an alias follows: SELECT S.SLSRP_NUMB, S.SLSRP_FRST, S.SLSRP_LAST, C.CUST_NUMB C.CUST_FIRST, C.CUST_LAST FROM SALESREP S, CUSTOMER C WHERE S.SLSRP_NUMB = C.SLSRP_NUMB Although aliases can be useful for helping to simplify queries, they can also be essential. The next example demonstrates when an alias is essential. More Involved Joins Example 22: Joining a table to itself. Statement: Find the list of any pairs of customers who have the same first and last name. If our database contained two different customer tables and the query requested us to find customers in one table who had the same name as customers in the second table, we would perform a simple join operation. However, we only have one customer table in our database. Using the alias feature of SQL, we can treat our CUSTOMER table as though it is two tables in order to fulfill the request. The query should be written as follows: SELECT FIRST.CUST_NUMB, FIRST.CUST_FIRST, FIRST.CUST_LAST, SECOND.CUST_NUMB, SECOND.CUST_FIRST, SECOND.CUST_LAST FROM CUSTOMER FIRST, CUSTOMER SECOND WHERE FIRST.CUST_FIRST = SECOND.CUST_FIRST AND FIRST.CUST_LAST = SECOND.CUST_LAST AND FIRST.CUST_NUMB ~= SECOND.CUST_NUMB The query would retrieve: CUST_NUMB CUST_FIRST CUST_LAST CUST_NUMB CUST_FIRST CUST_LAST  124 Sally Adams 412 Sally Adams Example 23: An example involving joining all five tables. Statement: List the number and first and last name of all sales representatives who represent any customers who currently have any orders on file for parts in item class HW. The query should be written as follows: SELECT SALESREP.SLSRP_NUMB, SALESREP.SLSRP_FRST, SALESREP.SLSRP_LAST FROM SALESREP, CUSTOMER, ORDERS, ORDERLIN, PART WHERE SALESREP.SLSRP_NUMB = CUSTOMER.SLSRP_NUMB AND CUSTOMER.CUST_NUMB = ORDERS.CUST_NUMB AND ORDERS.ORDER_NUM = ORDERLIN.ORDER_NUMB AND ORDERLIN.PART_NUMB = PART.PART_NUMB AND ITEM_CLASS = HW The query will retrieve: SLSRP_NUMB SLSRP_FRST SLSRP_LAST  3 Mary Jones 6 William Smith Union, Intersection, and Difference SQL supports the set of operations: union, intersection and difference. The union of two relations is a relation containing all the rows that are in either the first relation, the second relation, or both. The intersection of two relations is a relation that contains all of the rows that are in both relations. The difference of two relations is the set of rows that are in the first relation but are not in the second relation. These operations have an obvious restriction. It does not make sense to talk about the union of the CUSTOMER table and the ORDERS table, for example. The two relations must have the same structure, which is termed union-compatible. Union-compatible is defined as two relations that have the same number of attributes (columns) and the corresponding attributes have the same domain (of the same type). The column headings of the two relations do not have to be identical but the columns must come from the same domain. Example 24: Use of Union. Statement: List the number and first and last name of all customers who are either represented by sales representative 12 or who currently have orders on file, or both. SELECT CUST_NUMB, CUST_FIRST, CUST_LAST FROM CUSTOMER WHERE SLSRP_NUMB = 12 UNION SELECT CUSTOMER.CUST_NUMB, CUST_FIRST, CUST_LAST FROM CUSTOMER, ORDERS WHERE CUSTOMER.CUST_NUMB = ORDERS.CUST_NUMB The query will retrieve: CUST_NUMB CUST_FIRST CUST_LAST  124 Sally Adams 256 Ann Samuels 311 Don Charles 315 Tom Daniels 405 Al Williams 522 Mary Nelson Example 25: Use of INTERSECT (Intersection). Statement: List the number and first and last name of all customers who are represented by sales representative 12 and who currently have orders on file. SELECT CUST_NUMB, CUST_FIRST, CUST_LAST FROM CUSTOMER WHERE SLSRP_NUMB = 12 INTERSECT SELECT CUSTOMER.CUST_NUMB, CUST_FIRST, CUST_LAST FROM CUSTOMER, ORDERS WHERE CUSTOMER.CUST_NUMB = ORDERS.CUST_NUMB The query will retrieve: CUST_NUMB CUST_FIRST CUST_LAST  311 Don Charles 522 Mary Nelson Example 26: Use of MINUS (Difference). Statement: List the number and first and last name of all customers who are represented by sales representative 12 but who do not currently have orders on file. SELECT CUST_NUMB, CUST_FIRST, CUST_LAST FROM CUSTOMER WHERE SLSRP_NUMB = 12 MINUS SELECT CUSTOMER.CUST_NUMB, CUST_FIRST, CUST_LAST FROM CUSTOMER, ORDERS WHERE CUSTOMER.CUST_NUMB = ORDERS.CUST_NUMB The query will retrieve: CUST_NUMB CUST_FIRST CUST_LAST  405 Al Williams All and ANY Example 27: Use of ALL. Statement: Find the number, first and last name, current balance, and sales representative number of those customers whose balance is larger than the balances of all customers of sales representative 12. This query can be satisfied by finding the maximum balance of the customers that are represented by sales representative 12 in a subquery and then finding all customers whose balance is greater than this number. The query can also be satisfied using an ALL statement which is demonstrated below: SELECT CUST_NUMB, CUST_FIRST, CUST_LAST, CURR_BAL, SLSRP_NUMB FROM CUSTOMER WHERE CURR_BAL > ALL (SELECT CURR_BAL FROM CUSTOMER WHERE SLSRP_NUMB = 12) The query will retrieve: CUST_NUMB CUST_FIRST CUST_LAST CURR_BAL SLSRP_NUMB  124 Sally Adams 418.75 3 315 Tom Daniels 320.75 6 412 Sally Adams 908.75 3 622 Dan Martin 575.50 3 Example 28: Use of ANY. Statement: Find the number, first and last name, current balance, and sales representative number of those customers whose balance is larger than the balance of any customer of sales representative 12. This query can be satisfied by finding the minimum balance of the customers that are represented by sales representative 12 in a subquery and then finding all customers whose balance is greater than this number. The query can also be satisfied using an ANY statement which is demonstrated below: SELECT CUST_NUMB, CUST_FIRST, CUST_LAST, CURR_BAL, SLSRP_NUMB FROM CUSTOMER WHERE CURR_BAL > ANY (SELECT CURR_BAL FROM CUSTOMER WHERE SLSRP_NUMB = 12) The query will retrieve: CUST_NUMB CUST_FIRST CUST_LAST CURR_BAL SLSRP_NUMB  124 Sally Adams 418.75 3 311 Don Charles 200.10 12 315 Tom Daniels 320.75 6 405 Al Williams 201.75 12 412 Sally Adams 908.75 3 567 Joe Baker 201.20 12 587 Judy Roberts 57.75 12 622 Dan Martin 575.50 3 ************************ DATA DEFINITION STATEMENTS ******** Modifying Data in a Database Example 29: Change existing data in the database. Statement: Change the address of sales representative 12 to 111 Brookhollow. The command should be written as follows: UPDATE SALESREP SET SLSRP_ADDR = 111 Brookhollow WHERE SLSRP_NUMB = 12 Example 30: Add new data to the database. Statement: Add customer (444, Cindy, Wilson, 317 Harvard, Grant, MI, 0.00, 300, 6) to the database. The command should be written as follows: INSERT INTO CUSTOMER VALUES (555,Cindy,Wilson,317 Harvard,Grant,MI,0.00,300,6) Example 31: Delete data from the database. Statement: Delete customer 124 from the database. The command should be written as follows: DELETE CUSTOMER WHERE CUST_NUMB = 124 When deleting records from a database it is important to remember to use the primary key. For example, say we had said to delete the customer named Sally Adams. If we had written our command this way, two records would have been deleted because there are two customers named Sally Adams. We may only have meant to delete one. Since primary keys are unique, there will be no chance of deleting more than one record when you delete using the primary key. Example 32: Change data in the database based on a compound condition. Statement: For each customer with a $500 credit limit whose balance does not exceed his/her credit limit, increase the credit limit to $800. The command should be written as follows: UPDATE CUSTOMER SET CREDIT_LIM = 800 WHERE CREDIT_LIM = 500 AND CURR_BAL < CREDIT_LIM Example 33: Create a new relation with data from an existing relation. Statement: Create a new relation called CUST containing the same columns as CUSTOMER but only the rows for which the credit limit is $500 or less. The first thing that must be done is to describe the new table using the data definition facilities of SQL. CREATE TABLE CUST (CUST_NUMB DECIMAL(4). CUST_FIRST CHAR(10). CUST_LAST CHAR(10). CUST_ADDR CHAR(20). CUST_CITY CHAR(10). CUST_STATE CHAR(2). CURR_BAL DECIMAL(7,2). CREDIT_LIM DECIMAL(4) SLSRP_NUMB DECIMAL(2)) Once we have described the new table, we can use the INSERT command we used earlier. However, we must also use a SELECT command to indicate what is to be inserted into this new table. The command should be written as follows: INSERT INTO CUST SELECT * FROM CUSTOMER WHERE CREDIT_LIM <= 500 Appendix A. Data for the exercises. CUSTOMER CUST_NUMBCUST_FIRSTCUST_LASTCUST_ADDRCUST_CITYCUST_STATECURR_BALCRED_LIMSLSRP_NUMB124SALLYADAMS481 OAKLANSINGMI$418.75$500.003256ANNSAMUELS215 PETEGRANTMI$10.75$800.006311DONCHARLES48 COLLEGEIRAMI$200.10$300.0012315TOMDANIELS914 CHERRYKENTMI$320.75$300.006405ALWILLIAMS519 WATSONGRANTMI$201.75$800.0012412SALLYADAMS16 ELMLANSINGMI$908.75$1,000.003522MARYNELSON108 PINEADAMI$49.50$800.0012567JOEBAKER808 RIDGEHARPERMI$201.50$300.006587JUDYROBERTS512 PINEADAMI$57.75$500.006622DANMARTIN419 CHIPGRANTMI$575.50$500.003700JoeSmith$0.00$0.00 SALESREP SLSRP_NUMBSLSPR_FRSTSLSRP_LASTSLSRP_ADDRSLSRP_CITYSLSRP_STATETOTAL_COMMCOMM_RATE12SAMBROWN419 HARPERLANSINGMI$2,150.0053MARYJONES123 MAINGRANTMI$2,150.0056WILLIAMSMITH102 RAYMONDADAMI$4,912.007 ORDERS ORDER_NUMBORDERDATECUST_NUMB124899/2/1987124124919/2/1987311124949/4/1987315124959/4/1987256124989/5/1987522125009/5/1987124125049/5/1987522 ORDERLIN ORDER_NUMBPART_NUMBNUM_ORDEREDQUOTEPRICE12489AX1211$14.9512491BT041$402.9912491BZ661$311.9512494CB034$175.0012495CX112$57.9512498AZ522$22.9512498BA744$4.9512500BT041$402.9912504CZ812$108.99 PART PART_NUMBPART_DESCON_HANDITEM_CLASSWHSE_NUMBUNIT_PRICEAX12IRON104HW3$17.95AZ52SKATES20SG2$24.95BA74BASEBALL40SG1$4.95BH22TOASTER95HW3$34.95BT04STOVE11AP2$402.99BZ66WASHER52AP3$311.95CA14SKILLET2HW3$19.95CB03BIKE44SG1$187.50CX11MIXER112HW3$57.95CZ81WEIGHTS208SG2$108.99 Appendix 2. SQL Reserved Words. The syntax for SQL statements can be obtained from the MS Access Help function by looking for SQL Reserved Words. This will give you a list of the reserved words implemented by Access. Clicking on the word will give you the syntax definitions. This is a printout from Access 2000. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z The following list includes all words reserved by the Microsoft Jet database engine for use in SQL statements. The words in the list that are not in all uppercase letters are also reserved by other applications. Consequently, the individual Help topics for these words provide general descriptions that do not focus on SQL usage.  Note Words followed by an asterisk (*) are reserved but currently have no meaning in the context of a Microsoft Jet SQL statement (for example, Level and TableID). Words that are not underlined do not have linked explanations.  A ABSOLUTEANYADDAREADMINDBASALLASCAlphanumeric See TEXTASSERTIONALTERAUTHORIZATIONALTER TABLE AUTOINCREMENT See COUNTERAnd AvgAS B-C BEGINCOLLATIONBetweenCOLUMNBINARYCOMMITBIT COMP, COMPRESSIONBIT_LENGTHCONNECTBOOLEAN See BITCONNECTIONBOTHCONSTRAINT, CONSTRAINTS BYCONTAINERBYTECONTAINSCASCADECONVERTCATALOGCountCHAR, CHARACTER See TEXTCOUNTERCHAR_LENGTHCREATE CHARACTER_LENGTHCURRENCY CHECKCURRENT_DATECLOSECURRENT_TIMECLUSTEREDCURRENT_TIMESTAMPCOALESCECURRENT_USERCOLLATECURSOR D DATABASEDISALLOWDATE See DATETIMEDISCONNECTDATETIMEDISTINCT DAYDISTINCTROW DEC, DECIMALDOMAINDECLAREDOUBLEDELETEDROPDESC E-H EqvFOREIGNEXCLUSIVECONNECTFROMEXEC, EXECUTEFROM Clause EXISTSGENERAL See LONGBINARYEXTRACTGRANTFALSEGROUPFETCHGUIDFIRSTHAVINGFLOAT, FLOAT8 See DOUBLEHOURFLOAT4 See SINGLE I IDENTITYINPUTIEEEDOUBLE See DOUBLEINSENSITIVEIEEESINGLE See SINGLEINSERTIGNOREINSERT INTOIMAGEINT, INTEGER, INTEGER4 See LONGImpINTEGER1 See BYTEInINTEGER2 See SHORTININTERVALINDEXINTOINDEXCREATEDBIs INNERISOLATION J-M JOINLONGTEXT KEYLOWERLANGUAGEMATCHLASTMax LEFTMEMO See LONGTEXTLevel*Min LikeMINUTELOGICAL, LOGICAL1 See BITModLONG MONEY See CURRENCYLONGBINARY MONTHLONGCHAR N-P NATIONALOuter*NCHAROUTPUTNONCLUSTEREDOWNERACCESS NotPADNTEXTPARAMETERS NULLPARTIALNUMBER See DOUBLEPASSWORDNUMERIC See DECIMALPERCENTNVARCHARPIVOT OCTET_LENGTHPOSITIONOLEOBJECT See LONGBINARYPRECISIONONPREPAREOPENPRIMARY OPTIONPRIVILEGESOr PROC, PROCEDURE ORDER PUBLIC Q-S REAL See SINGLESMALLDATETIMEREFERENCESSMALLINT See SHORTRESTRICTSMALLMONEYREVOKESOMERIGHT SPACEROLLBACKSQLSCHEMASQLCODE, SQLERROR, SQLSTATESECONDStDevSELECT StDevP SELECTSCHEMASTRING See TEXTSELECTSECURITYSUBSTRINGSET SumSHORT SYSNAMESINGLESYSTEM_USERSIZE T-Z TABLEUPDATEOWNERTableID*UPDATESECURITYTEMPORARYUPPERTEXT USAGETIME See DATETIMEUSERTIMESTAMPUSINGTIMEZONE_HOURVALUE TIMEZONE_MINUTEVALUES TINYINTVar TOVARBINARY See BINARYTOPVARCHAR See TEXTTRAILINGVarPTRANSACTIONVARYINGTRANSFORMVIEWTRANSLATEWHENTRANSLATIONWHENEVERTRIMWHERETRUEWITH UNIONWORKUNIQUEXorUNIQUEIDENTIFIERYEARUNKNOWNYESNO See BITUPDATEZONEUPDATEIDENTITY     PAGE 29 '()*FGHIἪ|jTj*B*OJQJUmHnHphuhE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu,jhE2hE20JOJQJUmHnHuhE2h $5CJ$OJQJ$jhE2h $5CJ$OJQJUh $5CJ$OJQJB 0  S  ` @ >6gdE2 !  ! $a$  ²”‚lTll².jwhE2hZWOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHu:jhE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu,jhE2hE20JOJQJUmHnHu'hE2hE2CJOJQJaJmHnHu   ! " < = > ? @ A B C D ` a b c u v w ˹ye˹U7˹:jhE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu'hE2hE2CJOJQJaJmHnHu.jqhE2hZWOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu,jhE2hE20JOJQJUmHnHu:jhE2hZW>*B*OJQJUmHnHphuw sU=.jehE2hZWOJQJUmHnHu:jhE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu'hE2hE2CJOJQJaJmHnHu,jhE2hE20JOJQJUmHnHu+jhE2hE2OJQJUmHnHu.jkhE2hZWOJQJUmHnHu"hE2hE2OJQJmHnHu       ) * + - . / 0 1 2 N O P שחiU7:jhE2hZW>*B*OJQJUmHnHphu'hE2hE2CJOJQJaJmHnHu.j_hE2hZWOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHu:jhE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu,jhE2hE20JOJQJUmHnHuP Q i j k ůŗůsUů=.jShE2hZWOJQJUmHnHu:jhE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu'hE2hE2CJOJQJaJmHnHu.jYhE2hZWOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu,jhE2hE20JOJQJUmHnHu     ! " 0 1 2 L M N P Q R S T U q r mU.jMhE2hZWOJQJUmHnHu:jhE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu'hE2hE2CJOJQJaJmHnHu,jhE2hE20JOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHur s t ˹ye˹U7˹:j hE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu'hE2hE2CJOJQJaJmHnHu.jG hE2hZWOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu,jhE2hE20JOJQJUmHnHu:jhE2hZW>*B*OJQJUmHnHphu       / 0 1 2 = > ? Y Z [ ] ^ _ ` sU=.j; hE2hZWOJQJUmHnHu:j hE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu'hE2hE2CJOJQJaJmHnHu,jhE2hE20JOJQJUmHnHu+jhE2hE2OJQJUmHnHu.jA hE2hZWOJQJUmHnHu"hE2hE2OJQJmHnHu` a b ~  שחiU7:j hE2hZW>*B*OJQJUmHnHphu'hE2hE2CJOJQJaJmHnHu.j5 hE2hZWOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHu:j hE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu,jhE2hE20JOJQJUmHnHu     9 : ; = > ? @ A B ^ _ ` a ůŗůsUů=.j)hE2hZWOJQJUmHnHu:j hE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu'hE2hE2CJOJQJaJmHnHu.j/ hE2hZWOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu,jhE2hE20JOJQJUmHnHu mU.j#hE2hZWOJQJUmHnHu:jhE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu'hE2hE2CJOJQJaJmHnHu,jhE2hE20JOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHu789;<=>?@\]^_ghi˹ye˹U7˹:jhE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu'hE2hE2CJOJQJaJmHnHu.jhE2hZWOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu,jhE2hE20JOJQJUmHnHu:jhE2hZW>*B*OJQJUmHnHphuisU=.jhE2hZWOJQJUmHnHu:jhE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu'hE2hE2CJOJQJaJmHnHu,jhE2hE20JOJQJUmHnHu+jhE2hE2OJQJUmHnHu.jhE2hZWOJQJUmHnHu"hE2hE2OJQJmHnHu/01345678TUVשחiU7:jhE2hZW>*B*OJQJUmHnHphu'hE2hE2CJOJQJaJmHnHu.j hE2hZWOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHu:jhE2hZW>*B*OJQJUmHnHphuhE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu,jhE2hE20JOJQJUmHnHuVWxyzůŗůpeaYUOE:Eh $5CJOJQJh $CJOJQJ h $CJh $hE2h $>*hE2h $5CJ$OJQJ$jhE2h $5CJ$OJQJU'hE2hE2CJOJQJaJmHnHu.jhE2hZWOJQJUmHnHu+jhE2hE2OJQJUmHnHu"hE2hE2OJQJmHnHu#hE2hE20JOJQJmHnHu,jhE2hE20JOJQJUmHnHu78wx;b-UVDG`cNZHm!;|? ##3&&&&'s*u*|*}**'+(+q+r+--6-}//81<1{133E3F3G3;4n45555o6q66ߵ h $CJh $5>*CJOJQJh $OJQJh $CJOJQJh $5CJOJQJh $CJOJQJh $ h $>*jh $UmHnHuEVZ"#Jq@AGlm$9:;{|YZv89+,r? i !9!d!e!####4$4$5$$$?%X%Y%1&2&3&&&'((;(J(h(i(r*s*t*u*}*~***** & FgdE2*(+r+s+,,,,,,,,,,-6-J-^-t-------...2. & FgdE22.A.a.u.v.z......{/|/}///0000001 181{11125252^22223132333F3G3l3m33334=4>4m4n444@5A5Z5e5~55`55555555 6 646C6D6]6^6o66666666777^7_7e7|7 & FgdE2666666777]7^777~88:;L=M=>>W@X@@@SAABBCCCCDEEFXHYH[HHHrIsIII2J3JUKWKXK]KKKLLLLMMNaOcOdOiOtOOOOS S S SlUU#W$W%WFZjh $UmHnHuh $>*CJOJQJh $CJOJQJh $5CJOJQJh $5>*CJOJQJh $L|77777777778(8@8A8Z8[8~88888^9_999999999::;;;P;;;;;===#=$=%=&='=(=A=B=L=f=o=x===` & FgdE2======w>x>>>>>>>>>>>? ? ??@@/@<@=@V@W@`W@Y@[@\@}@@@@@@@@@@AA&ACARASAAA B B=BLB^BvBBBBBBBCSCCCCCCCD*DODDDDEEFEvEEEEEEEE & FgdE2 & FgdE2EFF&F7FHFZFkF|F}FFGGGGGH&H'H@HAHYHHHHHHH`H IsII3J4J5J:JJJKK*K+KDKEKUKXKgKvKKKKKLL=LLLaL & FgdE2aL~LLLLLLLLLLqMrMMMMMMMMM NNNNNNNOOO6O7OPOQOaOdOsOtOOOOO&P'PVRWRRRRRRRS S0SVS|SSSSSS"THTITkUlUUUUUVVVVVVVWW#W%W4WAWBWcXYY`YYYYZ(ZEZFZoZzZZ[[ [[[[[ \+\<\Y\Z\s\t\\\\\ & FgdE2FZoZ\\\\Q_z_bbddffhh9h:h;hJhKhihkkk lRooooopxr{rrrrvvjxmxnxKyyy!{${%{r{{E}H}I}z}}}}}liǹ굨ܞ굨굨h $CJOJQJh $5>*CJOJQJh $hE2hE25CJOJQJhE2 hE2hE2hE2CJOJQJjh $UmHnHuh $CJOJQJh $5CJOJQJ>\\\]]]^^^0^N^f^^^P_Q_y_z___aa bb+b@bQbgb}bbbbbbbbbb c#c%ccccd/dXdkdldddddeeeee!fSfSf~fffffffgQgggghhh:h;hJhKhhhihiijjjjkgdE2k7k9kkkkklljlklnnZnnnnn o6o7oQoRooooop` <^`<pppp)q@qqqqqq"r9r:rSrTrxr|rrrrrrvvvvawbwwwwwwww+x,xExFxjxnxxxxy%yJyKyxyyyzz=zLzczmzzzzzzzz!{%{H{q{r{{{<|=|e|t|||||}} }!}E}I}y}z}}}}}}n~ 5NOĀ2klOxyǃ܃`܃12jpބM67uvƆ?@PtgdE2`ijo78PuvƆψЈш"k{ƌۏ  !*+45>?IJRS[\fghklqrwx۸۸۸۸۳ h $CJh $B*OJQJphh $OJQJ h $5CJh $5B*OJQJph h $>*h $5CJOJQJ hE2hE2 hE2>*hE2hE2>*h $h $CJOJQJjh $UmHnHuh $5>*CJOJQJ4FG\dЈш./@WX!"jk"#3Ia|}Ōƌ\\ʍˍݍ)>Tiۏ !+5 $$Ifa$^5?JS\ghlrxǐϐѐFf $$Ifa$$IfFfi $$Ifa$ƐǐΐϐАѐҐՐ֐ِڐ "#'(*+23:;<=>ABDEMNXY^_abijqrtuvyzh $OJQJh $B*OJQJph h $CJ[ѐҐ֐ڐ #(+3;=>BENY_Ff'FfA# $$Ifa$$IfFf_bjruvzƑʑ͑ԑܑߑFf]4Ff0Ff+ $$Ifa$$IfőƑɑʑ̑͑ӑԑۑܑޑߑ %&./2356<=DEFGHKLOPVW_`efhipqxyz{|h $OJQJh $B*OJQJph h $CJ[ &/36=EGHLPW`fiqFf<Ff8 $$Ifa$$Ifqy{|ƒђܒFfI $$Ifa$FfyEFf2A$If $$Ifa$ŒƒВђےܒ  !*+,-./045:;CDIJLMVWXYZ[\cdijuvyz|} h $5CJh $5B*OJQJphh $ h $>*h $OJQJh $B*OJQJph h $CJO !+-.05;DJMWYZ\djvz}Ff.QFf]M $$Ifa$$IfœicZc $$Ifa$$Ifkd&W$$If4F /$     4 ap $$Ifa$n`nFfT ēœƓ˓̓ԓՓؓٓړߓ$%()*/089<=>IST]^ijtuv{| h $CJh $B*OJQJph h $5CJh $5B*OJQJphh $ h $>*h $OJQJOœƓ̓Փٓ{r{ $$Ifa$$If~kdX$$IfF /$     4 apٓړ{r{ $$Ifa$$If~kdX$$IfF /$     4 ap{r{ $$Ifa$$If~kdY$$IfF /$     4 ap{r{ $$Ifa$$If~kdZ$$IfF /$     4 ap%){r{ $$Ifa$$If~kdu[$$IfF /$     4 ap)*09={r{ $$Ifa$$If~kdQ\$$IfF /$     4 ap=>?@IT^ju{{ypppp $$Ifa$n`n~kd-]$$IfF /$     4 apuv|a[[RR $$Ifa$$Ifkd ^$$If4\ 7$[g (4 ap(c]]TT $$Ifa$$Ifkd_$$If\ 7$[g (4 ap(”ÔĔŔ͔̔ΔӔԔؔٔڔ۔  !"'(,-./678?HIRSZ[efo h $5CJh $5B*OJQJphh $h $OJQJh $B*OJQJph h $CJQc]]TT $$Ifa$$Ifkd`$$If\ 7$[g (4 ap(ÔŔ͔c]]TT $$Ifa$$Ifkd$a$$If\ 7$[g (4 ap(͔ΔԔٔ۔c]]TT $$Ifa$$Ifkd,b$$If\ 7$[g (4 ap(c]]TT $$Ifa$$Ifkd4c$$If\ 7$[g (4 ap( c]]TT $$Ifa$$IfkdLYZazmEkd$$If0*!4 a$IfEkd$$If0*!4 az{mEkd$$If0*!4 a$IfEkdv$$If0*!4 amEkd$$If0*!4 a$IfEkdl$$If0*!4 a˝̝Нѝҝ؝ !+89?@AGHSTUZ[q|}~žÞǞȞ֞מٞڞ۞ܞ h $0J5 h $5h $ h $0Jh $B*phY̝ѝҝmEkdݎ$$If0*!4 a$IfEkdb$$If0*!4 a iEkdӏ$$If0*!4 a$IfEkdX$$If0*!4 a !9@AHTmEkdɐ$$If0*!4 a$IfEkdN$$If0*!4 aTU[}~mEkd$$If0*!4 a$IfEkdD$$If0*!4 amEkd$$If0*!4 a$IfEkd:$$If0*!4 aÞȞɞמ۞mEkd$$If0*!4 a$IfEkd0$$If0*!4 a۞ܞmkiEkd$$If0*!4 a$IfEkd&$$If0*!4 a !"%&'(,-1@ABGHILMNOSTZ[\mwx{|}şƟ˟̟͟Οӟԟڟ۟ h $5 h $0J5h $B*phh $ h $0JY mEkd$$If0*!4 a$IfEkd$$If0*!4 a"'(-AmEkd$$If0*!4 a$IfEkd$$If0*!4 aABINOT[mEkd$$If0*!4 a$IfEkd$$If0*!4 a[\x|}mEkdy$$If0*!4 a$IfEkd$$If0*!4 amEkdo$$If0*!4 a$IfEkd$$If0*!4 aƟ͟Οԟ۟iEkde$$If0*!4 a$IfEkd$$If0*!4 a۟ܟmEkd[$$If0*!4 a$IfEkd$$If0*!4 a mEkdQ$$If0*!4 a$IfEkd֛$$If0*!4 a !'45=>?FTU\]^fglmn{|ĠŠƠǠ͠Πؠ٠ڠܠݠޠ#$%/08DENOYZ[abfghmno h $>* h $5 h $0Jh $h $B*phZ !5>?U]mEkdG$$If0*!4 a$IfEkd̜$$If0*!4 a]^gno|mEkd=$$If0*!4 a$IfEkd$$If0*!4 amEkd3$$If0*!4 a$IfEkd$$If0*!4 aƠǠΠ٠mEkd)$$If0*!4 a$IfEkd$$If0*!4 a٠ڠޠmEkd$$If0*!4 a$IfEkd$$If0*!4 a$%0EiEkd$$If0*!4 a$IfEkd$$If0*!4 aEFOZ[bgmEkd $$If0*!4 a$IfEkd$$If0*!4 aghouvmEkd$$If0*!4 a$IfEkd$$If0*!4 aotuv~ġšơǡӡԡڡ !"-.345678;<ABMNOVWXfghqrwxy}~ h $5 h $0J5 h $0Jh $B*phh $YmEkd$$If0*!4 a$IfEkd|$$If0*!4 aơǡԡmEkd$$If0*!4 a$IfEkdr$$If0*!4 a mEkd$$If0*!4 a$IfEkdh$$If0*!4 a ".mEkd٧$$If0*!4 a$IfEkd^$$If0*!4 a./4678<BNmkiEkdϨ$$If0*!4 a$IfEkdT$$If0*!4 aNOXghrxmEkdũ$$If0*!4 a$IfEkdJ$$If0*!4 axymEkd$$If0*!4 a$IfEkd@$$If0*!4 aƢmEkd$$If0*!4 a$IfEkd6$$If0*!4 aĢŢƢ֢עݢޢߢ  )*./0;<CDENOST^_cdpqyzɣʣϣ٣ڣۣ h $5 h $0J5 h $0Jh $B*phh $YƢǢעߢmEkd$$If0*!4 a$IfEkd,$$If0*!4 a mEkd$$If0*!4 a$IfEkd"$$If0*!4 a !*/0<DmEkd$$If0*!4 a$IfEkd$$If0*!4 aDEOTU_dmEkd$$If0*!4 a$IfEkd$$If0*!4 adeqz{mEkd$$If0*!4 a$IfEkd$$If0*!4 amEkdu$$If0*!4 a$IfEkd$$If0*!4 amEkdk$$If0*!4 a$IfEkd$$If0*!4 a£ʣڣۣmEkda$$If0*!4 a$IfEkd$$If0*!4 amkkekkkkn`nEkdW$$If0*!4 a$IfEkdܳ$$If0*!4 a  hE20JmHnHu h $0Jjh $0JUhZWjhZWUh $CJOJQJh $B*phh $ &` /0P/ =!"#$% }DyK _Toc175466750}DyK _Toc175466750}DyK _Toc175466751}DyK _Toc175466751}DyK _Toc175466752}DyK _Toc175466752}DyK _Toc175466753}DyK _Toc175466753}DyK _Toc175466754}DyK _Toc175466754}DyK _Toc175466755}DyK _Toc175466755}DyK _Toc175466756}DyK _Toc175466756}DyK _Toc175466757}DyK _Toc175466757}DyK _Toc175466758}DyK _Toc175466758}DyK _Toc175466759}DyK _Toc175466759}DyK _Toc175466760}DyK _Toc175466760}DyK _Toc175466761}DyK _Toc175466761}DyK _Toc175466762}DyK _Toc175466762}DyK _Toc175466763}DyK _Toc175466763}DyK _Toc175466764}DyK _Toc175466764}DyK _Toc175466765}DyK _Toc175466765}DyK _Toc175466766}DyK _Toc175466766}DyK _Toc175466767}DyK _Toc175466767}DyK _Toc175466768}DyK _Toc175466768}DyK _Toc175466769}DyK _Toc175466769}DyK _Toc175466770}DyK _Toc175466770$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V 4 Z5$55555\55;5 / 44 aUpZdkd$$If4 FjxN \L#($\; Z$$$$4 aUpZ$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V  Z5$55555\55;5 / 44 aUpZakd$$If FjxN \L#($\; Z$$$$4 aUpZ$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V  Z5$55555\55;5 / 44 aUpZakd$$If FjxN \L#($\; Z$$$$4 aUpZ$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V  Z5$55555\55;5 / 44 aUpZakd]!$$If FjxN \L#($\; Z$$$$4 aUpZ$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V  Z5$55555\55;5 / 44 aUpZakd%$$If FjxN \L#($\; Z$$$$4 aUpZ$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V  Z5$55555\55;5 / 44 aUpZakd)$$If FjxN \L#($\; Z$$$$4 aUpZ$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V  Z5$55555\55;5 / 44 aUpZakd2.$$If FjxN \L#($\; Z$$$$4 aUpZ$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V  Z5$55555\55;5 / 44 aUpZakdy2$$If FjxN \L#($\; Z$$$$4 aUpZ$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V  Z5$55555\55;5 / 44 aUpZakd6$$If FjxN \L#($\; Z$$$$4 aUpZ$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V  Z5$55555\55;5 / 44 aUpZakd;$$If FjxN \L#($\; Z$$$$4 aUpZ$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V  Z5$55555\55;5 / 44 aUpZakdN?$$If FjxN \L#($\; Z$$$$4 aUpZ$$IfU!v h5$55555\55;5 #v$#v#v#v#v#v\#v#v;#v :V  Z5$55555\55;5 / 44 aUpZakdC$$If FjxN \L#($\; Z$$$$4 aUpZ$$If!vh55Q5Q55555E#v#vQ#v#v#v#v#vE:V 4 P55Q55555E/ 44 apP(kdG$$If4ִ\ j)#n(QQE P    4 apP$$If!vh55Q5Q55555E#v#vQ#v#v#v#v#vE:V  P55Q55555E/ 44 apP%kdK$$Ifִ\ j)#n(QQE P    4 apP$$If!vh55Q5Q55555E#v#vQ#v#v#v#v#vE:V  P55Q55555E/ 44 apP%kdO$$Ifִ\ j)#n(QQE P    4 apP$$If!vh55Q5Q55555E#v#vQ#v#v#v#v#vE:V  P55Q55555E/ 44 apP%kdUS$$Ifִ\ j)#n(QQE P    4 apP$$If!vh55/5$#v#v/#v$:V 4 55/5$/ 44 ap$$If!vh55/5$#v#v/#v$:V  55/5$/ 44 ap$$If!vh55/5$#v#v/#v$:V  55/5$/ 44 ap$$If!vh55/5$#v#v/#v$:V  55/5$/ 44 ap$$If!vh55/5$#v#v/#v$:V  55/5$/ 44 ap$$If!vh55/5$#v#v/#v$:V  55/5$/ 44 ap$$If!vh55/5$#v#v/#v$:V  55/5$/ 44 ap$$If!vh55/5$#v#v/#v$:V  55/5$/ 44 ap $$If!vh55$5[5g#v#v$#v[#vg:V 4 (55$5[5g/ 44 ap($$If!vh55$5[5g#v#v$#v[#vg:V  (55$5[5g/ 44 ap($$If!vh55$5[5g#v#v$#v[#vg:V  (55$5[5g/ 44 ap($$If!vh55$5[5g#v#v$#v[#vg:V  (55$5[5g/ 44 ap($$If!vh55$5[5g#v#v$#v[#vg:V  (55$5[5g/ 44 ap($$If!vh55$5[5g#v#v$#v[#vg:V  (55$5[5g/ 44 ap($$If!vh55$5[5g#v#v$#v[#vg:V  (55$5[5g/ 44 ap($$If!vh55$5[5g#v#v$#v[#vg:V  (55$5[5g/ 44 ap($$If!vh55$5[5g#v#v$#v[#vg:V  (55$5[5g/ 44 ap($$If!vh55$5[5g#v#v$#v[#vg:V  (55$5[5g/ 44 ap(a$$If!vh5$555/5\5#v$#v#v#v/#v\#v:V 4 <5$555/5\5/ 44 ap<^$$If!vh5$555/5\5#v$#v#v#v/#v\#v:V  <5$555/5\5/ 44 ap<^$$If!vh5$555/5\5#v$#v#v#v/#v\#v:V  <5$555/5\5/ 44 ap<^$$If!vh5$555/5\5#v$#v#v#v/#v\#v:V  <5$555/5\5/ 44 ap<^$$If!vh5$555/5\5#v$#v#v#v/#v\#v:V  <5$555/5\5/ 44 ap<^$$If!vh5$555/5\5#v$#v#v#v/#v\#v:V  <5$555/5\5/ 44 ap<^$$If!vh5$555/5\5#v$#v#v#v/#v\#v:V  <5$555/5\5/ 44 ap<^$$If!vh5$555/5\5#v$#v#v#v/#v\#v:V  <5$555/5\5/ 44 ap<^$$If!vh5$555/5\5#v$#v#v#v/#v\#v:V  <5$555/5\5/ 44 ap<^$$If!vh5$555/5\5#v$#v#v#v/#v\#v:V  <5$555/5\5/ 44 ap<^$$If!vh5$555/5\5#v$#v#v#v/#v\#v:V  <5$555/5\5/ 44 ap<Ddr !<0  # A2*CJOJQJH@H Heading 2$n@&`n CJOJQJR@BR Heading 4 dd@&5B*CJOJQJphDA@D Default Paragraph FontVi@V  Table Normal :V 44 la (k@(No List 4 @4 Footer  !.)@. Page Number&@& TOC 1.@. TOC 2 ^.@. TOC 3 ^.@. TOC 4 X^X.@. TOC 5  ^ .@. TOC 6 ^.@. TOC 7 ^.@. TOC 8 x^x.@. TOC 9 @^@0U@0 Hyperlink>*B*R^@R Normal (Web) ddB*CJOJQJph B0S`@>67 8  w x  ; b  - U V Z "#Jq@AGlm$9:;{|YZv89+,r?i9de45?XY123  ; J h i r"s"t"u"}"~"""""(#r#s#$$$$$$$$$$%6%J%^%t%%%%%%%&&&2&A&a&u&v&z&&&&&&{'|'}'''(((((() )8){)))*5*^****+1+2+3+F+G+l+m++++,=,>,m,n,,,@-A-Z-e-~--------- . .4.C.D.].^.o......../7/^/_/e/|//////////0(0@0A0Z0[0~00000^1_1111111122333P33333555#5$5%5&5'5(5A5B5L5f5o5x55555555w6x666666666667 7 7788/8<8=8V8W8Y8[8\8}888888888899&9C9R9S999 : :=:L:^:v::::::;S;;;;;;;<*<O<<<<E=F=v========>>&>7>H>Z>k>|>}>>?????@&@'@@@A@Y@@@@@@@ AsAA3B4B5B:BBBCC*C+CDCECUCXCgCvCCCCCDD=DLDaD~DDDDDDDDDDqErEEEEEEEEE FFFFFFFGG6G7GPGQGaGdGsGtGGGGG&H'HVJWJJJJJJJK K0KVK|KKKKK"LHLILkMlMMMMMNNNNNNNOO#O%O4OAOBOcPQQQQQR(RERFRoRzRRSS SSSSS T+TTi‡ۇ !+5?JS\ghlrxLjψш҈ֈڈ #(+3;=>BENY_bjruvzƉʉ͉ԉ܉߉ &/36=EGHLPW`fiqy{|Ɗъ܊ !+-.05;DJMWYZ\djvz}ŋƋ̋Ջًڋ%)*09=>?@IT^juv|ÌŌ͌ΌԌٌی !"(-/789?IS[fp{|čǍɍύЍՍݍ %&+358:ABGLORT\]bhloqxy~ڏۏ܏[]ACENRSW[\dghlpqҒӒؒܒݒ /0;CDVabgٓ&'-:;EWXanow~Ȕɔ͔ڔ۔ &'8=>LYZaz{̕ѕҕ !9@AHTU[}~ÖȖɖזۖܖ "'(-ABINOT[\x|}Ɨ͗Ηԗۗܗ !5>?U]^gno|ƘǘΘ٘ژޘ$%0EFOZ[bghouvƙǙԙ "./4678<BNOXghrxyƚǚךߚ !*/0<DEOTU_deqz{›ʛڛۛ 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&"0&"0&"0&" 0&" 0&" 0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"0&"00*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*00@.0@.0@. 0@. 0@. 0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@. 0@. 0@. 0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.0@.00;0;0; 0; 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0; 0; 0; 0; 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;00%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G0%G 0%G 0%G00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000h000000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000h00h00h00h00@0@0h007 8  w x  ; b  - U V Z "#Jq@AGlm$9:;{|YZv89+,r?i9de45?XY123  ; J h i r"s"t"u"}"~"""""(#r#s#$$$$$$$$$$%6%J%^%t%%%%%%%&&&2&A&a&u&v&z&&&&&&{'|'}'''(((((() )8){)))*5*^****+1+2+3+F+G+l+m++++,=,>,m,n,,,@-A-Z-e-~--------- . .4.C.D.].^.o......../7/^/_/e/|//////////0(0@0A0Z0[0~00000^1_1111111122333P33333555#5$5%5&5'5(5A5B5L5f5o5x55555555w6x666666666667 7 7788/8<8=8V8W8Y8[8\8}888888888899&9C9R9S999 : :=:L:^:v::::::;S;;;;;;;<*<O<<<<E=F=v========>>&>7>H>Z>k>|>}>>?????@&@'@@@A@Y@@@@@@@ AsAA3B4B5B:BBBCC*C+CDCECUCXCgCvCCCCCDD=DLDaD~DDDDDDDDDDqErEEEEEEEEE FFFFFFFGG6G7GPGQGaGdGsGtGGGGG&H'HVJWJJJJJJJK K0KVK|KKKKK"LHLILkMlMMMMMNNNNNNNOO#O%O4OAOBOcPQQQQQR(RERFRoRzRRSS SSSSS T+TTi‡ۇ !+5?JS\ghlrxLjψш҈ֈڈ #(+3;=>BENY_bjruvzƉʉ͉ԉ܉߉ &/36=EGHLPW`fiqy{|Ɗъ܊ !+-.05;DJMWYZ\djvz}ŋƋ̋Ջًڋ%)*09=>?@IT^juv|ÌŌ͌ΌԌٌی !"(-/789?IS[fp{|čǍɍύЍՍݍ %&+358:ABGLORT\]bhloqxy~ڏۏ܏[]ACENRSW[\dghlpqҒӒؒܒݒ /0;CDVabgٓ&'-:;EWXanow~Ȕɔ͔ڔ۔ &'8=>LYZaz{̕ѕҕ !9@AHTU[}~ÖȖɖזۖܖ "'(-ABINOT[\x|}Ɨ͗Ηԗۗܗ !5>?U]^gno|ƘǘΘ٘ژޘ$%0EFOZ[bghouvƙǙԙ "./4678<BNOXghrxyƚǚךߚ !*/0<DEOTU_deqz{›ʛڛۛ 00000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000 0 0 0000000000000000000000000000000000000000000000000000000000000000 00c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$0c$ 00'0'0' 0' 0' 0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0' 0' 0' 0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0'0' 0050505 05 05050505050505050505050505050505050505050505050505050505050505050505050505050505 05 05 05 0505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505050505 00@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@ 0@ 0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@0@@0@@0@ 007Y07Y07Y07Y07Y07Y07Y07Y07Y07Y07Y07Y07Y07Y 00\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 00c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c 00vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn0vn 003w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w03w 0000000000000000000000000000000000000000000000000000000 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0000Z 0Z 0Z 0Z 0Z 0Z 0Z 0Z 0Z0Z 0Z 0Z 0Z 0Z 0Z 0Z 0Z 0Z0Z 0Z 0Z 0Z 0Z 0Z 0Z 0Z 0Z0Z 0Z 0Z 0Z 0Z 0Z 0Z 0Z 0Z0Z00I 0I 0I 0I0I 0I 0I 0I0I 0I 0I 0I0I 0I 0I 0I0I 0I 0I 0I0I 0I 0I 0I0I 0I 0I 0I0I 0I 0I 0I0I0I00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0000 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 00W0W0W:0W0000000 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 0000 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 0000 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 0000 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 0000 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 0000 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 0000 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 0000 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 0000 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00 0 00000j00j00j00j00j00j00j00 00  w P r ` iV6FZio&֚&oSVWXYZ[\]^_`abcdfo{V4$*2.525|79=W@BEHaLOSY\bSfkpwz}܃\5ѐ_qœٓ)=u͔ !7{ϕݕ%3AL\hx[pܚC&W~ڜ=z T۞A[۟ ]٠Eg .NxƢ DdTeghijklmnpqrstuvwxyz|}~U'(H!=?@Bbv*-.0Pj!1MPQSs 1>Z]^`:=>@`8;<>^h0346Vy X%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕX%ĕ̕ !8UV@UU4(  DB   ?"DB   ?"DB   ?" JB  # 1?"JB  # 1?"JB  # 1?"JB  # 1?"JB   # 1?"JB   # 1?"!JB   # 1?"$JB   # 1?"'JB   # 1?")JB  # 1?"*JB  # 1?".JB  # 1?"1JB  # 1?"3JB  # 1?"7DB   ?"8DB   ?"CDB   ?"FDB   ?"GDB   ?"DB   ?"JB  # 1?"JB  # 1?"JB  # 1?"JB  # 1?"JB  # 1?" JB  # 1?"%JB  # 1?"&JB   # 1?"(JB ! # 1?"+JB " # 1?"-JB # # 1?"0JB $ # 1?"2JB % # 1?"6DB &  ?"9DB '  ?"BDB (  ?"EDB )  ?"IDB *  ?"DB +  ?"JB , # 1?" JB - # 1?"JB . # 1?"JB / # 1?"JB 0 # 1?"JB 1 # 1?""JB 2 # 1?",JB 3 # 1?"5DB 4  ?":DB 5  ?"ADB 6  ?"DDB 7  ?"HDB 8  ?"DB 9  ?"JB : # 1?" JB ; # 1?"JB < # 1?"JB = # 1?"JB > # 1?"#JB ? # 1?"/JB @ # 1?"4DB A  ?";DB B  ?"NDB C  ?"SDB D  ?"JB E # 1?" JB F # 1?"DB G  ?"<DB H  ?"MDB I  ?"RJB J # 1?" JB K # 1?"DB L  ?"=DB M  ?"LDB N  ?"QDB O  ?"@DB P  ?"KDB Q  ?"PDB R  ?"?DB S  ?"JDB T  ?"ODB U  ?">B S  ?  %%8)9):);)-o.p.~000L56::::==Y@Z@UCVCDDEEaGbGKK K#OTTZZ^^^^ggggggxjyjzjjpkplp!s"s#sEuFuGuxxxxxj|k|l|m|n|* 1)2t8x1 2t12t t t+XtDx t9txQ RtQRtJhtE t:x t,txm ntmnttx t; t- It t.mntmint<8 t/x ttmnt mntKhytF8 t=x t0tI t yt1yt>i t xytxxytxyzt yzt xt txyt!xxyt28 it" tyt?t#9 tyt$ 9 t y t@Yt3 t%x9 ttYt& t4 tA(9tGtLhy!tU tR9 tOyt58 t'x tt68 t(x ttt78 t)x tSxtutPtutM tIutHxt utBtutTxtutQtutN tIutIxt utCtut _Hlt175466817 _Hlt175466818 _Toc175466750 _Toc175466751 _Toc175466752 _Toc175466753 _Toc175466754 _Toc175466755 _Toc175466756 _Toc175466757 _Toc175466758 _Toc175466759 _Toc175466760 _Toc175466761 _Toc175466762 _Toc175466763 _Toc175466764 _Toc175466765 _Toc175466766 _Toc175466767 _Toc175466768 _Toc175466769ssu"3+.;tG`;`cjzu8~v~܇@:@@ tt|"E+.;G9`I`cjut~~H>@74& 77l77,7$z7t7777L777 7, 7l 7 7 7, 7l 7 7 7, 7 7  7L 7 7 7  7L 7 7 7  7L 7 7 7  7L 7 7 7  7L 7 7 7  7L 7 7 7  7L 7 7 7  7L 7 7 7  7L 7 7 7  7L 7 7 X//SSb b w!w!!!"W"j"j"D%X%)P*?;;AAgjnopxy|g}r##BBƉƉ//?vv      !"#$%&'(*)+,-./0123456789:;<=>?]22VVe e ~!!!!"Z"m"m"I%]%)U*D;;AAgjnopxy|l}w''DDɉɉ22Cyy  !"#$%&'(*)+,-./0123456789:;<=>?B*urn:schemas-microsoft-com:office:smarttagscountry-region98*urn:schemas-microsoft-com:office:smarttagsState8=*urn:schemas-microsoft-com:office:smarttagsCity9@*urn:schemas-microsoft-com:office:smarttagsplace 8 @@@=@=@=8=@=@=@=@=8===@=@@@@@@@=@@@@@@@@@@=8@@=@@8@@=@=@=@=@@=@/2SVb e n!u!!!""W"Z"j"m"..y22222299@@BBPPCQKQVV]WeWoWwW[[vvzzgrؒےęOV*.  8B!!Z&_&'')%)f,k,&.*.l/p/118$8c8i888:!:h:l:Y=]=>>>%>)>6>:>G>]>j>n>{>????BB,D2DiDoDEEFF!G'GJJNNNNZZ]][^_^^^``ddWgaggjrjxkkTx^x7|A|iqƃ $49JO`et|܇ 333333333333333333333333333333333333333333333333333333333333333  fS*"r"bbQ\"Uc^<+X.`"Ex"@hh^h`56CJOJQJ^Jo(. @hh^h`56CJOJQJ^Jo(. @hh^h`56CJOJQJ^Jo(. @hh^h`.@hh^h`56CJOJQJ^Jo(. @h8^8`56CJOJQJ^Jo(. ExrX.`Uc^Uc^|^fS*bbQ\^ S@hh^h`56.E2ZW $ !+5?JS\ghlrxLjψш҈ֈڈ #(+3;=>BENY_bjruvzƉʉ͉ԉ܉߉ &/36=EGHLPW`fiqy{|Ɗъ܊ !+-.05;DJMWYZ\djvz}ŋƋ̋Ջًڋ%)*09=>?@IT^juv|ÌŌ͌ΌԌٌی !"(-/789?IS[fp{|čǍɍύЍՍݍ %&+358:ABGLORT\]bhloqxy~ACENRSW[\dghlpqҒӒؒܒݒ /0;CDVabgٓ&'-:;EWXanow~Ȕɔ͔ڔ۔ &'8=>LYZaz{̕ѕҕ !9@AHTU[}~ÖȖɖזۖܖ "'(-ABINOT[\x|}Ɨ͗Ηԗۗܗ !5>?U]^gno|ƘǘΘ٘ژޘ$%0EFOZ[bghouvƙǙԙ "./4678<BNOXghrxyƚǚךߚ !*/0<DEOTU_deqz{›ʛڛۛ 333333@Dell Laser Printer 1110Ne01:winspoolDell Laser Printer 1110Dell Laser Printer 1110  odXXLetterPRIVo  x6schw0808UntitledddX2222222222Dell Laser Printer 1110  odXXLetterPRIVo  x6schw0808UntitledddX2222222222L@UnknownGz Times New Roman5Symbol3& z ArialO1 CourierCourier New"h&fF HOHO$xx42QHP ?2SQLAuthorized Gateway CustomerCollege of Business$      Oh+'0 $ D P \hpxSQLAuthorized Gateway CustomerNormalCollege of Business3Microsoft Office Word@e@Cq@Qf"H՜.+,D՜.+,L hp   MFPCB University of OklahomaO SQL Title 8@ _PID_HLINKSA~5z _Toc1754667705t _Toc1754667695n _Toc1754667685h _Toc1754667675b _Toc1754667665\ _Toc1754667655V _Toc1754667645P _Toc1754667635J _Toc1754667625D _Toc1754667615> _Toc17546676058 _Toc17546675952 _Toc1754667585, _Toc1754667575& _Toc1754667565  _Toc1754667555 _Toc1754667545 _Toc1754667535 _Toc1754667525 _Toc1754667515 _Toc175466750  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklnopqrstvwxyz{|Root Entry F@"Data Ҵ1Table`WordDocument1SummaryInformation(mDocumentSummaryInformation8uCompObjq  FMicrosoft Office Word Document MSWordDocWord.Document.89q