sql >> Database teknologi >  >> RDS >> Mysql

Sådan opretter du en tabel i SQL – Postgres og MySQL Eksempelforespørgsel

At vide, hvordan man opretter tabeller i SQL er et vigtigt og grundlæggende begreb.

I denne vejledning vil jeg guide dig gennem SQL syntaks for CREATE TABLE sætning ved hjælp af kodeeksempler for både PostgreSQL og MySQL.

Grundlæggende OPRET TABEL Syntaks

Her er den grundlæggende syntaks for CREATE TABLE erklæring:

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
);

For den første del skal du starte med CREATE TABLE sætning efterfulgt af navnet på den tabel, du vil oprette.

Hvis jeg ville lave en tabel med lærerinformation, så ville jeg skrive sådan her:

CREATE TABLE teachers();

Inde i parentesen vil du tilføje oplysningerne til oprettelse af kolonnerne til tabellen. Hvis du glemmer parentesen, får du en fejlmeddelelse.

CREATE TABLE teachers;

Semikolonet i slutningen af ​​parentesen fortæller computeren, at det er slutningen af ​​SQL udmelding. Du vil nogle gange høre dette omtalt som en erklæringsafslutning.

Hvad er MySQL lagermotorer?

I henhold til MySQL dokumentation:

Lagringsmotorer er MySQL-komponenter, der håndterer SQL-operationerne for forskellige tabeltyper.

MySQL bruger disse lagringsmotorer til at udføre CRUD-operationer (oprette, læse, opdatere og slette) på databasen.

I MySQL , har du mulighed for at angive den type lagermotor, du vil bruge til dit bord. Hvis du udelader ENGINE klausul, så vil standarden være InnoDB.

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
)ENGINE=storage_engine;

Hvad er HVIS IKKE FINDER klausul?

Der er en valgfri klausul kaldet IF NOT EXISTS der vil kontrollere, om den tabel, du vil oprette, allerede findes i databasen. Du kan placere denne klausul lige før tabelnavnet.

CREATE TABLE IF NOT EXISTS teachers();

Hvis tabellen allerede eksisterer, vil computeren ikke oprette en ny tabel.

Hvis du udelader HVIS IKKE FINDER klausul og prøv at oprette en tabel, der allerede findes i databasen, så får du en fejlmeddelelse.

I dette eksempel oprettede jeg først en tabel kaldet lærere. Men hvis jeg prøver at oprette den samme tabel i den næste kommando, vil jeg løbe ind i en fejl.

CREATE TABLE IF NOT EXISTS teachers();
CREATE TABLE teachers();

Sådan opretter du kolonner i tabellen

Inde i parentesen for CREATE TABLE sætning, vil du liste navnene på de kolonner, du vil oprette, sammen med deres datatyper og begrænsninger.

Dette er et eksempel på, hvordan vi kan tilføje fire kolonner af school_id , navn , e-mail og alder til vores lærerbord. Hvert kolonnenavn skal adskilles med kommaer.

CREATE TABLE teachers(
	school_id data_type column_constraint, 
	name data_type column_constraint,
    email data_type column_constraint, 
	age data_type column_constraint
);

I henhold til MySQL dokumentation:

MySQL har en hård grænse på 4096 kolonner pr. tabel, men det effektive maksimum kan være mindre for en given tabel. Den nøjagtige kolonnegrænse afhænger af flere faktorer.

Hvis du arbejder på mindre MySQL personlige projekter, så behøver du sandsynligvis ikke bekymre dig om at overskride antallet af kolonner til dine tabeller.

Ifølge PostgreSQL-dokumentationen er der en grænse på 1600 kolonner pr. tabel. Svarende til MySQL , kan en nøjagtig grænse variere afhængigt af diskplads eller ydeevnebegrænsninger.

Datatyper i SQL

Når du opretter kolonner i tabellen, skal du tildele den en datatype. Datatyper beskriver typen af ​​værdi inde i kolonnerne.

Her er seks populære kategorier af datatyper i SQL :

  1. Numerisk (int, float, seriel, decimal osv.)
  2. Data og tid (tidsstempel, data, tid osv.)
  3. Tegn og streng (char, varchar, tekst osv.)
  4. Unicode (ntext, nvarchar osv.)
  5. Binær (binær osv.)
  6. Diverse (xml, tabel osv.)

Denne artikel vil ikke gennemgå hver enkelt datatype, men vil dække nogle af de populære.

Her er den komplette liste over PostgreSQL datatyper og MySQL datatyper.

Hvad er SERIAL og AUTO_INCREMENT ?

I PostgreSQL , en SERIAL datatype er et heltal, der automatisk vil stige med én for hver ny række, der oprettes.

Vi kan tilføje SERIAL lige efter school_id kolonne i vores lærertabel.

school_id SERIAL

I MySQL , ville du bruge AUTO_INCREMENT i stedet for SERIAL . I dette eksempel er INT der bruges datatype, som repræsenterer et heltal.

school_id INT AUTO_INCREMENT

Hvis vi tilføjede fem rækker til vores lærertabel, ville outputtet vise tallene 1, 2, 3, 4, 5 for school_id kolonne, fordi heltal automatisk øges med én for hver ny række.

Hvad er VARCHAR datatype?

En VARCHAR datatype er en variabel strenglængde, hvor du kan indstille en maksimal tegnlængde.

Dette er et eksempel på brug af VARCHAR datatype for navn og e-mail kolonner i vores lærertabel. Tallet 30 er den maksimale tegnlængde.

name VARCHAR(30) column_constraint,
email VARCHAR(30) column_constraint,

Kolonnebegrænsninger i SQL

Dette er regler, der anvendes på dataene inde i tabelkolonnerne.

Her er en liste over nogle af de mere almindelige kolonnebegrænsninger:

  • PRIMÆR NØGLE - denne nøgle fungerer som en unik identifikator for tabellen
  • FREIGN KEY - denne nøgle sørger for, at værdierne i en kolonne også er til stede i en anden tabel. Dette fungerer som et link mellem tabeller.
  • UNIQUE - alle værdierne i kolonnen skal være unikke
  • IKKE NULL - værdierne kan ikke være NULL. NULL er fraværet af en værdi
  • CHECK - tester en værdi mod et boolesk udtryk

Eksempler på PRIMARY og FREIGN nøgler

I vores lærertabel kan vi tilføje en PRIMÆR NØGLE til school_id kolonne.

Sådan vil koden se ud i PostgreSQL:

 school_id SERIAL PRIMARY KEY

Sådan vil koden se ud i MySQL:

school_id INT AUTO_INCREMENT PRIMARY KEY

Hvis du vil have mere end én kolonne for PRIMARY KEY , så tilføjer du det lige efter dine kolonneoprettelser.

CREATE TABLE table_name(
	column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc
    PRIMARY KEY (column1, column2)
);

Hvis du vil linke en tabel til en anden, kan du bruge en FREIGN KEY .

Lad os sige, at vi havde en tabel kaldet district_employees med en primærnøgle district_id . Her er, hvordan koden ville se ud i PostgreSQL:

CREATE TABLE district_employees(
   district_id SERIAL PRIMARY KEY,
   employee_name VARCHAR(30) NOT NULL,
   PRIMARY KEY(district_id)
);

I vores lærertabel kan vi bruge en fremmednøgle og henvise til tabellen district_employees.

district_id INT REFERENCES district_employees(district_id),
CREATE TABLE teachers(
    school_id SERIAL PRIMARY KEY,
    district_id INT REFERENCES district_employees(district_id),
    column1 data_type column_constraint,
    column2 data_type column_constraint,
    column3 data_type column_constraint,
    column4 data_type column_constraint,
    ... etc 
);

Eksempler på IKKE NULL , TJEK og UNIQUE

Hvis vi vil sikre, at vi ikke har nogen værdier, der er null, kan vi bruge NOT NULL begrænsning.

name VARCHAR(30) NOT NULL

Vi kan bruge CHECK begrænsning for at sikre, at alle vores lærere er 18 år og derover. CHECK constraint tester en værdi mod et boolesk udtryk.

age INT CHECK(age >= 18)

Hvis en af ​​vores værdier ikke opfylder denne betingelse, får vi en fejlmeddelelse.

Vi kan bruge UNIQUE begrænsning for at sikre, at alle e-mails er unikke.

email VARCHAR(30) UNIQUE

Dette er det endelige resultat for lærertabellen:

Sådan vil koden se ud i PostgreSQL:

CREATE TABLE teachers(
	school_id SERIAL PRIMARY KEY,
	name VARCHAR(30) NOT NULL,
    email VARCHAR(30) UNIQUE,
	age INT CHECK(age >= 18)      
);

Sådan vil koden se ud i MySQL:

CREATE TABLE teachers(
	school_id INT AUTO_INCREMENT PRIMARY KEY,
	name VARCHAR(30) NOT NULL,
    email VARCHAR(30) UNIQUE,
	age INT CHECK(age >= 18)      
);

Jeg håber, du nød denne artikel og held og lykke på din SQL-rejse.



  1. Bring Your Own Cloud (BYOC) vs. dedikeret hosting hos ScaleGrid

  2. Migrering fra MSSQL til PostgreSQL - hvad du bør vide

  3. Reverse Engineering en MySQL-database ved hjælp af MySQL Workbench

  4. Hvordan Atand() virker i PostgreSQL