SQlite修改表结构

        在使用sql语句修改命名错误的字段名称时,指令报错。

一、解决        

网上搜索,博主说SQLite 仅仅支持 ALTER TABLE 语句的一部分功能,可以向表中增加一个字段(列),但是不能删除一个已经存在的字段,或者更改一个已经存在的字段的名称、数据类型等。

        另外在使用外键时需要开启:

PRAGMA foreign_keys = ON;

        所以若要修改某段结构时,只能重命名,再新建一份,然后导入数据:

//运行
./sqlite3
//打开数据库
.open  demodb.db3
//查看已有数据表
sqlite> .tables 
//查看所有表信息
sqlite> .schema
//查看表结构
sqlite> pragma table_info(studInfo);
//重命名表
sqlite> alter table majors rename to _majors_old;
//新建表
sqlite> create table majors(
    majorID int primary key not null,
    major varchar(40) not null,departID int ,
    foreign key(departID) references departments(departID)
    );
//将旧表导入数据
sqlite> insert into majors(majorID,major,departID) select "majorsID","major","departID" from _majors_old

二、测试

sqlite> create table majors(majorID int primary key not null,major varchar(40) not null,departID int ,foreign key(departID) references departments(departID));
sqlite> .tables
_majors_old  departments  employee     majors       studInfo
sqlite> insert into majors(majorID,major,departID) select "majorsID","major","departID" from _majors_old
   ...> ;
sqlite> .schema
CREATE TABLE departments(departID int PRIMARY KEY NOT NULL,department VARCHAR(40) NOT NULL);
CREATE TABLE employee(
empNo int primary key not null,
Name varchar(20) not null,
Gender varchar(4) default('男'),
Birthday date,
Province varchar(20),
Department varchar(30),
Salary float deufalt(5000),
Photo blob,
Memo memo);
CREATE TABLE IF NOT EXISTS "_majors_old"(majorsID int primary key not null,major varchar(40) not null,departID int ,foreign key(departID) references departments(departID));
CREATE TABLE studInfo(studID int primary key not null,name varchar(10) not null,gender varchar(4),departID int,majorID int,foreign key(departID) references departments(departID),foreign key(majorID) references "_majors_old"(majorsID));
CREATE TABLE majors(majorID int primary key not null,major varchar(40) not null,departID int ,foreign key(departID) references departments(departID));

三、结果 

        新表数据:

        旧表数据: 

参考 

Sqlite 修改表名称、增加字段、查询表结构、修改表结构字段类型_sqlite改表名-优快云博客

如何为 Sqlite 数据库的表添加外键

SQLite下载、安装和使用并Qt链接SQLIte全部教程(windows)_sqlite3.exe下载-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值