V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
siknet
V2EX  ›  MySQL

问个入门的 SQL 语句问题

  •  
  •   siknet · 2017-12-31 13:39:33 +08:00 · 4104 次点击
    这是一个创建于 2538 天前的主题,其中的信息可能已经有所发展或是发生改变。
    故事是这样的。。。。

    我创建了一个表:
    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.地址-})
    11 条回复    2018-01-20 14:05:36 +08:00
    u1ucky
        1
    u1ucky  
       2017-12-31 13:47:30 +08:00 via Android
    看你用什么数据库了。

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

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

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

    另 mysql 有时候表名、字段名有些大小写的坑,最好全部小写比较稳妥
    soooon
        8
    soooon  
       2017-12-31 16:23:40 +08:00
    这个属于改变表结构的需求了,专业的做法是用 alter table add column ... 语句 并且保留该数据库脚本。建议先弄清楚 DDL,DML 的区别。另外,现在只需要打开浏览器写 SQL 就能完成系统开发了: https://enhancer.io
    siknet
        9
    siknet  
    OP
       2017-12-31 16:25:04 +08:00
    @ryh 嗯,确实存在你的这个情况,我试试 ALTER 循环追加好了。
    siknet
        10
    siknet  
    OP
       2017-12-31 16:30:58 +08:00
    @soooon 因为是用在爬虫里的数据库,后期爬到的数据并没有个固定数,所以只能往数据库里添加
    THaGKI9
        11
    THaGKI9  
       2018-01-20 14:05:36 +08:00 via iPhone
    @siknet 那不如上 nosql ? mongo 处理这种数据就非常舒服
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2885 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:06 · PVG 08:06 · LAX 16:06 · JFK 19:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.