SQL for beginners
Changing a table with ALTER TABLE
Once a table already has data in it, you can't just recreate it from scratch to change its structure. The ALTER TABLE statement lets you modify an existing table in place. The most common use is adding a new column:
ALTER TABLE table_name
ADD COLUMN column_name;
table_name: The table to change.
ADD COLUMN column_name: Adds a new column to every row of the table. Existing rows get NULL for the new column, since there is no value for it yet.
Exercise
Write a command that adds a new column called email to the customers table, without changing any of the existing rows.
Tests
The customers table now has an email column.
The customers table still has the same number of rows as before.
Solution
ALTER TABLE customers
ADD COLUMN email;
Output will be displayed here
Exercise results will be displayed here
Run (Control + Enter)
Running...
[{"common":false,"files":[{"file_name":"query.sql","file_type":"sql","id":1109,"is_closable":false,"is_edit_focus":true,"is_editable":true,"is_hidden":false,"is_main":false,"is_test_file":false,"source":"query.sql"},{"file_name":"main.py","file_type":"python","id":1110,"is_closable":false,"is_edit_focus":false,"is_editable":false,"is_hidden":true,"is_main":true,"is_test_file":false,"source":"setup_data.py"},{"file_name":"tests.py","file_type":"python","id":1111,"is_closable":false,"is_edit_focus":false,"is_editable":false,"is_hidden":true,"is_main":false,"is_test_file":true,"source":"tests.py"}],"id":1,"name":"SQL"}]
aW1wb3J0IHNxbGl0ZTMKaW1wb3J0IG9zCmZyb20gZmFrZXIgaW1wb3J0IEZha2VyCmZyb20gcHJldHR5dGFibGUgaW1wb3J0IGZyb21fZGJfY3Vyc29yLCBNQVJLRE9XTgpmcm9tIGVudW0gaW1wb3J0IEVudW0KCgpkZWYgc2V0dXAoY29ubmVjdGlvbik6CiAgICBmYWtlID0gRmFrZXIoKQogICAgRmFrZXIuc2VlZCgwKQoKICAgIGN1ciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKCiAgICBjdXIuZXhlY3V0ZSgiQ1JFQVRFIFRBQkxFIGN1c3RvbWVycyhpZCwgZmlyc3RfbmFtZSwgbGFzdF9uYW1lLCBhZ2UsIGdlbmRlcikiKQoKICAgIGNsYXNzIEdlbmRlcihFbnVtKToKICAgICAgICBNID0gIk0iCiAgICAgICAgRiA9ICJGIgoKICAgIGZvciBpIGluIHJhbmdlKDEwKToKICAgICAgICBjdXIuZXhlY3V0ZSgKICAgICAgICAgICAgIklOU0VSVCBJTlRPIGN1c3RvbWVycyAoaWQsIGZpcnN0X25hbWUsIGxhc3RfbmFtZSwgYWdlLCBnZW5kZXIpIFZBTFVFUyAoPywgPywgPywgPywgPykiLAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICBpICsgMSwKICAgICAgICAgICAgICAgIGZha2UuZmlyc3RfbmFtZSgpLAogICAgICAgICAgICAgICAgZmFrZS5sYXN0X25hbWUoKSwKICAgICAgICAgICAgICAgIGZha2UucHlpbnQobWF4X3ZhbHVlPTgwKSArIDIwLAogICAgICAgICAgICAgICAgZmFrZS5lbnVtKEdlbmRlcikudmFsdWUpCiAgICAgICAgICAgICkKCiAgICBjdXIuZXhlY3V0ZSgiQ1JFQVRFIFRBQkxFIHByb2R1Y3RzKGlkLCBuYW1lLCBjYXRlZ29yeSwgcHJpY2UpIikKCiAgICBwcm9kdWN0cyA9IFsKICAgICAgICAoMSwgIldpcmVsZXNzIE1vdXNlIiwgIkVsZWN0cm9uaWNzIiwgMTkuOTkpLAogICAgICAgICgyLCAiQmx1ZXRvb3RoIFNwZWFrZXIiLCAiRWxlY3Ryb25pY3MiLCA0NS41MCksCiAgICAgICAgKDMsICJZb2dhIE1hdCIsICJGaXRuZXNzIiwgMjUuMDApLAogICAgICAgICg0LCAiUnVubmluZyBTaG9lcyIsICJGaXRuZXNzIiwgNjAuMDApLAogICAgICAgICg1LCAiQ29mZmVlIE11ZyIsICJIb21lIiwgOC41MCksCiAgICAgICAgKDYsICJEZXNrIExhbXAiLCAiSG9tZSIsIDIyLjAwKSwKICAgICAgICAoNywgIk5vdGVib29rIiwgIk9mZmljZSIsIDMuNTApLAogICAgICAgICg4LCAiQmFja3BhY2siLCAiT2ZmaWNlIiwgNDAuMDApLAogICAgXQoKICAgIGN1ci5leGVjdXRlbWFueSgiSU5TRVJUIElOVE8gcHJvZHVjdHMgKGlkLCBuYW1lLCBjYXRlZ29yeSwgcHJpY2UpIFZBTFVFUyAoPywgPywgPywgPykiLCBwcm9kdWN0cykKCiAgICBjdXIuZXhlY3V0ZSgiQ1JFQVRFIFRBQkxFIG9yZGVycyhpZCwgY3VzdG9tZXJfaWQsIG9yZGVyX2RhdGUsIHN0YXR1cywgc2hpcHBlZF9kYXRlKSIpCgogICAgY2xhc3MgU3RhdHVzKEVudW0pOgogICAgICAgIFBFTkRJTkcgPSAiUGVuZGluZyIKICAgICAgICBTSElQUEVEID0gIlNoaXBwZWQiCiAgICAgICAgREVMSVZFUkVEID0gIkRlbGl2ZXJlZCIKICAgICAgICBDQU5DRUxMRUQgPSAiQ2FuY2VsbGVkIgoKICAgIG9yZGVyX2NvdW50ID0gMjAKICAgIGZvciBpIGluIHJhbmdlKG9yZGVyX2NvdW50KToKICAgICAgICBzdGF0dXMgPSBmYWtlLmVudW0oU3RhdHVzKS52YWx1ZQogICAgICAgIG9yZGVyX2RhdGUgPSBmYWtlLmRhdGVfYmV0d2VlbihzdGFydF9kYXRlPSItMXkiLCBlbmRfZGF0ZT0idG9kYXkiKQogICAgICAgIHNoaXBwZWRfZGF0ZSA9IE5vbmUKICAgICAgICBpZiBzdGF0dXMgaW4gKCJTaGlwcGVkIiwgIkRlbGl2ZXJlZCIpOgogICAgICAgICAgICBzaGlwcGVkX2RhdGUgPSBmYWtlLmRhdGVfYmV0d2VlbihzdGFydF9kYXRlPW9yZGVyX2RhdGUsIGVuZF9kYXRlPSJ0b2RheSIpLmlzb2Zvcm1hdCgpCgogICAgICAgIGN1ci5leGVjdXRlKAogICAgICAgICAgICAiSU5TRVJUIElOVE8gb3JkZXJzIChpZCwgY3VzdG9tZXJfaWQsIG9yZGVyX2RhdGUsIHN0YXR1cywgc2hpcHBlZF9kYXRlKSBWQUxVRVMgKD8sID8sID8sID8sID8pIiwKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgaSArIDEsCiAgICAgICAgICAgICAgICBmYWtlLnB5aW50KG1pbl92YWx1ZT0xLCBtYXhfdmFsdWU9MTApLAogICAgICAgICAgICAgICAgb3JkZXJfZGF0ZS5pc29mb3JtYXQoKSwKICAgICAgICAgICAgICAgIHN0YXR1cywKICAgICAgICAgICAgICAgIHNoaXBwZWRfZGF0ZSkKICAgICAgICAgICAgKQoKICAgIGN1ci5leGVjdXRlKCJDUkVBVEUgVEFCTEUgb3JkZXJfaXRlbXMoaWQsIG9yZGVyX2lkLCBwcm9kdWN0X2lkLCBxdWFudGl0eSwgdW5pdF9wcmljZSkiKQoKICAgIGl0ZW1faWQgPSAxCiAgICBmb3Igb3JkZXJfaWQgaW4gcmFuZ2UoMSwgb3JkZXJfY291bnQgKyAxKToKICAgICAgICBpdGVtX2NvdW50ID0gZmFrZS5weWludChtaW5fdmFsdWU9MSwgbWF4X3ZhbHVlPTMpCiAgICAgICAgZm9yIF8gaW4gcmFuZ2UoaXRlbV9jb3VudCk6CiAgICAgICAgICAgIHByb2R1Y3RfaWQgPSBmYWtlLnB5aW50KG1pbl92YWx1ZT0xLCBtYXhfdmFsdWU9bGVuKHByb2R1Y3RzKSkKICAgICAgICAgICAgdW5pdF9wcmljZSA9IHByb2R1Y3RzW3Byb2R1Y3RfaWQgLSAxXVszXQogICAgICAgICAgICBjdXIuZXhlY3V0ZSgKICAgICAgICAgICAgICAgICJJTlNFUlQgSU5UTyBvcmRlcl9pdGVtcyAoaWQsIG9yZGVyX2lkLCBwcm9kdWN0X2lkLCBxdWFudGl0eSwgdW5pdF9wcmljZSkgVkFMVUVTICg/LCA/LCA/LCA/LCA/KSIsCiAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgaXRlbV9pZCwKICAgICAgICAgICAgICAgICAgICBvcmRlcl9pZCwKICAgICAgICAgICAgICAgICAgICBwcm9kdWN0X2lkLAogICAgICAgICAgICAgICAgICAgIGZha2UucHlpbnQobWluX3ZhbHVlPTEsIG1heF92YWx1ZT01KSwKICAgICAgICAgICAgICAgICAgICB1bml0X3ByaWNlKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBpdGVtX2lkICs9IDEKCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgoKICAgIGNvbiA9IHNxbGl0ZTMuY29ubmVjdCgidHV0b3JpYWwuZGIiKQogICAgY3VyID0gY29uLmN1cnNvcigpCiAgICBzZXR1cChjb25uZWN0aW9uPWNvbikKICAgIHF1ZXJ5ID0gb3BlbigncXVlcnkuc3FsJywgJ3InKS5yZWFkKCkKICAgIHRyeToKICAgICAgICByZXMgPSBjdXIuZXhlY3V0ZShxdWVyeSkKICAgICAgICB0YWJsZSA9IGZyb21fZGJfY3Vyc29yKGN1cikKICAgICAgICBwcmludCh0YWJsZSkKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBwcmludCgiRXJyb3I6Iiwgc3RyKGUpKQo=
aW1wb3J0IHNxbGl0ZTMKaW1wb3J0IG1haW4KaW1wb3J0IHN5cwppbXBvcnQganNvbgoKY29uID0gc3FsaXRlMy5jb25uZWN0KCJ0dXRvcmlhbC5kYiIpCm1haW4uc2V0dXAoY29ubmVjdGlvbj1jb24pCmN1ciA9IGNvbi5jdXJzb3IoKQoKdHJ5OgogICAgb3JpZ2luYWxfY291bnQgPSBjdXIuZXhlY3V0ZSgiU0VMRUNUIENPVU5UKCopIEZST00gY3VzdG9tZXJzIikuZmV0Y2hvbmUoKVswXQoKICAgIHF1ZXJ5ID0gb3BlbigncXVlcnkuc3FsJywgJ3InKS5yZWFkKCkKICAgIGN1ci5leGVjdXRlKHF1ZXJ5KQoKICAgIGNvbHVtbnMgPSBbcm93WzFdLmxvd2VyKCkgZm9yIHJvdyBpbiBjdXIuZXhlY3V0ZSgiUFJBR01BIHRhYmxlX2luZm8oY3VzdG9tZXJzKSIpLmZldGNoYWxsKCldCiAgICBuZXdfY291bnQgPSBjdXIuZXhlY3V0ZSgiU0VMRUNUIENPVU5UKCopIEZST00gY3VzdG9tZXJzIikuZmV0Y2hvbmUoKVswXQoKICAgIHJlc3VsdHMgPSB7fQogICAgcmVzdWx0c1sxXSA9ICJlbWFpbCIgaW4gY29sdW1ucwogICAgcmVzdWx0c1syXSA9IG5ld19jb3VudCA9PSBvcmlnaW5hbF9jb3VudAoKICAgIHN5cy5zdGRvdXQud3JpdGUoanNvbi5kdW1wcyhyZXN1bHRzKSkKZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgc3lzLnN0ZG91dC53cml0ZShqc29uLmR1bXBzKHt9KSkK