我正在学习SQLite教程,其目标是从UML图创建一个简单的学生数据库。
最近我正在通过HELL试图弄清楚如何改变我的数据类型,我希望这可以提供帮助。我将发布与教师发布的相同问题。
不幸的是,当我试图跟随教师时,我搞砸了我的数据类型。 视频(如果有帮助)可以在此处找到:http://www.youtube.com/watch?v=07nBszNiwU8
++ BEGIN TRANSCRIPT ++
到目前为止,感谢您的所有帮助,但似乎我还有另一个谜。我做的第一件事是复制你的UML,然后休息一下。回来后,我想我会在重新加载你的视频时从UML开始,所以我做的第一件事就是创建学生和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_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命令的明显内容?
答案 0 :(得分:3)
SQLite对ALTER TABLE
的支持非常有限,including only RENAME TO
and ADD_COLUMN
。您正在收到语法错误,因为您发出的命令不受支持。
如果您没有丢失任何数据,最好放弃并重新创建表格。
如果您确实要丢失数据,最好使用INSERT
with SELECT
重命名表并创建替换,如this example中所示。