美文网首页mysqlMySQL数据库
MySql数据库·表管理

MySql数据库·表管理

作者: 技术老男孩 | 来源:发表于2023-01-30 08:03 被阅读0次

    一、表的定义:

    • 表是存储数据的文件
    • 创建表之后会在/var/lib/mysql/库目录下生成表名.frm表名.ibd二个文件,前者存的是表头信息,后者存的是数据记录

    二、语法格式:

    创建表:

    CREATE TABLE 库名.表名(
    表头名1 数据类型,
    表头名2 数据类型,
    ...
    );

    查看表头:

    DESC 库名.表名;

    删除表:

    DROP TABLE 库名.表名;

    修改表:

    ALTER TABLE 库名.表名 操作命令;

    • 操作命令:
      add添加新表头:... 库名.表名 add 表头名 数据类型 位置命令;
      drop删除表头:... 库名.表名 drop 表头名1, drop 表头名2...;
      modify修改表头数据类型:... 库名.表名 modify 表头名 数据类型;
      modify修改表头的位置:... 库名.表名 modify 表头名 数据类型 位置命令;
      change修改表头名:... 库名.表名 change 原表头名 新表头名 数据类型;
      rename修改表名:... 库名.原表名 rename 库名.新表名;
    • 位置命令:
      first:把表头添加首位
      after:添加在指定表头名的下方(after 表头名)

    复制表:

    • 复制表头及表数据:
      CREATE TABLE 库名.表名 SELECT 字段名 FROM 库名.表名
    • 仅仅复制表头不复制表数据:
      CREATE TABLE 库名.表名 LIKE 库名.表名

    三、使用示例:

    • 修改表头数据类型
    # Alter table  库.表名 modify 表头名 数据类型 ;
    mysql> alter table studb.stuinfo modify mail varchar(50);
    mysql> desc studb.stuinfo;
    +--------+-------------+------+-----+-------------+-------+
    | Field  | Type        | Null | Key | Default     | Extra |
    +--------+-------------+------+-----+-------------+-------+
    | number | char(9)     | YES  |     | NULL        |       |
    | name   | char(10)    | YES  |     | NULL        |       |
    | school | char(10)    | YES  |     | NULL        |       |
    | class  | char(9)     | YES  |     | NULL        |       |
    | gender | char(4)     | YES  |     | NULL        |       |
    | mail   | varchar(50) | YES   |     |NULL        |       |
    +--------+-------------+------+-----+-------------+-------+
    
    • 删除多个表头
    mysql> alter table studb.stuinfo drop school,drop 班级,drop mail;
    
    • 复制表(拷贝已有的表 和系统命令 cp 的功能一样 )
    • 表头和数据都复制
    # create table  库名.表名 select * from 库名.表名;
    # 拷贝 tarena库下的user表到   studb库里 表名不变
    mysql> create table studb.user select * from tarena.user;
    mysql> show tables;
    +-----------------+
    | Tables_in_studb |
    +-----------------+
    | stuinfo         |
    | user            |
    +-----------------+
    
    # 查看数据
    mysql> select * from studb.user; 
    
    • 仅仅复制表头命令
    # 仅仅复制tarena.user的表头到studb.user2
    mysql> create table studb.user2  like tarena.user; 
    
    mysql> show tables;
    +-----------------+
    | Tables_in_studb |
    +-----------------+
    | stuinfo         |
    | user            |
    | user2           |
    +-----------------+
    3 rows in set (0.00 sec)
    
    # 查询无数据
    mysql> select * from studb.user2;
    Empty set (0.00 sec)
    
    # 查询表头信息
    mysql> desc studb.user2;
    +----------+-------------+------+-----+---------+----------------+
    | Field    | Type        | Null | Key | Default | Extra          |
    +----------+-------------+------+-----+---------+----------------+
    | id       | int(11)     | NO   | PRI | NULL    | auto_increment |
    | name     | char(20)    | YES  |     | NULL    |                |
    | password | char(1)     | YES  |     | NULL    |                |
    | uid      | int(11)     | YES  |     | NULL    |                |
    | gid      | int(11)     | YES  |     | NULL    |                |
    | comment  | varchar(50) | YES  |     | NULL    |                |
    | homedir  | varchar(80) | YES  |     | NULL    |                |
    | shell    | char(30)    | YES  |     | NULL    |                |
    +----------+-------------+------+-----+---------+----------------+
    8 rows in set (0.00 sec)
    

    相关文章

      网友评论

        本文标题:MySql数据库·表管理

        本文链接:https://www.haomeiwen.com/subject/txtvcdtx.html