cs 455 principles of database systemsmathcs.pugetsound.edu/~dchiu/cs455/notes/cs455_3a-sql_1.pdfcs...

23
Department of Mathematics and Computer Science Lecture 3a Structured Query Language (SQL) CS 455 Principles of Database Systems

Upload: others

Post on 04-Sep-2020

20 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

Department of Mathematicsand Computer Science

Lecture 3aStructured Query Language(SQL)

CS 455Principles of Database Systems

Page 2: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Motivation

‣ Data abstraction:• SQL: Let users tell DBMS what information to retrieve

• Relational algebra: Tells DBMS how to retrieve that information

‣ Modern DBMSs are equipped with a built-in SQL-to-Relational-Algebra interpreter.

�2

-- SQL: it's obvious what the user wants

SELECT f_name,l_nameFROM passengersWHERE l_name = 'Simpson';

passengers<latexit sha1_base64="QJ8pGwbv5Xn82V+NBXKue3wm11Q=">AAAFiXicjVRbb9MwFPZghdFx2eCRF4u1Ei+NkmoTEwI0sReEeBiIXcRSTU56mnj1Tbazi6L8C17hf/FvcJIWmmWMWYrkc77LOT6OHClGjfX9X0t37i537t1fedBdffjo8ZO19acHRmY6hv1YMqmPImKAUQH7lloGR0oD4RGDw2i6W+KHZ6ANleKrvVQw4iQRdEJjYl3qmyLGgEgc4WRtw/f8auH2JphtNtBs7Z2sL9NwLOOMg7Axcz7Hga/sKCfa0phB0Q0zA4rEU5LAsdsKwsGM8qrlAvddZownUrtPWFxlFxU54cZc8sgxObGpuYqVyT9YH38BVh2IMEzEGEckwYQlEGmCSxfJnIGA81hy7vA8jLU0pshDB13kvdBS11uvKJokXfU8Z4WM6AR6oU5li5kJV/uvXZypFoUK66YMsW0yyQ3Mm2mnki4YfXRRi+J+iwWb+QEMTThpcZkBTpue5XA1MDcIQg0EyoZp5XOmMwY4BZqkdktZPAZlU7+EzZSqQeC5ZO9drw7xYFjFb1zF9oRvX/Rm73lc4f9s8JoOGBG20cF8SlZTIhIGujRpN/4/GYNJW6W0PF28kE+1RtGS2e1H8txSwFKBJlZq98uOYRLKskx5l9Zp/Lf1OHphTe4V/S7GYXne44HnD+FilHvDLeBF7m26A4eMEZXXeJhav4mW/ZUl2KxGOfuo3FRxyKegxWDL2+bZrNxcoK8KarihqChzweS2Fa616LrHKbj6FLU3B0Mv8L3g8+bGzvvZM7WCnqMX6CUK0Cu0gz6gPbSPYiTQd/QD/eysdoLOdud1Tb2zNNM8Q43V2f0N8/vvqQ==</latexit><latexit sha1_base64="QJ8pGwbv5Xn82V+NBXKue3wm11Q=">AAAFiXicjVRbb9MwFPZghdFx2eCRF4u1Ei+NkmoTEwI0sReEeBiIXcRSTU56mnj1Tbazi6L8C17hf/FvcJIWmmWMWYrkc77LOT6OHClGjfX9X0t37i537t1fedBdffjo8ZO19acHRmY6hv1YMqmPImKAUQH7lloGR0oD4RGDw2i6W+KHZ6ANleKrvVQw4iQRdEJjYl3qmyLGgEgc4WRtw/f8auH2JphtNtBs7Z2sL9NwLOOMg7Axcz7Hga/sKCfa0phB0Q0zA4rEU5LAsdsKwsGM8qrlAvddZownUrtPWFxlFxU54cZc8sgxObGpuYqVyT9YH38BVh2IMEzEGEckwYQlEGmCSxfJnIGA81hy7vA8jLU0pshDB13kvdBS11uvKJokXfU8Z4WM6AR6oU5li5kJV/uvXZypFoUK66YMsW0yyQ3Mm2mnki4YfXRRi+J+iwWb+QEMTThpcZkBTpue5XA1MDcIQg0EyoZp5XOmMwY4BZqkdktZPAZlU7+EzZSqQeC5ZO9drw7xYFjFb1zF9oRvX/Rm73lc4f9s8JoOGBG20cF8SlZTIhIGujRpN/4/GYNJW6W0PF28kE+1RtGS2e1H8txSwFKBJlZq98uOYRLKskx5l9Zp/Lf1OHphTe4V/S7GYXne44HnD+FilHvDLeBF7m26A4eMEZXXeJhav4mW/ZUl2KxGOfuo3FRxyKegxWDL2+bZrNxcoK8KarihqChzweS2Fa616LrHKbj6FLU3B0Mv8L3g8+bGzvvZM7WCnqMX6CUK0Cu0gz6gPbSPYiTQd/QD/eysdoLOdud1Tb2zNNM8Q43V2f0N8/vvqQ==</latexit><latexit sha1_base64="QJ8pGwbv5Xn82V+NBXKue3wm11Q=">AAAFiXicjVRbb9MwFPZghdFx2eCRF4u1Ei+NkmoTEwI0sReEeBiIXcRSTU56mnj1Tbazi6L8C17hf/FvcJIWmmWMWYrkc77LOT6OHClGjfX9X0t37i537t1fedBdffjo8ZO19acHRmY6hv1YMqmPImKAUQH7lloGR0oD4RGDw2i6W+KHZ6ANleKrvVQw4iQRdEJjYl3qmyLGgEgc4WRtw/f8auH2JphtNtBs7Z2sL9NwLOOMg7Axcz7Hga/sKCfa0phB0Q0zA4rEU5LAsdsKwsGM8qrlAvddZownUrtPWFxlFxU54cZc8sgxObGpuYqVyT9YH38BVh2IMEzEGEckwYQlEGmCSxfJnIGA81hy7vA8jLU0pshDB13kvdBS11uvKJokXfU8Z4WM6AR6oU5li5kJV/uvXZypFoUK66YMsW0yyQ3Mm2mnki4YfXRRi+J+iwWb+QEMTThpcZkBTpue5XA1MDcIQg0EyoZp5XOmMwY4BZqkdktZPAZlU7+EzZSqQeC5ZO9drw7xYFjFb1zF9oRvX/Rm73lc4f9s8JoOGBG20cF8SlZTIhIGujRpN/4/GYNJW6W0PF28kE+1RtGS2e1H8txSwFKBJlZq98uOYRLKskx5l9Zp/Lf1OHphTe4V/S7GYXne44HnD+FilHvDLeBF7m26A4eMEZXXeJhav4mW/ZUl2KxGOfuo3FRxyKegxWDL2+bZrNxcoK8KarihqChzweS2Fa616LrHKbj6FLU3B0Mv8L3g8+bGzvvZM7WCnqMX6CUK0Cu0gz6gPbSPYiTQd/QD/eysdoLOdud1Tb2zNNM8Q43V2f0N8/vvqQ==</latexit><latexit sha1_base64="QJ8pGwbv5Xn82V+NBXKue3wm11Q=">AAAFiXicjVRbb9MwFPZghdFx2eCRF4u1Ei+NkmoTEwI0sReEeBiIXcRSTU56mnj1Tbazi6L8C17hf/FvcJIWmmWMWYrkc77LOT6OHClGjfX9X0t37i537t1fedBdffjo8ZO19acHRmY6hv1YMqmPImKAUQH7lloGR0oD4RGDw2i6W+KHZ6ANleKrvVQw4iQRdEJjYl3qmyLGgEgc4WRtw/f8auH2JphtNtBs7Z2sL9NwLOOMg7Axcz7Hga/sKCfa0phB0Q0zA4rEU5LAsdsKwsGM8qrlAvddZownUrtPWFxlFxU54cZc8sgxObGpuYqVyT9YH38BVh2IMEzEGEckwYQlEGmCSxfJnIGA81hy7vA8jLU0pshDB13kvdBS11uvKJokXfU8Z4WM6AR6oU5li5kJV/uvXZypFoUK66YMsW0yyQ3Mm2mnki4YfXRRi+J+iwWb+QEMTThpcZkBTpue5XA1MDcIQg0EyoZp5XOmMwY4BZqkdktZPAZlU7+EzZSqQeC5ZO9drw7xYFjFb1zF9oRvX/Rm73lc4f9s8JoOGBG20cF8SlZTIhIGujRpN/4/GYNJW6W0PF28kE+1RtGS2e1H8txSwFKBJlZq98uOYRLKskx5l9Zp/Lf1OHphTe4V/S7GYXne44HnD+FilHvDLeBF7m26A4eMEZXXeJhav4mW/ZUl2KxGOfuo3FRxyKegxWDL2+bZrNxcoK8KarihqChzweS2Fa616LrHKbj6FLU3B0Mv8L3g8+bGzvvZM7WCnqMX6CUK0Cu0gz6gPbSPYiTQd/QD/eysdoLOdud1Tb2zNNM8Q43V2f0N8/vvqQ==</latexit>

�l name=‘simpson0<latexit sha1_base64="fySOf2rZZsF8uQXjKoZhW/9ONaY=">AAAFm3icjVRbb9MwFPZghVFuG7yBkCzWCl4aJdUmeGBoYi9o2sNAdJs0V8VJT1OvdmzZ7i6KIvFreIW/w7/BTltolzFmKdI55/vOdy6OHCvOjA3DX0u3bi/X7txduVe//+Dho8era08OjBzrBDqJ5FIfxdQAZxl0LLMcjpQGKmIOh/Fox+OHp6ANk9kXe6GgK2iasQFLqHWh3uozYlgqaC/npJdRAVtfDRPKyOxV0VtdD4OwPLhqRFNjHU3Pfm9tmZG+TMYCMptwasxxFCrbzam2LOFQ1MnYgKLJiKZw7Exfz3TzcogCN12kjwdSuy+zuIzOZ+RUGHMhYscU1A7NZcwH/2BN/Bl4OSLlmGZ9HNMUU55CrCn2KpI7gQzOEimEw3OSaGlMkRMHnecNYpnrrVEUiyRd9jxjEU51Cg2ih7LCHGeu9l+5ZKwqFJZZdzGQ2EUmvYZ5Pe1EsjmhXedVKO5HmZOZDVD+AhUuNyDYoqZfrgbuFkGZgUhZMix1TvWYAx4CS4d2U1ncB2WHoYfNiKlWFLhg431j4uJWu/TfuYrVDd+86PXaM7/E/9ngFR1wmtmFDmZbsprRLOWgvUi18f+lcRhUs5SWJ/MXsjfJUcwz681YnlkGWCrQ1Ertftk+DIj0ZfxdWpcTbk3W0SATcqNo1jEmft7jVhC24bybB+1NEEUebLiBCedU5ROcDG24iPr+fAk+reF3H3uj9IkYgc5am8FbMZ6WmyXoywkTeCGjpMwSBjetcKVE3T1O0eWnqGoctIMoDKJPG+vbH6bP1Ap6jl6i1yhCb9A2+oj2UQcl6Bv6jn6gn7UXtZ3abm1vQr21NM15ihZOrfMbGOn2mA==</latexit><latexit sha1_base64="fySOf2rZZsF8uQXjKoZhW/9ONaY=">AAAFm3icjVRbb9MwFPZghVFuG7yBkCzWCl4aJdUmeGBoYi9o2sNAdJs0V8VJT1OvdmzZ7i6KIvFreIW/w7/BTltolzFmKdI55/vOdy6OHCvOjA3DX0u3bi/X7txduVe//+Dho8era08OjBzrBDqJ5FIfxdQAZxl0LLMcjpQGKmIOh/Fox+OHp6ANk9kXe6GgK2iasQFLqHWh3uozYlgqaC/npJdRAVtfDRPKyOxV0VtdD4OwPLhqRFNjHU3Pfm9tmZG+TMYCMptwasxxFCrbzam2LOFQ1MnYgKLJiKZw7Exfz3TzcogCN12kjwdSuy+zuIzOZ+RUGHMhYscU1A7NZcwH/2BN/Bl4OSLlmGZ9HNMUU55CrCn2KpI7gQzOEimEw3OSaGlMkRMHnecNYpnrrVEUiyRd9jxjEU51Cg2ih7LCHGeu9l+5ZKwqFJZZdzGQ2EUmvYZ5Pe1EsjmhXedVKO5HmZOZDVD+AhUuNyDYoqZfrgbuFkGZgUhZMix1TvWYAx4CS4d2U1ncB2WHoYfNiKlWFLhg431j4uJWu/TfuYrVDd+86PXaM7/E/9ngFR1wmtmFDmZbsprRLOWgvUi18f+lcRhUs5SWJ/MXsjfJUcwz681YnlkGWCrQ1Ertftk+DIj0ZfxdWpcTbk3W0SATcqNo1jEmft7jVhC24bybB+1NEEUebLiBCedU5ROcDG24iPr+fAk+reF3H3uj9IkYgc5am8FbMZ6WmyXoywkTeCGjpMwSBjetcKVE3T1O0eWnqGoctIMoDKJPG+vbH6bP1Ap6jl6i1yhCb9A2+oj2UQcl6Bv6jn6gn7UXtZ3abm1vQr21NM15ihZOrfMbGOn2mA==</latexit><latexit sha1_base64="fySOf2rZZsF8uQXjKoZhW/9ONaY=">AAAFm3icjVRbb9MwFPZghVFuG7yBkCzWCl4aJdUmeGBoYi9o2sNAdJs0V8VJT1OvdmzZ7i6KIvFreIW/w7/BTltolzFmKdI55/vOdy6OHCvOjA3DX0u3bi/X7txduVe//+Dho8era08OjBzrBDqJ5FIfxdQAZxl0LLMcjpQGKmIOh/Fox+OHp6ANk9kXe6GgK2iasQFLqHWh3uozYlgqaC/npJdRAVtfDRPKyOxV0VtdD4OwPLhqRFNjHU3Pfm9tmZG+TMYCMptwasxxFCrbzam2LOFQ1MnYgKLJiKZw7Exfz3TzcogCN12kjwdSuy+zuIzOZ+RUGHMhYscU1A7NZcwH/2BN/Bl4OSLlmGZ9HNMUU55CrCn2KpI7gQzOEimEw3OSaGlMkRMHnecNYpnrrVEUiyRd9jxjEU51Cg2ih7LCHGeu9l+5ZKwqFJZZdzGQ2EUmvYZ5Pe1EsjmhXedVKO5HmZOZDVD+AhUuNyDYoqZfrgbuFkGZgUhZMix1TvWYAx4CS4d2U1ncB2WHoYfNiKlWFLhg431j4uJWu/TfuYrVDd+86PXaM7/E/9ngFR1wmtmFDmZbsprRLOWgvUi18f+lcRhUs5SWJ/MXsjfJUcwz681YnlkGWCrQ1Ertftk+DIj0ZfxdWpcTbk3W0SATcqNo1jEmft7jVhC24bybB+1NEEUebLiBCedU5ROcDG24iPr+fAk+reF3H3uj9IkYgc5am8FbMZ6WmyXoywkTeCGjpMwSBjetcKVE3T1O0eWnqGoctIMoDKJPG+vbH6bP1Ap6jl6i1yhCb9A2+oj2UQcl6Bv6jn6gn7UXtZ3abm1vQr21NM15ihZOrfMbGOn2mA==</latexit><latexit sha1_base64="fySOf2rZZsF8uQXjKoZhW/9ONaY=">AAAFm3icjVRbb9MwFPZghVFuG7yBkCzWCl4aJdUmeGBoYi9o2sNAdJs0V8VJT1OvdmzZ7i6KIvFreIW/w7/BTltolzFmKdI55/vOdy6OHCvOjA3DX0u3bi/X7txduVe//+Dho8era08OjBzrBDqJ5FIfxdQAZxl0LLMcjpQGKmIOh/Fox+OHp6ANk9kXe6GgK2iasQFLqHWh3uozYlgqaC/npJdRAVtfDRPKyOxV0VtdD4OwPLhqRFNjHU3Pfm9tmZG+TMYCMptwasxxFCrbzam2LOFQ1MnYgKLJiKZw7Exfz3TzcogCN12kjwdSuy+zuIzOZ+RUGHMhYscU1A7NZcwH/2BN/Bl4OSLlmGZ9HNMUU55CrCn2KpI7gQzOEimEw3OSaGlMkRMHnecNYpnrrVEUiyRd9jxjEU51Cg2ih7LCHGeu9l+5ZKwqFJZZdzGQ2EUmvYZ5Pe1EsjmhXedVKO5HmZOZDVD+AhUuNyDYoqZfrgbuFkGZgUhZMix1TvWYAx4CS4d2U1ncB2WHoYfNiKlWFLhg431j4uJWu/TfuYrVDd+86PXaM7/E/9ngFR1wmtmFDmZbsprRLOWgvUi18f+lcRhUs5SWJ/MXsjfJUcwz681YnlkGWCrQ1Ertftk+DIj0ZfxdWpcTbk3W0SATcqNo1jEmft7jVhC24bybB+1NEEUebLiBCedU5ROcDG24iPr+fAk+reF3H3uj9IkYgc5am8FbMZ6WmyXoywkTeCGjpMwSBjetcKVE3T1O0eWnqGoctIMoDKJPG+vbH6bP1Ap6jl6i1yhCb9A2+oj2UQcl6Bv6jn6gn7UXtZ3abm1vQr21NM15ihZOrfMbGOn2mA==</latexit>

⇡f name,l name<latexit sha1_base64="iI8c9NJvD32WDYDZZ7zd/is4h8E=">AAAFlnicjVRbb9MwFPbGCqPcNhASEi8WSyUeaJRUm+ABpgmEQIiHgdhFmqvKSU9Tr05s2c4uivJjeIVfxL/BTlpolzFmqeo5/i7n+DhyJDnTJgh+LS3fWGndvLV6u33n7r37D9bWH+5rkasY9mLBhTqMqAbOMtgzzHA4lApoGnE4iCbvHH5wAkozkX0z5xL6KU0yNmIxNXZrsPaYSDYoRmSQ0RRe8Pq/HKxtBH5QLdwMwmmwgaZrd7C+wshQxHkKmYk51fooDKTpF1QZFnMo2yTXIGk8oQkc2dBV0f2i6r/EHbszxCOh7C8zuNqdVxQ01fo8jSwzpWasL2Ju8w/WwV+BV6ejHNNsiCOaYMoTiBTFzkVwa5DBaSzS1OIFiZXQuiyIhc4Kjxhme/PKcpGkqp5nLMKpSsAjaiwazDyztf/axblsUFhm7J1AbBaZ9Arm1bRjweaMPtmsQbHfyJzN7ACaJSltcLmGlC16uuEq4HYQlGkIpSHjyudE5RzwGFgyNlvS4CFIMw4crCdMdkPfbnrbXp3ibq/KX9uKzQlfv+jV3rO8wv/Z4CUdcJqZhQ5mUzKK0SzhoJxJs/H/yTiMmiqpxPH8hXyuNZI5ZrsTiVPDAAsJihqh7Cc7hBERroy7S2M1wZt6HB6pyV7ZaWNM3HmPun7Qg7N+4fe2IC0Lf9MemHBOZVHjZGyCRdT150rwaQ03+8gFVU7SCaisu+W/SvNpuZlAXRTU8IKioswEo+tWuNSibR+n8OJT1Az2e34Y+OGXzY2dt9NnahU9Rc/QcxSil2gHfUS7aA/FqEDf0Q/0s/Wktd163/pQU5eXpppHaGG1dn8Dbt70Tw==</latexit><latexit sha1_base64="iI8c9NJvD32WDYDZZ7zd/is4h8E=">AAAFlnicjVRbb9MwFPbGCqPcNhASEi8WSyUeaJRUm+ABpgmEQIiHgdhFmqvKSU9Tr05s2c4uivJjeIVfxL/BTlpolzFmqeo5/i7n+DhyJDnTJgh+LS3fWGndvLV6u33n7r37D9bWH+5rkasY9mLBhTqMqAbOMtgzzHA4lApoGnE4iCbvHH5wAkozkX0z5xL6KU0yNmIxNXZrsPaYSDYoRmSQ0RRe8Pq/HKxtBH5QLdwMwmmwgaZrd7C+wshQxHkKmYk51fooDKTpF1QZFnMo2yTXIGk8oQkc2dBV0f2i6r/EHbszxCOh7C8zuNqdVxQ01fo8jSwzpWasL2Ju8w/WwV+BV6ejHNNsiCOaYMoTiBTFzkVwa5DBaSzS1OIFiZXQuiyIhc4Kjxhme/PKcpGkqp5nLMKpSsAjaiwazDyztf/axblsUFhm7J1AbBaZ9Arm1bRjweaMPtmsQbHfyJzN7ACaJSltcLmGlC16uuEq4HYQlGkIpSHjyudE5RzwGFgyNlvS4CFIMw4crCdMdkPfbnrbXp3ibq/KX9uKzQlfv+jV3rO8wv/Z4CUdcJqZhQ5mUzKK0SzhoJxJs/H/yTiMmiqpxPH8hXyuNZI5ZrsTiVPDAAsJihqh7Cc7hBERroy7S2M1wZt6HB6pyV7ZaWNM3HmPun7Qg7N+4fe2IC0Lf9MemHBOZVHjZGyCRdT150rwaQ03+8gFVU7SCaisu+W/SvNpuZlAXRTU8IKioswEo+tWuNSibR+n8OJT1Az2e34Y+OGXzY2dt9NnahU9Rc/QcxSil2gHfUS7aA/FqEDf0Q/0s/Wktd163/pQU5eXpppHaGG1dn8Dbt70Tw==</latexit><latexit sha1_base64="iI8c9NJvD32WDYDZZ7zd/is4h8E=">AAAFlnicjVRbb9MwFPbGCqPcNhASEi8WSyUeaJRUm+ABpgmEQIiHgdhFmqvKSU9Tr05s2c4uivJjeIVfxL/BTlpolzFmqeo5/i7n+DhyJDnTJgh+LS3fWGndvLV6u33n7r37D9bWH+5rkasY9mLBhTqMqAbOMtgzzHA4lApoGnE4iCbvHH5wAkozkX0z5xL6KU0yNmIxNXZrsPaYSDYoRmSQ0RRe8Pq/HKxtBH5QLdwMwmmwgaZrd7C+wshQxHkKmYk51fooDKTpF1QZFnMo2yTXIGk8oQkc2dBV0f2i6r/EHbszxCOh7C8zuNqdVxQ01fo8jSwzpWasL2Ju8w/WwV+BV6ejHNNsiCOaYMoTiBTFzkVwa5DBaSzS1OIFiZXQuiyIhc4Kjxhme/PKcpGkqp5nLMKpSsAjaiwazDyztf/axblsUFhm7J1AbBaZ9Arm1bRjweaMPtmsQbHfyJzN7ACaJSltcLmGlC16uuEq4HYQlGkIpSHjyudE5RzwGFgyNlvS4CFIMw4crCdMdkPfbnrbXp3ibq/KX9uKzQlfv+jV3rO8wv/Z4CUdcJqZhQ5mUzKK0SzhoJxJs/H/yTiMmiqpxPH8hXyuNZI5ZrsTiVPDAAsJihqh7Cc7hBERroy7S2M1wZt6HB6pyV7ZaWNM3HmPun7Qg7N+4fe2IC0Lf9MemHBOZVHjZGyCRdT150rwaQ03+8gFVU7SCaisu+W/SvNpuZlAXRTU8IKioswEo+tWuNSibR+n8OJT1Az2e34Y+OGXzY2dt9NnahU9Rc/QcxSil2gHfUS7aA/FqEDf0Q/0s/Wktd163/pQU5eXpppHaGG1dn8Dbt70Tw==</latexit><latexit sha1_base64="iI8c9NJvD32WDYDZZ7zd/is4h8E=">AAAFlnicjVRbb9MwFPbGCqPcNhASEi8WSyUeaJRUm+ABpgmEQIiHgdhFmqvKSU9Tr05s2c4uivJjeIVfxL/BTlpolzFmqeo5/i7n+DhyJDnTJgh+LS3fWGndvLV6u33n7r37D9bWH+5rkasY9mLBhTqMqAbOMtgzzHA4lApoGnE4iCbvHH5wAkozkX0z5xL6KU0yNmIxNXZrsPaYSDYoRmSQ0RRe8Pq/HKxtBH5QLdwMwmmwgaZrd7C+wshQxHkKmYk51fooDKTpF1QZFnMo2yTXIGk8oQkc2dBV0f2i6r/EHbszxCOh7C8zuNqdVxQ01fo8jSwzpWasL2Ju8w/WwV+BV6ejHNNsiCOaYMoTiBTFzkVwa5DBaSzS1OIFiZXQuiyIhc4Kjxhme/PKcpGkqp5nLMKpSsAjaiwazDyztf/axblsUFhm7J1AbBaZ9Arm1bRjweaMPtmsQbHfyJzN7ACaJSltcLmGlC16uuEq4HYQlGkIpSHjyudE5RzwGFgyNlvS4CFIMw4crCdMdkPfbnrbXp3ibq/KX9uKzQlfv+jV3rO8wv/Z4CUdcJqZhQ5mUzKK0SzhoJxJs/H/yTiMmiqpxPH8hXyuNZI5ZrsTiVPDAAsJihqh7Cc7hBERroy7S2M1wZt6HB6pyV7ZaWNM3HmPun7Qg7N+4fe2IC0Lf9MemHBOZVHjZGyCRdT150rwaQ03+8gFVU7SCaisu+W/SvNpuZlAXRTU8IKioswEo+tWuNSibR+n8OJT1Az2e34Y+OGXzY2dt9NnahU9Rc/QcxSil2gHfUS7aA/FqEDf0Q/0s/Wktd163/pQU5eXpppHaGG1dn8Dbt70Tw==</latexit>

What? How?

Page 3: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Topics

‣ Structured Query Language (SQL)• Data Definition Language (DDL)

- Create table

- Drop table

- Alter table

• Data Manipulation Language (DML)

�3

Page 4: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

SQLite Database Engine

‣ Why SQLite for this course?• It's open-source (free) and is a fully-featured RDBMS

- "Lite" doesn't mean light set of features, stands for lightweight

• The "most used database engine in the world"- https://www.sqlite.org/famous.html

- (But still not the "Finest database system in the common era")

• Cross-platform, lots of libraries support it

‣ After you install it, start SQLite by:• Typing sqlite3 into your terminal

• It starts the sqlite shell, which has its own set of non-SQL commands

�4

Page 5: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Insert Delete Select UpdateSchema Definition Keys Integrity

Constraints

Data Definition Language (DDL)

Data Manipulation Language (DML)

SQL at a Glance

�5

Structured Query Language (SQL)

Page 6: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Topics

‣ Structured Query Language (SQL)• Data Definition Language (DDL)

- Create table

- Drop table

- Alter table

• Data Manipulation Language (DML)

�6

Page 7: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Defining a Relation

‣ Defining a Relation:

‣ DDL syntax:• Not case sensitive

�7

R(a1, a2, . . . , an)

create table R ( a1 TYPE c1 c2 ..., a2 TYPE c1 c2 ..., ... aN TYPE c1 c2 ...,

t1, t2, ..., tK

);Grey = optional

Page 8: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Common Attribute Types in SQLite

‣ INTEGER

• Value is a signed integer• 1 to 8 bytes (automatic: depending on magnitude of the number that’s stored)

‣ REAL

• Value is a double-precision floating point number• 8 bytes each

‣ TEXT• Value is a string

• Stored as UTF8 (1-byte per char), UTF16 (2-bytes per char)

�8

Page 9: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Creating a Relation in SQLite

‣ Example Schema:

‣ SQLite3 syntax:• But what about the keys? Other integrity constraints?

�9

create table player ( pid INTEGER, name TEXT, salary INTEGER);

create table playFor ( team TEXT, pid INTEGER, date TEXT);

CavsHeatWizardsCavsHeatWizards

Team311146101031

pidplaysFor

nownownownow5/10 - 12/104/99 - 10/10

Date

HomerBartNedLisaMarge

Name6000050000250007000050000

Salary3167461110

pid

player

Page 10: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Creating a Relation in SQLite

‣ Open SQLite in one of two ways:• Command line: type sqlite3

• GUI: download SqliteBrowser

‣ Command line example:

�10

dchiu$ sqlite3sqlite3> create table player (... pid INTEGER,... name TEXT,... salary INTEGER...);sqlite3> create table playsFor (... team TEXT,... pid INTEGER,... date TEXT,...);sqlite3>

Page 11: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Attribute Types in Other DB Systems

‣ These exist in MySQL, PostgreSQL, Microsoft SQL Server, Oracle, ...• CHAR(len), VARCHAR(len)

- Otherwise known as Strings

- len > 0 is the maximum length of any string value

• DATE, TIME, TIMESTAMP- Used specifically for date/time data

• BLOB- Binary Large OBjects (binary strings)

- (This is supported in SQLite, we just don't use it)

�11

Page 12: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Attribute Constraints

‣ Common attribute constraints• You can "stack" these integrity constraints! (No commas)

• PRIMARY KEY• NOT NULL• UNIQUE

• CHECK(boolean_expr)

�12

create table player ( pid INTEGER PRIMARY KEY, name TEXT UNIQUE, salary INTEGER NOT NULL CHECK(salary < 100000));

For primary keys:There's a nice "auto increment" side-effect when inserting new tuples.(See next slide)

Page 13: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Example of SQLite Enforcing Constraints

�13

dchiu$ sqlite3SQLite version 3.8.5 2014-08-15 22:37:57Enter ".help" for usage hints.Connected to a transient in-memory database.Use ".open FILENAME" to reopen on a persistent database.sqlite> create table player ( ...> pid INTEGER PRIMARY KEY, ...> name TEXT UNIQUE, ...> salary INTEGER NOT NULL CHECK (salary < 100000) ...> );sqlite> INSERT INTO player VALUES (NULL, 'David', 25000); sqlite> INSERT INTO player VALUES (1, 'Andy', 10000);Error: PRIMARY KEY must be uniquesqlite> INSERT INTO player VALUES (NULL, 'David', 55000);Error: column name is not uniquesqlite> INSERT INTO player VALUES (NULL, 'Tom', 55000); sqlite> INSERT INTO player VALUES (NULL, 'Fred', 55000); sqlite> INSERT INTO player VALUES (NULL, 'Jim', 150000);Error: constraint failedsqlite> select * from player; 1|David|25000 2|Tom|55000 3|Fred|55000

Page 14: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Defining a Relation

‣ Defining a Relation:

‣ SQL Syntax:

�14

R(a1, a2, . . . , an)

create table R ( a1 TYPE c1 c2 ..., a2 TYPE c1 c2 ..., -- more attributes

t1 -- table constraint t2

);

-- is a line-comment

What are these?

Page 15: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

‣ First useful one:• If you have a multi-attribute primary key, you must declare it here.• PRIMARY KEY (a_1, ..., a_n)

- Doesn't auto-increment though!

‣ Example

Table Constraints

�15

create table playFor ( team TEXT, pid INTEGER, date TEXT

PRIMARY KEY(team,pid));

Page 16: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

‣ Another useful table constraint:• FOREIGN KEY (a_1, ..., a_n) REFERENCES srcTable(b_1, ..., b_n)

ACTIONS, which can be:

Table Constraints

�16

CASCADE is super useful!!

create table playsFor ( pid INTEGER, team TEXT, PRIMARY KEY (pid,team), FOREIGN KEY (pid) REFERENCES player(pid) ON UPDATE CASCADE ON DELETE CASCADE);

Page 17: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Example Declaring Relational Tables

‣ Finally:

�17

create table player ( pid INTEGER PRIMARY KEY, name TEXT NOT NULL, salary INTEGER CHECK (salary < 100000),);

create table playsFor ( pid INTEGER, team TEXT, PRIMARY KEY (pid,team), FOREIGN KEY (pid) REFERENCES player(pid) ON UPDATE CASCADE ON DELETE CASCADE);

pid

Name

Salalry

player

pid

Team

playsFor

Comma is necessary before table constraints!

Page 18: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Foreign Key (Cascading In Action)

‣ Example of a Cascading Update

�18

sqlite> PRAGMA foreign_keys = on;... -- omitted code to create and insert data into player and playsFor tablessqlite> select * from playsFor;1|Blazers2|Blazers

sqlite> select * from player;1|David|250002|Tom|550003|Fred|55000

sqlite> update player set pid=5 where pid=1;sqlite> select * from player;2|Tom|550003|Fred|550005|David|25000

sqlite> select * from playsFor;5|Blazers -- this was updated because it is a foreign key to player.pid!2|Blazerssqlite>

pid

Name

Salalry

player

pid

Team

playsFor

PRAGMA foreign_keys = on;

Page 19: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Importance of Foreign Key Constraints

‣ What if the foreign-key constraint wasn’t issued when we created the table?

�19

sqlite> select * from player;1|David|550002|Tom|650003|Fred|75000

sqlite> select * from playsFor;1|Blazers2|Blazers

sqlite> update player set pid=6 where pid=2;

sqlite> select * from player;1|David|550003|Fred|750006|Tom|65000

sqlite> select * from playsFor;1|Blazers2|Blazers -- Stale!! Tom changed numbers! (Many problems now...)

Page 20: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Other Useful DDL Commands

‣ Removing a table from the schema:

‣ Changing the an existing table’s properties: Look into alter table commands• For example, adding an attribute after-the-fact

�20

DROP TABLE R; -- removes all data and table from schema

ALTER TABLE R ADD new_attribute data_type [constraints] [FIRST | AFTER attribute_name];

Page 21: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Let's Do This Together

‣ Create this relational schema (with proper constraints) in SQLite:

‣ Some simple assumptions:• cost of vehicles >= 0

• ssn should match this pattern: nnn-nn-nnnn

• If a resident is removed, his/her entry in the Register relation should NULL'ed out.

• If a vehicle is removed, all entriesin the register relation should be removed.

�21

vinmakemodelyearcolordoorsdate_purchasedcost

vehiclesfnlnbdayssn

residents

ssnvin

register

Page 22: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

SQLite Demo

‣ Create these tables (Taken from HW1):• car(vin, model, make, price)

• options(vin, option_name, price)

• sales(salesperson_id, vin, date, price)

• salesperson(salesperson_id, name, email)

‣ Insert some data, and then quit. Schema and data disappear!• Need to save it to disk!

• How do you then re-open an existing SQLite database?

�22

Page 23: CS 455 Principles of Database Systemsmathcs.pugetsound.edu/~dchiu/CS455/notes/CS455_3a-sql_1.pdfCS 455: Principles of Database Systems - 3a - SQL Motivation ‣ Data abstraction: •

CS 455: Principles of Database Systems - 3a - SQL

Example

�23

makemodelcapacitymph

planef_namem_namel_name

passengers

onboard

ssn

ssn

tail_no

dep_locdep_timearr_locarr_timetail_no

flightflight_no

flight_no

seat

(A solution on course page: airport-schema.sql after today's class)