├── .gitattributes ├── .gitignore ├── .ipynb_checkpoints ├── Introduction to SQL with Python-checkpoint.ipynb └── SQL - SELECT-checkpoint.ipynb ├── Introduction to SQL with Python.ipynb ├── SQL SELECT,DISTINCT,WHERE,AND & OR.ipynb └── SQL WILDCARDS, ORDER BY, GROUP BY and Aggregate Functions.ipynb /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # ========================= 21 | # Operating System Files 22 | # ========================= 23 | 24 | # OSX 25 | # ========================= 26 | 27 | .DS_Store 28 | .AppleDouble 29 | .LSOverride 30 | 31 | # Thumbnails 32 | ._* 33 | 34 | # Files that might appear on external disk 35 | .Spotlight-V100 36 | .Trashes 37 | 38 | # Directories potentially created on remote AFP share 39 | .AppleDB 40 | .AppleDesktop 41 | Network Trash Folder 42 | Temporary Items 43 | .apdisk 44 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/Introduction to SQL with Python-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "### In this notebook we'll go over a brief introduction to the structure of the Sakila Database and setting up SQL in your Python Environment.\n", 8 | "\n", 9 | "####*DISCLAIMER:*\n", 10 | "------\n", 11 | "There are many ways to browse through a SQL database, throughout this Appendix we are only going to be focusing on learning about SQL queries using a combination of SQLite,Python,pandas, and SQLAlchemy. Please note that this is a pretty specific way of operating with a SQL Database, and may or may not fit other general needs. The primary goal of this section is to teach you how to use SQL queries to grab information and set it as a pandas DataFrame. We will not be going over more general topics of relational databases, MySQL, or using a SQL console directly.\n", 12 | "\n", 13 | "\n", 14 | "To fully understand the content of this Appendix, I suggest you complete the course up to at least Lecture 28, although I really recommend completing up to Lecture 46 to get the most out of this Appendix!\n", 15 | "\n", 16 | "##### Great, let's begin!\n", 17 | "\n", 18 | "---\n", 19 | "\n", 20 | "\n", 21 | "\n", 22 | "#### Step 1: Download SQL Alchemy\n", 23 | "\n", 24 | "To start this appendix, download SQLAlchemy. You can do this by either downloading it [here](http://www.sqlalchemy.org/download.html)\n", 25 | "\n", 26 | "*Or* - by typing pip install sqlalchemy in your command line.\n", 27 | "\n", 28 | "*Or* - by typing conda install sqlalchemy if you are using the Anaconda installation of Python. *(recommended)*\n", 29 | "\n", 30 | "#### Step 2: Download SQLite Broswer\n", 31 | "\n", 32 | "Next up we will download a sql browser. We will be using SQLite Browser because it is lightweight and free to use. There are many alternatives you can use, check out a list of 10 free ones [here](http://www.gfi.com/blog/top-10-free-database-tools-for-sys-admins/)\n", 33 | "\n", 34 | "Download SQLite Browser here: http://sqlitebrowser.org/\n", 35 | "\n", 36 | "#### Step 3: Download the sakila Database\n", 37 | "\n", 38 | "You can download the fully constructed database [here](https://www.dropbox.com/s/t049qmjzycrakro/sakila.db?dl=0)\n", 39 | "\n", 40 | "*Or* - you can download the .sql file to construct the database yourself: http://dev.mysql.com/doc/index-other.html\n", 41 | "Then use SQLite Browser to construct the database by running the .sql\n", 42 | "\n", 43 | "Either way, make sure to save it in the same directory as your iPython notebooks, or remember the file path for later so we can tell pandas exactly where to look for it.\n", 44 | "\n", 45 | "#### All done! Now let's look at the database before diving into how to work with it in Python.\n", 46 | "\n", 47 | "Check out the database either by opening it up using SQLite Browser or by checking out the diagram at this link: [Diagram](http://www.dbquanti.eu/css/images/database.png)\n", 48 | "\n", 49 | "I've posted it below as well inside this notebook, but fair warning, the picture is huge!" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 11, 55 | "metadata": { 56 | "collapsed": false 57 | }, 58 | "outputs": [ 59 | { 60 | "data": { 61 | "text/html": [ 62 | "" 63 | ], 64 | "text/plain": [ 65 | "" 66 | ] 67 | }, 68 | "execution_count": 11, 69 | "metadata": {}, 70 | "output_type": "execute_result" 71 | } 72 | ], 73 | "source": [ 74 | "# Note: The picture is really big, I suggest you check out the link directly!\n", 75 | "\n", 76 | "from IPython.display import Image\n", 77 | "Image(url='http://www.dbquanti.eu/css/images/database.png')" 78 | ] 79 | }, 80 | { 81 | "cell_type": "markdown", 82 | "metadata": {}, 83 | "source": [ 84 | "Now that we have seen an overview of what the database looks like, let's go ahead and learn how to communicate with it with Python and pandas." 85 | ] 86 | }, 87 | { 88 | "cell_type": "markdown", 89 | "metadata": {}, 90 | "source": [ 91 | "Python comes with SQLite3, which provides a lightweight disk-based database that doesn't require a seperate server process. It's useful to prototyp with SQLite and then port the code to a larger database system, like MySQL. Python comes with a pretty awesome module to connect to a SQL database with SQLite. The module is SQLite3, let's go ahead and import it (and pandas as well)." 92 | ] 93 | }, 94 | { 95 | "cell_type": "code", 96 | "execution_count": 13, 97 | "metadata": { 98 | "collapsed": true 99 | }, 100 | "outputs": [], 101 | "source": [ 102 | "# imports!\n", 103 | "import sqlite3\n", 104 | "import pandas as pd" 105 | ] 106 | }, 107 | { 108 | "cell_type": "markdown", 109 | "metadata": {}, 110 | "source": [ 111 | "To use the module, you must first create a Connection object that represents the database. If the database name already exists SQLite3 will automatically connect to it, if it does not exsist, SQLite3 will automatically create.\n", 112 | "\n", 113 | "For experienced users: You can also supply the special name :memory: to create a database in RAM.\n", 114 | "\n", 115 | "Let's make the connection!" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 15, 121 | "metadata": { 122 | "collapsed": true 123 | }, 124 | "outputs": [], 125 | "source": [ 126 | "# Connect to the database (again, downloaded from here: https://www.dropbox.com/s/t049qmjzycrakro/sakila.db?dl=0\n", 127 | "con = sqlite3.connect(\"sakila.db\")" 128 | ] 129 | }, 130 | { 131 | "cell_type": "markdown", 132 | "metadata": {}, 133 | "source": [ 134 | "Now we can run a basic SQL query, pass it with pandas, and display the output as a DataFrame! Don't worry if you don't understand the query completely yet, this is just a usage example for connecting to the database, other lectures will dive deeper into SQL queries." 135 | ] 136 | }, 137 | { 138 | "cell_type": "code", 139 | "execution_count": 16, 140 | "metadata": { 141 | "collapsed": false 142 | }, 143 | "outputs": [ 144 | { 145 | "data": { 146 | "text/html": [ 147 | "
\n", 148 | "\n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
0 1 1 MARY SMITH MARY.SMITH@sakilacustomer.org 5 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
1 2 1 PATRICIA JOHNSON PATRICIA.JOHNSON@sakilacustomer.org 6 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
2 3 1 LINDA WILLIAMS LINDA.WILLIAMS@sakilacustomer.org 7 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
3 4 2 BARBARA JONES BARBARA.JONES@sakilacustomer.org 8 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
4 5 1 ELIZABETH BROWN ELIZABETH.BROWN@sakilacustomer.org 9 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
5 6 2 JENNIFER DAVIS JENNIFER.DAVIS@sakilacustomer.org 10 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
6 7 1 MARIA MILLER MARIA.MILLER@sakilacustomer.org 11 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
7 8 2 SUSAN WILSON SUSAN.WILSON@sakilacustomer.org 12 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
8 9 2 MARGARET MOORE MARGARET.MOORE@sakilacustomer.org 13 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
9 10 1 DOROTHY TAYLOR DOROTHY.TAYLOR@sakilacustomer.org 14 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
10 11 2 LISA ANDERSON LISA.ANDERSON@sakilacustomer.org 15 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
11 12 1 NANCY THOMAS NANCY.THOMAS@sakilacustomer.org 16 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
12 13 2 KAREN JACKSON KAREN.JACKSON@sakilacustomer.org 17 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
13 14 2 BETTY WHITE BETTY.WHITE@sakilacustomer.org 18 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
14 15 1 HELEN HARRIS HELEN.HARRIS@sakilacustomer.org 19 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
15 16 2 SANDRA MARTIN SANDRA.MARTIN@sakilacustomer.org 20 0 2006-02-14 22:04:36.000 2011-09-14 18:10:28
16 17 1 DONNA THOMPSON DONNA.THOMPSON@sakilacustomer.org 21 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
17 18 2 CAROL GARCIA CAROL.GARCIA@sakilacustomer.org 22 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
18 19 1 RUTH MARTINEZ RUTH.MARTINEZ@sakilacustomer.org 23 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
19 20 2 SHARON ROBINSON SHARON.ROBINSON@sakilacustomer.org 24 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
20 21 1 MICHELLE CLARK MICHELLE.CLARK@sakilacustomer.org 25 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
21 22 1 LAURA RODRIGUEZ LAURA.RODRIGUEZ@sakilacustomer.org 26 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
22 23 2 SARAH LEWIS SARAH.LEWIS@sakilacustomer.org 27 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
23 24 2 KIMBERLY LEE KIMBERLY.LEE@sakilacustomer.org 28 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
24 25 1 DEBORAH WALKER DEBORAH.WALKER@sakilacustomer.org 29 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
25 26 2 JESSICA HALL JESSICA.HALL@sakilacustomer.org 30 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
26 27 2 SHIRLEY ALLEN SHIRLEY.ALLEN@sakilacustomer.org 31 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
27 28 1 CYNTHIA YOUNG CYNTHIA.YOUNG@sakilacustomer.org 32 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
28 29 2 ANGELA HERNANDEZ ANGELA.HERNANDEZ@sakilacustomer.org 33 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
29 30 1 MELISSA KING MELISSA.KING@sakilacustomer.org 34 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
..............................
569 570 2 IVAN CROMWELL IVAN.CROMWELL@sakilacustomer.org 576 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
570 571 2 JOHNNIE CHISHOLM JOHNNIE.CHISHOLM@sakilacustomer.org 577 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
571 572 1 SIDNEY BURLESON SIDNEY.BURLESON@sakilacustomer.org 578 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
572 573 1 BYRON BOX BYRON.BOX@sakilacustomer.org 579 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
573 574 2 JULIAN VEST JULIAN.VEST@sakilacustomer.org 580 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
574 575 2 ISAAC OGLESBY ISAAC.OGLESBY@sakilacustomer.org 581 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
575 576 2 MORRIS MCCARTER MORRIS.MCCARTER@sakilacustomer.org 582 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
576 577 2 CLIFTON MALCOLM CLIFTON.MALCOLM@sakilacustomer.org 583 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
577 578 2 WILLARD LUMPKIN WILLARD.LUMPKIN@sakilacustomer.org 584 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
578 579 2 DARYL LARUE DARYL.LARUE@sakilacustomer.org 585 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
579 580 1 ROSS GREY ROSS.GREY@sakilacustomer.org 586 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
580 581 1 VIRGIL WOFFORD VIRGIL.WOFFORD@sakilacustomer.org 587 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
581 582 2 ANDY VANHORN ANDY.VANHORN@sakilacustomer.org 588 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
582 583 1 MARSHALL THORN MARSHALL.THORN@sakilacustomer.org 589 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
583 584 2 SALVADOR TEEL SALVADOR.TEEL@sakilacustomer.org 590 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
584 585 1 PERRY SWAFFORD PERRY.SWAFFORD@sakilacustomer.org 591 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
585 586 1 KIRK STCLAIR KIRK.STCLAIR@sakilacustomer.org 592 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
586 587 1 SERGIO STANFIELD SERGIO.STANFIELD@sakilacustomer.org 593 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
587 588 1 MARION OCAMPO MARION.OCAMPO@sakilacustomer.org 594 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
588 589 1 TRACY HERRMANN TRACY.HERRMANN@sakilacustomer.org 595 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
589 590 2 SETH HANNON SETH.HANNON@sakilacustomer.org 596 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
590 591 1 KENT ARSENAULT KENT.ARSENAULT@sakilacustomer.org 597 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
591 592 1 TERRANCE ROUSH TERRANCE.ROUSH@sakilacustomer.org 598 0 2006-02-14 22:04:37.000 2011-09-14 18:10:44
592 593 2 RENE MCALISTER RENE.MCALISTER@sakilacustomer.org 599 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
593 594 1 EDUARDO HIATT EDUARDO.HIATT@sakilacustomer.org 600 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
594 595 1 TERRENCE GUNDERSON TERRENCE.GUNDERSON@sakilacustomer.org 601 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
595 596 1 ENRIQUE FORSYTHE ENRIQUE.FORSYTHE@sakilacustomer.org 602 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
596 597 1 FREDDIE DUGGAN FREDDIE.DUGGAN@sakilacustomer.org 603 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
597 598 1 WADE DELVALLE WADE.DELVALLE@sakilacustomer.org 604 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
598 599 2 AUSTIN CINTRON AUSTIN.CINTRON@sakilacustomer.org 605 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
\n", 898 | "

599 rows × 9 columns

\n", 899 | "
" 900 | ], 901 | "text/plain": [ 902 | " customer_id store_id first_name last_name \\\n", 903 | "0 1 1 MARY SMITH \n", 904 | "1 2 1 PATRICIA JOHNSON \n", 905 | "2 3 1 LINDA WILLIAMS \n", 906 | "3 4 2 BARBARA JONES \n", 907 | "4 5 1 ELIZABETH BROWN \n", 908 | "5 6 2 JENNIFER DAVIS \n", 909 | "6 7 1 MARIA MILLER \n", 910 | "7 8 2 SUSAN WILSON \n", 911 | "8 9 2 MARGARET MOORE \n", 912 | "9 10 1 DOROTHY TAYLOR \n", 913 | "10 11 2 LISA ANDERSON \n", 914 | "11 12 1 NANCY THOMAS \n", 915 | "12 13 2 KAREN JACKSON \n", 916 | "13 14 2 BETTY WHITE \n", 917 | "14 15 1 HELEN HARRIS \n", 918 | "15 16 2 SANDRA MARTIN \n", 919 | "16 17 1 DONNA THOMPSON \n", 920 | "17 18 2 CAROL GARCIA \n", 921 | "18 19 1 RUTH MARTINEZ \n", 922 | "19 20 2 SHARON ROBINSON \n", 923 | "20 21 1 MICHELLE CLARK \n", 924 | "21 22 1 LAURA RODRIGUEZ \n", 925 | "22 23 2 SARAH LEWIS \n", 926 | "23 24 2 KIMBERLY LEE \n", 927 | "24 25 1 DEBORAH WALKER \n", 928 | "25 26 2 JESSICA HALL \n", 929 | "26 27 2 SHIRLEY ALLEN \n", 930 | "27 28 1 CYNTHIA YOUNG \n", 931 | "28 29 2 ANGELA HERNANDEZ \n", 932 | "29 30 1 MELISSA KING \n", 933 | ".. ... ... ... ... \n", 934 | "569 570 2 IVAN CROMWELL \n", 935 | "570 571 2 JOHNNIE CHISHOLM \n", 936 | "571 572 1 SIDNEY BURLESON \n", 937 | "572 573 1 BYRON BOX \n", 938 | "573 574 2 JULIAN VEST \n", 939 | "574 575 2 ISAAC OGLESBY \n", 940 | "575 576 2 MORRIS MCCARTER \n", 941 | "576 577 2 CLIFTON MALCOLM \n", 942 | "577 578 2 WILLARD LUMPKIN \n", 943 | "578 579 2 DARYL LARUE \n", 944 | "579 580 1 ROSS GREY \n", 945 | "580 581 1 VIRGIL WOFFORD \n", 946 | "581 582 2 ANDY VANHORN \n", 947 | "582 583 1 MARSHALL THORN \n", 948 | "583 584 2 SALVADOR TEEL \n", 949 | "584 585 1 PERRY SWAFFORD \n", 950 | "585 586 1 KIRK STCLAIR \n", 951 | "586 587 1 SERGIO STANFIELD \n", 952 | "587 588 1 MARION OCAMPO \n", 953 | "588 589 1 TRACY HERRMANN \n", 954 | "589 590 2 SETH HANNON \n", 955 | "590 591 1 KENT ARSENAULT \n", 956 | "591 592 1 TERRANCE ROUSH \n", 957 | "592 593 2 RENE MCALISTER \n", 958 | "593 594 1 EDUARDO HIATT \n", 959 | "594 595 1 TERRENCE GUNDERSON \n", 960 | "595 596 1 ENRIQUE FORSYTHE \n", 961 | "596 597 1 FREDDIE DUGGAN \n", 962 | "597 598 1 WADE DELVALLE \n", 963 | "598 599 2 AUSTIN CINTRON \n", 964 | "\n", 965 | " email address_id active \\\n", 966 | "0 MARY.SMITH@sakilacustomer.org 5 1 \n", 967 | "1 PATRICIA.JOHNSON@sakilacustomer.org 6 1 \n", 968 | "2 LINDA.WILLIAMS@sakilacustomer.org 7 1 \n", 969 | "3 BARBARA.JONES@sakilacustomer.org 8 1 \n", 970 | "4 ELIZABETH.BROWN@sakilacustomer.org 9 1 \n", 971 | "5 JENNIFER.DAVIS@sakilacustomer.org 10 1 \n", 972 | "6 MARIA.MILLER@sakilacustomer.org 11 1 \n", 973 | "7 SUSAN.WILSON@sakilacustomer.org 12 1 \n", 974 | "8 MARGARET.MOORE@sakilacustomer.org 13 1 \n", 975 | "9 DOROTHY.TAYLOR@sakilacustomer.org 14 1 \n", 976 | "10 LISA.ANDERSON@sakilacustomer.org 15 1 \n", 977 | "11 NANCY.THOMAS@sakilacustomer.org 16 1 \n", 978 | "12 KAREN.JACKSON@sakilacustomer.org 17 1 \n", 979 | "13 BETTY.WHITE@sakilacustomer.org 18 1 \n", 980 | "14 HELEN.HARRIS@sakilacustomer.org 19 1 \n", 981 | "15 SANDRA.MARTIN@sakilacustomer.org 20 0 \n", 982 | "16 DONNA.THOMPSON@sakilacustomer.org 21 1 \n", 983 | "17 CAROL.GARCIA@sakilacustomer.org 22 1 \n", 984 | "18 RUTH.MARTINEZ@sakilacustomer.org 23 1 \n", 985 | "19 SHARON.ROBINSON@sakilacustomer.org 24 1 \n", 986 | "20 MICHELLE.CLARK@sakilacustomer.org 25 1 \n", 987 | "21 LAURA.RODRIGUEZ@sakilacustomer.org 26 1 \n", 988 | "22 SARAH.LEWIS@sakilacustomer.org 27 1 \n", 989 | "23 KIMBERLY.LEE@sakilacustomer.org 28 1 \n", 990 | "24 DEBORAH.WALKER@sakilacustomer.org 29 1 \n", 991 | "25 JESSICA.HALL@sakilacustomer.org 30 1 \n", 992 | "26 SHIRLEY.ALLEN@sakilacustomer.org 31 1 \n", 993 | "27 CYNTHIA.YOUNG@sakilacustomer.org 32 1 \n", 994 | "28 ANGELA.HERNANDEZ@sakilacustomer.org 33 1 \n", 995 | "29 MELISSA.KING@sakilacustomer.org 34 1 \n", 996 | ".. ... ... ... \n", 997 | "569 IVAN.CROMWELL@sakilacustomer.org 576 1 \n", 998 | "570 JOHNNIE.CHISHOLM@sakilacustomer.org 577 1 \n", 999 | "571 SIDNEY.BURLESON@sakilacustomer.org 578 1 \n", 1000 | "572 BYRON.BOX@sakilacustomer.org 579 1 \n", 1001 | "573 JULIAN.VEST@sakilacustomer.org 580 1 \n", 1002 | "574 ISAAC.OGLESBY@sakilacustomer.org 581 1 \n", 1003 | "575 MORRIS.MCCARTER@sakilacustomer.org 582 1 \n", 1004 | "576 CLIFTON.MALCOLM@sakilacustomer.org 583 1 \n", 1005 | "577 WILLARD.LUMPKIN@sakilacustomer.org 584 1 \n", 1006 | "578 DARYL.LARUE@sakilacustomer.org 585 1 \n", 1007 | "579 ROSS.GREY@sakilacustomer.org 586 1 \n", 1008 | "580 VIRGIL.WOFFORD@sakilacustomer.org 587 1 \n", 1009 | "581 ANDY.VANHORN@sakilacustomer.org 588 1 \n", 1010 | "582 MARSHALL.THORN@sakilacustomer.org 589 1 \n", 1011 | "583 SALVADOR.TEEL@sakilacustomer.org 590 1 \n", 1012 | "584 PERRY.SWAFFORD@sakilacustomer.org 591 1 \n", 1013 | "585 KIRK.STCLAIR@sakilacustomer.org 592 1 \n", 1014 | "586 SERGIO.STANFIELD@sakilacustomer.org 593 1 \n", 1015 | "587 MARION.OCAMPO@sakilacustomer.org 594 1 \n", 1016 | "588 TRACY.HERRMANN@sakilacustomer.org 595 1 \n", 1017 | "589 SETH.HANNON@sakilacustomer.org 596 1 \n", 1018 | "590 KENT.ARSENAULT@sakilacustomer.org 597 1 \n", 1019 | "591 TERRANCE.ROUSH@sakilacustomer.org 598 0 \n", 1020 | "592 RENE.MCALISTER@sakilacustomer.org 599 1 \n", 1021 | "593 EDUARDO.HIATT@sakilacustomer.org 600 1 \n", 1022 | "594 TERRENCE.GUNDERSON@sakilacustomer.org 601 1 \n", 1023 | "595 ENRIQUE.FORSYTHE@sakilacustomer.org 602 1 \n", 1024 | "596 FREDDIE.DUGGAN@sakilacustomer.org 603 1 \n", 1025 | "597 WADE.DELVALLE@sakilacustomer.org 604 1 \n", 1026 | "598 AUSTIN.CINTRON@sakilacustomer.org 605 1 \n", 1027 | "\n", 1028 | " create_date last_update \n", 1029 | "0 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1030 | "1 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1031 | "2 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1032 | "3 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1033 | "4 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1034 | "5 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1035 | "6 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1036 | "7 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1037 | "8 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1038 | "9 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1039 | "10 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1040 | "11 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1041 | "12 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1042 | "13 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1043 | "14 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1044 | "15 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1045 | "16 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1046 | "17 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1047 | "18 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1048 | "19 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1049 | "20 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1050 | "21 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1051 | "22 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1052 | "23 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1053 | "24 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1054 | "25 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1055 | "26 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1056 | "27 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1057 | "28 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1058 | "29 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1059 | ".. ... ... \n", 1060 | "569 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1061 | "570 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1062 | "571 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1063 | "572 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1064 | "573 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1065 | "574 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1066 | "575 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1067 | "576 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1068 | "577 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1069 | "578 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1070 | "579 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1071 | "580 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1072 | "581 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1073 | "582 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1074 | "583 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1075 | "584 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1076 | "585 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1077 | "586 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1078 | "587 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1079 | "588 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1080 | "589 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1081 | "590 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1082 | "591 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1083 | "592 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1084 | "593 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1085 | "594 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1086 | "595 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1087 | "596 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1088 | "597 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1089 | "598 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1090 | "\n", 1091 | "[599 rows x 9 columns]" 1092 | ] 1093 | }, 1094 | "execution_count": 16, 1095 | "metadata": {}, 1096 | "output_type": "execute_result" 1097 | } 1098 | ], 1099 | "source": [ 1100 | "# Set SQL query as a comment\n", 1101 | "sql_query = ''' SELECT * FROM customer '''\n", 1102 | "\n", 1103 | "# Use pandas to pass sql query using connection form SQLite3\n", 1104 | "df = pd.read_sql(sql_query, con)\n", 1105 | "\n", 1106 | "# Show the resulting DataFrame\n", 1107 | "df" 1108 | ] 1109 | }, 1110 | { 1111 | "cell_type": "markdown", 1112 | "metadata": { 1113 | "collapsed": false 1114 | }, 1115 | "source": [ 1116 | "Congratulations! You just passed a SQL Query using pandas and Python! You're amazing! Subsequent lectures will go further into how to query with SQL, but if you already know SQL, you're good to go!" 1117 | ] 1118 | } 1119 | ], 1120 | "metadata": { 1121 | "kernelspec": { 1122 | "display_name": "Python 2", 1123 | "language": "python", 1124 | "name": "python2" 1125 | }, 1126 | "language_info": { 1127 | "codemirror_mode": { 1128 | "name": "ipython", 1129 | "version": 2 1130 | }, 1131 | "file_extension": ".py", 1132 | "mimetype": "text/x-python", 1133 | "name": "python", 1134 | "nbconvert_exporter": "python", 1135 | "pygments_lexer": "ipython2", 1136 | "version": "2.7.7" 1137 | } 1138 | }, 1139 | "nbformat": 4, 1140 | "nbformat_minor": 0 1141 | } 1142 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/SQL - SELECT-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "### SQL SELECT Statement\n", 8 | "\n", 9 | "The SELECT statement is used to select data from a database. The result is then stored in a result table, sometimes called the result-set." 10 | ] 11 | }, 12 | { 13 | "cell_type": "markdown", 14 | "metadata": {}, 15 | "source": [ 16 | "### Syntax for SQL SELECT\n", 17 | "\n", 18 | "SELECT column_name\n", 19 | "FROM table_name\n", 20 | "\n", 21 | "*We could also select multiple columns: *\n", 22 | "\n", 23 | "SELECT column_name1,column_name2
\n", 24 | "FROM table_name\n", 25 | "\n", 26 | "*Or we could select everything in a table using * *\n", 27 | "\n", 28 | "SELECT * FROM table_name\n" 29 | ] 30 | }, 31 | { 32 | "cell_type": "code", 33 | "execution_count": null, 34 | "metadata": { 35 | "collapsed": true 36 | }, 37 | "outputs": [], 38 | "source": [ 39 | "# imports!\n", 40 | "import sqlite3\n", 41 | "import pandas as pd\n", 42 | "con = sqlite3.connect(\"sakila.db\")" 43 | ] 44 | } 45 | ], 46 | "metadata": { 47 | "kernelspec": { 48 | "display_name": "Python 2", 49 | "language": "python", 50 | "name": "python2" 51 | }, 52 | "language_info": { 53 | "codemirror_mode": { 54 | "name": "ipython", 55 | "version": 2 56 | }, 57 | "file_extension": ".py", 58 | "mimetype": "text/x-python", 59 | "name": "python", 60 | "nbconvert_exporter": "python", 61 | "pygments_lexer": "ipython2", 62 | "version": "2.7.7" 63 | } 64 | }, 65 | "nbformat": 4, 66 | "nbformat_minor": 0 67 | } 68 | -------------------------------------------------------------------------------- /Introduction to SQL with Python.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "### In this notebook we'll go over a brief introduction to the structure of the Sakila Database and setting up SQL in your Python Environment.\n", 8 | "\n", 9 | "####*DISCLAIMER:*\n", 10 | "------\n", 11 | "There are many ways to browse through a SQL database, throughout this Appendix we are only going to be focusing on learning about SQL queries using a combination of SQLite,Python,pandas, and SQLAlchemy. Please note that this is a pretty specific way of operating with a SQL Database, and may or may not fit other general needs. The primary goal of this section is to teach you how to use SQL queries to grab information and set it as a pandas DataFrame. We will not be going over more general topics of relational databases, MySQL, or using a SQL console directly.\n", 12 | "\n", 13 | "\n", 14 | "To fully understand the content of this Appendix, I suggest you complete the course up to at least Lecture 28, although I really recommend completing up to Lecture 46 to get the most out of this Appendix!\n", 15 | "\n", 16 | "##### Great, let's begin!\n", 17 | "\n", 18 | "---\n", 19 | "\n", 20 | "\n", 21 | "\n", 22 | "#### Step 1: Download SQL Alchemy\n", 23 | "\n", 24 | "To start this appendix, download SQLAlchemy. You can do this by either downloading it [here](http://www.sqlalchemy.org/download.html)\n", 25 | "\n", 26 | "*Or* - by typing pip install sqlalchemy in your command line.\n", 27 | "\n", 28 | "*Or* - by typing conda install sqlalchemy if you are using the Anaconda installation of Python. *(recommended)*\n", 29 | "\n", 30 | "#### Step 2: Download SQLite Broswer\n", 31 | "\n", 32 | "Next up we will download a sql browser. We will be using SQLite Browser because it is lightweight and free to use. There are many alternatives you can use, check out a list of 10 free ones [here](http://www.gfi.com/blog/top-10-free-database-tools-for-sys-admins/)\n", 33 | "\n", 34 | "Download SQLite Browser here: http://sqlitebrowser.org/\n", 35 | "\n", 36 | "#### Step 3: Download the sakila Database\n", 37 | "\n", 38 | "You can download the fully constructed database [here](https://www.dropbox.com/s/t049qmjzycrakro/sakila.db?dl=0)\n", 39 | "\n", 40 | "*Or* - you can download the .sql file to construct the database yourself: http://dev.mysql.com/doc/index-other.html\n", 41 | "Then use SQLite Browser to construct the database by running the .sql\n", 42 | "\n", 43 | "Either way, make sure to save it in the same directory as your iPython notebooks, or remember the file path for later so we can tell pandas exactly where to look for it.\n", 44 | "\n", 45 | "#### All done! Now let's look at the database before diving into how to work with it in Python.\n", 46 | "\n", 47 | "Check out the database either by opening it up using SQLite Browser or by checking out the diagram at this link: [Diagram](http://www.dbquanti.eu/css/images/database.png)\n", 48 | "\n", 49 | "I've posted it below as well inside this notebook, but fair warning, the picture is huge!" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 11, 55 | "metadata": { 56 | "collapsed": false 57 | }, 58 | "outputs": [ 59 | { 60 | "data": { 61 | "text/html": [ 62 | "" 63 | ], 64 | "text/plain": [ 65 | "" 66 | ] 67 | }, 68 | "execution_count": 11, 69 | "metadata": {}, 70 | "output_type": "execute_result" 71 | } 72 | ], 73 | "source": [ 74 | "# Note: The picture is really big, I suggest you check out the link directly!\n", 75 | "\n", 76 | "from IPython.display import Image\n", 77 | "Image(url='http://www.dbquanti.eu/css/images/database.png')" 78 | ] 79 | }, 80 | { 81 | "cell_type": "markdown", 82 | "metadata": {}, 83 | "source": [ 84 | "Now that we have seen an overview of what the database looks like, let's go ahead and learn how to communicate with it with Python and pandas." 85 | ] 86 | }, 87 | { 88 | "cell_type": "markdown", 89 | "metadata": {}, 90 | "source": [ 91 | "Python comes with SQLite3, which provides a lightweight disk-based database that doesn't require a seperate server process. It's useful to prototyp with SQLite and then port the code to a larger database system, like MySQL. Python comes with a pretty awesome module to connect to a SQL database with SQLite. The module is SQLite3, let's go ahead and import it (and pandas as well)." 92 | ] 93 | }, 94 | { 95 | "cell_type": "code", 96 | "execution_count": 13, 97 | "metadata": { 98 | "collapsed": true 99 | }, 100 | "outputs": [], 101 | "source": [ 102 | "# imports!\n", 103 | "import sqlite3\n", 104 | "import pandas as pd" 105 | ] 106 | }, 107 | { 108 | "cell_type": "markdown", 109 | "metadata": {}, 110 | "source": [ 111 | "To use the module, you must first create a Connection object that represents the database. If the database name already exists SQLite3 will automatically connect to it, if it does not exsist, SQLite3 will automatically create.\n", 112 | "\n", 113 | "For experienced users: You can also supply the special name :memory: to create a database in RAM.\n", 114 | "\n", 115 | "Let's make the connection!" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 15, 121 | "metadata": { 122 | "collapsed": true 123 | }, 124 | "outputs": [], 125 | "source": [ 126 | "# Connect to the database (again, downloaded from here: https://www.dropbox.com/s/t049qmjzycrakro/sakila.db?dl=0\n", 127 | "con = sqlite3.connect(\"sakila.db\")" 128 | ] 129 | }, 130 | { 131 | "cell_type": "markdown", 132 | "metadata": {}, 133 | "source": [ 134 | "Now we can run a basic SQL query, pass it with pandas, and display the output as a DataFrame! Don't worry if you don't understand the query completely yet, this is just a usage example for connecting to the database, other lectures will dive deeper into SQL queries." 135 | ] 136 | }, 137 | { 138 | "cell_type": "code", 139 | "execution_count": 16, 140 | "metadata": { 141 | "collapsed": false 142 | }, 143 | "outputs": [ 144 | { 145 | "data": { 146 | "text/html": [ 147 | "
\n", 148 | "\n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
0 1 1 MARY SMITH MARY.SMITH@sakilacustomer.org 5 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
1 2 1 PATRICIA JOHNSON PATRICIA.JOHNSON@sakilacustomer.org 6 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
2 3 1 LINDA WILLIAMS LINDA.WILLIAMS@sakilacustomer.org 7 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
3 4 2 BARBARA JONES BARBARA.JONES@sakilacustomer.org 8 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
4 5 1 ELIZABETH BROWN ELIZABETH.BROWN@sakilacustomer.org 9 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
5 6 2 JENNIFER DAVIS JENNIFER.DAVIS@sakilacustomer.org 10 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
6 7 1 MARIA MILLER MARIA.MILLER@sakilacustomer.org 11 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
7 8 2 SUSAN WILSON SUSAN.WILSON@sakilacustomer.org 12 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
8 9 2 MARGARET MOORE MARGARET.MOORE@sakilacustomer.org 13 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
9 10 1 DOROTHY TAYLOR DOROTHY.TAYLOR@sakilacustomer.org 14 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
10 11 2 LISA ANDERSON LISA.ANDERSON@sakilacustomer.org 15 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
11 12 1 NANCY THOMAS NANCY.THOMAS@sakilacustomer.org 16 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
12 13 2 KAREN JACKSON KAREN.JACKSON@sakilacustomer.org 17 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
13 14 2 BETTY WHITE BETTY.WHITE@sakilacustomer.org 18 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
14 15 1 HELEN HARRIS HELEN.HARRIS@sakilacustomer.org 19 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
15 16 2 SANDRA MARTIN SANDRA.MARTIN@sakilacustomer.org 20 0 2006-02-14 22:04:36.000 2011-09-14 18:10:28
16 17 1 DONNA THOMPSON DONNA.THOMPSON@sakilacustomer.org 21 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
17 18 2 CAROL GARCIA CAROL.GARCIA@sakilacustomer.org 22 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
18 19 1 RUTH MARTINEZ RUTH.MARTINEZ@sakilacustomer.org 23 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
19 20 2 SHARON ROBINSON SHARON.ROBINSON@sakilacustomer.org 24 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
20 21 1 MICHELLE CLARK MICHELLE.CLARK@sakilacustomer.org 25 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
21 22 1 LAURA RODRIGUEZ LAURA.RODRIGUEZ@sakilacustomer.org 26 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
22 23 2 SARAH LEWIS SARAH.LEWIS@sakilacustomer.org 27 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
23 24 2 KIMBERLY LEE KIMBERLY.LEE@sakilacustomer.org 28 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
24 25 1 DEBORAH WALKER DEBORAH.WALKER@sakilacustomer.org 29 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
25 26 2 JESSICA HALL JESSICA.HALL@sakilacustomer.org 30 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
26 27 2 SHIRLEY ALLEN SHIRLEY.ALLEN@sakilacustomer.org 31 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
27 28 1 CYNTHIA YOUNG CYNTHIA.YOUNG@sakilacustomer.org 32 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
28 29 2 ANGELA HERNANDEZ ANGELA.HERNANDEZ@sakilacustomer.org 33 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
29 30 1 MELISSA KING MELISSA.KING@sakilacustomer.org 34 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
..............................
569 570 2 IVAN CROMWELL IVAN.CROMWELL@sakilacustomer.org 576 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
570 571 2 JOHNNIE CHISHOLM JOHNNIE.CHISHOLM@sakilacustomer.org 577 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
571 572 1 SIDNEY BURLESON SIDNEY.BURLESON@sakilacustomer.org 578 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
572 573 1 BYRON BOX BYRON.BOX@sakilacustomer.org 579 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
573 574 2 JULIAN VEST JULIAN.VEST@sakilacustomer.org 580 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
574 575 2 ISAAC OGLESBY ISAAC.OGLESBY@sakilacustomer.org 581 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
575 576 2 MORRIS MCCARTER MORRIS.MCCARTER@sakilacustomer.org 582 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
576 577 2 CLIFTON MALCOLM CLIFTON.MALCOLM@sakilacustomer.org 583 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
577 578 2 WILLARD LUMPKIN WILLARD.LUMPKIN@sakilacustomer.org 584 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
578 579 2 DARYL LARUE DARYL.LARUE@sakilacustomer.org 585 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
579 580 1 ROSS GREY ROSS.GREY@sakilacustomer.org 586 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
580 581 1 VIRGIL WOFFORD VIRGIL.WOFFORD@sakilacustomer.org 587 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
581 582 2 ANDY VANHORN ANDY.VANHORN@sakilacustomer.org 588 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
582 583 1 MARSHALL THORN MARSHALL.THORN@sakilacustomer.org 589 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
583 584 2 SALVADOR TEEL SALVADOR.TEEL@sakilacustomer.org 590 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
584 585 1 PERRY SWAFFORD PERRY.SWAFFORD@sakilacustomer.org 591 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
585 586 1 KIRK STCLAIR KIRK.STCLAIR@sakilacustomer.org 592 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
586 587 1 SERGIO STANFIELD SERGIO.STANFIELD@sakilacustomer.org 593 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
587 588 1 MARION OCAMPO MARION.OCAMPO@sakilacustomer.org 594 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
588 589 1 TRACY HERRMANN TRACY.HERRMANN@sakilacustomer.org 595 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
589 590 2 SETH HANNON SETH.HANNON@sakilacustomer.org 596 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
590 591 1 KENT ARSENAULT KENT.ARSENAULT@sakilacustomer.org 597 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
591 592 1 TERRANCE ROUSH TERRANCE.ROUSH@sakilacustomer.org 598 0 2006-02-14 22:04:37.000 2011-09-14 18:10:44
592 593 2 RENE MCALISTER RENE.MCALISTER@sakilacustomer.org 599 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
593 594 1 EDUARDO HIATT EDUARDO.HIATT@sakilacustomer.org 600 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
594 595 1 TERRENCE GUNDERSON TERRENCE.GUNDERSON@sakilacustomer.org 601 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
595 596 1 ENRIQUE FORSYTHE ENRIQUE.FORSYTHE@sakilacustomer.org 602 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
596 597 1 FREDDIE DUGGAN FREDDIE.DUGGAN@sakilacustomer.org 603 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
597 598 1 WADE DELVALLE WADE.DELVALLE@sakilacustomer.org 604 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
598 599 2 AUSTIN CINTRON AUSTIN.CINTRON@sakilacustomer.org 605 1 2006-02-14 22:04:37.000 2011-09-14 18:10:44
\n", 898 | "

599 rows × 9 columns

\n", 899 | "
" 900 | ], 901 | "text/plain": [ 902 | " customer_id store_id first_name last_name \\\n", 903 | "0 1 1 MARY SMITH \n", 904 | "1 2 1 PATRICIA JOHNSON \n", 905 | "2 3 1 LINDA WILLIAMS \n", 906 | "3 4 2 BARBARA JONES \n", 907 | "4 5 1 ELIZABETH BROWN \n", 908 | "5 6 2 JENNIFER DAVIS \n", 909 | "6 7 1 MARIA MILLER \n", 910 | "7 8 2 SUSAN WILSON \n", 911 | "8 9 2 MARGARET MOORE \n", 912 | "9 10 1 DOROTHY TAYLOR \n", 913 | "10 11 2 LISA ANDERSON \n", 914 | "11 12 1 NANCY THOMAS \n", 915 | "12 13 2 KAREN JACKSON \n", 916 | "13 14 2 BETTY WHITE \n", 917 | "14 15 1 HELEN HARRIS \n", 918 | "15 16 2 SANDRA MARTIN \n", 919 | "16 17 1 DONNA THOMPSON \n", 920 | "17 18 2 CAROL GARCIA \n", 921 | "18 19 1 RUTH MARTINEZ \n", 922 | "19 20 2 SHARON ROBINSON \n", 923 | "20 21 1 MICHELLE CLARK \n", 924 | "21 22 1 LAURA RODRIGUEZ \n", 925 | "22 23 2 SARAH LEWIS \n", 926 | "23 24 2 KIMBERLY LEE \n", 927 | "24 25 1 DEBORAH WALKER \n", 928 | "25 26 2 JESSICA HALL \n", 929 | "26 27 2 SHIRLEY ALLEN \n", 930 | "27 28 1 CYNTHIA YOUNG \n", 931 | "28 29 2 ANGELA HERNANDEZ \n", 932 | "29 30 1 MELISSA KING \n", 933 | ".. ... ... ... ... \n", 934 | "569 570 2 IVAN CROMWELL \n", 935 | "570 571 2 JOHNNIE CHISHOLM \n", 936 | "571 572 1 SIDNEY BURLESON \n", 937 | "572 573 1 BYRON BOX \n", 938 | "573 574 2 JULIAN VEST \n", 939 | "574 575 2 ISAAC OGLESBY \n", 940 | "575 576 2 MORRIS MCCARTER \n", 941 | "576 577 2 CLIFTON MALCOLM \n", 942 | "577 578 2 WILLARD LUMPKIN \n", 943 | "578 579 2 DARYL LARUE \n", 944 | "579 580 1 ROSS GREY \n", 945 | "580 581 1 VIRGIL WOFFORD \n", 946 | "581 582 2 ANDY VANHORN \n", 947 | "582 583 1 MARSHALL THORN \n", 948 | "583 584 2 SALVADOR TEEL \n", 949 | "584 585 1 PERRY SWAFFORD \n", 950 | "585 586 1 KIRK STCLAIR \n", 951 | "586 587 1 SERGIO STANFIELD \n", 952 | "587 588 1 MARION OCAMPO \n", 953 | "588 589 1 TRACY HERRMANN \n", 954 | "589 590 2 SETH HANNON \n", 955 | "590 591 1 KENT ARSENAULT \n", 956 | "591 592 1 TERRANCE ROUSH \n", 957 | "592 593 2 RENE MCALISTER \n", 958 | "593 594 1 EDUARDO HIATT \n", 959 | "594 595 1 TERRENCE GUNDERSON \n", 960 | "595 596 1 ENRIQUE FORSYTHE \n", 961 | "596 597 1 FREDDIE DUGGAN \n", 962 | "597 598 1 WADE DELVALLE \n", 963 | "598 599 2 AUSTIN CINTRON \n", 964 | "\n", 965 | " email address_id active \\\n", 966 | "0 MARY.SMITH@sakilacustomer.org 5 1 \n", 967 | "1 PATRICIA.JOHNSON@sakilacustomer.org 6 1 \n", 968 | "2 LINDA.WILLIAMS@sakilacustomer.org 7 1 \n", 969 | "3 BARBARA.JONES@sakilacustomer.org 8 1 \n", 970 | "4 ELIZABETH.BROWN@sakilacustomer.org 9 1 \n", 971 | "5 JENNIFER.DAVIS@sakilacustomer.org 10 1 \n", 972 | "6 MARIA.MILLER@sakilacustomer.org 11 1 \n", 973 | "7 SUSAN.WILSON@sakilacustomer.org 12 1 \n", 974 | "8 MARGARET.MOORE@sakilacustomer.org 13 1 \n", 975 | "9 DOROTHY.TAYLOR@sakilacustomer.org 14 1 \n", 976 | "10 LISA.ANDERSON@sakilacustomer.org 15 1 \n", 977 | "11 NANCY.THOMAS@sakilacustomer.org 16 1 \n", 978 | "12 KAREN.JACKSON@sakilacustomer.org 17 1 \n", 979 | "13 BETTY.WHITE@sakilacustomer.org 18 1 \n", 980 | "14 HELEN.HARRIS@sakilacustomer.org 19 1 \n", 981 | "15 SANDRA.MARTIN@sakilacustomer.org 20 0 \n", 982 | "16 DONNA.THOMPSON@sakilacustomer.org 21 1 \n", 983 | "17 CAROL.GARCIA@sakilacustomer.org 22 1 \n", 984 | "18 RUTH.MARTINEZ@sakilacustomer.org 23 1 \n", 985 | "19 SHARON.ROBINSON@sakilacustomer.org 24 1 \n", 986 | "20 MICHELLE.CLARK@sakilacustomer.org 25 1 \n", 987 | "21 LAURA.RODRIGUEZ@sakilacustomer.org 26 1 \n", 988 | "22 SARAH.LEWIS@sakilacustomer.org 27 1 \n", 989 | "23 KIMBERLY.LEE@sakilacustomer.org 28 1 \n", 990 | "24 DEBORAH.WALKER@sakilacustomer.org 29 1 \n", 991 | "25 JESSICA.HALL@sakilacustomer.org 30 1 \n", 992 | "26 SHIRLEY.ALLEN@sakilacustomer.org 31 1 \n", 993 | "27 CYNTHIA.YOUNG@sakilacustomer.org 32 1 \n", 994 | "28 ANGELA.HERNANDEZ@sakilacustomer.org 33 1 \n", 995 | "29 MELISSA.KING@sakilacustomer.org 34 1 \n", 996 | ".. ... ... ... \n", 997 | "569 IVAN.CROMWELL@sakilacustomer.org 576 1 \n", 998 | "570 JOHNNIE.CHISHOLM@sakilacustomer.org 577 1 \n", 999 | "571 SIDNEY.BURLESON@sakilacustomer.org 578 1 \n", 1000 | "572 BYRON.BOX@sakilacustomer.org 579 1 \n", 1001 | "573 JULIAN.VEST@sakilacustomer.org 580 1 \n", 1002 | "574 ISAAC.OGLESBY@sakilacustomer.org 581 1 \n", 1003 | "575 MORRIS.MCCARTER@sakilacustomer.org 582 1 \n", 1004 | "576 CLIFTON.MALCOLM@sakilacustomer.org 583 1 \n", 1005 | "577 WILLARD.LUMPKIN@sakilacustomer.org 584 1 \n", 1006 | "578 DARYL.LARUE@sakilacustomer.org 585 1 \n", 1007 | "579 ROSS.GREY@sakilacustomer.org 586 1 \n", 1008 | "580 VIRGIL.WOFFORD@sakilacustomer.org 587 1 \n", 1009 | "581 ANDY.VANHORN@sakilacustomer.org 588 1 \n", 1010 | "582 MARSHALL.THORN@sakilacustomer.org 589 1 \n", 1011 | "583 SALVADOR.TEEL@sakilacustomer.org 590 1 \n", 1012 | "584 PERRY.SWAFFORD@sakilacustomer.org 591 1 \n", 1013 | "585 KIRK.STCLAIR@sakilacustomer.org 592 1 \n", 1014 | "586 SERGIO.STANFIELD@sakilacustomer.org 593 1 \n", 1015 | "587 MARION.OCAMPO@sakilacustomer.org 594 1 \n", 1016 | "588 TRACY.HERRMANN@sakilacustomer.org 595 1 \n", 1017 | "589 SETH.HANNON@sakilacustomer.org 596 1 \n", 1018 | "590 KENT.ARSENAULT@sakilacustomer.org 597 1 \n", 1019 | "591 TERRANCE.ROUSH@sakilacustomer.org 598 0 \n", 1020 | "592 RENE.MCALISTER@sakilacustomer.org 599 1 \n", 1021 | "593 EDUARDO.HIATT@sakilacustomer.org 600 1 \n", 1022 | "594 TERRENCE.GUNDERSON@sakilacustomer.org 601 1 \n", 1023 | "595 ENRIQUE.FORSYTHE@sakilacustomer.org 602 1 \n", 1024 | "596 FREDDIE.DUGGAN@sakilacustomer.org 603 1 \n", 1025 | "597 WADE.DELVALLE@sakilacustomer.org 604 1 \n", 1026 | "598 AUSTIN.CINTRON@sakilacustomer.org 605 1 \n", 1027 | "\n", 1028 | " create_date last_update \n", 1029 | "0 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1030 | "1 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1031 | "2 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1032 | "3 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1033 | "4 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1034 | "5 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1035 | "6 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1036 | "7 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1037 | "8 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1038 | "9 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1039 | "10 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1040 | "11 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1041 | "12 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1042 | "13 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1043 | "14 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1044 | "15 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1045 | "16 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1046 | "17 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1047 | "18 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1048 | "19 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1049 | "20 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1050 | "21 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1051 | "22 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1052 | "23 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 1053 | "24 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1054 | "25 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1055 | "26 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1056 | "27 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1057 | "28 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1058 | "29 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 1059 | ".. ... ... \n", 1060 | "569 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1061 | "570 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1062 | "571 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1063 | "572 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1064 | "573 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1065 | "574 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1066 | "575 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1067 | "576 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1068 | "577 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1069 | "578 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1070 | "579 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1071 | "580 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1072 | "581 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1073 | "582 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1074 | "583 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1075 | "584 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1076 | "585 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1077 | "586 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1078 | "587 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1079 | "588 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1080 | "589 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1081 | "590 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1082 | "591 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1083 | "592 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1084 | "593 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1085 | "594 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1086 | "595 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1087 | "596 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1088 | "597 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1089 | "598 2006-02-14 22:04:37.000 2011-09-14 18:10:44 \n", 1090 | "\n", 1091 | "[599 rows x 9 columns]" 1092 | ] 1093 | }, 1094 | "execution_count": 16, 1095 | "metadata": {}, 1096 | "output_type": "execute_result" 1097 | } 1098 | ], 1099 | "source": [ 1100 | "# Set SQL query as a comment\n", 1101 | "sql_query = ''' SELECT * FROM customer '''\n", 1102 | "\n", 1103 | "# Use pandas to pass sql query using connection form SQLite3\n", 1104 | "df = pd.read_sql(sql_query, con)\n", 1105 | "\n", 1106 | "# Show the resulting DataFrame\n", 1107 | "df" 1108 | ] 1109 | }, 1110 | { 1111 | "cell_type": "markdown", 1112 | "metadata": { 1113 | "collapsed": false 1114 | }, 1115 | "source": [ 1116 | "Congratulations! You just passed a SQL Query using pandas and Python! You're amazing! Subsequent lectures will go further into how to query with SQL, but if you already know SQL, you're good to go!" 1117 | ] 1118 | } 1119 | ], 1120 | "metadata": { 1121 | "kernelspec": { 1122 | "display_name": "Python 2", 1123 | "language": "python", 1124 | "name": "python2" 1125 | }, 1126 | "language_info": { 1127 | "codemirror_mode": { 1128 | "name": "ipython", 1129 | "version": 2 1130 | }, 1131 | "file_extension": ".py", 1132 | "mimetype": "text/x-python", 1133 | "name": "python", 1134 | "nbconvert_exporter": "python", 1135 | "pygments_lexer": "ipython2", 1136 | "version": "2.7.7" 1137 | } 1138 | }, 1139 | "nbformat": 4, 1140 | "nbformat_minor": 0 1141 | } 1142 | -------------------------------------------------------------------------------- /SQL SELECT,DISTINCT,WHERE,AND & OR.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "### SQL SELECT Statement\n", 8 | "\n", 9 | "The SELECT statement is used to select data from a database. The result is then stored in a result table, sometimes called the result-set." 10 | ] 11 | }, 12 | { 13 | "cell_type": "markdown", 14 | "metadata": {}, 15 | "source": [ 16 | "### Syntax for SQL SELECT\n", 17 | "\n", 18 | "SELECT column_name\n", 19 | "FROM table_name\n", 20 | "\n", 21 | "*We could also select multiple columns: *\n", 22 | "\n", 23 | "SELECT column_name1,column_name2
\n", 24 | "FROM table_name\n", 25 | "\n", 26 | "*Or we could select everything in a table using * *\n", 27 | "\n", 28 | "SELECT * FROM table_name" 29 | ] 30 | }, 31 | { 32 | "cell_type": "markdown", 33 | "metadata": {}, 34 | "source": [ 35 | "To see how this and multiple other queries work, we'll connect to the database and make a function that automatically takes in our query and returns a DataFrame." 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": 1, 41 | "metadata": { 42 | "collapsed": true 43 | }, 44 | "outputs": [], 45 | "source": [ 46 | "# Imports\n", 47 | "import sqlite3\n", 48 | "import pandas as pd\n", 49 | "con = sqlite3.connect(\"sakila.db\")\n", 50 | "\n", 51 | "# Set function as our sql_to_pandas\n", 52 | "\n", 53 | "def sql_to_df(sql_query):\n", 54 | "\n", 55 | " # Use pandas to pass sql query using connection form SQLite3\n", 56 | " df = pd.read_sql(sql_query, con)\n", 57 | "\n", 58 | " # Show the resulting DataFrame\n", 59 | " return df" 60 | ] 61 | }, 62 | { 63 | "cell_type": "markdown", 64 | "metadata": {}, 65 | "source": [ 66 | "#### Selecting Multiple Columns" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": 2, 72 | "metadata": { 73 | "collapsed": false 74 | }, 75 | "outputs": [ 76 | { 77 | "data": { 78 | "text/html": [ 79 | "
\n", 80 | "\n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | "
first_namelast_name
0 MARY SMITH
1 PATRICIA JOHNSON
2 LINDA WILLIAMS
3 BARBARA JONES
4 ELIZABETH BROWN
\n", 116 | "
" 117 | ], 118 | "text/plain": [ 119 | " first_name last_name\n", 120 | "0 MARY SMITH\n", 121 | "1 PATRICIA JOHNSON\n", 122 | "2 LINDA WILLIAMS\n", 123 | "3 BARBARA JONES\n", 124 | "4 ELIZABETH BROWN" 125 | ] 126 | }, 127 | "execution_count": 2, 128 | "metadata": {}, 129 | "output_type": "execute_result" 130 | } 131 | ], 132 | "source": [ 133 | "# Select multiple columns example\n", 134 | "query = ''' SELECT first_name,last_name\n", 135 | " FROM customer; '''\n", 136 | "\n", 137 | "# Grab from first two columns\n", 138 | "sql_to_df(query).head()" 139 | ] 140 | }, 141 | { 142 | "cell_type": "markdown", 143 | "metadata": {}, 144 | "source": [ 145 | "#### Selecting Everything from table with *" 146 | ] 147 | }, 148 | { 149 | "cell_type": "code", 150 | "execution_count": 3, 151 | "metadata": { 152 | "collapsed": false 153 | }, 154 | "outputs": [ 155 | { 156 | "data": { 157 | "text/html": [ 158 | "
\n", 159 | "\n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
0 1 1 MARY SMITH MARY.SMITH@sakilacustomer.org 5 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
1 2 1 PATRICIA JOHNSON PATRICIA.JOHNSON@sakilacustomer.org 6 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
2 3 1 LINDA WILLIAMS LINDA.WILLIAMS@sakilacustomer.org 7 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
3 4 2 BARBARA JONES BARBARA.JONES@sakilacustomer.org 8 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
4 5 1 ELIZABETH BROWN ELIZABETH.BROWN@sakilacustomer.org 9 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
\n", 237 | "
" 238 | ], 239 | "text/plain": [ 240 | " customer_id store_id first_name last_name \\\n", 241 | "0 1 1 MARY SMITH \n", 242 | "1 2 1 PATRICIA JOHNSON \n", 243 | "2 3 1 LINDA WILLIAMS \n", 244 | "3 4 2 BARBARA JONES \n", 245 | "4 5 1 ELIZABETH BROWN \n", 246 | "\n", 247 | " email address_id active \\\n", 248 | "0 MARY.SMITH@sakilacustomer.org 5 1 \n", 249 | "1 PATRICIA.JOHNSON@sakilacustomer.org 6 1 \n", 250 | "2 LINDA.WILLIAMS@sakilacustomer.org 7 1 \n", 251 | "3 BARBARA.JONES@sakilacustomer.org 8 1 \n", 252 | "4 ELIZABETH.BROWN@sakilacustomer.org 9 1 \n", 253 | "\n", 254 | " create_date last_update \n", 255 | "0 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 256 | "1 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 257 | "2 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 258 | "3 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 259 | "4 2006-02-14 22:04:36.000 2011-09-14 18:10:28 " 260 | ] 261 | }, 262 | "execution_count": 3, 263 | "metadata": {}, 264 | "output_type": "execute_result" 265 | } 266 | ], 267 | "source": [ 268 | "# Select multiple columns example\n", 269 | "query = ''' SELECT *\n", 270 | " FROM customer; '''\n", 271 | "\n", 272 | "# Grab \n", 273 | "sql_to_df(query).head()" 274 | ] 275 | }, 276 | { 277 | "cell_type": "markdown", 278 | "metadata": {}, 279 | "source": [ 280 | "## Syntax for the SQL DISTINCT Statement\n", 281 | "\n", 282 | "In a table, a column may contain duplicate values; and sometimes you only want to list the distinct (unique) values. The DISTINCT keyword can be used to return only distinct (unique) values.\n", 283 | "\n", 284 | "SELECT DISTINCT column_name
\n", 285 | "FROM table_name;" 286 | ] 287 | }, 288 | { 289 | "cell_type": "code", 290 | "execution_count": 4, 291 | "metadata": { 292 | "collapsed": false 293 | }, 294 | "outputs": [ 295 | { 296 | "data": { 297 | "text/html": [ 298 | "
\n", 299 | "\n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | "
country_id
0 1
1 2
2 3
3 4
4 5
\n", 329 | "
" 330 | ], 331 | "text/plain": [ 332 | " country_id\n", 333 | "0 1\n", 334 | "1 2\n", 335 | "2 3\n", 336 | "3 4\n", 337 | "4 5" 338 | ] 339 | }, 340 | "execution_count": 4, 341 | "metadata": {}, 342 | "output_type": "execute_result" 343 | } 344 | ], 345 | "source": [ 346 | "# Select distinct country_ids from the city table.\n", 347 | "query = ''' SELECT DISTINCT(country_id)\n", 348 | " FROM city'''\n", 349 | "\n", 350 | "sql_to_df(query).head()" 351 | ] 352 | }, 353 | { 354 | "cell_type": "markdown", 355 | "metadata": {}, 356 | "source": [ 357 | "## Syntax for the SQL WHERE \n", 358 | "\n", 359 | "The WHERE clause is used to filter records, the WHERE clause is used to extract only the records that fulfill the specific parameter.\n", 360 | "\n", 361 | "SELECT column_name
\n", 362 | "FROM table_name
\n", 363 | "WHERE column_name ( math operator) desired_value;
" 364 | ] 365 | }, 366 | { 367 | "cell_type": "code", 368 | "execution_count": 5, 369 | "metadata": { 370 | "collapsed": false 371 | }, 372 | "outputs": [ 373 | { 374 | "data": { 375 | "text/html": [ 376 | "
\n", 377 | "\n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
0 1 1 MARY SMITH MARY.SMITH@sakilacustomer.org 5 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
1 2 1 PATRICIA JOHNSON PATRICIA.JOHNSON@sakilacustomer.org 6 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
2 3 1 LINDA WILLIAMS LINDA.WILLIAMS@sakilacustomer.org 7 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
3 5 1 ELIZABETH BROWN ELIZABETH.BROWN@sakilacustomer.org 9 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
4 7 1 MARIA MILLER MARIA.MILLER@sakilacustomer.org 11 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
\n", 455 | "
" 456 | ], 457 | "text/plain": [ 458 | " customer_id store_id first_name last_name \\\n", 459 | "0 1 1 MARY SMITH \n", 460 | "1 2 1 PATRICIA JOHNSON \n", 461 | "2 3 1 LINDA WILLIAMS \n", 462 | "3 5 1 ELIZABETH BROWN \n", 463 | "4 7 1 MARIA MILLER \n", 464 | "\n", 465 | " email address_id active \\\n", 466 | "0 MARY.SMITH@sakilacustomer.org 5 1 \n", 467 | "1 PATRICIA.JOHNSON@sakilacustomer.org 6 1 \n", 468 | "2 LINDA.WILLIAMS@sakilacustomer.org 7 1 \n", 469 | "3 ELIZABETH.BROWN@sakilacustomer.org 9 1 \n", 470 | "4 MARIA.MILLER@sakilacustomer.org 11 1 \n", 471 | "\n", 472 | " create_date last_update \n", 473 | "0 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 474 | "1 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 475 | "2 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 476 | "3 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 477 | "4 2006-02-14 22:04:36.000 2011-09-14 18:10:28 " 478 | ] 479 | }, 480 | "execution_count": 5, 481 | "metadata": {}, 482 | "output_type": "execute_result" 483 | } 484 | ], 485 | "source": [ 486 | "# Select all customer info from the 1st store.\n", 487 | "query = ''' SELECT *\n", 488 | " FROM customer\n", 489 | " WHERE store_id = 1'''\n", 490 | "\n", 491 | "sql_to_df(query).head()" 492 | ] 493 | }, 494 | { 495 | "cell_type": "markdown", 496 | "metadata": {}, 497 | "source": [ 498 | "Note, there are a variety of logical operators you can use for a SQL request.\n", 499 | "\n", 500 | "\n", 501 | "\n", 502 | "\n", 503 | "\n", 504 | "\n", 505 | "\n", 506 | "\n", 507 | "\n", 508 | "\n", 509 | "\n", 510 | "\n", 511 | "\n", 512 | "\n", 513 | "\n", 514 | "\n", 515 | "\n", 516 | "\n", 517 | "\n", 518 | "\n", 519 | "\n", 521 | "\n", 522 | "\n", 523 | "\n", 524 | "\n", 525 | "\n", 526 | "\n", 527 | "\n", 528 | "\n", 529 | "\n", 530 | "
OperatorDescription
% Equal
<>Not equal. Note: In some versions of SQL this operator may be written !=
> Greater than
< Less than\n", 520 | "
>= Greater than or equal
<= Less than or equal
\n", 531 | "\n", 532 | "\n" 533 | ] 534 | }, 535 | { 536 | "cell_type": "markdown", 537 | "metadata": { 538 | "collapsed": true 539 | }, 540 | "source": [ 541 | "SQL requires single quotes around text values, while numeric fields are not enclosed in quotes, for example a text value for the above where statement: " 542 | ] 543 | }, 544 | { 545 | "cell_type": "code", 546 | "execution_count": 6, 547 | "metadata": { 548 | "collapsed": false 549 | }, 550 | "outputs": [ 551 | { 552 | "data": { 553 | "text/html": [ 554 | "
\n", 555 | "\n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
0 1 1 MARY SMITH MARY.SMITH@sakilacustomer.org 5 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
\n", 585 | "
" 586 | ], 587 | "text/plain": [ 588 | " customer_id store_id first_name last_name email \\\n", 589 | "0 1 1 MARY SMITH MARY.SMITH@sakilacustomer.org \n", 590 | "\n", 591 | " address_id active create_date last_update \n", 592 | "0 5 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28 " 593 | ] 594 | }, 595 | "execution_count": 6, 596 | "metadata": {}, 597 | "output_type": "execute_result" 598 | } 599 | ], 600 | "source": [ 601 | "# Select all customer info from Mary.\n", 602 | "query = ''' SELECT *\n", 603 | " FROM customer\n", 604 | " WHERE first_name = 'MARY' '''\n", 605 | "\n", 606 | "sql_to_df(query).head()" 607 | ] 608 | }, 609 | { 610 | "cell_type": "markdown", 611 | "metadata": {}, 612 | "source": [ 613 | "## Syntax for AND\n", 614 | "\n", 615 | "The AND operator is used to filter records based on more than one condition.\n", 616 | "\n", 617 | "The AND operator displays a record if both the first condition AND the second condition are true.\n" 618 | ] 619 | }, 620 | { 621 | "cell_type": "code", 622 | "execution_count": 8, 623 | "metadata": { 624 | "collapsed": false 625 | }, 626 | "outputs": [ 627 | { 628 | "data": { 629 | "text/html": [ 630 | "
\n", 631 | "\n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | "
film_idtitledescriptionrelease_yearlanguage_idoriginal_language_idrental_durationrental_ratelengthreplacement_costratingspecial_featureslast_update
0 8 AIRPORT POLLOCK A Epic Tale of a Moose And a Girl who must Con... 2006 1 None 6 4.99 54 15.99 R Trailers 2011-09-14 18:05:33
1 17 ALONE TRIP A Fast-Paced Character Study of a Composer And... 2006 1 None 3 0.99 82 14.99 R Trailers,Behind the Scenes 2011-09-14 18:05:33
2 20 AMELIE HELLFIGHTERS A Boring Drama of a Woman And a Squirrel who m... 2006 1 None 4 4.99 79 23.99 R Commentaries,Deleted Scenes,Behind the Scenes 2011-09-14 18:05:33
3 21 AMERICAN CIRCUS A Insightful Drama of a Girl And a Astronaut w... 2006 1 None 3 4.99 129 17.99 R Commentaries,Behind the Scenes 2011-09-14 18:05:33
4 23 ANACONDA CONFESSIONS A Lacklusture Display of a Dentist And a Denti... 2006 1 None 3 0.99 92 9.99 R Trailers,Deleted Scenes 2011-09-14 18:05:33
\n", 733 | "
" 734 | ], 735 | "text/plain": [ 736 | " film_id title \\\n", 737 | "0 8 AIRPORT POLLOCK \n", 738 | "1 17 ALONE TRIP \n", 739 | "2 20 AMELIE HELLFIGHTERS \n", 740 | "3 21 AMERICAN CIRCUS \n", 741 | "4 23 ANACONDA CONFESSIONS \n", 742 | "\n", 743 | " description release_year \\\n", 744 | "0 A Epic Tale of a Moose And a Girl who must Con... 2006 \n", 745 | "1 A Fast-Paced Character Study of a Composer And... 2006 \n", 746 | "2 A Boring Drama of a Woman And a Squirrel who m... 2006 \n", 747 | "3 A Insightful Drama of a Girl And a Astronaut w... 2006 \n", 748 | "4 A Lacklusture Display of a Dentist And a Denti... 2006 \n", 749 | "\n", 750 | " language_id original_language_id rental_duration rental_rate length \\\n", 751 | "0 1 None 6 4.99 54 \n", 752 | "1 1 None 3 0.99 82 \n", 753 | "2 1 None 4 4.99 79 \n", 754 | "3 1 None 3 4.99 129 \n", 755 | "4 1 None 3 0.99 92 \n", 756 | "\n", 757 | " replacement_cost rating special_features \\\n", 758 | "0 15.99 R Trailers \n", 759 | "1 14.99 R Trailers,Behind the Scenes \n", 760 | "2 23.99 R Commentaries,Deleted Scenes,Behind the Scenes \n", 761 | "3 17.99 R Commentaries,Behind the Scenes \n", 762 | "4 9.99 R Trailers,Deleted Scenes \n", 763 | "\n", 764 | " last_update \n", 765 | "0 2011-09-14 18:05:33 \n", 766 | "1 2011-09-14 18:05:33 \n", 767 | "2 2011-09-14 18:05:33 \n", 768 | "3 2011-09-14 18:05:33 \n", 769 | "4 2011-09-14 18:05:33 " 770 | ] 771 | }, 772 | "execution_count": 8, 773 | "metadata": {}, 774 | "output_type": "execute_result" 775 | } 776 | ], 777 | "source": [ 778 | "# Select all films from 2006 that are rated R.\n", 779 | "\n", 780 | "query = ''' SELECT *\n", 781 | " FROM film\n", 782 | " WHERE release_year = 2006\n", 783 | " AND rating = 'R' '''\n", 784 | "\n", 785 | "sql_to_df(query).head()" 786 | ] 787 | }, 788 | { 789 | "cell_type": "markdown", 790 | "metadata": {}, 791 | "source": [ 792 | "## Syntax for OR\n", 793 | "\n", 794 | "\n", 795 | "The OR operator displays a record if either the first condition OR the second condition is true." 796 | ] 797 | }, 798 | { 799 | "cell_type": "code", 800 | "execution_count": 9, 801 | "metadata": { 802 | "collapsed": false 803 | }, 804 | "outputs": [ 805 | { 806 | "data": { 807 | "text/html": [ 808 | "
\n", 809 | "\n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | " \n", 898 | " \n", 899 | " \n", 900 | " \n", 901 | " \n", 902 | " \n", 903 | " \n", 904 | " \n", 905 | " \n", 906 | " \n", 907 | " \n", 908 | " \n", 909 | " \n", 910 | "
film_idtitledescriptionrelease_yearlanguage_idoriginal_language_idrental_durationrental_ratelengthreplacement_costratingspecial_featureslast_update
0 1 ACADEMY DINOSAUR A Epic Drama of a Feminist And a Mad Scientist... 2006 1 None 6 0.99 86 20.99 PG Deleted Scenes,Behind the Scenes 2011-09-14 18:05:32
1 6 AGENT TRUMAN A Intrepid Panorama of a Robot And a Boy who m... 2006 1 None 3 2.99 169 17.99 PG Deleted Scenes 2011-09-14 18:05:33
2 8 AIRPORT POLLOCK A Epic Tale of a Moose And a Girl who must Con... 2006 1 None 6 4.99 54 15.99 R Trailers 2011-09-14 18:05:33
3 12 ALASKA PHANTOM A Fanciful Saga of a Hunter And a Pastry Chef ... 2006 1 None 6 0.99 136 22.99 PG Commentaries,Deleted Scenes 2011-09-14 18:05:33
4 13 ALI FOREVER A Action-Packed Drama of a Dentist And a Croco... 2006 1 None 4 4.99 150 21.99 PG Deleted Scenes,Behind the Scenes 2011-09-14 18:05:33
\n", 911 | "
" 912 | ], 913 | "text/plain": [ 914 | " film_id title \\\n", 915 | "0 1 ACADEMY DINOSAUR \n", 916 | "1 6 AGENT TRUMAN \n", 917 | "2 8 AIRPORT POLLOCK \n", 918 | "3 12 ALASKA PHANTOM \n", 919 | "4 13 ALI FOREVER \n", 920 | "\n", 921 | " description release_year \\\n", 922 | "0 A Epic Drama of a Feminist And a Mad Scientist... 2006 \n", 923 | "1 A Intrepid Panorama of a Robot And a Boy who m... 2006 \n", 924 | "2 A Epic Tale of a Moose And a Girl who must Con... 2006 \n", 925 | "3 A Fanciful Saga of a Hunter And a Pastry Chef ... 2006 \n", 926 | "4 A Action-Packed Drama of a Dentist And a Croco... 2006 \n", 927 | "\n", 928 | " language_id original_language_id rental_duration rental_rate length \\\n", 929 | "0 1 None 6 0.99 86 \n", 930 | "1 1 None 3 2.99 169 \n", 931 | "2 1 None 6 4.99 54 \n", 932 | "3 1 None 6 0.99 136 \n", 933 | "4 1 None 4 4.99 150 \n", 934 | "\n", 935 | " replacement_cost rating special_features \\\n", 936 | "0 20.99 PG Deleted Scenes,Behind the Scenes \n", 937 | "1 17.99 PG Deleted Scenes \n", 938 | "2 15.99 R Trailers \n", 939 | "3 22.99 PG Commentaries,Deleted Scenes \n", 940 | "4 21.99 PG Deleted Scenes,Behind the Scenes \n", 941 | "\n", 942 | " last_update \n", 943 | "0 2011-09-14 18:05:32 \n", 944 | "1 2011-09-14 18:05:33 \n", 945 | "2 2011-09-14 18:05:33 \n", 946 | "3 2011-09-14 18:05:33 \n", 947 | "4 2011-09-14 18:05:33 " 948 | ] 949 | }, 950 | "execution_count": 9, 951 | "metadata": {}, 952 | "output_type": "execute_result" 953 | } 954 | ], 955 | "source": [ 956 | "# Select all films from R or PG.\n", 957 | "\n", 958 | "query = ''' SELECT *\n", 959 | " FROM film\n", 960 | " WHERE rating = 'PG'\n", 961 | " OR rating = 'R' '''\n", 962 | "\n", 963 | "sql_to_df(query).head()" 964 | ] 965 | }, 966 | { 967 | "cell_type": "markdown", 968 | "metadata": { 969 | "collapsed": true 970 | }, 971 | "source": [ 972 | "That's it for now!" 973 | ] 974 | }, 975 | { 976 | "cell_type": "code", 977 | "execution_count": null, 978 | "metadata": { 979 | "collapsed": true 980 | }, 981 | "outputs": [], 982 | "source": [] 983 | } 984 | ], 985 | "metadata": { 986 | "kernelspec": { 987 | "display_name": "Python 2", 988 | "language": "python", 989 | "name": "python2" 990 | }, 991 | "language_info": { 992 | "codemirror_mode": { 993 | "name": "ipython", 994 | "version": 2 995 | }, 996 | "file_extension": ".py", 997 | "mimetype": "text/x-python", 998 | "name": "python", 999 | "nbconvert_exporter": "python", 1000 | "pygments_lexer": "ipython2", 1001 | "version": "2.7.7" 1002 | } 1003 | }, 1004 | "nbformat": 4, 1005 | "nbformat_minor": 0 1006 | } 1007 | -------------------------------------------------------------------------------- /SQL WILDCARDS, ORDER BY, GROUP BY and Aggregate Functions.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "In this section, we will go over Wildcard statements, as well as ORDER BY and GROUP BY statements.\n", 8 | "\n", 9 | "We will start by importing and connceting to our SQL database, then creating the function to convert SQL queries to a pandas DataFrame." 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": 30, 15 | "metadata": { 16 | "collapsed": true 17 | }, 18 | "outputs": [], 19 | "source": [ 20 | "# Imports\n", 21 | "import sqlite3\n", 22 | "import pandas as pd\n", 23 | "con = sqlite3.connect(\"sakila.db\")\n", 24 | "\n", 25 | "# Set function as our sql_to_pandas\n", 26 | "\n", 27 | "def sql_to_df(sql_query):\n", 28 | "\n", 29 | " # Use pandas to pass sql query using connection form SQLite3\n", 30 | " df = pd.read_sql(sql_query, con)\n", 31 | "\n", 32 | " # Show the resulting DataFrame\n", 33 | " return df" 34 | ] 35 | }, 36 | { 37 | "cell_type": "markdown", 38 | "metadata": {}, 39 | "source": [ 40 | "Before we begin with Wildcards, ORDER BY, and GROUP BY. Let's take a look at aggregate functions.\n", 41 | "\n", 42 | "* AVG() - Returns the average value.\n", 43 | "* COUNT() - Returns the number of rows.\n", 44 | "* FIRST() - Returns the first value.\n", 45 | "* LAST() - Returns the last value.\n", 46 | "* MAX() - Returns the largest value.\n", 47 | "* MIN() - Returns the smallest value.\n", 48 | "* SUM() - Returns the sum.\n", 49 | "\n", 50 | "You can call any of these aggregate functions on a column to get the resulting values back. For example:" 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": 32, 56 | "metadata": { 57 | "collapsed": false 58 | }, 59 | "outputs": [ 60 | { 61 | "data": { 62 | "text/html": [ 63 | "
\n", 64 | "\n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | "
COUNT(customer_id)
0 599
\n", 78 | "
" 79 | ], 80 | "text/plain": [ 81 | " COUNT(customer_id)\n", 82 | "0 599" 83 | ] 84 | }, 85 | "execution_count": 32, 86 | "metadata": {}, 87 | "output_type": "execute_result" 88 | } 89 | ], 90 | "source": [ 91 | "# Count the number of customers\n", 92 | "query = ''' SELECT COUNT(customer_id)\n", 93 | " FROM customer; '''\n", 94 | "\n", 95 | "# Grab \n", 96 | "sql_to_df(query).head()" 97 | ] 98 | }, 99 | { 100 | "cell_type": "markdown", 101 | "metadata": {}, 102 | "source": [ 103 | "Go ahead and experiment with the other aggregate functions. The usual syntax is:\n", 104 | "\n", 105 | "SELECT column_name, aggregate_function(column_name)
\n", 106 | "FROM table_name
\n", 107 | "WHERE column_name" 108 | ] 109 | }, 110 | { 111 | "cell_type": "markdown", 112 | "metadata": {}, 113 | "source": [ 114 | "## SQL Wildcards\n", 115 | "\n", 116 | "A wildcard character can be used to substitute for any other characters in a string. In SQL, wildcard characters are used with the SQL LIKE operator. The LIKE operator is used in a WHERE clause to search for a specified pattern in a column.\n", 117 | "\n", 118 | "There are several wildcard operators:" 119 | ] 120 | }, 121 | { 122 | "cell_type": "markdown", 123 | "metadata": {}, 124 | "source": [ 125 | "\n", 126 | "\n", 127 | "\n", 128 | "\n", 129 | "\n", 130 | "\n", 131 | "\n", 132 | "\n", 133 | "\n", 134 | "\n", 135 | "\n", 136 | "\n", 137 | "\n", 138 | "\n", 139 | "\n", 140 | "\n", 141 | "\n", 142 | "
WildcardDescription
%A substitute for zero or more characters
_A substitute for a single character
[character_list]Sets and ranges of characters to match
\n", 143 | "\n", 144 | "Let's see them in action now!" 145 | ] 146 | }, 147 | { 148 | "cell_type": "code", 149 | "execution_count": 5, 150 | "metadata": { 151 | "collapsed": false 152 | }, 153 | "outputs": [ 154 | { 155 | "data": { 156 | "text/html": [ 157 | "
\n", 158 | "\n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
0 1 1 MARY SMITH MARY.SMITH@sakilacustomer.org 5 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
1 7 1 MARIA MILLER MARIA.MILLER@sakilacustomer.org 11 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
2 9 2 MARGARET MOORE MARGARET.MOORE@sakilacustomer.org 13 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
3 21 1 MICHELLE CLARK MICHELLE.CLARK@sakilacustomer.org 25 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
4 30 1 MELISSA KING MELISSA.KING@sakilacustomer.org 34 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
\n", 236 | "
" 237 | ], 238 | "text/plain": [ 239 | " customer_id store_id first_name last_name \\\n", 240 | "0 1 1 MARY SMITH \n", 241 | "1 7 1 MARIA MILLER \n", 242 | "2 9 2 MARGARET MOORE \n", 243 | "3 21 1 MICHELLE CLARK \n", 244 | "4 30 1 MELISSA KING \n", 245 | "\n", 246 | " email address_id active \\\n", 247 | "0 MARY.SMITH@sakilacustomer.org 5 1 \n", 248 | "1 MARIA.MILLER@sakilacustomer.org 11 1 \n", 249 | "2 MARGARET.MOORE@sakilacustomer.org 13 1 \n", 250 | "3 MICHELLE.CLARK@sakilacustomer.org 25 1 \n", 251 | "4 MELISSA.KING@sakilacustomer.org 34 1 \n", 252 | "\n", 253 | " create_date last_update \n", 254 | "0 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 255 | "1 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 256 | "2 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 257 | "3 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 258 | "4 2006-02-14 22:04:36.000 2011-09-14 18:10:29 " 259 | ] 260 | }, 261 | "execution_count": 5, 262 | "metadata": {}, 263 | "output_type": "execute_result" 264 | } 265 | ], 266 | "source": [ 267 | "# First the % wildcard\n", 268 | "\n", 269 | "# Select any customers whose name start with an M\n", 270 | "query = ''' SELECT *\n", 271 | " FROM customer\n", 272 | " WHERE first_name LIKE 'M%' ; '''\n", 273 | "\n", 274 | "# Grab \n", 275 | "sql_to_df(query).head()" 276 | ] 277 | }, 278 | { 279 | "cell_type": "code", 280 | "execution_count": 23, 281 | "metadata": { 282 | "collapsed": false 283 | }, 284 | "outputs": [ 285 | { 286 | "data": { 287 | "text/html": [ 288 | "
\n", 289 | "\n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
0 30 1 MELISSA KING MELISSA.KING@sakilacustomer.org 34 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
\n", 319 | "
" 320 | ], 321 | "text/plain": [ 322 | " customer_id store_id first_name last_name \\\n", 323 | "0 30 1 MELISSA KING \n", 324 | "\n", 325 | " email address_id active \\\n", 326 | "0 MELISSA.KING@sakilacustomer.org 34 1 \n", 327 | "\n", 328 | " create_date last_update \n", 329 | "0 2006-02-14 22:04:36.000 2011-09-14 18:10:29 " 330 | ] 331 | }, 332 | "execution_count": 23, 333 | "metadata": {}, 334 | "output_type": "execute_result" 335 | } 336 | ], 337 | "source": [ 338 | "# Next the _ wildcard\n", 339 | "\n", 340 | "# Select any customers whose last name ends with ing\n", 341 | "query = ''' SELECT *\n", 342 | " FROM customer\n", 343 | " WHERE last_name LIKE '_ING' ; '''\n", 344 | "\n", 345 | "# Grab \n", 346 | "sql_to_df(query).head()" 347 | ] 348 | }, 349 | { 350 | "cell_type": "markdown", 351 | "metadata": {}, 352 | "source": [ 353 | "Now we will move on to the [Character_list] wildcard. \n", 354 | "### IMPORTANT NOTE!\n", 355 | "Using [charlist] with SQLite is a little different than with other SQL formats, such as MySQL. \n", 356 | "\n", 357 | "In MySQL you would use: \n", 358 | "\n", 359 | "WHERE value LIKE '[charlist]%'\n", 360 | "\n", 361 | "In SQLite you use: \n", 362 | "\n", 363 | "WHERE value GLOB '[charlist]*'" 364 | ] 365 | }, 366 | { 367 | "cell_type": "code", 368 | "execution_count": 22, 369 | "metadata": { 370 | "collapsed": false 371 | }, 372 | "outputs": [ 373 | { 374 | "data": { 375 | "text/html": [ 376 | "
\n", 377 | "\n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
0 4 2 BARBARA JONES BARBARA.JONES@sakilacustomer.org 8 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
1 14 2 BETTY WHITE BETTY.WHITE@sakilacustomer.org 18 1 2006-02-14 22:04:36.000 2011-09-14 18:10:28
2 29 2 ANGELA HERNANDEZ ANGELA.HERNANDEZ@sakilacustomer.org 33 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
3 31 2 BRENDA WRIGHT BRENDA.WRIGHT@sakilacustomer.org 35 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
4 32 1 AMY LOPEZ AMY.LOPEZ@sakilacustomer.org 36 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
\n", 455 | "
" 456 | ], 457 | "text/plain": [ 458 | " customer_id store_id first_name last_name \\\n", 459 | "0 4 2 BARBARA JONES \n", 460 | "1 14 2 BETTY WHITE \n", 461 | "2 29 2 ANGELA HERNANDEZ \n", 462 | "3 31 2 BRENDA WRIGHT \n", 463 | "4 32 1 AMY LOPEZ \n", 464 | "\n", 465 | " email address_id active \\\n", 466 | "0 BARBARA.JONES@sakilacustomer.org 8 1 \n", 467 | "1 BETTY.WHITE@sakilacustomer.org 18 1 \n", 468 | "2 ANGELA.HERNANDEZ@sakilacustomer.org 33 1 \n", 469 | "3 BRENDA.WRIGHT@sakilacustomer.org 35 1 \n", 470 | "4 AMY.LOPEZ@sakilacustomer.org 36 1 \n", 471 | "\n", 472 | " create_date last_update \n", 473 | "0 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 474 | "1 2006-02-14 22:04:36.000 2011-09-14 18:10:28 \n", 475 | "2 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 476 | "3 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 477 | "4 2006-02-14 22:04:36.000 2011-09-14 18:10:29 " 478 | ] 479 | }, 480 | "execution_count": 22, 481 | "metadata": {}, 482 | "output_type": "execute_result" 483 | } 484 | ], 485 | "source": [ 486 | "# Finally the [character_list] wildcard\n", 487 | "\n", 488 | "# Select any customers whose first name begins with an A or a B\n", 489 | "query = ''' SELECT *\n", 490 | " FROM customer\n", 491 | " WHERE first_name GLOB '[AB]*' ; '''\n", 492 | "\n", 493 | "# Grab \n", 494 | "sql_to_df(query).head()" 495 | ] 496 | }, 497 | { 498 | "cell_type": "markdown", 499 | "metadata": {}, 500 | "source": [ 501 | "## SQL ORDER BY \n", 502 | "\n", 503 | "The ORDER BY keyword is used to sort the result-set by one or more columns. The ORDER BY keyword sorts the records in ascending order by default. To sort the records in a descending order, you can use the DESC keyword. The syntax is:\n", 504 | "\n", 505 | "SELECT column_name
\n", 506 | "FROM table_name
\n", 507 | "ORDER BY column_name ASC|DESC
\n", 508 | "\n", 509 | "Let's see it in action:" 510 | ] 511 | }, 512 | { 513 | "cell_type": "code", 514 | "execution_count": 24, 515 | "metadata": { 516 | "collapsed": false 517 | }, 518 | "outputs": [ 519 | { 520 | "data": { 521 | "text/html": [ 522 | "
\n", 523 | "\n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
0 505 1 RAFAEL ABNEY RAFAEL.ABNEY@sakilacustomer.org 510 1 2006-02-14 22:04:37.000 2011-09-14 18:10:42
1 504 1 NATHANIEL ADAM NATHANIEL.ADAM@sakilacustomer.org 509 1 2006-02-14 22:04:37.000 2011-09-14 18:10:42
2 36 2 KATHLEEN ADAMS KATHLEEN.ADAMS@sakilacustomer.org 40 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
3 96 1 DIANA ALEXANDER DIANA.ALEXANDER@sakilacustomer.org 100 1 2006-02-14 22:04:36.000 2011-09-14 18:10:30
4 470 1 GORDON ALLARD GORDON.ALLARD@sakilacustomer.org 475 1 2006-02-14 22:04:37.000 2011-09-14 18:10:41
\n", 601 | "
" 602 | ], 603 | "text/plain": [ 604 | " customer_id store_id first_name last_name \\\n", 605 | "0 505 1 RAFAEL ABNEY \n", 606 | "1 504 1 NATHANIEL ADAM \n", 607 | "2 36 2 KATHLEEN ADAMS \n", 608 | "3 96 1 DIANA ALEXANDER \n", 609 | "4 470 1 GORDON ALLARD \n", 610 | "\n", 611 | " email address_id active \\\n", 612 | "0 RAFAEL.ABNEY@sakilacustomer.org 510 1 \n", 613 | "1 NATHANIEL.ADAM@sakilacustomer.org 509 1 \n", 614 | "2 KATHLEEN.ADAMS@sakilacustomer.org 40 1 \n", 615 | "3 DIANA.ALEXANDER@sakilacustomer.org 100 1 \n", 616 | "4 GORDON.ALLARD@sakilacustomer.org 475 1 \n", 617 | "\n", 618 | " create_date last_update \n", 619 | "0 2006-02-14 22:04:37.000 2011-09-14 18:10:42 \n", 620 | "1 2006-02-14 22:04:37.000 2011-09-14 18:10:42 \n", 621 | "2 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 622 | "3 2006-02-14 22:04:36.000 2011-09-14 18:10:30 \n", 623 | "4 2006-02-14 22:04:37.000 2011-09-14 18:10:41 " 624 | ] 625 | }, 626 | "execution_count": 24, 627 | "metadata": {}, 628 | "output_type": "execute_result" 629 | } 630 | ], 631 | "source": [ 632 | "# Select all customers and order results by last name\n", 633 | "query = ''' SELECT *\n", 634 | " FROM customer\n", 635 | " ORDER BY last_name ; '''\n", 636 | "\n", 637 | "# Grab \n", 638 | "sql_to_df(query).head()" 639 | ] 640 | }, 641 | { 642 | "cell_type": "code", 643 | "execution_count": 25, 644 | "metadata": { 645 | "collapsed": false 646 | }, 647 | "outputs": [ 648 | { 649 | "data": { 650 | "text/html": [ 651 | "
\n", 652 | "\n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | "
customer_idstore_idfirst_namelast_nameemailaddress_idactivecreate_datelast_update
0 28 1 CYNTHIA YOUNG CYNTHIA.YOUNG@sakilacustomer.org 32 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
1 413 2 MARVIN YEE MARVIN.YEE@sakilacustomer.org 418 1 2006-02-14 22:04:37.000 2011-09-14 18:10:40
2 402 1 LUIS YANEZ LUIS.YANEZ@sakilacustomer.org 407 1 2006-02-14 22:04:37.000 2011-09-14 18:10:39
3 318 1 BRIAN WYMAN BRIAN.WYMAN@sakilacustomer.org 323 1 2006-02-14 22:04:37.000 2011-09-14 18:10:37
4 31 2 BRENDA WRIGHT BRENDA.WRIGHT@sakilacustomer.org 35 1 2006-02-14 22:04:36.000 2011-09-14 18:10:29
\n", 730 | "
" 731 | ], 732 | "text/plain": [ 733 | " customer_id store_id first_name last_name \\\n", 734 | "0 28 1 CYNTHIA YOUNG \n", 735 | "1 413 2 MARVIN YEE \n", 736 | "2 402 1 LUIS YANEZ \n", 737 | "3 318 1 BRIAN WYMAN \n", 738 | "4 31 2 BRENDA WRIGHT \n", 739 | "\n", 740 | " email address_id active \\\n", 741 | "0 CYNTHIA.YOUNG@sakilacustomer.org 32 1 \n", 742 | "1 MARVIN.YEE@sakilacustomer.org 418 1 \n", 743 | "2 LUIS.YANEZ@sakilacustomer.org 407 1 \n", 744 | "3 BRIAN.WYMAN@sakilacustomer.org 323 1 \n", 745 | "4 BRENDA.WRIGHT@sakilacustomer.org 35 1 \n", 746 | "\n", 747 | " create_date last_update \n", 748 | "0 2006-02-14 22:04:36.000 2011-09-14 18:10:29 \n", 749 | "1 2006-02-14 22:04:37.000 2011-09-14 18:10:40 \n", 750 | "2 2006-02-14 22:04:37.000 2011-09-14 18:10:39 \n", 751 | "3 2006-02-14 22:04:37.000 2011-09-14 18:10:37 \n", 752 | "4 2006-02-14 22:04:36.000 2011-09-14 18:10:29 " 753 | ] 754 | }, 755 | "execution_count": 25, 756 | "metadata": {}, 757 | "output_type": "execute_result" 758 | } 759 | ], 760 | "source": [ 761 | "# Select all customers and order results by last name, DESCENDING\n", 762 | "query = ''' SELECT *\n", 763 | " FROM customer\n", 764 | " ORDER BY last_name DESC; '''\n", 765 | "\n", 766 | "# Grab \n", 767 | "sql_to_df(query).head()" 768 | ] 769 | }, 770 | { 771 | "cell_type": "markdown", 772 | "metadata": {}, 773 | "source": [ 774 | "## SQL GROUP BY \n", 775 | "\n", 776 | "The GROUP BY statement is used with the aggregate functions to group the results by one or more columns. The syntax is:\n", 777 | "\n", 778 | "SELECT column_name, aggregate_function(column_name)
\n", 779 | "FROM table_name
\n", 780 | "WHERE column_name operator value
\n", 781 | "GROUP BY column_name; \n", 782 | "\n", 783 | "Let's see how it works." 784 | ] 785 | }, 786 | { 787 | "cell_type": "code", 788 | "execution_count": 29, 789 | "metadata": { 790 | "collapsed": false 791 | }, 792 | "outputs": [ 793 | { 794 | "data": { 795 | "text/html": [ 796 | "
\n", 797 | "\n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | "
store_idCOUNT(customer_id)
0 1 326
1 2 273
\n", 818 | "
" 819 | ], 820 | "text/plain": [ 821 | " store_id COUNT(customer_id)\n", 822 | "0 1 326\n", 823 | "1 2 273" 824 | ] 825 | }, 826 | "execution_count": 29, 827 | "metadata": {}, 828 | "output_type": "execute_result" 829 | } 830 | ], 831 | "source": [ 832 | "# Count the number of customers per store\n", 833 | "\n", 834 | "query = ''' SELECT store_id , COUNT(customer_id)\n", 835 | " FROM customer\n", 836 | " GROUP BY store_id; '''\n", 837 | "\n", 838 | "# Grab \n", 839 | "sql_to_df(query).head()" 840 | ] 841 | }, 842 | { 843 | "cell_type": "markdown", 844 | "metadata": {}, 845 | "source": [ 846 | "Good job! That's it for now!" 847 | ] 848 | }, 849 | { 850 | "cell_type": "code", 851 | "execution_count": null, 852 | "metadata": { 853 | "collapsed": true 854 | }, 855 | "outputs": [], 856 | "source": [] 857 | } 858 | ], 859 | "metadata": { 860 | "kernelspec": { 861 | "display_name": "Python 2", 862 | "language": "python", 863 | "name": "python2" 864 | }, 865 | "language_info": { 866 | "codemirror_mode": { 867 | "name": "ipython", 868 | "version": 2 869 | }, 870 | "file_extension": ".py", 871 | "mimetype": "text/x-python", 872 | "name": "python", 873 | "nbconvert_exporter": "python", 874 | "pygments_lexer": "ipython2", 875 | "version": "2.7.7" 876 | } 877 | }, 878 | "nbformat": 4, 879 | "nbformat_minor": 0 880 | } 881 | --------------------------------------------------------------------------------