SQLite Create, Alter and Drop table

Dernière mise à jour le 26 février 2020 08:08:49 (UTC/GMT +8 heures)

Introduction

La commande SQLite CREATE TABLE est utilisée pour créer une nouvelle table dans une base de données SQLite. Elle est également utilisée pour créer des index, des vues et des déclencheurs. Une commande CREATE TABLE spécifie les attributs suivants de la nouvelle table :.

  • Le nom de la nouvelle table.
  • La base de données dans laquelle la nouvelle table est créée. Les tables peuvent être créées dans la base de données principale, la base de données temporaire ou dans toute base de données attachée.
  • Le nom de chaque colonne de la table.
  • Le type déclaré de chaque colonne de la table et chaque colonne doit avoir un type de données, qui peut être NULL – la valeur est une valeur NULL, INTEGER – un entier signé, REAL – une valeur à virgule flottante, TEXT – une chaîne de texte ou BLOB – un blob de données.
  • Une valeur ou une expression par défaut pour chaque colonne de la table.
  • Une séquence de collation par défaut à utiliser avec chaque colonne.
  • Optionnellement, une PRIMARY KEY pour la table. Les clés primaires à colonne unique et composite (plusieurs colonnes) sont prises en charge.
  • Un ensemble de contraintes SQL pour chaque table. SQLite supporte les contraintes UNIQUE, NOT NULL, CHECK et FOREIGN KEY.
  • Un index unique sera automatiquement créé pour appliquer une contrainte UNIQUE ou PRIMARY KEY. et ils ne peuvent pas être abandonnés manuellement avec la commande DROP INDEX.

Table des matières

Conventions de nommage

Syntaxe

Exemple

ALTER TABLE

DROP TABLE

Conventions de nommage

Chaque base de données, table, colonne, index, déclencheur ou vue doit avoir un nom par lequel il peut être identifié. Un nom d’identifiant doit commencer par une lettre ou le caractère de soulignement, qui peut être suivi d’un certain nombre de caractères alphanumériques ou de caractères de soulignement. Aucun autre caractère ne peut être autorisé avec ce nom.

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. Les noms de tables et de colonnes peuvent être tapés en majuscules, en minuscules ou en casse mixte, et différentes capitalisations du même nom d’objet de base de données peuvent être utilisées de manière interchangeable.

Notes:

Lorsqu’une nouvelle table est créée, elle doit se trouver dans une base de donnéeset le nom de la base de données peut être soit « main », soit « temp », soit le nom d’une base de données attachée.Si le mot-clé « TEMP » ou « TEMPORARY » utilisé entre « CREATE » et « TABLE » alors la nouvelle table est créée dans la base de données temporaire.Les deux noms de base de données et le mot-clé TEMP ou TEMPORARY ne peuvent pas être utilisés.Si aucun nom de base de données n’est spécifié et que le mot-clé TEMP n’est pas présent alors la table est créée dans la base de données principale.

Tentative de création d’une table dans une base de données qui contient une table ou un index ou une vue du même nom, une erreur se produira, mais si la clause « IF NOT EXISTS » est spécifiée comme une partie de l’instruction CREATE TABLE ne créera aucun effet.

Syntaxe :

CREATE TABLE table-name (column-def);

TEMPORAIRE – une table peut être déclarée comme temporaire, si on le souhaite.

Colonne-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. Ici, voir ci-dessous-

sqlite> create table TEMPORARY company( ...> com_id text(4), ...> com_name text(15));Error: near "company": syntax error 

Faire une copie d’une table existante dans la base de données principale

Il est très nécessaire à un développeur de prendre une sauvegarde de la table originale qui est sur le travail, et comme aucune mesure nuisible s’est produite de manière imprudente ou acceditive au moment du développement. En outre, vous pouvez avoir besoin de changer les noms des colonnes ou de supprimer une ou plusieurs colonnes d’une table sqlite, il est donc une bonne pratique de prendre une sauvegarde de la table de travail de temps en temps.

Si vous voulez prendre une sauvegarde du tableau de la société incluant tous les enregistrements, l’instruction suivante peut être utilisée

CREATE TABLE backup_company AS SELECT * FROM company ;

Si vous voulez prendre une sauvegarde de la seule structure du tableau de la société, l’instruction suivante peut être utilisée

CREATE TABLE backup_company AS SELECT * FROM company LIMIT 0;

ALTER TABLE

La commande ALTER TABLE ne peut être utilisée dans SQLite que pour permettre à l’utilisateur uniquement de renommer une table ou d’ajouter une nouvelle colonne à une table existante. Il n’est pas possible de renommer une colonne ou de supprimer une colonne, ni d’ajouter ou de supprimer des contraintes d’une table.

La commande RENAME TO est utilisée pour renommer la table identifiée par table-name en new-table-name. Cette commande ne peut pas être utilisée pour déplacer une table dans deux bases de données seulement être renommée dans la même base de données.

Si la table renommée contient des déclencheurs ou des indices, aucun effet ne sera fait et ceux-ci restent intacts comme avant le renommage. Cependant, toutes les définitions de vue, ou les déclarations exécutées par les déclencheurs qui se réfèrent à la table renommée, ne seront pas automatiquement modifiées.

Ici nous créons une nouvelle table compagnie.

sqlite> create table company( ...> com_id text(4), ...> com_name text(15));

Pour ajouter une nouvelle colonne:

ALTER TABLE company ADD com_add VARCHAR(50);

Après avoir ajouté une colonne, voyez la structure de la table compagnie.

sqlite> .schemaCREATE TABLE company(com_id text(4),com_name text(15), com_add VARCHAR(50));

Pour renommer une table :

sqlite> .tablescompany hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions

Maintenant renommer la table compagnie au nouveau nom compagnie_nouveau. Voici l’instruction ci-dessous.

ALTER TABLE company RENAME TO company_new;

Après le renommage, voyez la liste des tables ci-dessous.

sqlite> .tablescompany_new hrdb.departments hrdb.jobshrdb.countries hrdb.employees hrdb.locationshrdb.department hrdb.job_history hrdb.regions

Renommer ou supprimer une colonne d’une table :

Note : Sqlite n’a qu’un support limité de ALTER TABLE. Dropping columns and renaming does not supported by SQLite. Donc, c’est une meilleure façon de créer une nouvelle table avec les changements selon votre exigence, puis de laisser tomber la table originale et de renommer à nouveau la nouvelle table qui vient d’être créée au nom de la table originale. Une chose à retenir, c’est qu’une fois qu’une table est supprimée, tous les déclencheurs associés seront perdus, il faut donc en être conscient. Avant de renommer ou de supprimer une table, il est bon de prendre une copie de la déclaration de création de la table. Voici l’énoncé à partir duquel vous obtiendrez l’énoncé.

SELECT sql FROM sqlite_master WHERE tbl_name = 'table_name';

DROP TABLE

La commande DROP TABLE supprime une table d’une base de données.

Syntaxe:

DROP TABLE table_name orDROP TABLE table_name 

Paremètres:

nom_table – Le nom d’une table existante que vous voulez abandonner. You may drop more than one tables by specifying their names seperated by a comma.

DROP TABLE company_new;

Previous: Data Types
Next: Constraint

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *