【MySQL】4. 表的操作

表的操作

1. 创建表

语法:

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

说明:

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

2. 创建表案例

在这里插入图片描述
这里为啥存储引擎发生变化会导致这种情况出现,我们在后面讲。

3. 查看表结构

示例:

desc 表名;

在这里插入图片描述
查看创建时的语句:

show create table users1;
或者
show create table users1 \G

在这里插入图片描述
我们仔细观察发现上述语句和我们自己进行输入时有些不同
我们自己输入的SQL命令会传给服务器上的mysqld服务,帮我们进行规范(标准化),再对数据库进行读取

MySQL会将用户操作的所有指令记录下来。这也就是备份数据库时我们看到的都是语句的原因

4. 修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename DROP (column);

案例:
首先在users表添加二条数据

mysql> show create table users \G
*************************** 1. row ***************************Table: users
Create Table: CREATE TABLE `users` (`id` int(11) DEFAULT NULL,`name` varchar(20) DEFAULT NULL COMMENT '用户名',`password` char(32) DEFAULT NULL COMMENT '用户的密码',`birthday` date DEFAULT NULL COMMENT '用户的生日'
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)mysql> insert into users values(1,'张三','12345','2002-08-07');
Query OK, 1 row affected (0.00 sec)mysql> insert into users values(2,'李四','54321','2000-07-07');
Query OK, 1 row affected (0.00 sec)mysql> select * from users;
+------+--------+----------+------------+
| id   | name   | password | birthday   |
+------+--------+----------+------------+
|    1 | 张三   | 12345    | 2002-08-07 |
|    2 | 李四   | 54321    | 2000-07-07 |
+------+--------+----------+------------+
2 rows in set (0.00 sec)

场景1:在users表添加一个字段,用于保存图片路径(添加属性列)

mysql> alter table users add image_path varchar(100) comment '图片路径' after birthday;
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> desc users;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id         | int(11)      | YES  |     | NULL    |       |
| name       | varchar(20)  | YES  |     | NULL    |       |
| password   | char(32)     | YES  |     | NULL    |       |
| birthday   | date         | YES  |     | NULL    |       |
| image_path | varchar(100) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)mysql> show create table users \G
*************************** 1. row ***************************Table: users
Create Table: CREATE TABLE `users` (`id` int(11) DEFAULT NULL,`name` varchar(20) DEFAULT NULL COMMENT '用户名',`password` char(32) DEFAULT NULL COMMENT '用户的密码',`birthday` date DEFAULT NULL COMMENT '用户的生日',`image_path` varchar(100) DEFAULT NULL COMMENT '图片路径'
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

场景2:修改name,将其长度改成60(修改属性列)

mysql> alter table users add image_path varchar(100) comment '图片路径' after birthday;
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

在这里插入图片描述

场景3:删除password列

注意:删除字段一定要小心,删除字段及其对应的列数据都没了

mysql> desc users;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id         | int(11)      | YES  |     | NULL    |       |
| name       | varchar(60)  | YES  |     | NULL    |       |
| password   | char(32)     | YES  |     | NULL    |       |
| birthday   | date         | YES  |     | NULL    |       |
| image_path | varchar(100) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)mysql> alter table users drop password;
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> desc users;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id         | int(11)      | YES  |     | NULL    |       |
| name       | varchar(60)  | YES  |     | NULL    |       |
| birthday   | date         | YES  |     | NULL    |       |
| image_path | varchar(100) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

我们可以看到password属性不复存在

场景4:修改表名为employee

mysql> alter table users rename to User;
Query OK, 0 rows affected (0.00 sec)mysql> select * from users;
ERROR 1146 (42S02): Table 'user.users' doesn't existmysql> select * from User;
+------+--------+------------+------------+
| id   | name   | birthday   | image_path |
+------+--------+------------+------------+
|    1 | 张三   | 2002-08-07 | NULL       |
|    2 | 李四   | 2000-07-07 | NULL       |
+------+--------+------------+------------+
2 rows in set (0.00 sec)

to:可以省掉

将name列修改为xingming

mysql> alter table User change name xingming varchar(60);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc User;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id         | int(11)      | YES  |     | NULL    |       |
| xingming   | varchar(60)  | YES  |     | NULL    |       |
| birthday   | date         | YES  |     | NULL    |       |
| image_path | varchar(100) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

5. 删除表

语法格式:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

示例:

drop table t1;

数据库中的表迫不得已的情况下,最好不要进行修改和删除。
因为数据库属于底层模块,凡是基于数据库上层的软件开发,一旦进行底层的更改都有可能会导致上层应用无法运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/541180.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文轻松学会远程服务器/docker内 vscode,调试(debug)无/多参数/bash以及多工作空间运行的python程序,欢迎大佬补充,一起学习

至于如何SSH、docker以及无需参数的程序调试这篇就先不说了。本篇文章主要记录一下多参数和多工作空间调试的问题。 一、launch.json文件 如上图所示,正常情况下当我们想要调试项目名字为0的目录下的train.py文件时,我们会按顺序点1,2&#…

labview技术交流-判断两个数组的元素是否完全相同

问题来源 分析并判断两个一维数组中包含的元素是否完全相同,不考虑索引顺序。比如说[1,5,7,3]和[3,5,7,1]是完全相同的两个一维数组,那[1,5,7,3]和[5,7,1,4]就不是相同的数组。结合我给出的示例,大家有没有什么思路呢? 思路分析 …

探秘Kafka位移在消息旅程中的神奇

欢迎来到我的博客,代码的世界里,每一行都是一个故事 探秘Kafka位移在消息旅程中的神奇 前言什么是消费者位移消费者位移的定义和作用:消费者位移对于消息传递的一致性至关重要的原因: 位移的存储方式位移信息的存储方式&#xff1…

面试相关问题准备

一.MySql篇 1优化相关问题 1.1MySql中如何定位慢查询? 慢查询的概念:在MySQL中,慢查询是指执行时间超过一定阈值的SQL语句。这个阈值是由long_query_time参数设定的,它的默认值是10秒1。也就是说,如果一条SQL语句的执…

智能测径仪和普通测径仪的对比

关键字:智能测径仪,普通测径仪,高精度测径仪,单轴测径仪,双轴测径仪,普通测径仪, 智能测径仪和普通测径仪相比,具有以下显著的优势: 高精度测量:智能测径仪采…

学会这些指令,轻松上手Linux!

一、 Linux简介 Linux是一种开源的类Unix操作系统。它的核心是Linux内核,而用户空间则由GNU项目提供的工具和其他软件组成,因此常常被称为GNU/Linux。 Linux操作系统的特点包括稳定性、安全性、多用户支持和多任务处理能力,因此被广泛应用于…

node:internal/crypto/hash:69 this[kHandle] = new _Hash(algorithm, xofLen);

npm 打包报错 原因就是npm版本太高了,用的18版本,切换成16版本就好了。

每日五道java面试题之springMVC篇(四)

目录: 第一题. Spring MVC怎么样设定重定向和转发的?第二题.Spring MVC怎么和AJAX相互调用的?第三题. 如何解决POST请求中文乱码问题,GET的又如何处理呢?第四题. Spring MVC的异常处理?第五题. 如果在拦截请…

机器学习,剪刀,石头,布

计算机视觉:剪刀,石头,步 TensorFlow AI人工智能及Machine Learning训练图集的下载建立分类模型并用图像进行训练检验模型总结当前AI Machine Learning 异常火爆,希望在MCU上使用机器学习,做图像识别的工作。看到一个剪刀,石头,步的学习程序,给大家分享一下。 TensorFl…

上海亚商投顾:沪指震荡调整 飞行汽车概念股持续爆发

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整,深成指走势稍强,创业板指一度涨超1%,黄白二线走势分化&a…

Android 架构师研发技术进阶之路:不同阶段需要掌握的那些技术及软技能

资深 而到了资深层次,技术栈已经不再是阻碍。能够从更高层面看待问题,理解整个系统的设计,作为系统架构师的角色存在。 1. 理解微服务、SOA思想,对于后端开发有一定涉猎。 2. 了解前端研发工具和思想,知道vue react…

微信小程序H5设置全局弹窗

微信小程序&H5设置全局弹窗 微信小程序&H5设置全局弹窗效果图1、下载所需库2、创建vue.config.js 文件3、创建全局公告组件头部公告组件弹窗公告组件4、组件注册到全局5、在pages.json文件中配置 insetLoader6、H5需要额外使用render.js7、全局调用(一进入页面就获取弹…