当前位置: 首页 > article >正文

MySql数据库中的表的操作

        本篇中将全面的介绍关于 MySql 数据库中的关于表的增删查改,其中主要分为表的创建、查看表结构、修改表以及删除表,目录如下:

目录

表的创建(增加)

查看表结构

修改表

修改表名

增加表元素

给表增加一列

指定列修改

删除表的某一列

修改某一列的名称

删除表

表的创建(增加)

        创建表的语法格式和样例如下:

create table table_name (
    field1 datatype,
    field2 datatype,
    field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

// field 表示列名
// datatype 表示列的类型
// character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
// collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

// 样例如下:
mysql> create table user1(
    -> id int,
    -> name varchar(20) comment '用户的姓名',
    -> password char(32) comment '用户的密码',
    -> birthday date comment '用户的生日'
    -> )engine=InnoDB;
Query OK, 0 rows affected (0.02 sec)

mysql> create table user2(
    -> id int,
    -> name varchar(20) comment '用户的姓名',
    -> password char(32) comment '用户的密码',
    -> birthday date comment '用户的生日'
    -> )engine=MyIsam;
Query OK, 0 rows affected (0.01 sec)

// 对应目录下创建的文件
root@hcss-ecs-1078:/var/lib/mysql/user_test# ll
total 128
drwxr-x--- 2 mysql mysql   4096 Aug 26 16:10 ./
drwx------ 9 mysql mysql   4096 Aug 26 15:42 ../
-rw-r----- 1 mysql mysql 114688 Aug 26 16:09 user1.ibd
-rw-r----- 1 mysql mysql   4004 Aug 26 16:10 user2_371.sdi
-rw-r----- 1 mysql mysql      0 Aug 26 16:10 user2.MYD
-rw-r----- 1 mysql mysql   1024 Aug 26 16:10 user2.MYI

        当创建出的表之后,会在对应的目录下创建出对应的表文件。

查看表结构

        查看表结构一共有以下两种方式,如下:

desc table_name;
mysql> desc user1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | YES  |     | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| password | char(32)    | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)


show create table table_name \G
mysql> show create table user1 \G
*************************** 1. row ***************************
       Table: user1
Create Table: CREATE TABLE `user1` (
  `id` int DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL COMMENT '用户的姓名',
  `password` char(32) DEFAULT NULL COMMENT '用户的密码',
  `birthday` date DEFAULT NULL COMMENT '用户的生日'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

修改表

        我们在的项目开发中,经常会修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等,这个时候我们就需要修改表了,主要使用的关键字为 alter,如下:

        修改表名
修改表名:alter table tablename1 rename to tablename2;
mysql> show tables;
+---------------------+
| Tables_in_user_test |
+---------------------+
| user1               |
+---------------------+
1 row in set (0.00 sec)

mysql> alter table user1 rename to user;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+---------------------+
| Tables_in_user_test |
+---------------------+
| user                |
+---------------------+
1 row in set (0.00 sec)
        增加表元素
insert into (field1, field2, filed3,...) vaules (data1, data2, data3,...)
mysql> insert into user values (2, '张三', '33556', '2018-11-26');
Query OK, 1 row affected (0.01 sec)

mysql> insert into user values (3, '李四', '33556', '2024-2-25');
Query OK, 1 row affected (0.00 sec)

mysql> insert into user values (4, '王五', '35546', '2020-2-25');
Query OK, 1 row affected (0.00 sec)

// 显示表中所有的数据
mysql> select * from user;
+------+--------+----------+------------+
| id   | name   | password | birthday   |
+------+--------+----------+------------+
|    2 | 张三   | 33556    | 2018-11-26 |
|    3 | 李四   | 33556    | 2024-02-25 |
|    4 | 王五   | 35546    | 2020-02-25 |
+------+--------+----------+------------+
        给表增加一列
语法:
alter table tablename add (column datatype [DEFAULT expr][,column datatype]...);


mysql> alter table user add image varchar(128) comment '用户图片' after birthday;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> select * from user;
+------+--------+----------+------------+-------+
| id   | name   | password | birthday   | image |
+------+--------+----------+------------+-------+
|    2 | 张三   | 33556    | 2018-11-26 | NULL  |
|    3 | 李四   | 33556    | 2024-02-25 | NULL  |
|    4 | 王五   | 35546    | 2020-02-25 | NULL  |
+------+--------+----------+------------+-------+
        指定列修改
mysql> show create table user \G
*************************** 1. row ***************************
       Table: user
Create Table: CREATE TABLE `user` (
  `id` int DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL COMMENT '用户的姓名',
  `password` char(32) DEFAULT NULL COMMENT '用户的密码',
  `birthday` date DEFAULT NULL COMMENT '用户的生日',
  `image` varchar(128) DEFAULT NULL COMMENT '用户图片'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

语法:
alter table tablename modify (column datatype [DEFAULT expr][,column
datatype]...);

mysql> alter table user modify name varchar(20);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table user \G
*************************** 1. row ***************************
       Table: user
Create Table: CREATE TABLE `user` (
  `id` int DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL,
  `password` char(32) DEFAULT NULL COMMENT '用户的密码',
  `birthday` date DEFAULT NULL COMMENT '用户的生日',
  `image` varchar(128) DEFAULT NULL COMMENT '用户图片'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
        删除表的某一列
语法:
alter table tablename drop (column);


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

mysql> select * from user;
+------+--------+----------+-------+
| id   | name   | password | image |
+------+--------+----------+-------+
|    2 | 张三   | 33556    | NULL  |
|    3 | 李四   | 33556    | NULL  |
|    4 | 王五   | 35546    | NULL  |
+------+--------+----------+-------+
3 rows in set (0.00 sec)
         修改某一列的名称 
语法:
alter table tablename change column new_column datatype;

mysql> alter table user change image picture varchar(128);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> select * from user;
+------+--------+----------+---------+
| id   | name   | password | picture |
+------+--------+----------+---------+
|    2 | 张三   | 33556    | NULL    |
|    3 | 李四   | 33556    | NULL    |
|    4 | 王五   | 35546    | NULL    |
+------+--------+----------+---------+
3 rows in set (0.00 sec)

删除表

        删除表的操作和语法如下:

语法:
drop [temporary] table [if exists] tbl_name [, tbl_name] ..
// 其中[]内的内容可有可无

mysql> show tables;
+---------------------+
| Tables_in_user_test |
+---------------------+
| user                |
+---------------------+
1 row in set (0.01 sec)

mysql> drop table user;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
Empty set (0.00 sec)

        一般不建议直接删除表,因为数据表基本已经算得上是位于整个项目的最顶层,一旦删除或者修改都有可能导致很多问题。


http://www.kler.cn/news/363723.html

相关文章:

  • 解决url含%导致404错误
  • MoeCTF 2024 ---Misc方向WP
  • 测试一个股票行情API
  • MusePose模型部署指南
  • 域3:安全工程 第6章 密码学与对称密钥算法
  • three.js 灯光
  • 【学习笔记】MongoDB 概念
  • ElasticSearch分片
  • 聚铭网络入选工信部《工业互联网与电力行业融合应用参考指南》推荐企业
  • 项目:负载均衡式在线 OJ
  • qt QNetworkProxy详解
  • git的安装以及入门使用
  • 手机照片怎么转换成jpg格式?分享6种图片格式转换方法
  • 【C语言】编译和链接(编译环境和运行环境)
  • Qt 中实现 HTTPS 请求的方法
  • ExecuteReader()简介
  • 输电线路杆塔基础沉降
  • Oracle Expdp按条件导出-指定表数据
  • 写一个 qq自动回话的程序
  • 模型的部署:服务端与客户端建立连接(Flask)
  • ESP32移植Openharmony设备开发---(6)Mutex互斥锁
  • 「亲测好用」6款热门电脑卸载工具分享,快来看看哪个适合你?
  • YOLOv11改进策略【卷积层】| RCS-OSA 通道混洗的重参数化卷积 二次创新C3k2
  • 展会亮点回顾|HMS汽车工业通信解决方案
  • java中Set,Map,List集合的比较(不包含增删改查函数方法)
  • YoloV8改进策略:卷积篇|大感受野的小波卷积