Última actualización el 26 de febrero de 2020 08:08:49 (UTC/GMT +8 horas)
Introducción
El comando SQLite CREATE TABLE se utiliza para crear una nueva tabla en una base de datos SQLite. También se utiliza para crear índices, vistas y triggers. Un comando CREATE TABLE especifica los siguientes atributos de la nueva tabla:.
- El nombre de la nueva tabla.
- La base de datos en la que se crea la nueva tabla. Las tablas pueden crearse en la base de datos principal, en la base de datos temporal o en cualquier base de datos adjunta.
- El nombre de cada columna de la tabla.
- El tipo declarado de cada columna de la tabla y cada columna debe tener un tipo de dato, que puede ser NULL – el valor es un valor nulo, INTEGER – un entero con signo, REAL – un valor de punto flotante, TEXT – una cadena de texto o BLOB – un blob de datos.
- Un valor o expresión por defecto para cada columna de la tabla.
- Una secuencia de cotejo por defecto para utilizar con cada columna.
- Opcionalmente, una CLAVE PRIMARIA para la tabla. Se admiten tanto claves primarias de una sola columna como compuestas (múltiples columnas).
- Un conjunto de restricciones SQL para cada tabla. SQLite admite las restricciones UNIQUE, NOT NULL, CHECK y FOREIGN KEY.
- Se crearán automáticamente índices únicos para hacer cumplir una restricción UNIQUE o PRIMARY KEY. y no se pueden eliminar manualmente con el comando DROP INDEX.
Tabla de contenidos
Convenciones de nomenclatura
Sintaxis
Ejemplo
ALTER TABLE
DROP TABLE
Convenciones de nomenclatura
Cada base de datos, tabla, columna, índice, trigger o vista debe tener un nombre con el que se pueda identificar. El nombre de un identificador debe comenzar con una letra o el carácter de subrayado, que puede ir seguido de varios caracteres alfanuméricos o de subrayado. No se permite ningún otro carácter con este nombre.
The valid identifier names are :
- tsttable
- tst_table
- table456
- z
However the following are invalid identifier:
- tst table
- tst-table
- 456table
Other characters can be used in identifiers if they are enclosed in double quotes (or square brackets), for example:
- «test table»
- «tst table»
- «123 456»
Reserved Keywords
Each CREATE TABLE statement must specify a name for the new table. Table names that begin with «sqlite_» are reserved for internal use. It is an error to attempt to create a table with a name that starts with «sqlite_».
Name Length
In SQLite there is not restricted upper limit on the length of an identifier name, so you can use a manageable length of identifier name to be use.
Case Sensitivity
For the most part, case sensitivity in SQLite is off. Los nombres de tablas y columnas pueden escribirse en mayúsculas, minúsculas o mixtas, y se pueden utilizar indistintamente diferentes mayúsculas del mismo nombre de objeto de base de datos.
Notas:
Cuando se crea una nueva tabla, debe estar en una base de datosy el nombre de la base de datos puede ser «main», «temp» o el nombre de una base de datos adjunta.Si se utiliza la palabra clave «TEMP» o «TEMPORARY» entre «CREATE» y «TABLE», la nueva tabla se crea en la base de datos temporal.No se puede utilizar tanto el nombre de la base de datos como la palabra clave TEMP o TEMPORARY.Si no se especifica ningún nombre de base de datos y la palabra clave TEMP no está presente, la tabla se crea en la base de datos principal.
Si se intenta crear una tabla en una base de datos que contiene una tabla o índice o vista del mismo nombre, se producirá un error, pero si se especifica la cláusula «IF NOT EXISTS» como parte de la sentencia CREATE TABLE no creará ningún efecto.
Sintaxis:
CREATE TABLE table-name (column-def);
TEMPORÁNEO – una tabla puede ser declarada como temporal, si se desea.
Columna-def. – A column definition consists of the name of the column, and followed by the declared type of the column which is optional, then one or more optional column constraints.
A column definition can be defined as follows:
name column-constraint]
Example
Here is a simple Create Table Statement:
CREATE TABLE company(com_id text(4),com_name text(15));
To see the structure of the table, use the following commands:
Sample Output:
sqlite> .mode columnsqlite> .header onsqlite> PRAGMA table_info(company);cid name type notnull dflt_value pk---------- ---------- ---------- ---------- ---------- ----------0 com_id text(4) 0 01 com_name text(15) 0 0
Here the .mode command shows the columns and .header on command shows the header on.
Create a table to use TEMPORARY clause
CREATE TABLE TEMPORARY (com_id text(4),com_name text(15));
This time table is created in temp databases. If you want to see the created table execute the following command-
sqlite> .tablesTEMPORARY
If you use the table name with TEMPORARY keyword an error message will appear. Aquí ver a continuación-
sqlite> create table TEMPORARY company( ...> com_id text(4), ...> com_name text(15));Error: near "company": syntax error
Hacer una copia de una tabla existente dentro de la base de datos principal
Es muy necesario para un desarrollador tomar una copia de seguridad de la tabla original que está en funcionamiento, y como ninguna medida perjudicial pasó sin querer o acceder en el momento de desarrollar. Además, es posible que tenga que cambiar los nombres de las columnas o eliminar una o más columnas de una tabla sqlite, por lo que es una buena práctica tomar una copia de seguridad de la tabla de trabajo de vez en cuando.
Si se quiere tomar una copia de seguridad de la tabla de la empresa incluyendo todos los registros, se puede utilizar la siguiente sentencia
CREATE TABLE backup_company AS SELECT * FROM company ;
Si se quiere tomar una copia de seguridad sólo de la estructura de la tabla de la empresa, se puede utilizar la siguiente sentencia
CREATE TABLE backup_company AS SELECT * FROM company LIMIT 0;
ALTER TABLE
El comando ALTER TABLE sólo se puede utilizar en SQLite para permitir al usuario únicamente renombrar una tabla o añadir una nueva columna a una tabla existente. No es posible cambiar el nombre de una columna o eliminar una columna, o añadir o eliminar restricciones de una tabla.
El comando RENAME TO se utiliza para cambiar el nombre de la tabla identificada por table-name a new-table-name. Este comando no se puede utilizar para mover una tabla dentro de dos bases de datos, sólo se puede renombrar dentro de la misma base de datos.
Si la tabla que se está renombrando contiene triggers o índices, no se producirá ningún efecto y éstos permanecerán intactos tal y como estaban antes de ser renombrados. Sin embargo, cualquier definición de vista, o sentencias ejecutadas por triggers que hagan referencia a la tabla que se está renombrando, no se modificarán automáticamente.
Aquí creamos una nueva tabla empresa.
sqlite> create table company( ...> com_id text(4), ...> com_name text(15));
Para añadir una nueva columna:
ALTER TABLE company ADD com_add VARCHAR(50);
Después de añadir una columna ver la estructura de la tabla empresa.
sqlite> .schemaCREATE TABLE company(com_id text(4),com_name text(15), com_add VARCHAR(50));
Para renombrar una tabla:
sqlite> .tablescompany hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions
Ahora cambia el nombre de la tabla empresa por el nuevo nombre empresa_nueva. Aquí está la declaración a continuación.
ALTER TABLE company RENAME TO company_new;
Después de renombrar, vea la lista de las tablas a continuación.
sqlite> .tablescompany_new hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions
Renombrar o eliminar la columna de una tabla:
Nota : Sqlite sólo tiene un soporte limitado de ALTER TABLE. La eliminación de columnas y el cambio de nombre no son soportados por SQLite. Por lo tanto, es mejor crear una nueva tabla con los cambios de acuerdo a sus necesidades, a continuación, eliminar la tabla original y de nuevo cambiar el nombre de la nueva tabla creada al nombre de la tabla original. Una cosa que hay que recordar es que, una vez que se elimina una tabla, se pierden los triggers asociados, así que hay que tenerlo en cuenta. Es una buena idea que, antes de renombrar o eliminar la tabla, tomes una copia de la sentencia de creación de la tabla. Aquí está la declaración de la que obtendrá la declaración.
SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name';
DROP TABLE
El comando DROP TABLE elimina una tabla de una base de datos.
Sintaxis:
DROP TABLE table_name orDROP TABLE table_name
Parámetros:
nombre_tabla – El nombre de una tabla existente que desea eliminar. You may drop more than one tables by specifying their names seperated by a comma.
DROP TABLE company_new;
Previous: Data Types
Next: Constraint