Overview
The drivers and constructors tables contain biographical and identifying information about the participants in Formula 1 races. These tables remain relatively static, with new entries added as new drivers and teams join the sport.drivers.csv
Comprehensive information about every driver who has participated in Formula 1.Schema
Unique identifier for each driver. Primary key.Example:
1Short reference name for the driver (URL-friendly, usually surname).Example:
"hamilton"The driver’s permanent car number (introduced in 2014). May be
\N for older drivers or drivers without a permanent number.Example: 44Three-letter driver code (e.g., HAM, VER, LEC). May be
\N for drivers who raced before codes were introduced.Example: "HAM"Driver’s first name.Example:
"Lewis"Driver’s last name.Example:
"Hamilton"Driver’s date of birth in YYYY-MM-DD format.Example:
"1985-01-07"Driver’s nationality.Example:
"British"Wikipedia URL for the driver’s biography.Example:
"http://en.wikipedia.org/wiki/Lewis_Hamilton"Sample Data
| driverId | driverRef | number | code | forename | surname | dob | nationality |
|---|---|---|---|---|---|---|---|
| 1 | hamilton | 44 | HAM | Lewis | Hamilton | 1985-01-07 | British |
| 2 | heidfeld | \N | HEI | Nick | Heidfeld | 1977-05-10 | German |
| 3 | rosberg | 6 | ROS | Nico | Rosberg | 1985-06-27 | German |
| 4 | alonso | 14 | ALO | Fernando | Alonso | 1981-07-29 | Spanish |
Historical Context
Permanent Numbers: The permanent driver number system was introduced in 2014. Drivers who raced before this era have
\N for the number field.Three-Letter Codes: Driver codes (HAM, VER, etc.) were introduced in the 2010s. Historical drivers may have codes assigned retroactively or may have
\N.Multiple Nationalities: Some drivers have represented different nationalities during their careers due to geopolitical changes or dual citizenship. The dataset typically uses their most recent or primary nationality.
Example Queries
Get All British Drivers
Calculate Driver Age at First Race
constructors.csv
Information about Formula 1 constructors (teams) throughout history.Schema
Unique identifier for each constructor. Primary key.Example:
1Short reference name for the constructor (URL-friendly).Example:
"mclaren"Full official name of the constructor.Example:
"McLaren"Nationality of the constructor.Example:
"British"Wikipedia URL for the constructor.Example:
"http://en.wikipedia.org/wiki/McLaren"Sample Data
| constructorId | constructorRef | name | nationality |
|---|---|---|---|
| 1 | mclaren | McLaren | British |
| 2 | bmw_sauber | BMW Sauber | German |
| 3 | williams | Williams | British |
| 4 | renault | Renault | French |
Historical Context
Team Name Changes: Many constructors have changed names over the years (e.g., Sauber → Alfa Romeo → Sauber). Each distinct entity typically has its own
constructorId.Manufacturer Teams vs. Customer Teams: The dataset includes both factory/manufacturer teams (Ferrari, Mercedes) and customer teams (Racing Point, Haas) without explicit distinction.
Historic Teams: The dataset includes all constructors from 1950 onwards, including teams that only competed for a single season.
Example Queries
Get All Italian Constructors
Count Races by Constructor
Relationships with Other Tables
Driver Relationships
Constructor Relationships
Combined Query Example: Driver-Constructor Combinations
Data Usage Tips
Full Names: Combine
forename and surname fields to get the driver’s full name. Some applications also use code for compact displays.Unique Identifiers: Always use
driverId and constructorId for joins. The driverRef and constructorRef fields are human-readable but not guaranteed to be immutable.Missing Codes: When working with historical data, handle
\N values gracefully for number and code fields.