# Kysely > wine_stock_change: WineStockChangeTable ## Pages - [A single column](a-single-column.md): Select a single column: - [Aliased inner join](aliased-inner-join.md): You can give an alias for the joined table like this: - [Aliases](aliases.md): You can give an alias for selections and tables by appending`as the_alias`to the name: - [All columns of a table](all-columns-of-a-table.md): Select all columns of a table: - [All columns](all-columns.md): The`selectAll`method generates`SELECT *`: - [Browser](browser.md): Kysely also runs in the browser. Here's a minimal example: - [Column with a table](column-with-a-table.md): Select a single column and specify a table: - [Complex join](complex-join.md): You can provide a function as the second argument to get a join builder for creating more complex joins. The join bui... - [Complex selections](complex-selections.md): You can select arbitrary expression including subqueries and raw sql snippets. When you do that, you need to give a n... - [Complex values](complex-values.md): In addition to primitives, the values can also be arbitrary expressions. You can build the expressions by using a cal... - [Complex where clause](complex-where-clause.md): For complex`where`expressions you can pass in a single callback and use the`ExpressionBuilder`to build your expre... - [Conditional selects](conditional-selects.md): Sometimes you may want to select some fields based on a runtime condition. Something like this: - [Conditional where calls](conditional-where-calls.md): You can add expressions conditionally like this: - [Controlled transaction /w savepoints](controlled-transaction-w-savepoints.md): A controlled transaction allows you to commit and rollback manually, execute savepoint commands, and queries in general. - [Controlled transaction](controlled-transaction.md): A controlled transaction allows you to commit and rollback manually, execute savepoint commands, and queries in general. - [Data types](data-types.md): When talking about data types in Kysely we need to make a distinction between the two kinds of types: - [Deduplicate joins](deduplicate-joins.md): When building dynamic queries, you sometimes end up in situations where the same join could be added twice. Consider ... - [Running on Deno](deno.md): Kysely doesn't include drivers for Deno, but you can still use Kysely as a query builder or implement your own driver: - [Dialects](dialects.md): A dialect is the glue between Kysely and the underlying database engine. Check the [API docs](https://kysely-org.gith... - [Distinct on](distinct-on.md): import type { - [Distinct](distinct.md): import type { - [Dealing with the `Type instantiation is excessively deep and possibly infinite` error](excessively-deep-types.md): Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much for TypeScript and y... - [Execution flow](execution.md): The following page gives a **simplified** overview of Kysely's execution flow, from query building to querying the da... - [Expressions](expressions.md): An [`Expression`](https://kysely-org.github.io/kysely-apidoc/interfaces/Expression.html) is the basic type-safe qu... - [Extending kysely](extending-kysely.md): In many cases, Kysely doesn't provide a built-in type-safe method for a feature. It's often because adding that featu... - [Function calls](function-calls.md): This example shows how to create function calls. These examples also work in any other place (`where`calls, updates,... - [Generating types](generating-types.md): To work with Kysely, you're required to provide a database schema type definition to the Kysely constructor. - [Generic find query](generic-find-query.md): A generic type-safe helper function for finding a row by a column value: - [Getting started](getting-started.md): * [TypeScript](https://www.typescriptlang.org/) - [Index](index.md): Kysely's state-of-the-art, type-safe API provides precise result types and catches errors within queries at compile-t... - [Insert subquery](insert-subquery.md): You can create an`INSERT INTO SELECT FROM`query using the`expression`method. This API doesn't follow our WYSIWYG ... - [Inserts, updates and deletions](inserts-updates-and-deletions.md): Some databases like postgres also allow you to run other queries than selects in CTEs. On these databases CTEs are ex... - [Introduction](intro.md): Kysely (pronounced “Key-Seh-Lee”) is a type-safe and autocompletion-friendly TypeScript SQL query builder. Inspired b... - [Introspecting relation metadata](introspecting-relation-metadata.md): Extracting metadata about tables and views from your database schema in runtime is possible using the methods in the ... - [LLMs](llms.md): Kysely provides LLM-friendly documentation to help AI tools like **Cursor**, **Windsurf**, **GitHub Copilot**, **Chat... - [Logging](logging.md): It is possible to set up logs for all queries using the`log`property when instantiating`Kysely`. - [Migrations](migrations.md): Migration files should look like this: - [Multiple columns](multiple-columns.md): Select multiple columns: - [Multiple rows](multiple-rows.md): On dialects that support it (for example PostgreSQL) you can insert multiple rows by providing an array. Note that th... - [MySQL joins](my-sql-joins.md): MySQL allows you to join tables directly to the "main" table and update rows of all joined tables. This is possible b... - [Nested array](nested-array.md): While kysely is not an ORM and it doesn't have the concept of relations, we do provide helpers for fetching nested ob... - [Nested object](nested-object.md): While kysely is not an ORM and it doesn't have the concept of relations, we do provide helpers for fetching nested ob... - [Not null](not-null.md): Sometimes you can be sure something's not null, but Kysely isn't able to infer it. For example calling`where('last_n... - [Object filter](object-filter.md): You can use the`and`function to create a simple equality filter using an object - [OR where](or-where.md): To combine conditions using`OR`, you can use the expression builder. There are two ways to create`OR`expressions. ... - [Playground](playground.md): [@wirekang](https://github.com/wirekang) has created a [playground for Kysely](https://kyse.link). You can use it to ... - [Plugin system](plugins.md): Plugins are classes that implement [KyselyPlugin](https://kysely-org.github.io/kysely-apidoc/interfaces/KyselyPlugin.... - [Raw SQL](raw-sql.md): You can execute raw SQL strings and pass raw SQL snippets to pretty much any method or function using the [sql templa... - [Relations](relations.md): Phew, glad we got that out the way.. - [Returning data](returning-data.md): On supported dialects like PostgreSQL you need to chain`returning`to the query to get the inserted row's columns (o... - [Reusable helpers](reusable-helpers.md): info - [Working with schemas](schemas.md): First of all, when we talk about schemas in this document, we mean custom schemas like [postgres schemas](https://www... - [Search the documentation](search.md): Search - [Simple inner join](simple-inner-join.md): Simple`inner join`s can be done by providing a table name and two columns to join: - [Simple selects](simple-selects.md): Common table expressions (CTE) are a great way to modularize complex queries. Essentially they allow you to run multi... - [Simple transaction](simple-transaction.md): This example inserts two rows in a transaction. If an exception is thrown inside the callback passed to the`execute`... - [Simple where clause](simple-where-clause.md): `where`method calls are combined with`AND`: - [Single row](single-row.md): Delete a single row: - [Source row existence](source-row-existence.md): Update a target column based on the existence of a source row: - [Splitting query building and execution](splitting-query-building-and-execution.md): Kysely is primarily a type-safe sql query builder. - [Subquery join](subquery-join.md): You can join a subquery by providing two callbacks: - [Supabase](supabase.md): Supabase is an open-source Firebase alternative that provides a suite of tools for building applications. At the core... - [Temporary changes table](temporary-changes-table.md): Merge new entries from a temporary changes table: - [Where in](where-in.md): Find multiple items using a list of identifiers: