问个入门的 SQL 语句问题

2017-12-31 13:39:33 +08:00
 siknet
故事是这样的。。。。

我创建了一个表:
CREATE TABLE Hotel ([id] integer primary key autoincrement,[Name] varchar(250),[Since] text,[Class] varchar(50));


然后往里面插入数据
INSERT INTO Hotel (Name,Since,Class) VALUES ('{-var.酒店名-}','{-var.开业时间-}','{-var.酒店级别-}')


我后面想加新的数据进去,比如酒店地址什么的,是直接用 insert 插入

INSERT INTO Hotel (address) VALUES ('{-var.地址-})

还是先 create 建个同名的表再插入?像这样

CREATE TABLE Hotel ([address] varchar(250);

INSERT INTO Hotel (address) VALUES ('{-var.地址-})
4107 次点击
所在节点    MySQL
11 条回复
u1ucky
2017-12-31 13:47:30 +08:00
看你用什么数据库了。

比如 H2 可以直接插入,表不存在则自动创建。

而 MySQL 需要先建表,若不确定表是否存在可以用 create table if not exists tablename
siknet
2017-12-31 13:59:02 +08:00
@aimkiray 用的是 SQLite,SQLite 是怎么规定的?
precisi0nux
2017-12-31 14:17:29 +08:00
imnpc
2017-12-31 14:19:48 +08:00
这种需求应该是新增字段 然后插入数据的吧
u1ucky
2017-12-31 15:03:19 +08:00
@siknet 非生产环境试一试不就知道啦
jworg
2017-12-31 15:07:49 +08:00
Mysql 初学者表示,现在不应该 ALTER 改变结构添加字段吗,感觉没有建两张表的必要
ryh
2017-12-31 15:36:52 +08:00
你要先清楚你本身的数据存在一对多的情况吧,
比如同一个品牌的酒店的不同分店
但一般情况下一个酒店肯定只有一个地址,
就用 alter table 添加 address 字段好了。

但地址本身细化的话,你可以处理成 n 个(Poi 地标 https://zh.wikipedia.org/zh-cn/兴趣点 )
比如 2 个门,比如停车场入口什么的(看需求了)

另 mysql 有时候表名、字段名有些大小写的坑,最好全部小写比较稳妥
soooon
2017-12-31 16:23:40 +08:00
这个属于改变表结构的需求了,专业的做法是用 alter table add column ... 语句 并且保留该数据库脚本。建议先弄清楚 DDL,DML 的区别。另外,现在只需要打开浏览器写 SQL 就能完成系统开发了: https://enhancer.io
siknet
2017-12-31 16:25:04 +08:00
@ryh 嗯,确实存在你的这个情况,我试试 ALTER 循环追加好了。
siknet
2017-12-31 16:30:58 +08:00
@soooon 因为是用在爬虫里的数据库,后期爬到的数据并没有个固定数,所以只能往数据库里添加
THaGKI9
2018-01-20 14:05:36 +08:00
@siknet 那不如上 nosql ? mongo 处理这种数据就非常舒服

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/418990

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX