MySQL库表操作

1.1 数据库操作

1.1.1数据库的登录及退出

  • 准备工作
sql 复制代码
[root@server ~]# systemctl start mysqld
# 必须先启动服务否则报错,如下所述报错信息:
[root@server ~]# mysql -uroot -p
  • 登录格式
sql 复制代码
mysql -u 用户名 -h 服务器的主机地址 -p密码
  • 分析
    • -u 后面跟登录数据库的用户名,这里使用root
    • -h 后面的参数是服务器的主机地址,在这里客户端和服务器在同一台机器上,所以输入localhost或者IP地址
    • -p 后面是用户登录密码,注意:-p 和密码之间没有空格。如果出现空格,系统不会把后面的字符串当成密码来对待,没有密码时不写
  • 登录信息如下:
sql 复制代码
[root@server ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.45 MySQL Community Server - GPL

Copyright (c) 2000, 2026, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  • 显示信息解释:
    • Commands end with; or\g:mysql 命令是以分号(;)或"\g"来结束的,遇到这个结束符就开始执行命令
    • Your MySQL connection id is 8:数据库的连接次数
    • Server version:8.0.37 Source distribution:版本
    • Type 'help;' or '\h' for help:输入"help;"或者"\h"可以看到帮助信息
    • Type '\c' to clear the current input statement:表示遇到"\c"就清楚前面的命令,注意不是清屏
  • 退出:exit、quit、\q

1.1.2 查看数据库

  • 格式:
sql 复制代码
mysql> show databases [like 条件]; # 注意有s
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
  • 使用条件查看
sql 复制代码
mysql> show databases like 'sys';
+----------------+
| Database (sys) |
+----------------+
| sys            |
+----------------+
1 row in set (0.00 sec)
  • 带有通配符的条件
    • %:匹配任意零个或多个字符
    • _:匹配任意单个字符
sql 复制代码
mysql> show databases like 's%';
+---------------+
| Database (s%) |
+---------------+
| sys           |
+---------------+
1 row in set (0.00 sec)
mysql> show databases like '__sql';
+------------------+
| Database (__sql) |
+------------------+
| mysql            |
+------------------+
  • 查看数据库当前时间
sql 复制代码
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2023-02-10 09:39:14 |
+---------------------+
1 row in set (0.00 sec)
  • 显示数据库版本
sql 复制代码
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.37    |
+-----------+
1 row in set (0.00 sec)
  • 查看当前登录的用户及主机名
sql 复制代码
mysql> select user();
+----------------+
| user()         |
+----------------+
| root@localhost |
+----------------+

1.1.3 创建数据库

  • 格式:
sql 复制代码
create database 数据库名
  • 示例:
sql 复制代码
mysql> create database testdb;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
  • 若数据库已存在,则报错
sql 复制代码
mysql> create database testdb;
ERROR 1007 (HY000): Can't create database 'testdb'; database exists
  • 查看创建数据库的语句
  • 格式:
sql 复制代码
show create database 数据库名
  • 示例:
sql 复制代码
mysql> show create database testdb;
+----------+---------------------------------------------------------------------
-------------------------------------------------------------+
| Database | Create Database
                                                             |
+----------+---------------------------------------------------------------------
-------------------------------------------------------------+
| testdb | CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+---------------------------------------------------------------------
-------------------------------------------------------------+
1 row in set (0.00 sec)
# 上述表格因为内容太长,出现了折行显示
# 可以在语句末尾加上 \G
mysql> show create database testdb \G
*************************** 1. row ***************************
       Database: testdb
Create Database: CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci */ /*!80016 DEFAULT ENCRYPTION='N' */

1.1.4 切换数据库

  • 查看当前使用的数据库
  • 格式:
sql 复制代码
select databse();
  • 示例:
sql 复制代码
mysql> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+
  • 注意:当前没有使用数据库,则显示空
  • 选择数据库
  • 格式:
sql 复制代码
use 数据库名
  • 示例:
sql 复制代码
mysql> use testdb;        # 切换数据库可不加 ; 号
Database changed
mysql> select database(); # 再次查看
+------------+
| database() |
+------------+
| testdb     |
+------------+

1.1.5 删除数据库

  • 格式:
sql 复制代码
drop database 数据库名
  • 示例:
sql 复制代码
mysql> drop database testdb;
Query OK, 0 rows affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

1.1.6 小结

sql 复制代码
# 新建数据库
create database 数据库名;

# 设为当前数据库
use 数据库名;

# 查看当前使用的数据库
select database();

# 显示所有数据库
show databases;

# 删除数据库
drop database 数据库名;

1.2 MySQL 字符集

1.2.1 查看MySQL字符集

  • 查看所有支持的字符集
sql 复制代码
mysql> show character set;
+----------+---------------------------+---------------------+--------+
| Charset  | Description               | Default collation   | Maxlen |
+----------+---------------------------+---------------------+--------+
| armscii8 | ARMSCII-8 Armenian        | armscii8_general_ci | 1      |
| ascii    | US ASCII                  | ascii_general_ci    | 1      |
| big5     | Big5 Traditional Chinese  | big5_chinese_ci     | 2      |
| binary   | Binary pseudo charset     | binary              | 1      |
............
# 字段含义
# Charset: 字符集的名称;
# Description:字符集的简单描述;
# Default collation:该字符集的默认字符序;
# Maxlen:该字符集中字符最大存储长度。
  • 查看指定字符集
sql 复制代码
mysql> show character set like 'gbk';
+---------+------------------------+-------------------+--------+
| Charset | Description            | Default collation | Maxlen |
+---------+------------------------+-------------------+--------+
| gbk     | GBK Simplified Chinese | gbk_chinese_ci    | 2      |
+---------+------------------------+-------------------+--------+
1 row in set (0.00 sec)
mysql> show character set like 'utf%';
+---------+------------------+--------------------+--------+
| Charset | Description      | Default collation  | Maxlen |
+---------+------------------+--------------------+--------+
| utf16   | UTF-16 Unicode   | utf16_general_ci   | 4      |
| utf16le | UTF-16LE Unicode | utf16le_general_ci | 4      |
| utf32   | UTF-32 Unicode   | utf32_general_ci   | 4      |
| utf8mb3 | UTF-8 Unicode    | utf8mb3_general_ci | 3      |
| utf8mb4 | UTF-8 Unicode    | utf8mb4_0900_ai_ci | 4      |
+---------+------------------+--------------------+--------+

1.2.2 查看MySQL字符序

  • 查看支持的字符序
sql 复制代码
mysql> show collation;

# 字段含义
# Collation:字符序名称;
# Charset:该字符序关联的字符集;
# Id:字符序ID;
# Default:该字符序是否是所关联的字符集的默认字符序。armscii8_general_ci就是armscii8的默认字符序,而armscii8_bin就不是;
# Compiled:字符集是否已编译到服务器中;
# Sortlen:这与对以字符集表示的字符串进行排序所需的内存量有关;
# Pad_attribute:这表明了字符序在比较字符串时对末尾padding的处理。NO PAD表明在比较字符串时,末尾的padding也会考虑进去,否则不考虑。

1.2.3 查看当前字符集的设置

  • 通过变量查看
sql 复制代码
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4 # 重要              |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4 # 重要              |
| character_set_system     | utf8mb3                    |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
  • 变量含义:
sql 复制代码
character_set_client:MySQL客户端的字符集。
character_set_connection:数据通信链路字符集,当MySQL客户机向服务器发送请求时,请求数据以该字符集进行编码。
character_set_database:数据库默认使用的字符集。
character_set_filesystem:MySQL服务器文件系统字符集,该值是固定的binary。
character_set_results:服务器返回给客户端的结果使用的字符集。
character_set_server:服务器默认的字符集。
character_set_system:服务器存储元数据使用的字符集。

1.3 表的基本操作

1.3.1 数据类型

  • 示例:
sql 复制代码
mysql> create database mydb1_test;
mysql> use mydb1_test;
Database changed
mysql> create table t1(float_num float(10,2) , double_num double(20,2) ,
decimal_num decimal(20,2));
Query OK, 0 rows affected, 2 warnings (0.03 sec)
mysql> insert into t1 value (1234567.66,1234567899000000.66,123456789000000.66);
Query OK, 1 row affected (0.00 sec)
mysql> select * from t1;
+------------+---------------------+--------------------+
| float_num  | double_num          | decimal_num        |
+------------+---------------------+--------------------+
| 1234567.62 | 1234567899000000.80 | 123456789000000.66 |
+------------+---------------------+--------------------+
  • 常用数据类型:

1.3.2 创建表

  • 格式:
sql 复制代码
create table [if not exists] 表名 (表选项)
  • 表定义选项格式为:
sql 复制代码
列名1 列类型1 约束, 列名2 列类型2 约束, ......
  • 示例1:创建数据库并新建表
sql 复制代码
mysql> select database(); # 查看当前数据库

mysql> create database mydb2_stuinfo; # 创建数据库
Query OK, 1 row affected (0.02 sec)

mysql> use mydb2_stuinfo; # 使用数据库
Database changed

mysql> select database();
+---------------+
| database()    |
+---------------+
| mydb2_stuinfo |
+---------------+

mysql> create table student1(id int, name varchar(30), sex char(2), age int
unsigned, score float, addr varchar(50));
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+-------------------------+
| Tables_in_mydb2_stuinfo |
+-------------------------+
| student1                |
+-------------------------+

mysql> desc student1;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int          | YES  |     | NULL    |       |
| name  | varchar(30)  | YES  |     | NULL    |       |
| sex   | char(2)      | YES  |     | NULL    |       |
| age   | int unsigned | YES  |     | NULL    |       |
| score | float        | YES  |     | NULL    |       |
| addr  | varchar(50)  | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
  • 示例2:新建员工表
sql 复制代码
mysql> create database mydb3_employee;
Query OK, 1 row affected (0.01 sec)

mysql> use mydb3_employee;
Database changed

mysql> select database();
+----------------+
| database()     |
+----------------+
| mydb3_employee |
+----------------+

mysql> create table tb1(id int(11), name varchar(25), salary float);
Query OK, 0 rows affected, 1 warning (0.03 sec)

mysql> show tables;
+--------------------------+
| Tables_in_mydb3_employee |
+--------------------------+
| tb1                      |
+--------------------------+
1 row in set (0.00 sec)

mysql> desc tb1;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int         | YES  |     | NULL    |       |
| name   | varchar(25) | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

1.3.3 查看表

  • show语句:显示当前数据库中已有的数据表
sql 复制代码
show tables [from 数据库名][like wild];
sql 复制代码
mysql> show tables;
+-------------------------+
| Tables_in_mydb2_stuinfo |
+-------------------------+
| class1                  |
| student1                |
+-------------------------+
2 rows in set (0.00 sec)

mysql> show tables from mydb3_employee; # 查看另一个库的表示信息
+--------------------------+
| Tables_in_mydb3_employee |
+--------------------------+
| tb1                      |
+--------------------------+
1 row in set (0.00 sec)
  • 使用\G可以查看更全面的表定义信息
sql 复制代码
mysql> show create table student1\G
*************************** 1. row ***************************
       Table: student1
Create Table: CREATE TABLE `student1` (
  `id` int DEFAULT NULL,
  `name` varchar(30) DEFAULT NULL,
  `sex` char(2) DEFAULT NULL,
  `age` int unsigned DEFAULT NULL,
  `score` float DEFAULT NULL,
  `addr` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
  • describe语句:查看数据库表中各列的信息
sql 复制代码
{describe|desc}表名[列名];
# or
show columns from 表名称;
sql 复制代码
mysql> use mydb2_stuinfo;

mysql> desc student1;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int          | YES  |     | NULL    |       |
| name  | varchar(30)  | YES  |     | NULL    |       |
| sex   | char(2)      | YES  |     | NULL    |       |
| age   | int unsigned | YES  |     | NULL    |       |
| score | float        | YES  |     | NULL    |       |
| addr  | varchar(50)  | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

1.3.4 删除表

  • 格式:
sql 复制代码
drop table [if exists] 表名;
sql 复制代码
mysql> use mydb3_employee;
Database changed

mysql> desc tb1;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int         | YES  |     | NULL    |       |
| name   | varchar(25) | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> drop table tb1;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
Empty set (0.00 sec)
  • 注意:
    • 用户必须拥有执行 drop table 命令的权限,否则数据表不会被删除
    • 推荐使用 if exists 字句,即先判断是否存在,存在则删除,如:
sql 复制代码
mysql> drop table if exists tb1;
Query OK, 0 rows affected (0.01 sec)

1.3.5 修改表

1.3.5.1 修改表名

  • 更改表名(重命名):
sql 复制代码
# 法1:
alter table 表名 rename 新表名;

# 法2:
rename table 表名 to 新表名;
sql 复制代码
mysql> use mydb2_stuinfo;
Database changed

mysql> show tables;
+-------------------------+
| Tables_in_mydb2_stuinfo |
+-------------------------+
| class1                  |
| student1                |
+-------------------------+
1 row in set (0.00 sec)

mysql> create table student2(id int, name varchar(30), salary float);
Query OK, 0 rows affected, 1 warning (0.05 sec)

mysql> desc student2;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int         | YES  |     | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| salary | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> alter table student2 rename student3; # 修改
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+-------------------------+
| Tables_in_mydb2_stuinfo |
+-------------------------+
| class1                  |
| student1                |
| student3                |
+-------------------------+
2 rows in set (0.01 sec)

mysql> rename table student3 to teacher1; # 修改
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+-------------------------+
| Tables_in_mydb2_stuinfo |
+-------------------------+
| class1                  |
| student1                |
| teacher1                |
+-------------------------+
2 rows in set (0.00 sec)

1.3.5.2 新增列

  • 添加新列
sql 复制代码
alter table 表名 add 新列名 列类型 [after|first] 列名;

# after:在指定列之后插入新列
# first:在第一列插入新列
# 注意:无before关键字
sql 复制代码
# 例:增加一列password
mysql> alter table student1 add password char(8);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc student1;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int          | YES  |     | NULL    |       |
| name     | varchar(30)  | YES  |     | NULL    |       |
| sex      | char(2)      | YES  |     | NULL    |       |
| age      | int unsigned | YES  |     | NULL    |       |
| score    | float        | YES  |     | NULL    |       |
| addr     | varchar(50)  | YES  |     | NULL    |       |
| password | char(8)      | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

# 例:再添加一个新列notes varchar(30),位置在score之前
mysql> alter table student1 add notes varchar(30) after age;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc student1;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int          | YES  |     | NULL    |       |
| name     | varchar(30)  | YES  |     | NULL    |       |
| sex      | char(2)      | YES  |     | NULL    |       |
| age      | int unsigned | YES  |     | NULL    |       |
| notes    | varchar(30)  | YES  |     | NULL    |       |
| score    | float        | YES  |     | NULL    |       |   
| addr     | varchar(50)  | YES  |     | NULL    |       |
| password | char(8)      | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

# 例:再第一列添加一个新列
mysql> alter table student1 add aa int first;

mysql> desc student1;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| aa       | int          | YES  |     | NULL    |       |
| id       | int          | YES  |     | NULL    |       |
| name     | varchar(30)  | YES  |     | NULL    |       |
| sex      | char(2)      | YES  |     | NULL    |       |
| age      | int unsigned | YES  |     | NULL    |       |
| notes    | varchar(30)  | YES  |     | NULL    |       |
| score    | float        | YES  |     | NULL    |       |
| addr     | varchar(50)  | YES  |     | NULL    |       |
| password | char(8)      | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
9 rows in set (0.00 sec)

1.3.5.3 删除列

sql 复制代码
alter table 表名 DROP 列名;
sql 复制代码
# 例:删除上例的notes、aa列
mysql> alter table student1 drop notes;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> alter table student1 drop aa;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc student1;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int          | YES  |     | NULL    |       |
| name     | varchar(30)  | YES  |     | NULL    |       |
| sex      | char(2)      | YES  |     | NULL    |       |
| age      | int unsigned | YES  |     | NULL    |       |
| score    | float        | YES  |     | NULL    |       |
| addr     | varchar(50)  | YES  |     | NULL    |       |
| password | char(8)      | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

1.3.5.4 修改列名

sql 复制代码
alter table 表名 change 旧列名 新列名 列类型;

# change 可列名列类型一起修改
sql 复制代码
mysql> alter table student1 change password passwd char(8); # 改名
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc student1;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id     | int          | YES  |     | NULL    |       |
| name   | varchar(30)  | YES  |     | NULL    |       |
| sex    | char(2)      | YES  |     | NULL    |       |
| age    | int unsigned | YES  |     | NULL    |       |
| score  | float        | YES  |     | NULL    |       |
| addr   | varchar(50)  | YES  |     | NULL    |       |
| passwd | char(8)      | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
7 rows in set (0.01 sec)

1.3.5.5 修改列类型

sql 复制代码
alter table 表名 modify 列名 列类型;
sql 复制代码
# 插入新列,修改类型
mysql> alter table student1 add birthday char(10); # 增加
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc student1;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int          | YES  |     | NULL    |       |
| name     | varchar(30)  | YES  |     | NULL    |       |
| sex      | char(2)      | YES  |     | NULL    |       |
| age      | int unsigned | YES  |     | NULL    |       |
| score    | float        | YES  |     | NULL    |       |
| addr     | varchar(50)  | YES  |     | NULL    |       |
| passwd   | char(8)      | YES  |     | NULL    |       |
| birthday | char(10)     | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
8 rows in set (0.00 sec)

mysql> alter table student1 modify birthday date; # 修改
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc student1;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| id       | int          | YES  |     | NULL    |       |
| name     | varchar(30)  | YES  |     | NULL    |       |
| sex      | char(2)      | YES  |     | NULL    |       |
| age      | int unsigned | YES  |     | NULL    |       |
| score    | float        | YES  |     | NULL    |       |
| addr     | varchar(50)  | YES  |     | NULL    |       |
| passwd   | char(8)      | YES  |     | NULL    |       |
| birthday | date         | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
8 rows in set (0.00 sec)

1.3.5.6 修改列位置

sql 复制代码
alter table 表名 modify 列名 列类型 after 某列;

alter table 表名 modify 列名 列类型 first;
sql 复制代码
# 例:添加新列
mysql> alter table student1 add notes varchar(30) after name;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

# 删除该列
mysql> alter table student1 drop notes;

1.3.6 复制表

1.3.6.1 复制表结构

sql 复制代码
create table 新表名 like 源表
sql 复制代码
mysql> use mydb2_stuinfo;

mysql> insert into student1
value(1000,"zhangsan","M",18,98.5,"xi'an","12345678","2005-10-01");
Query OK, 1 row affected (0.00 sec)

mysql> insert into student1 value(1001, "lisi", "W", 20,66.79,"baoji","87654321","2003-5-01");

mysql> select * from student1;

mysql> create table student2 like student1;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+-------------------------+
| Tables_in_mydb2_stuinfo |
+-------------------------+
| class1                  |
| student1                |
| teacher1                |
+-------------------------+
3 rows in set (0.00 sec)

mysql> select * from student2; # 注意:只是复制结构框架
Empty set (0.00 sec)

1.3.6.2 复制表结构+数据

sql 复制代码
create table 新表名 select * from 源表
sql 复制代码
mysql> create table student3 select * from student1;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> show tables;
+-------------------------+
| Tables_in_mydb2_stuinfo |
+-------------------------+
| class1                  |
| student1                |
| student2                |
| student3                |
| teacher1                |
+-------------------------+
4 rows in set (0.00 sec)

mysql> select * from student3;
+------+----------+------+------+-------+-------+----------+------------+
| id   | name     | sex  | age  | score | addr  | passwd   | birthday   |
+------+----------+------+------+-------+-------+----------+------------+
| 1000 | zhangsan | M    | 18   | 98.5  | xi'an | 12345678 | 2005-10-01 |
| 1001 | lisi     | W    | 20   | 66.79 | baoji | 87654321 | 2003-05-01 |
+------+----------+------+------+-------+-------+----------+------------+

1.3.6.3 复制表数据

sql 复制代码
mysql> select * from student2;
Empty set (0.00 sec)

mysql> insert into student2 select * from student1;
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0

mysql> select * from student2;

# 删除 student2 student3 teacher1 表
mysql> drop table if exists student2;
mysql> drop table if exists student3;
mysql> drop table if exists teacher1;

mysql> show tables;
+-------------------------+
| Tables_in_mydb2_stuinfo |
+-------------------------+
| class1                  |
| student1                |
+-------------------------+

1.3.7 小结

sql 复制代码
# 新建表
create tables 表名(列名1 类型 , 列名2 类型 ......);

# 查看表结构
desc 表名;

# 修改表名
alter table 旧表名 rename 新表名;

# 表中添加新列
alter table 表名 add 新列名 列类型 [after|first] 列名; (after为之后)

# 删除列
alter table 表名 DROP 列名;

# 修改列名
alter table 表名 change 旧列名 新列名 列类型;

# 修改列类型
alter table 表名 modify 列名 列类型;

# 移动列
alter table 表名 modify 列名 列类型 after 某列;

# 删除表
drop table if exists 表名;
相关推荐
风哥2号1 小时前
数据库教程FGMT69:PostgreSQL运维诊断与监控分析
运维·数据库·postgresql
ss2732 小时前
AI时代首先数据库-PostgreSQL实战笔记 27 PostgreSQL数据写入与读取流程解析
数据库·笔记·postgresql
数字新视界2 小时前
信创机房动环监控技术在智能运维中的应用与优势分析
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
星光开发者2 小时前
基于springboot智慧草场牛羊管理系统-计算机毕设【课程设计】50360
vue.js·spring boot·后端·mysql·php·课程设计·express
悟天特斯2 小时前
边缘计算的“实时决策“:从数据回传到边端即时推理的决策升级
数据库·人工智能·边缘计算
这个DBA有点耶2 小时前
分布式集群的“最后一公里”:分片集群与透明分布式集群的工程代价拆解
数据库·分布式·架构
猫咪很可爱3 小时前
MySQL 视图与只读用户:安全查询的完整实践指南
数据库·sql·mysql
l1t3 小时前
测试用go语言执行脚本把数据保存到SQLite数据库
数据库·golang·sqlite
猫咪很可爱3 小时前
MySQL 5.7 备份恢复后函数与存储过程丢失:原因分析与正确备份姿势
数据库·mysql·bug·shell