Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да създадете таблица в SQL – Примерна заявка за Postgres и MySQL

Да знаете как да създавате таблици в SQL е важна и фундаментална концепция.

В този урок ще ви преведа през SQL синтаксис за CREATE TABLE израз, използващ примери за код за PostgreSQL и MySQL.

Основни CREATE TABLE Синтаксис

Ето основния синтаксис за CREATE TABLE изявление:

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
);

За първата част трябва да започнете с CREATE TABLE оператор, последван от името на таблицата, която искате да създадете.

Ако исках да създам таблица с информация за учители, тогава бих написал нещо подобно:

CREATE TABLE teachers();

В скоби ще добавите информацията за създаване на колоните за таблицата. Ако забравите скобите, ще получите съобщение за грешка.

CREATE TABLE teachers;

Точката и запетаята в края на скобите казва на компютъра, че е краят на SQL изявление. Понякога ще чуете това да се нарича терминатор на изявление.

Какво представляват MySQL двигатели за съхранение?

Според MySQL документация:

Двигателите за съхранение са MySQL компоненти, които обработват SQL операциите за различни типове таблици.

MySQL използва тези машини за съхранение, за да изпълнява CRUD (създаване, четене, актуализиране и изтриване) операции в базата данни.

В MySQL , имате опцията да посочите типа машина за съхранение, която искате да използвате за вашата таблица. Ако пропуснете ENGINE клауза, тогава по подразбиране ще бъде 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;

Какво е IF NOT EXISTS клауза?

Има незадължителна клауза, наречена IF NOT EXISTS това ще провери дали таблицата, която искате да създадете, вече съществува в базата данни. Можете да поставите тази клауза точно преди името на таблицата.

CREATE TABLE IF NOT EXISTS teachers();

Ако таблицата вече съществува, тогава компютърът няма да създаде нова таблица.

Ако пропуснете IF NOT EXISTS клауза и опитайте да създадете таблица, която вече съществува в базата данни, тогава ще получите съобщение за грешка.

В този пример първо създадох таблица, наречена учители. Но ако се опитам да създам същата таблица в следващата команда, ще се сблъскам с грешка.

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

Как да създадете колони в таблицата

В скобите за CREATE TABLE изявление, ще изброите имената на колоните, които искате да създадете, заедно с техните типове данни и ограничения.

Това е пример за това как можем да добавим четири колони от school_id , name , email и age на масата на нашите учители. Всяко име на колона трябва да бъде разделено със запетаи.

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

Според MySQL документация:

MySQL има твърдо ограничение от 4096 колони на таблица, но ефективният максимум може да е по-малък за дадена таблица. Точното ограничение на колоната зависи от няколко фактора.

Ако работите върху по-малък MySQL лични проекти, тогава вероятно няма да се налага да се притеснявате за превишаване на броя на колоните за вашите таблици.

Според документацията на PostgreSQL има ограничение от 1600 колони на таблица. Подобно на MySQL , точното ограничение може да варира в зависимост от дисковото пространство или ограниченията на производителността.

Типове данни в SQL

Когато създавате колони в таблицата, трябва да й присвоите тип данни. Типовете данни описват типа стойност вътре в колоните.

Ето шест популярни категории типове данни в SQL :

  1. Числови (int, float, сериен, десетичен и др.)
  2. Данни и време (марка за време, данни, време и т.н.)
  3. Символ и низ (char, varchar, текст и т.н.)
  4. Unicode (ntext, nvarchar и др.)
  5. Двоично (двоично и др.)
  6. Разни (xml, таблица и др.)

Тази статия няма да премине през всеки отделен тип данни, но ще обхване някои от популярните.

Ето пълния списък на PostgreSQL типове данни и MySQL типове данни.

Какво е SERIAL и AUTO_INCREMENT ?

В PostgreSQL , SERIAL Типът данни е цяло число, което автоматично ще се увеличава с едно за всеки нов ред, който се създава.

Можем да добавим SERIAL веднага след school_id колона в нашата таблица за учители.

school_id SERIAL

В MySQL , ще използвате AUTO_INCREMENT вместо SERIAL . В този пример, INT използва се тип данни, който представлява цяло число.

school_id INT AUTO_INCREMENT

Ако добавим пет реда към нашата таблица за учители, изходът ще покаже числата от 1, 2, 3, 4, 5 за school_id колона, защото цялото число автоматично се увеличава с едно за всеки нов ред.

Какво е VARCHAR тип данни?

A VARCHAR Типът данни е променлива дължина на низа, където можете да зададете максимална дължина на символа.

Това е пример за използване на VARCHAR тип данни за name и email колони в нашата таблица за учители. Числото 30 е максималната дължина на знака.

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

Ограничения за колони в SQL

Това са правила, които се прилагат към данните в колоните на таблицата.

Ето списък на някои от най-често срещаните ограничения за колони:

  • ПЪРВИЧЕН КЛЮЧ – този ключ служи като уникален идентификатор за таблицата
  • ВЪНШЕН КЛЮЧ – този ключ гарантира, че стойностите в колона присъстват и в друга таблица. Това служи като връзка между таблиците.
  • УНИКАЛНО – всички стойности в колоната трябва да са уникални
  • NOT NULL – стойностите не могат да бъдат NULL. NULL е липсата на стойност
  • CHECK – тества стойност спрямо булев израз

Примери за PRIMARY и FOREIGN ключове

В нашата таблица за учители можем да добавим PRIMARY KEY към school_id колона.

Ето как би изглеждал кодът в PostgreSQL:

 school_id SERIAL PRIMARY KEY

Ето как би изглеждал кодът в MySQL:

school_id INT AUTO_INCREMENT PRIMARY KEY

Ако искате да имате повече от една колона за PRIMARY KEY , тогава бихте го добавили веднага след създаването на колони.

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)
);

Ако искате да свържете една таблица с друга, можете да използвате FOREIGN KEY .

Да приемем, че имаме таблица, наречена district_employees с първичен ключ district_id . Ето как би изглеждал кодът в PostgreSQL:

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

В нашата таблица за учители можем да използваме външен ключ и да препращаме към таблицата 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 
);

Примери за NOT NULL , CHECK и UNIQUE

Ако искаме да гарантираме, че нямаме стойности, които са нулеви, можем да използваме NOT NULL ограничение.

name VARCHAR(30) NOT NULL

Можем да използваме CHECK ограничение, за да гарантираме, че всички наши учители са на 18 и повече години. CHECK ограничението тества стойност спрямо булев израз.

age INT CHECK(age >= 18)

Ако една от нашите стойности не отговаря на това условие, ще получим съобщение за грешка.

Можем да използваме UNIQUE ограничение, за да се уверите, че всички имейли са уникални.

email VARCHAR(30) UNIQUE

Това е крайният резултат за таблицата на учителите:

Ето как би изглеждал кодът в PostgreSQL:

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

Ето как би изглеждал кодът в 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)      
);

Надявам се, че ви е харесала тази статия и пожелавам успех на вашето SQL пътуване.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MAX() – Намерете максималната стойност в колона в MySQL

  2. Работни натоварвания на хибридна OLTP/аналитична база данни:репликиране на MySQL данни към ClickHouse

  3. Синтаксис на SQL INSERT – изброен от СУБД

  4. Изчислете процентил в MySQL въз основа на общите суми

  5. Моите MySQL сървърни връзки криптирани и безопасни ли са?