MySql数据库·表管理
2024-04-09 21:30:47  阅读数 361

一、表的定义:

  • 表是存储数据的文件
  • 创建表之后会在/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)