Department of Mathematics and Computer Science Lecture 3a Structured Query Language (SQL) CS 455 Principles of Database Systems
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)