【发布时间】:2014-03-02 17:05:00
【问题描述】:
我正在关注一个 SQLite 教程,其目标是从 UML 图创建一个简单的学生数据库。
所以最近我正在经历地狱,试图弄清楚如何改变我的数据类型,我希望这会有所帮助。我将发布与教师相同的问题。
不幸的是,我在尝试跟随讲师时弄乱了我的数据类型。 视频,如果有帮助,可以在这里找到:http://www.youtube.com/watch?v=07nBszNiwU8
++BEGIN TRANSCRIPT++
感谢您迄今为止的所有帮助,但我似乎还有另一个谜团。我做的第一件事是复制你的 UML,然后休息一下。返回后,我想我会在重新加载您的视频时从 UML 开始,所以我做的第一件事就是创建 student 和 sex_type 表:
sqlite> create table student(name VARCHAR(23),
...> sex CHARACTER(1),
...> id_number INTEGER PRIMARY KEY);
sqlite> create table sex_type(sex_id TEXT PRIMARY KEY, sex_type INTEGER);
但后来我意识到,“糟糕,我忘了指出我希望 sex_id 也不是 NULL。”
“我也忘记了确保外键(sex)引用sex_type(sex_id)。”
带着这样的想法,我回顾了我的 SQL 书籍,并回忆了一些被称为 ALTER 命令的东西。但是,无论我如何切片,我都会得到以下几点:
sqlite> alter table sex_type MODIFY column sex_id TEXT PRIMARY KEY NOT NULL;
Error: near "MODIFY": syntax error
sqlite> alter table sex_type CHANGE column sex_id TEXT PRIMARY KEY NOT NULL;**
Error: near "CHANGE": syntax error
sqlite> alter table sex_type drop sex_id;
Error: near "DROP": syntax error
总是出现相同的假定语法错误。关于今晚唯一有效的方法:
sqlite> alter table sex_type RENAME TO gender;
sqlite> alter table gender_id RENAME TO sex_type;
那么我忽略的这个语法错误是什么,因为按照我的书来看,我的语法应该没问题。在进行修改之前我是否必须在这些列中插入一些东西(诚然,我还没有尝试过)?还是我遗漏了一些关于 ALTER/MODIFY/CHANGE/DROP 命令的明显内容?
【问题讨论】:
标签: sql sqlite create-table alter-table