Sql: A First Look

March 11, 2024

Overview

Although unorthodox, my experience working with databases began using NoSQL databases. Namely, when I created my first-ever website, it was quite a complex app. Nonetheless, MongoDB served me well. However, one can't be a computer scientist and not know about SQL. SQL, as a language, is not very relevant anymore, due to the abstractions provided by ORMs like Prisma. Therefore, I'll be focusing on the general concepts of SQL.

SQL operates within a CRUD paradigm, where the only operations that occur on the database are Creating, Reading, Updating, and Deleting data. Data is stored in tables of rows and columns, where columns describe the values in the rows. SQL enables efficient manipulation and retrieval of data using various commands and operators.

Schemas

Tables in SQL can reference each other using PRIMARY KEY and FOREIGN KEY constraints to establish one-to-one, one-to-many, or many-to-many relationships. These relationships help maintain data integrity and facilitate complex data modeling and querying. SQL schemas, akin to their NoSQL counterparts, provide a blueprint for how a table should look. They define tables, columns, data types, constraints, relationships, and other properties that structure the database. SQL schemas are rigid, ensuring consistency and data integrity across the database.

Transactions

Transactions in SQL provide a mechanism for grouping multiple database operations into a single, indivisible unit of work. This ensures atomicity, consistency, isolation, and durability (ACID properties) of database transactions, especially crucial for large-scale real-world applications. SQL transactions help prevent race conditions and guarantee data consistency and integrity, even in highly concurrent environments.

Indexes

Indexes in SQL are data structures that enhance the performance of database operations, particularly querying using SELECT statements. Without indexes, the database management system would need to scan the entire table rows to find a value, resulting in slow query performance. Indexes work by creating additional tree data structures, trading off space complexity for improved time complexity. However, indexing requires regular maintenance to avoid index fragmentation, which can lead to inefficient use of disk storage and degraded performance.

Conclusion

In summary, SQL is a powerful language for managing and manipulating relational databases, offering robust features for data modeling, querying, and transaction management. Understanding SQL concepts such as schemas, transactions, and indexing is essential for building efficient and scalable database systems.

CS50 SQL