mysql create table tutorial with examples
В този урок ще изследваме използването на командата MySQL CREATE TABLE със синтаксис и примери за програмиране:
Операторът CREATE TABLE е част от DDL (език за дефиниране на данни) на SQL.
Ще обсъдим начините, по които можете да СЪЗДАДЕТЕ таблица в дадена база данни, да споменете имена на колони и DB механизъм, докато създавате таблицата, заедно с правилата около конвенциите за именуване на SQL таблици.
Какво ще научите:
- Предварителни условия
- Команда MySQL CREATE TABLE
- Заключение
Предварителни условия
Предпоставката за изпълнение на някоя от SQL командите ще бъде изтеглянето на MySQL сървъра. Безплатното издание на общността може да бъде изтеглено тук.
Също така ще използваме MySQL Workbench SQL Client за всички примери и дискусии в този урок. Може да се изтегли безплатното издание на общността на MySQL Workbench тук (можете да изберете версията в зависимост от операционната система, върху която работите).
В случай, че не искате да използвате MySQL Workbench - можете също да използвате клиента на командния ред MySQL, който се предлага с инсталацията по подразбиране на MySQL Server.
Команда MySQL CREATE TABLE
Командата CREATE TABLE е част от набора от команди DDL (Data Definition Language) в MySQL и позволява на потребителя да създаде нова таблица за дадената база данни.
Забележка: Командата CREATE TABLE съществува за почти всички релационни бази данни - като MySQL, Postgres, SQL Server и т.н.
MySQL CREATE TABLE Синтаксис
В най-простата форма можете да използвате командата CREATE TABLE само с основните опции, т.е. име на таблица и дефиниции на колони.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... );
Нека разберем детайлно синтаксисните аргументи:
- tableName: Това трябва да е името на таблицата, която се опитвате да създадете. Трябва да е напълно квалифицирано име (в случай, че нямате набор от бази данни по подразбиране). Например, databaseName.tableName
Името на таблицата може да бъде посочено без кавички или със символ за обратно отбелязване като `tableName` и` databaseName`.`tableName` - Определение на колона: Таблица в SQL трябва да се състои от поне една колона. Всички дефиниции на колони трябва да се състоят от име_на колона, както и тип данни на колоната. По желание можете да включите и другите свойства на колоната като първичен ключ, null, not null и т.н.
Нека да видим пример за използване на горния синтаксис за създаване на таблица.
Ще създадем таблица с име EMPLOYEE_DETAILS (в базата данни - SAMPLE_DB) с колони
- име: varchar (100)
- възраст: инт
- адрес: varchar (100)
CREATE TABLE SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) );
Дадено по-долу ще бъде резултатът от създаването на таблицата:
Забележка:
# 1) Забележете използването на (IF NOT EXISTS) незадължителната команда в горния синтаксис.
Обикновено се препоръчва да се използва тази команда, тъй като ще се избегне генериране на грешка, ако таблицата, която се опитваме да създадем, вече присъства в базата данни.
Ето пример за използване със и без АКО НЕ СЪЩЕСТВУВА.
- Без IF NOT EXISTS би генерирало грешка, ако таблицата вече съществува.
- С IF NOT EXISTS няма да генерира грешка. Той обаче ще покаже предупреждение, че таблицата вече съществува.
# 2) ‘tableName’, докато използвате командата CREATE TABLE, трябва да бъде напълно квалифициран с име на база данни, т.е. начинът, по който сме го използвали, е SAMPLE_DB.employee_details
Другите начини за определяне на името на таблицата са настройването на текущата база данни с помощта на командата ‘USE’. E.g. ИЗПОЛЗВАЙТЕ SAMPLE_DB; и след това изпълнява / използва само името на таблицата вместо напълно квалифицираното име на таблицата.
СЪЗДАЙТЕ ТАБЛИЦА с опции за таблица
Опциите на таблицата се използват, за да се оптимизира поведението на таблиците MySQL. Те могат да бъдат приложени при създаване на таблица с помощта на командата MySQL CREATE TABLE (или по-късно чрез командата ALTER TABLE).
Синтаксисът остава същият с допълнителни опции за таблица, които могат да бъдат посочени.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ) (table “” not found /)
;
Ще обсъдим най-често използваните опции по-долу (Пълен списък с опции за таблици може да бъде намерен тук ).
# 1) ДВИГАТЕЛ
Използва се за задаване на механизма за съхранение на таблицата, т.е. стойността по подразбиране е InnoDB. Това не се изисква да се променя, освен ако няма нужда от някакъв специфичен механизъм за съхранение. Другите валидни стойности за механизмите за съхранение са MEMORY, CSV, HEAP и др.
Синтаксисът за посочване на ENGINE като част от MySQL CREATE TABLE е даден по-долу.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )ENGINE='MEMORY';
# 2) AUTO_INCREMENT
Тази опция се използва за задаване на първоначалната стойност AUTO_INCREMENT на таблицата, т.е. Стойността по подразбиране е 1, но можете да замените с всяка друга положителна цяло число.
Забележка: AUTO_INCREMENT може да бъде посочен само за една колона в таблицата и той трябва да бъде първичният ключ. Нека да видим пример за задаване на автоматично увеличаване като 10 и вмъкване на запис за проверка, ако автоматичното увеличаване е зададено правилно.
Използваме същата таблица worker_details (уверете се, че сте пуснали съществуващата таблица, преди да изпълните тази команда) с допълнително поле за идентификация, маркирано като първичен ключ.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details( id int not null AUTO_INCREMENT primary key, name varchar(100), age int, address varchar(100) )AUTO_INCREMENT=10;
Нека да вмъкнем ред без никаква стойност за ID и да се уверим, че стойностите се вмъкват от стойността, започваща 10.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details;
# 3) КОНТРОЛНА СУМА
Това трябва да бъде настроено на 1, ако искате да имате контролна сума за цялата съхранена таблица. Обикновено се използва, за да се гарантира, че няма повредени таблици.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1;
CHECKSUM поддържа текуща контролна сума на цялата таблица по време на всякакви вмъквания или актуализации
СЪЗДАЙТЕ ТАБЛИЦА с подробности за разделяне
Можем също да споменем дефинираното от потребителя разделяне, ако е необходимо, използвайки опциите за разделяне.
Разделянето като концепция се използва широко за разпространение на съдържанието на таблиците във файловата система, за да се осигури по-бързо време за достъп и оптимизирани заявки. Разделянето разделя голяма таблица на по-малки таблици в зависимост от зададените стратегии или ключове за разделяне.
Нека да видим как можем да посочим подробности за разделяне с командата MySQL CREATE TABLE.
Ще използваме примерната таблица staff_details и ще добавим нова цялостна колона с име department_id, която ще се използва като хеш ключ на дяла, за да има равномерно разпределение на данните.
Също така посочването на броя на дяловете би посочило колко действителни дяла ще бъдат създадени (в случая 4). Ако не е посочено, тогава по подразбиране ще има само 1 дял.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int )PARTITION BY HASH (department_id) PARTITIONS 4;
Забележка: Обикновено ключът, който ще се използва за създаване на дялове, ще зависи от очакваните модели на достъп, които ще бъдат използвани за таблицата. В този случай, да предположим, че бихме искали таблицата на базата на идентификатор на отдел през повечето време, тогава има смисъл да има отдел_отделен като част от хеш ключа.
Клониране и копиране на таблици в MySQL
Понякога може да искате да създадете клонинг на съществуваща таблица или да копирате съдържанието от една таблица в друга таблица. MySQL поддържа 2 начина да постигнете това, както е показано по-долу.
- Използване на команда LIKE
- Използване на командата SELECT
Клониране на таблица с помощта на LIKE COMMAND
С командата LIKE можете да създадете нова таблица с точно същите имена и свойства на колони като съществуващите таблици.
Ето синтаксиса с помощта на LIKE Command.
вид грешки при тестване на софтуер
CREATE TABLE tableName1 LIKE tableName2
С горната команда ще бъде създадена нова таблица, т.е. tableName1 със същата структура и свойства на tableName2.
Моля, обърнете внимание, че при този подход се клонират само имената и свойствата на колоните, а не действителните данни на таблицата.
Нека опитаме да създадем таблица с име staff_details и използваме тази таблица, за да създадем нова таблица с име student_details с помощта на опцията LIKE.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int ); CREATE TABLE SAMPLE_DB.student_details LIKE SAMPLE_DB.employee_details;
Дадено по-долу е изходът на горната команда.
Клониране на таблица с помощта на SELECT COMMAND
Този подход използва командата SELECT, за да създаде копие на съществуващата таблица в нова таблица.
С този подход данните от таблицата също се копират в новата таблица.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;
Нека опитаме да създадем таблица с име staff_details и използваме тази таблица, за да създадем нова таблица с име student_details, използвайки опцията SELECT.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;
Конвенции за имена на таблици MySQL
В предишните раздели научихме за създаването на таблици MySQL. Сега нека видим някои правила, които трябва да се имат предвид при именуване на таблиците заедно с ограниченията, които се прилагат по отношение на MySQL.
Тези конвенции / правила се прилагат както за SQL таблици, така и за бази данни.
# 1) Правни знаци в имената
да се) Имената без кавички могат да се състоят от всякакви знаци в набора от символи по подразбиране на SQL Server с изключение, че не всички знаци могат да бъдат цифри. Например, „23test“ е валидно име на таблица, но не и „2345“.
По-долу е даден списъкът с символи, които могат да се използват за имена без кавички:
ASCII: (0-9, a-z, A-Z $ _) (основни латински букви, цифри 0-9, долар, долна черта)
Разширено: U + 0080 .. U + FFFF
Научете повече за ASCII кодовете тук
б) Имената на таблици и бази данни могат да бъдат цитирани с обратен знак (`) и могат да съдържат всяка буква / символ, освен самия обратен знак. С цитираните имена можете дори да имате имена на таблици / бази данни, съдържащи всички цифри.
Моля, обърнете внимание, че за такива таблици ще трябва да използвате обратните отметки около таблицата и / или името на базата данни за достъп до данни вътре в такива таблици.
° С) Имената на таблици и бази данни не могат да съдържат точка „.“, Тъй като това се използва като разделител на база данни и таблица.
д) Имената на базата данни и таблици могат да съдържат - специални символи „$“ и „_“.
# 2) Дължина на името
Максимално разрешената дължина за име на база данни или таблица в MySQL е 64 знаци.
# 3) Квалификатори за имена
Както беше обсъдено в предишните раздели, в MySQL таблицата винаги е в контекст с базата данни, от която е част. Следователно, за да получите достъп до таблица, можете да използвате напълно квалифицирано име на таблица - което е нищо друго освен комбинацията от име на база данни, разделена с точка и след това име на колоната.
Например, за да изберете всички елементи от таблицата ‘EMPLOYEE_DETAILS’ от базата данни SAMPLE_DB, можете да използвате напълно квалифицирано име, както е показано по-долу.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;
Имената на DB и таблиците също могат да бъдат посочени като цитирани с обратни отметки отделно, както е показано по-долу.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;
Препоръчаните от индустрията конвенции и най-добри практики около Именуването на таблици и бази данни са дадени по-долу.
- Именувайте таблици и бази данни с малки букви - Това обикновено ускорява въвеждането и заявките на DB, особено за тези, които участват в ежедневните заявки за DB.
- Използвайте долни черти (‘_’) вместо интервали в имената на таблици и db - Това прави имената по-четливи.
- Използвайте обяснителни имена за таблиците и базите данни - Например, таблица, съдържаща подробности за служителя, може да бъде именувана по различни начини, като служител_информация, служител_данни, служител, служител_детайли, служител_име_и_адрес. Би имало смисъл да изберете име, което е най-обяснителното. Например, можем да изберем името на таблицата да бъде staff_details или worker_info. Въпреки че това е субективна дискусия, тя трябва да бъде съгласувана от множество членове на екипа, които ще използват и създават тези обекти.
- Избягвайте да използвате числа в имената на бази данни и таблици - Като sample_db_2, test_table_1 и т.н.
Често задавани въпроси и отговори
В # 1) Как да създам таблица в MySQL с помощта на Index?
Отговор: Можете да добавите ИНДЕКС срещу всяка колона (или комбинация от колони) по време на самото създаване на таблицата.
Нека да видим пример за добавяне на индекс спрямо колоната_отдел за таблица staff_details.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int, age int, address varchar(100), department_id int, index(department_id) );
В # 2) Как да създам таблица с дата в MySQL?
Отговор: Дата е тип данни, който трябва да бъде свързан с всяка колона, докато създавате таблица.
Обърнете се към примерната команда CREATE TABLE по-долу с колоната joining_date с DATETIME като тип данни за примерна таблица worker_details.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), joining_date datetime, department_id int );
В # 3) Как мога да видя структурата на таблицата в MySQL?
Отговор: След като създадете таблица, ако искате да се обърнете към структурата на таблицата като колони, индекси и т.н., можете да използвате командата DESCRIBE, за да извлечете подробностите.
Синтаксис:
DESCRIBE tableName;
Нека създадем таблица и да видим изхода за командата DESCRIBE.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), department_id int ); DESCRIBE sample_db.employee_details;
Дадено по-долу е изходът на командата DESCRIBE.
В # 4) Как да добавя ВЪНШЕН КЛЮЧ към таблица в MySQL?
как да отворите xml файлове в
Отговор: Външен ключ се използва за свързване на 2 таблици заедно в MySQL. За да използвате ограничението за външен ключ, трябва вече да сте създали таблицата, към която се позовавате.
>> Научете повече за Ограничение за външен ключ на MySQL
Нека се опитаме да разберем това с пример. Да кажем, че имаме 2 таблици, т.е. отдел (който съдържа подробности за различните отдели, които колежът има) и данни за студентите (всички подробности, отнасящи се до студенти).
Отделът има колони - id (първичен ключ) и име.
Подробности за студентите - id (първичен ключ), възраст, адрес & отдел_ид (външен ключ, посочен от таблицата на отдела).
По-долу е даден синтаксисът на командата CREATE TABLE и за двете таблици.
CREATE TABLE department ( name varchar(100), id INT NOT NULL, PRIMARY KEY (id) ); CREATE TABLE student_details ( name varchar(100), id int not null, age int, address varchar(100), department_id int, PRIMARY KEY (id), FOREIGN KEY (department_id) references department(id) ON DELETE CASCADE );
Обърнете се към синтаксиса на препратката FOREIGN KEY в таблицата student_details, където споменахме връзката между колоните и отдел_id трябва да се препраща чрез идентификатор на колона от таблицата на отдела.
Заключение
Командата CREATE TABLE в MySQL, която принадлежи към команди в категорията на езика за дефиниране на данни, беше обяснена подробно тук.
Научихме за различните опции на таблицата като ENGINE, CHECKSUM и т.н., които могат да бъдат споменати заедно с командата CREATE TABLE, за да бъдат зададени допълнителни свойства за таблицата.
Преминахме през начините за създаване на клон на съществуващата таблица в MySQL. И накрая, говорихме за конвенциите за именуване на имената на таблици заедно с препоръчаните от бранша най-добри практики.
Честито четене !!
Препоръчително четене
- MySQL Урок за създаване на изглед с примери за кодове
- Типове данни на MySQL | Какви са различните типове данни в MySQL
- MySQL Insert Into Table - Вмъкване на изявление Синтаксис и примери
- Урок за присъединяване на MySQL: Вътрешен, Външен, Кръстосан, Ляв, Десен и Аз
- Разлика между SQL Vs MySQL Vs SQL Server (с примери)
- Как да използвам PL SQL Вмъкване, актуализиране, изтриване и избор на изявление
- MongoDB Създаване на урок за база данни
- MongoDB Създаване на потребител и задаване на роли с примери