# LearnSQL
## Table of Content
### Basic Theory
- [Data Types](./Notes/DataTypes.md)
- [CRUD](./Notes/CRUD.md)
- [Query](./Notes/Query.md)
- [Filtering](./Notes/Filtering.md)
- [Joins](./Notes/Joins.md)
- [Sets](./Notes/Sets.md)
- [Data Generation, Conversion](./Notes/DataGenerationConversion.md)
- [Grouping and Aggregates](./Notes/GroupingAggregation.md)
- [Subquery](./Notes/Subquery.md)
- [Locking](./Notes/Locking.md)
- [Storage Engine](./Notes/StorageEngine.md)
- [Transactions](./Notes/Transactions.md)
- [Indexes](Notes/Indexes.md)
- [Constraints](./Notes/Constraints.md)
- [Views](./Notes/Views.md)
- [Metadata](./Notes/Metadata.md)
## Sample Code
[Common Usage](./Notes/common-usage.md)
[Working With Pandas](./Notes/pandas.ipynb)
[Working With SQLAlchemy](./Notes/sqlalchemy.ipynb)
## SQLAlchemy (ORM)
[SQLAlchemy](https://www.sqlalchemy.org/)
> The SQLAlchemy Object Relational Mapper presents a method of associating user-defined Python classes with database tables, and instances of those classes (objects) with rows in their corresponding tables.
> It includes a system that transparently synchronizes all changes in state between objects and their related rows, called a unit of work, as well as a system for expressing database queries in terms of the user defined classes and their defined relationships between each other. [-SQLAlchemy](https://docs.sqlalchemy.org/en/13/orm/tutorial.html)
## Reference
- Learning SQL by Alan Beaulieu