{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Creating Table\n", "\n", "Before getting into action with respect to basic DML and queries or CRUD operations, we need to prepare tables." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/html": [ "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%HTML\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At this time we have not covered DDL yet. All database operations related to managing tables come under DDL.\n", "\n", "For now, let's just create the table by copy pasting below `CREATE TABLE` statement. We will get into concepts as part of the subsequent sections.\n", "\n", "* Connect to the database.\n", "* Create the table." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "%load_ext sql" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "env: DATABASE_URL=postgresql://itversity_sms_user:sms_password@localhost:5432/itversity_sms_db\n" ] } ], "source": [ "%env DATABASE_URL=postgresql://itversity_sms_user:sms_password@localhost:5432/itversity_sms_db" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2 rows affected.\n" ] }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
table_catalogtable_schematable_nametable_typeself_referencing_column_namereference_generationuser_defined_type_cataloguser_defined_type_schemauser_defined_type_nameis_insertable_intois_typedcommit_action
itversity_sms_dbpubliccoursesBASE TABLENoneNoneNoneNoneNoneYESNONone
itversity_sms_dbpublicusersBASE TABLENoneNoneNoneNoneNoneYESNONone
" ], "text/plain": [ "[('itversity_sms_db', 'public', 'courses', 'BASE TABLE', None, None, None, None, None, 'YES', 'NO', None),\n", " ('itversity_sms_db', 'public', 'users', 'BASE TABLE', None, None, None, None, None, 'YES', 'NO', None)]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%sql \n", "\n", "SELECT * FROM information_schema.tables \n", "WHERE table_catalog = 'itversity_sms_db' AND table_schema = 'public'\n", "LIMIT 10" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " * postgresql://itversity_sms_user:***@localhost:5432/itversity_sms_db\n", "Done.\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%sql\n", "\n", "DROP TABLE IF EXISTS users;" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " * postgresql://itversity_sms_user:***@localhost:5432/itversity_sms_db\n", "1 rows affected.\n" ] }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
table_catalogtable_schematable_nametable_typeself_referencing_column_namereference_generationuser_defined_type_cataloguser_defined_type_schemauser_defined_type_nameis_insertable_intois_typedcommit_action
itversity_sms_dbpubliccoursesBASE TABLENoneNoneNoneNoneNoneYESNONone
" ], "text/plain": [ "[('itversity_sms_db', 'public', 'courses', 'BASE TABLE', None, None, None, None, None, 'YES', 'NO', None)]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%sql \n", "\n", "SELECT * FROM information_schema.tables \n", "WHERE table_catalog = 'itversity_sms_db' AND table_schema = 'public'\n", "LIMIT 10" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " * postgresql://itversity_sms_user:***@localhost:5432/itversity_sms_db\n", "Done.\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%sql\n", "\n", "CREATE TABLE users (\n", " user_id SERIAL PRIMARY KEY,\n", " user_first_name VARCHAR(30) NOT NULL,\n", " user_last_name VARCHAR(30) NOT NULL,\n", " user_email_id VARCHAR(50) NOT NULL,\n", " user_email_validated BOOLEAN DEFAULT FALSE,\n", " user_password VARCHAR(200),\n", " user_role VARCHAR(1) NOT NULL DEFAULT 'U', --U and A\n", " is_active BOOLEAN DEFAULT FALSE,\n", " create_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n", " last_updated_ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Let us validate the objects that are created in the underlying database. We can either run query against **information_schema** or use Database Explorer in **SQL Workbench** or even `psql`." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " * postgresql://itversity_sms_user:***@localhost:5432/itversity_sms_db\n", "1 rows affected.\n" ] }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
table_catalogtable_schematable_nametable_typeself_referencing_column_namereference_generationuser_defined_type_cataloguser_defined_type_schemauser_defined_type_nameis_insertable_intois_typedcommit_action
itversity_sms_dbpublicusersBASE TABLENoneNoneNoneNoneNoneYESNONone
" ], "text/plain": [ "[('itversity_sms_db', 'public', 'users', 'BASE TABLE', None, None, None, None, None, 'YES', 'NO', None)]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%sql \n", "\n", "SELECT * FROM information_schema.tables \n", "WHERE table_catalog = 'itversity_sms_db' AND table_schema = 'public'\n", "LIMIT 10" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " * postgresql://itversity_sms_user:***@localhost:5432/itversity_sms_db\n", "10 rows affected.\n" ] }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
table_catalogtable_schematable_namecolumn_nameordinal_positioncolumn_defaultis_nullabledata_typecharacter_maximum_lengthcharacter_octet_lengthnumeric_precisionnumeric_precision_radixnumeric_scaledatetime_precisioninterval_typeinterval_precisioncharacter_set_catalogcharacter_set_schemacharacter_set_namecollation_catalogcollation_schemacollation_namedomain_catalogdomain_schemadomain_nameudt_catalogudt_schemaudt_namescope_catalogscope_schemascope_namemaximum_cardinalitydtd_identifieris_self_referencingis_identityidentity_generationidentity_startidentity_incrementidentity_maximumidentity_minimumidentity_cycleis_generatedgeneration_expressionis_updatable
itversity_sms_dbpublicusersuser_id1nextval('users_user_id_seq'::regclass)NOintegerNoneNone3220NoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneitversity_sms_dbpg_catalogint4NoneNoneNoneNone1NONONoneNoneNoneNoneNoneNONEVERNoneYES
itversity_sms_dbpublicusersuser_first_name2NoneNOcharacter varying30120NoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneitversity_sms_dbpg_catalogvarcharNoneNoneNoneNone2NONONoneNoneNoneNoneNoneNONEVERNoneYES
itversity_sms_dbpublicusersuser_last_name3NoneNOcharacter varying30120NoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneitversity_sms_dbpg_catalogvarcharNoneNoneNoneNone3NONONoneNoneNoneNoneNoneNONEVERNoneYES
itversity_sms_dbpublicusersuser_email_id4NoneNOcharacter varying50200NoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneitversity_sms_dbpg_catalogvarcharNoneNoneNoneNone4NONONoneNoneNoneNoneNoneNONEVERNoneYES
itversity_sms_dbpublicusersuser_email_validated5falseYESbooleanNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneitversity_sms_dbpg_catalogboolNoneNoneNoneNone5NONONoneNoneNoneNoneNoneNONEVERNoneYES
itversity_sms_dbpublicusersuser_password6NoneYEScharacter varying200800NoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneitversity_sms_dbpg_catalogvarcharNoneNoneNoneNone6NONONoneNoneNoneNoneNoneNONEVERNoneYES
itversity_sms_dbpublicusersuser_role7'U'::character varyingNOcharacter varying14NoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneitversity_sms_dbpg_catalogvarcharNoneNoneNoneNone7NONONoneNoneNoneNoneNoneNONEVERNoneYES
itversity_sms_dbpublicusersis_active8falseYESbooleanNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneitversity_sms_dbpg_catalogboolNoneNoneNoneNone8NONONoneNoneNoneNoneNoneNONEVERNoneYES
itversity_sms_dbpublicuserscreate_ts9CURRENT_TIMESTAMPYEStimestamp without time zoneNoneNoneNoneNoneNone6NoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneitversity_sms_dbpg_catalogtimestampNoneNoneNoneNone9NONONoneNoneNoneNoneNoneNONEVERNoneYES
itversity_sms_dbpublicuserslast_updated_ts10CURRENT_TIMESTAMPYEStimestamp without time zoneNoneNoneNoneNoneNone6NoneNoneNoneNoneNoneNoneNoneNoneNoneNoneNoneitversity_sms_dbpg_catalogtimestampNoneNoneNoneNone10NONONoneNoneNoneNoneNoneNONEVERNoneYES
" ], "text/plain": [ "[('itversity_sms_db', 'public', 'users', 'user_id', 1, \"nextval('users_user_id_seq'::regclass)\", 'NO', 'integer', None, None, 32, 2, 0, None, None, None, None, None, None, None, None, None, None, None, None, 'itversity_sms_db', 'pg_catalog', 'int4', None, None, None, None, '1', 'NO', 'NO', None, None, None, None, None, 'NO', 'NEVER', None, 'YES'),\n", " ('itversity_sms_db', 'public', 'users', 'user_first_name', 2, None, 'NO', 'character varying', 30, 120, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 'itversity_sms_db', 'pg_catalog', 'varchar', None, None, None, None, '2', 'NO', 'NO', None, None, None, None, None, 'NO', 'NEVER', None, 'YES'),\n", " ('itversity_sms_db', 'public', 'users', 'user_last_name', 3, None, 'NO', 'character varying', 30, 120, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 'itversity_sms_db', 'pg_catalog', 'varchar', None, None, None, None, '3', 'NO', 'NO', None, None, None, None, None, 'NO', 'NEVER', None, 'YES'),\n", " ('itversity_sms_db', 'public', 'users', 'user_email_id', 4, None, 'NO', 'character varying', 50, 200, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 'itversity_sms_db', 'pg_catalog', 'varchar', None, None, None, None, '4', 'NO', 'NO', None, None, None, None, None, 'NO', 'NEVER', None, 'YES'),\n", " ('itversity_sms_db', 'public', 'users', 'user_email_validated', 5, 'false', 'YES', 'boolean', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 'itversity_sms_db', 'pg_catalog', 'bool', None, None, None, None, '5', 'NO', 'NO', None, None, None, None, None, 'NO', 'NEVER', None, 'YES'),\n", " ('itversity_sms_db', 'public', 'users', 'user_password', 6, None, 'YES', 'character varying', 200, 800, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 'itversity_sms_db', 'pg_catalog', 'varchar', None, None, None, None, '6', 'NO', 'NO', None, None, None, None, None, 'NO', 'NEVER', None, 'YES'),\n", " ('itversity_sms_db', 'public', 'users', 'user_role', 7, \"'U'::character varying\", 'NO', 'character varying', 1, 4, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 'itversity_sms_db', 'pg_catalog', 'varchar', None, None, None, None, '7', 'NO', 'NO', None, None, None, None, None, 'NO', 'NEVER', None, 'YES'),\n", " ('itversity_sms_db', 'public', 'users', 'is_active', 8, 'false', 'YES', 'boolean', None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 'itversity_sms_db', 'pg_catalog', 'bool', None, None, None, None, '8', 'NO', 'NO', None, None, None, None, None, 'NO', 'NEVER', None, 'YES'),\n", " ('itversity_sms_db', 'public', 'users', 'create_ts', 9, 'CURRENT_TIMESTAMP', 'YES', 'timestamp without time zone', None, None, None, None, None, 6, None, None, None, None, None, None, None, None, None, None, None, 'itversity_sms_db', 'pg_catalog', 'timestamp', None, None, None, None, '9', 'NO', 'NO', None, None, None, None, None, 'NO', 'NEVER', None, 'YES'),\n", " ('itversity_sms_db', 'public', 'users', 'last_updated_ts', 10, 'CURRENT_TIMESTAMP', 'YES', 'timestamp without time zone', None, None, None, None, None, 6, None, None, None, None, None, None, None, None, None, None, None, 'itversity_sms_db', 'pg_catalog', 'timestamp', None, None, None, None, '10', 'NO', 'NO', None, None, None, None, None, 'NO', 'NEVER', None, 'YES')]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%sql \n", "\n", "SELECT * FROM information_schema.columns \n", "WHERE table_name = 'users'\n", "LIMIT 10" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " * postgresql://itversity_sms_user:***@localhost:5432/itversity_sms_db\n", "0 rows affected.\n" ] }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
user_iduser_first_nameuser_last_nameuser_email_iduser_email_validateduser_passworduser_roleis_activecreate_tslast_updated_ts
" ], "text/plain": [ "[]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%sql SELECT * FROM users" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.12" } }, "nbformat": 4, "nbformat_minor": 4 }