mysql create table tutorial with examples
En aquest tutorial, explorarem l’ús de l’ordre MySQL CREATE TABLE amb sintaxi i exemples de programació:
La sentència CREATE TABLE forma part de DDL (Data Definition Language) de SQL.
Discutirem les maneres en què podeu CREAR una taula en una base de dades determinada, esmentarem els noms de columnes i el motor de bases de dades mentre es crea la taula, juntament amb les regles sobre les convencions de noms per a les taules SQL.
Què aprendreu:
- Requisits previs
- Ordre MySQL CREATE TABLE
- Conclusió
Requisits previs
El requisit previ per executar qualsevol de les ordres SQL seria descarregar el servidor MySQL. Es pot descarregar l’edició gratuïta de la comunitat aquí.
També farem servir el client SQL de MySQL Workbench per a tots els exemples i discussions d’aquest tutorial. Es pot descarregar l'edició gratuïta de la comunitat de MySQL Workbench aquí (podeu triar la versió en funció del sistema operatiu en què estigueu treballant).
En cas que no vulgueu utilitzar MySQL Workbench, també podeu utilitzar el client de línia de comandes MySQL que inclou la instal·lació per defecte de MySQL Server.
Ordre MySQL CREATE TABLE
L'ordre CREATE TABLE és una part del conjunt d'ordres DDL (Data Definition Language) de MySQL i permet a l'usuari crear una nova taula per a la base de dades donada.
Nota: L'ordre CREATE TABLE existeix per a gairebé totes les bases de dades relacionals, com MySQL, Postgres, SQL Server, etc.
Sintaxi de MySQL CREATE TABLE
De la forma més senzilla, podeu utilitzar l’ordre CREATE TABLE amb les opcions bàsiques, és a dir, el nom de la taula i les definicions de columna.
CREATE TABLE [IF NOT EXISTS] tableName ( column1 datatype, column2 datatype, .... );
Comprenguem detalladament els arguments de sintaxi:
- nom de la taula: Aquest hauria de ser el nom de la taula que intenteu crear. Hauria de ser un nom completament qualificat (en cas que no tingueu una base de dades predeterminada). Per exemple, databaseName.tableName
El nom de la taula es pot especificar sense cometes o amb el símbol de contrasenya com ara 'tableName' i 'databaseName'. 'TableName' - Definició de columna: Una taula a SQL ha de constar d'almenys una columna. Totes les definicions de columna han de consistir en column_name, així com el tipus de dades de columna. Opcionalment, també podeu incloure les altres propietats de les columnes, com ara la clau primària, la nul·la, no la nul·la, etc.
Vegem un exemple d’utilitzar la sintaxi anterior per crear una taula.
Crearem una taula anomenada EMPLOYEE_DETAILS (a la base de dades - SAMPLE_DB) amb columnes
- nom: varchar (100)
- edat: int
- adreça: varchar (100)
CREATE TABLE SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) );
A continuació es mostrarà la sortida de la creació de la taula:
Nota:
# 1) Fixeu-vos en l’ús de [SI NO EXISTEIX] l’ordre opcional de la sintaxi anterior.
En general, es recomana utilitzar aquesta ordre, ja que evitaria generar un error si la taula que intentem crear ja està present a la base de dades.
Aquí teniu un exemple d’utilitzar amb i sense SI NO EXISTEIX.
- Sense SI NO EXISTE generaria un error si la taula ja existeix.
- Amb IF NOT EXISTS no es generarà cap error. Tanmateix, mostrarà un advertiment que la taula ja existeix.
# 2) El 'tableName' mentre s'utilitza l'ordre CREATE TABLE hauria d'estar completament qualificat amb el nom de la base de dades, és a dir, la forma en què l'hem utilitzat SAMPLE_DB.employee_details
Les altres formes d’especificar el nom de la taula són configurar la base de dades actual mitjançant l’ordre ‘USE’. Per exemple. USAR SAMPLE_DB; i, a continuació, executeu / utilitzeu només el nom de la taula en lloc del nom de taula completament qualificat.
CREA TAULA Amb les opcions de taula
Les opcions de la taula s’utilitzen per tal d’optimitzar el comportament de les taules MySQL. Es poden aplicar mentre es crea una taula mitjançant l'ordre MySQL CREATE TABLE (o posteriorment mitjançant l'ordre ALTER TABLE).
La sintaxi continua sent la mateixa amb opcions de taula addicionals que es poden especificar.
CREATE TABLE [IF NOT EXISTS] tableName ( column1 datatype, column2 datatype, .... ) [table “” not found /]
;
A continuació parlarem de les opcions més utilitzades (es pot trobar una llista completa d’opcions de taula aquí ).
# 1) MOTOR
S'utilitza per especificar el motor d'emmagatzematge de la taula, és a dir, el valor per defecte és InnoDB. No cal canviar això tret que hi hagi necessitats d'algun motor d'emmagatzematge específic. Els altres valors vàlids per als motors d’emmagatzematge són MEMORY, CSV, HEAP, etc.
A continuació es mostra la sintaxi per especificar ENGINE com a part de 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
Aquesta opció s’utilitza per establir el valor AUTO_INCREMENT inicial de la taula, és a dir, el valor per defecte és 1, però podeu substituir a qualsevol altre valor enter positiu.
Nota: AUTO_INCREMENT es pot especificar només per a una columna de la taula i ha de ser la clau principal. Vegem un exemple d’especificar l’increment automàtic com a 10 i d’inserir un registre per validar si l’increment automàtic està configurat correctament.
Estem utilitzant la mateixa taula employee_details (assegureu-vos de deixar caure la taula existent abans d'executar aquesta ordre) amb un camp d'identificació addicional marcat com a clau principal.
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;
Inserim una fila sense cap valor per a l'identificador i assegurem-nos que els valors s'insereixen a partir del valor inicial 10.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details;
# 3) SUMA DE CONTROL
S'ha d'establir a 1 si voleu tenir una suma de comprovació per a tota la taula emmagatzemada. Generalment s’utilitza per assegurar-se que no hi ha taules danyades.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1;
CHECKSUM manté una suma de comprovació activa de tota la taula durant qualsevol inserció o actualització
CREA TAULA Amb detalls de partició
També podem esmentar el particionament definit per l’usuari si és necessari mitjançant les opcions de particionament.
El particionament com a concepte s’utilitza àmpliament per distribuir el contingut de les taules pel sistema de fitxers per tal de garantir temps d’accés més ràpids i consultes optimitzades. El particionament divideix una taula gran en taules més petites segons les estratègies o les claus de particionament especificades.
Vegem com podem especificar els detalls de particionament amb l’ordre MySQL CREATE TABLE.
Utilitzarem la taula de mostra empleat_detalls i afegirem una nova columna sencera anomenada departament_id que s’utilitzarà com a clau de hash de partició per tenir una distribució uniforme de dades.
També especificar el recompte de particions indicaria quantes particions reals es crearien (en aquest cas 4). Si no s'especifica, per defecte només hi hauria 1 partició.
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;
Nota: En general, la clau que s'utilitzarà per crear particions dependria dels patrons d'accés previstos que s'utilitzarien per a la taula. En aquest cas, suposem que estaríem consultant la taula basant-nos en la identificació del departament la majoria de les vegades, i és lògic tenir department_id com a part de la clau hash.
Clonació i còpia de taules MySQL
De vegades, és possible que vulgueu crear un clon d’una taula existent o copiar el contingut d’una taula a una altra. MySQL admet dues maneres d'aconseguir-ho, tal com es mostra a continuació.
- Utilitzant l’ordre LIKE
- Mitjançant l'ordre SELECT
Clonació de taules amb LIKE COMMAND
Amb l’ordre LIKE, podeu crear una taula nova amb exactament els mateixos noms i propietats de columna que les taules existents.
Aquí teniu la sintaxi que utilitza LIKE Command.
script shell per comparar dos fitxers
CREATE TABLE tableName1 LIKE tableName2
Amb l’ordre anterior es crearia una nova taula, és a dir, tableName1 amb la mateixa estructura i propietats que tableName2.
Tingueu en compte que amb aquest enfocament, només es clonen els noms i les propietats de les columnes i no les dades reals de la taula.
Intentem crear una taula anomenada empleat_detalls i utilitzem aquesta taula per crear una taula nova anomenada estudiant_detalls mitjançant l'opció M'AGRADA.
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;
A continuació es mostra la sortida de l'ordre anterior.
Clonació de taules amb SELECT COMMAND
Aquest enfocament utilitza l'ordre SELECT per crear una còpia de la taula existent en una taula nova.
Amb aquest enfocament, les dades de la taula també es copien a la nova taula.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;
Intentem crear una taula anomenada empleat_detalls i utilitzem aquesta taula per crear una taula nova anomenada estudiant_detalls mitjançant l'opció SELECCIONA.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;
Convenis de denominació de taules MySQL
A les seccions anteriors, vam aprendre sobre la creació de taules MySQL. Ara vegem algunes regles que s’han de tenir en compte mentre s’anomenen les taules juntament amb les restriccions que s’apliquen respecte a MySQL.
Aquestes convencions / regles s'apliquen tant a les taules SQL com a les bases de dades.
# 1) Caràcters legals als noms
a) Els noms sense cometes poden consistir en qualsevol caràcter del conjunt de caràcters predeterminat de SQL Server, amb una excepció que no tots els caràcters poden ser dígits. Per exemple, '23test' és un nom de taula vàlid però no '2345'.
A continuació es mostra la llista de caràcters que es podrien utilitzar per als noms sense cometes:
ASCII: [0-9, a-z, A-Z $ _] (lletres llatines bàsiques, dígits 0-9, dòlar, subratllat)
Ampliat: U + 0080 .. U + FFFF
Obteniu més informació sobre els codis ASCII aquí
b) Els noms de les taules i de les bases de dades es poden citar amb un caràcter de contrasenya (`) i poden contenir qualsevol lletra / caràcter excepte el caràcter de contrasenya. Amb els noms citats, fins i tot podeu tenir noms de taula / base de dades amb tots els dígits.
Tingueu en compte que per a aquestes taules haureu d’utilitzar les tecles de retrocés al voltant de la taula i / o el nom de la base de dades per accedir a les dades d’aquestes taules.
c) Els noms de taules i bases de dades no poden contenir el punt '.', Ja que s'utilitza com a separador de bases de dades i taules.
d) Els noms de la base de dades i de la taula poden contenir caràcters especials '$' i '_'.
# 2) Longitud del nom
La longitud màxima permesa per a una base de dades o un nom de taula a MySQL és 64 personatges.
# 3) Noms qualificatius
Com es va comentar a les seccions anteriors, a MySQL una taula sempre està en context amb la base de dades de la qual forma part. Per tant, per accedir a una taula, podeu utilitzar un nom de taula completament qualificat, que no és altra cosa que la combinació del nom de la base de dades separada per un punt i després el nom de la columna.
Per exemple, per seleccionar tots els elements de la taula 'EMPLOYEE_DETAILS' de la base de dades SAMPLE_DB, podeu utilitzar un nom complet com es mostra a continuació.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;
Els noms de la base de dades i de les taules també es poden especificar com es citen amb contracorrents per separat, tal com es mostra a continuació.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;
A continuació es detallen les convencions i pràctiques recomanades de la indústria sobre les taules de noms i les bases de dades.
- Anomeneu taules i bases de dades en minúscules - Generalment, això accelera l’escriptura i la consulta de la base de dades, especialment per a aquells que participen en la consulta quotidiana de la base de dades.
- Utilitzeu els subratllats ('_') en lloc d'espais als noms de la taula i del db - Això fa que els noms siguin més llegibles.
- Utilitzeu noms autoexplicatius per a les taules i les bases de dades - Per exemple, una taula que conté detalls de l'empleat es pot anomenar de diferents maneres, com ara empleat_informació, empleat_dades, empleat, empleat_detalls, empleat_nom_i_adreça. Tindria sentit escollir un nom que s’expliqui per si mateix. Per exemple, podem escollir el nom de la taula per ser detalls_empleat o informació_empleat. Tot i que es tracta d’una discussió subjectiva, haurien de ser consensuats per diversos membres de l’equip que utilitzaran i crearan aquestes entitats.
- Eviteu utilitzar números als noms de bases de dades i taules - Com ara sample_db_2, test_table_1, etc.
Preguntes i respostes freqüents
Q # 1) Com es crea una taula a MySQL mitjançant Index?
Resposta: Podeu afegir un INDEX a qualsevol columna (o combinació de columnes) durant la creació de la taula.
Vegem un exemple d'afegir un índex a la columna depart_id per a la taula empleats_detalls.
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) );
Q # 2) Com es crea una taula amb data a MySQL?
Resposta: La data és un tipus de dades que s’ha d’associar a qualsevol columna mentre es crea una taula.
Consulteu l'ordre següent CREATE TABLE amb la columna join_date que té DATETIME com a tipus de dades per a una taula de mostra empleat_detalls.
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 );
P # 3) Com puc veure l'estructura de la taula a MySQL?
Resposta: Després de crear una taula, si voleu referir-vos a l'estructura de la taula, com ara columnes, índexs, etc., podeu utilitzar l'ordre DESCRIBE per obtenir els detalls.
Sintaxi:
DESCRIBE tableName;
Creem una taula i vegem la sortida de l’ordre 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;
A continuació es mostra la sortida de l'ordre DESCRIBE.
Q # 4) Com puc afegir una CLAU ESTRANGERA a una taula de MySQL?
Resposta: La clau estrangera s'utilitza per enllaçar 2 taules juntes a MySQL. Per utilitzar la restricció de clau estrangera, ja hauríeu d'haver creat la taula a què us referiu.
>> Més informació sobre Restricció de clau estrangera de MySQL
c programació de preguntes i respostes d’entrevistes amb explicacions pdf
Intentem entendre-ho amb un exemple. Diguem que tenim dues taules, és a dir, Departament (que conté detalls sobre els diversos departaments que té el col·legi) i detalls dels estudiants (tots els detalls dels estudiants).
El departament té columnes - identificador (clau principal) i nom.
Detalls de l’alumne - id (clau principal), edat, adreça i departament_id (clau estrangera a la qual es fa referència a la taula de departaments).
A continuació es mostra la sintaxi de l’ordre CREATE TABLE per a aquestes dues taules.
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 );
Consulteu la sintaxi de la referència FOREIGN KEY a la taula student_details on hem esmentat que la relació entre les columnes i department_id s'hauria de fer referència amb l'identificador de columna de la taula de departaments.
Conclusió
Aquí s’explica detalladament l’ordre CREATE TABLE a MySQL que pertany a les ordres de la categoria Data Definition Language.
Hem après sobre les diferents opcions de taula, com ara ENGINE, CHECKSUM, etc. que es podrien esmentar juntament amb l'ordre CREATE TABLE per establir propietats addicionals per a la taula.
Hem recorregut les maneres de crear un clon de la taula existent a MySQL. Finalment, hem parlat de les convencions de denominació dels noms de taula juntament amb les pràctiques recomanades recomanades per la indústria.
Bona lectura !!
Lectura recomanada
- Tutorial MySQL Create View amb exemples de codi
- Tipus de dades MySQL | Quins són els diferents tipus de dades a MySQL
- MySQL Insereix a la taula: insereix sintaxi i exemples de sentències
- Tutorial MySQL JOIN: Interior, exterior, creuat, esquerre, dret i autònom
- Diferència entre SQL vs MySQL vs SQL Server (amb exemples)
- Com utilitzar la declaració d'inserció, actualització, eliminació i selecció de PL SQL
- Tutorial de creació de bases de dades de MongoDB
- MongoDB Crea usuaris i assigna rols amb exemples