zoukankan      html  css  js  c++  java
  • MySQL创建表、更改表和删除表

    1.创建表

    mysql> create table t_address(
    -> id int primary key auto_increment, // 设置id为主键,自动增值
    -> bookid int,
    -> address varchar(100),
    -> note_address varchar(100),
    -> foreign key(bookid) references t_book(id) // 设置bookid为外键,引用到t_book表中的id字段
    -> );

    通过复制表的方式快速创建表

    mysql> create table t_copy as select * from t_booktype where id=0;  //这里给一个不存在的id的值,那么得到的新表只是复制了不包括约束的原表结构,没有复制数据

    mysql> create table t_copy as select * from t_booktype;  //复制了不带约束的表结构和全部数据

    mysql> create table t_authors as select authors from t_book where authors like '%richard%';

    mysql> create table t_copy like t_booktype;  // 复制原表结构和约束,但是没有数据

    常用的数据类型:

    varchar 可变长度字符串,可根据实际数据长度动态分配空间,最长255个字符(可存255个汉字或数字?)。

    char 定长字符串,不会动态分配空间,速度快,但是会导致空间浪费,最长255个字符。

    int 整数,最长11

    bigint 长整型

    float 单精度浮点型

    double 双精度浮点型

    date 短日期

    datetime 长日期

    clob (character large object) 字符大对象,最多可以存储4G字符串。

    blob (binary large object) 二进制大对象,声音、图片、视频等,需要IO流插入数据。

    常见表的约束:

    not null 非空约束,属于列级约束,只能加在字段后面

    unique 唯一性约束,但可以包含多个null,属于表级约束,与列级约束见下文所述例子

    create table t_user(
        id int,
        name varchar(32) not null,  // 列级约束
        birth date,
        create_time datetime,
        unique(id,name)  // 表级约束,多个字段添加某种约束
    )

    primary key 主键约束,每张表都应该有一个主键,不一定非得是关键字段用来当主键,只要能突出not null+unique即可,所以“id int primary key auto_increment,"这句话在创建表的时候用到就好了。主键不建议使用varchar类型,并且也不建议使用复合主键。

    foreign key 外键约束。比如有一张记录书籍信息的表,还有一张记录书籍类别的表,每一本书都属于某一种类别。这时书籍的表是子表,书籍类别的表是父表。子表中的外键引用父表中的字段,这个字段不一定是主键,但是需要具有唯一性。创建表时先创建父表,再创建子表;插入数据时先插入父表数据,再插入子表数据。子表中插入数据时,如果插入的是父表中没有的类别,那么会报错。删除表时则先删子表,再删父表。

    PS:如果两张表之间有多对多的关系,例如学生和老师,每个学生有多个老师,每个老师教多个学生,那么可以在学生和老师之间增加一个关系表,用于记录两者之间的关系。

    2.更改表

    a.增加字段

    mysql> alter table t_copy add column property varchar(20) after booktype;

    mysql> alter table t_copy add column property1 varchar(20),
    -> add column property2 varchar(20);

    b.删除字段

    mysql> alter table t_copy drop column property1,
    -> drop column property2;

    c.更改字段类型

    mysql> alter table t_copy modify column property int;

    d.给字段添加外键约束

    mysql> alter table t_copy add foreign key(property) references t_book(id) on delete cascade;

    e.删除字段的外键约束

    可以先用show create table t_copyG 查询到想要删除的外键约束的名称。

    mysql> show create table t_copyG
    *************************** 1. row ***************************
    Table: t_copy
    Create Table: CREATE TABLE `t_copy` (
    `id` int NOT NULL DEFAULT '0',
    `booktype` varchar(50) DEFAULT NULL,
    `property` int DEFAULT NULL,
    KEY `property` (`property`),
    CONSTRAINT `t_copy_ibfk_1` FOREIGN KEY (`property`) REFERENCES `t_book` (`id`) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

    mysql> alter table t_copy drop constraint t_copy_ibfk_1;

     f.将表A的a字段赋值给表B的b字段

    mysql>update A join B on A.id=B.Aid set A.a=B.b;

    3.删除表

    mysql> drop table if exists t_copy;

  • 相关阅读:
    leetcode链表--15、reverse-nodes-in-k-group(按照k值进行k个结点的逆序)
    4、消除重复元素--网易2017春招
    24、剑指offer--二叉树中和为某一值的路径
    leetcode链表--14、add-two-numbers(两链表相加 得到新链表)
    3、调整队形--网易2017春招
    2、赶去公司--网易2017春招
    1、双核处理--网易2017春招
    CSS3自定义滚动条样式 -webkit-scrollbar
    git安装使用
    div+css居中
  • 原文地址:https://www.cnblogs.com/larissa-0464/p/14977293.html
Copyright © 2011-2022 走看看