View
19
Download
0
Category
Preview:
Citation preview
Department of Mathematicsand Computer Science
Lecture 3aStructured Query Language(SQL)
CS 455Principles of Database Systems
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?
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
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
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)
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
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
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
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
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>
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
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)
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
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?
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));
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);
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!
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;
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...)
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];
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
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
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)
Recommended