目录
DDL(数据定义:创建和删除表)
SQLite 创建表
语法
实例
字段修饰符
primary key 定义主键列
AUTOINCREMENT 自动增长
UNIQUE 字段的值唯一
NOT NULL 字段的值不为空
SQLite 修改表
增加字段add
修改表名rename to
SQLite 删除表
语法
实例
DDL(数据定义:创建和删除表)
数据定义(DDL):用于用户定义、删除和修改数据模式。
但在sqlite3中不存在用户这一概念,所以sqlite的DDL包括创建表、修改表和删除表
SQLite 创建表
SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。
语法
CREATE TABLE 语句的基本语法如下:
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
CREATE TABLE 是告诉数据库系统创建一个新表的关键字。CREATE TABLE 语句后跟着表的唯一的名称或标识。您也可以选择指定带有 table_name 的 database_name。
实例
下面是一个实例,它创建了一个 COMPANY 表,ID 作为主键,NOT NULL 的约束表示在表中创建纪录时这些字段不能为 NULL:
sqlite> CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
让我们再创建一个表,我们将在随后章节的练习中使用:
sqlite> CREATE TABLE DEPARTMENT(
ID INT PRIMARY KEY NOT NULL,
DEPT CHAR(50) NOT NULL,
EMP_ID INT NOT NULL
);
您可以使用 SQLIte 命令中的 .tables 命令来验证表是否已成功创建,该命令用于列出附加数据库中的所有表。
在这里,可以看到我们刚创建的两张表 COMPANY、 DEPARTMENT。
您可以使用 SQLite的.schema 命令得到表的完整信息,如下所示:
sqlite>.schema COMPANY
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
对于SQLite中所有的 . 命令都是SQLite所特有的,别的数据库不支持
字段修饰符
primary key 定义主键列
方法一:在定义字段的同时指定为主键
方法二:在设置完字段后指定主键
AUTOINCREMENT 自动增长
设置了AUTOINCREMENT之后,如果不给它赋值,它就会默认从0、1、2、3、4...自动增长
UNIQUE 字段的值唯一
设置UNIQUE,表示该字段的值必须唯一,后续插入的值不能出现重复
NOT NULL 字段的值不为空
如果设置not null,那么之后插入数值的时候就不许为空
SQLite 修改表
增加字段add
语法:alter table 表名 add 字段名 字段类型
如:ALTER TABLE student ADD age INT(4);
修改表名rename to
语法:alter table 旧表名 rename to 新表名
除此之外,sqlite不支持修改字段change和modify,同样也不支持drop删除表命令。
具体可参考:SQLite Alter 命令 | 菜鸟教程
SQLite 删除表
SQLite 的 DROP TABLE 语句用来删除表定义及其所有相关数据、索引、触发器、约束和该表的权限规范。
使用此命令时要特别注意,因为一旦一个表被删除,表中所有信息也将永远丢失。
语法
DROP TABLE 语句的基本语法如下。您可以选择指定带有表名的数据库名称,如下所示:
DROP TABLE database_name.table_name;
实例
让我们先确认 COMPANY 表已经存在,然后我们将其从数据库中删除。
sqlite>.tables
COMPANY test.COMPANY
这意味着 COMPANY 表已存在数据库中,接下来让我们把它从数据库中删除,如下:
sqlite>DROP TABLE COMPANY;
现在,如果尝试 .TABLES 命令,那么将无法找到 COMPANY 表了:
sqlite>.tables
sqlite>
显示结果为空,意味着已经成功从数据库删除表。