MySQL表的创建、插入与更新

创建和操作表

  • 创建表
    • 使用交互式创建和管理表工具
    • 直接使用MySQL语句创建
  • 表创建基础
    • CREAT TABEL 创建表
      • 新表名字在关键词 CREATE TABLE 之后给出
      • 表列的名字何定义用逗号隔开
      • eg:
CREATE TABLE IF NOT EXISTS vocstable(
            rowid                  INT(11)             NOT AUTO_INCREMENT         
            stationCode         INT(11)             NOT NULL, 
            city                    VARCHAR(16) CHARACTER SET utf8L,
            stationName        VARCHAR(20) CHARACTER SET utf8,
            instrumentCode    INT(11)             NOT NULL DEFAULT 1,
            dateTime             DATETIME         NOT NULL,
            lon                     FLOAT(10),
            lat                      FLOAT(10),
            PRIMARY KEY(stationCode,dateTime)
        ) ENGINE=InnoDB;
  • 创建表时注意:每列的定义以列名开始,他在表中必须具有唯一性,后跟列的数据类型,表的主键在创建表时使用 PRIMARY KEY指定
  • 仅仅想在一个表不存在时创建,则使用 CREAT TABLE IF NOT EXISTS
  • 使用NULL
    • NULL 定义列中可以存在缺测值
    • NOT NULL 定义列中不可以存在缺测值
  • 主键
    • 主键必须是唯一的,即表中的每个行必须具有唯一的主键值,主键可以是多个列的组合
  • AUTO_INCREMENT
    • 表示每增加一行MySQL对该列进行自动增量
  • DEFAULT
    • 定义默认值,当该值缺测时,采用DEFAULT指定的数值作为默认值
  • 引擎类型
    • 如果不设定默认引擎,多数使用的时MyISAM
    • InnoDB是一个可靠的事务处理引擎,不支持全文搜索
    • MEMORY在功能上等同于 MyISAM,但是由于数据储存在内存中,速度快
    • MyISAM性能极高,支持全文搜索,但是不支持事务处理


  • 更新表
    • ALTER TABLE
      • 在ALTER TABLE 之后要给出更改表名
      • 所作更改的列表
    • ALTER TABLE vendors ADD vend_phone CHAR(20)
      • 给 vendors增加一个名为vend_phone的列,必须明确其数据类型
    • ALTER TABLE vendors DROP COLUMN vend_phone
      • 删除刚刚添加的列
    • ALTER TABLE 一种常见的用途是定义外键
      • ALTER TABLE orderitems ADD CONSTRAINT fk_ordertiems_others FOREIGN KEY(order_num) REFERENCES orders (order_num);
    • 使用表操作时要时刻谨记,MySQL数据库操作不可以撤销,在进行试验前需要先将表备份
  • 删除表
    • DROP TABLE customers2
  • 重命名表
    • RENAME TABLE customers2 TO coutomers
    • 可以对多个表进行重命名
      • RENAME TABLE customers2 TO coutomers, order2 TO order

插入数据

  • 插入数据
    • INSERT:
      • 插入完整的行
      • 插入行的一部分
      • 插入多行
      • 插入某些查询的结果
    • 插入完整的行
      • INSERT INTO customer VALUES (NULL, ‘PeP E. LAPew’, ‘100 Main Stree’, ‘Los Angels’,‘CA’)
      • 插入语句一般不产生输出
      • 安全INSERT方式
      • INSERT INTO customer ({columns names}) VALUES ({values})
    • 省略列
      • 该列定义为允许NULL值
      • 在表定义中给出默认值,这表示如果不给出值,将使用默认值
    • 提升整体性能
      • 可以通过在INSERT INTO中间添加LOW_PRIORITY,指示MySQL降低INSERT的优先级
      • INSERT LOW_PRIORITY INTO
    • 插入行
      • INSERT INTO {tablename} (coulmns names) VALUES (valuseLs1), (valuesLs2)
    • 插入检索出的数据
      • 采用 INSERT与SELECT 结合的方式
      • INSERT INTO customers({columns name}) SELECT {columns name} FROM custnew
      • 当然 SELECT的所有子句均可以结合进行操作

跟新或删除数据

  • 更新数据
  • 可以使用 UPDATE语句
    • 更新表中特定行
    • 更新表中所有行
  • UPDATE语句要包括:
    • 要更新的表
    • 列命和他们的新值
    • 确定更新行的过滤条件
    • UPDATE customers SET cust_email = ‘elmer@fudd.com’ WHERE cust_id=10005
      • 其中SET cust_email = ‘elmaer@fudd.com’ 指定更新的值
    • 更新多个列,只需要单个SET命令
      • UPDATE customers
        SET cust_name=‘The Fubbs’,
        cust_email=‘elmaer@fubb.com’
        WHERE cust_id=10005;
    • IGNORE关键词
      • UPDATE IGNORE customers
      • 在插入多行是出现一个错误时,忽略,继续进行后续的操作
  • 删除数据
    • 从一个表中删除数据,使用DELETE
      • 从表中删除特征的行
      • 从表中删除所有行
    • DELETE 不可以随便使用
      • DELETE FROM customers WHERE cust_id=10006
    • 更快的删除
      • TRUNCATE TABLE
      • 删除原有的表并重新创建一个表
    • 更新和删除的原则
      • 结合WHERE,如何不结合,则表中所有的数据都将被删除或者更新
      • 保证每个表都有主键,尽可能像WHERE子句那样使用它
      • 在对UPDATE或者DELETE语句使用WHERE字句前,应该先用SELECT进行测试,保证过滤的为正确信息
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值