zoukankan      html  css  js  c++  java
  • python进阶(九、mysql:修改表结构、多表结构、数据增删改)

    3.mysql数据库
    3.7 修改表结构 alter(很少使用)
    语法:
    1)修改表名
    ALTER TABLE 表名RENAME 新表名;

    2)增加字段
    ALTER TABLE 表名
    ADD 字段名 数据类型 [完整性约束条件…],
    ADD 字段名 数据类型 [完整性约束条件…];
    此处可以增加排序的约束

    3)删除字段
    ALTER TABLE 表名 DROP 字段名;

    4)修改字段
    ALTER TABLE 表名 MODIFY 字段名 数据类型 [完整性约束条件…]; # 不能改名
    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

    5)修改字段排列顺序/在增加的时候指定字段位置
    ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] FIRST;
    ALTER TABLE 表名 ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名;
    ALTER TABLE 表名 CHANGE 字段名 旧字段名 新字段名 新数据类型 [完整性约束条件…] FIRST;
    ALTER TABLE 表名 MODIFY 字段名 数据类型 [完整性约束条件…] AFTER 字段名;

    6)去除或添加null或unique
    去掉null约束
    alter table t modify name char(10) null;
    添加null约束
    alter table t modify name char(10) not null;
    去掉unique约束
    alter table t drop index id;
    添加unique约束
    alter table t modify id int unique;
    添加联合唯一
    alter table t add unique index(aa,bb);

    7)去除或添加主键
    如果发现主键设置错了,应该是id是主键,但如今表里已经有好多数据了,不能删除表再重建了,仅仅能在这基础上改动表结构。
    先删除主键
    alter table table_test drop primary key;
    然后再增加主键
    alter table table_test add primary key(id);
    注:在增加主键之前,必须先把反复的id删除掉。

    8)去除或添加外键
    为book表添加外键
    alter table book add constraint fk_id foreign key(press_id) references press(id);
    删除外键
    alter table book drop foreign key fk_id;

    3.8 多表结构的创建与分析
    1)多对一:
    多个学生在同一班

    2)多对多
    两张表双向的多对一,即多对多,需要定义一个这两张表的关系表来专门存放二者的关系。
    1个订单包含多个商品,1个商品属于多个订单。

    3)一对一:
    左表的一条记录唯一对应右表的一条记录,反之亦然。这种情况很简单,就是在左表foreign key右表的基础上,将左表的外键字段设置成unique即可
    学生的学号和身份证号码是一一对应。

    4)作业:

    student_id int,
    course_id int,
    foreign key(student_id) references student(sid),
    foreign key(course_id) references course(cid)

    3.9 数据的增删改
    3.9.1. 新增数据insert into
    1)插入完整数据(顺序插入)
    INSERT INTO 表名 VALUES (值1,值2,值3…值n);

    2)指定字段插入数据
    INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…);

    3)插入多条记录
    INSERT INTO 表名 VALUES
    (值1,值2,值3…值n),
    (值1,值2,值3…值n),
    (值1,值2,值3…值n);

    4)插入查询结果(了解)
    INSERT INTO 表1(字段1,字段2,字段3…字段n)
    SELECT字段1,字段2,字段3…字段n FROM 表2
    WHERE …;
    将表2的查询结果写入表1,表1的字段名和表2可以不同,但要一一对应。不写where语句,可以复制表2所有数据的对应字段

    3.9.2. 删除数据delete/truncate
    1)按条件删除
    DELETE FROM 表名 WHERE 条件;

    2)清空表(慎用)
    DELETE FROM 表名; 清空表,但不会清空自增字段的offset(偏移量)值
    show create table 表名; 可以查到offset值

    3)清空表和offset值(慎用)
    truncate table 表名; 清空表和offset值

    3.9.3. 修改数据update
    UPDATE 表名 SET
    字段1=值1,
    字段2=值2
    WHERE 条件;

  • 相关阅读:
    Newtonsoft.Json序列化 对时间格式化处理
    CSS常用提示浮出层的写法
    避免常见的6种HTML5错误用法
    varchar(Max) 对应SqlParameter 数据类型长度改为1
    IIS指定域名不能调试解决办法
    如何弹出固定大小及内容的网页窗口
    CSS图片圆角框的灵活处理
    精通CSS:高级Web标准解决方案(中文电子书下载)
    AjaxControlToolKit(整理)三.......(35个控件)简单介绍
    CSS通用开发库
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14088689.html
Copyright © 2011-2022 走看看