mysql删除数据,更新数据,以及表的相关操作

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: mysql删除数据,更新数据,以及表的相关操作

更新和删除数据

更新数据

使用UPDATE语句可进行更新数据。

不要忽略WHERE子句,在update时一定要注意细心,不然就更新表中的全部行了。

update三要素:

  1. 要更新的表
  2. 列名和他们的新值
  3. 确定要更新行的过滤条件
UPDATE customers
SET cust_email = 'dianxin@.com'
WHERE cust_id = 10005

更新多个列(逗号隔开,最后一列之后不用逗号)

UPDATE customers
SET cust_email = 'dianxin@.com' ,
    cust_name  = 'dainxin'
WHERE cust_id = 10005

删除数据

使用delete语句删除数据

不要忽略WHERE子句,在delete时一定要注意细心,不然就删除表中的全部行了。

DELETE FROM customers
WHERE cust_id = 10006;

mysql是没有撤销按钮的,所以我们要非常小心update和delete操作。

CREATE TABLE customers
(
cust_id int NOT NULL AUTO_INCREMENT,
cust_name char(50) NOT NULL ,
cust_address char(50) NULL ,
cust_city char(50) NULL ,
cust_state char(5) NULL ,
cust_zip char(10) NULL ,
cust_country char(50) NULL ,
cust_contact char(50) NULL ,
cust_email char(255) NULL ,
PRIMARY KEY (cust_id)
) ENGINE=InnoDB;

创建和操作表

创建表

我们使用CREATE TABLE语句

CREATE TABLE customers
(
  cust_id      int       NOT NULL AUTO_INCREMENT,
  cust_name    char(50)  NOT NULL ,
  cust_address char(50)  NULL ,
  cust_city    char(50)  NULL ,
  cust_state   char(5)   NULL ,
  cust_zip     char(10)  NULL ,
  cust_country char(50)  NULL ,
  cust_contact char(50)  NULL ,
  cust_email   char(255) NULL ,
  PRIMARY KEY (cust_id)
) ENGINE=InnoDB;

使用null值

上面的null就是值允许空,NOT null就是不允许空值。

:dagger:''这样两个单引号,之间没有字符的叫空串,这在NOT null下也是允许的。空串不是null。

主键再介绍

主键值必须唯一,如果主键使用单个列,则他的值必须唯一。如果使用多个列,则这些列的组合必须唯一。

如果创建多个列组成的主键,就是这样写

CREATE TABLE orderitems
(
  order_num  int          NOT NULL ,
  order_item int          NOT NULL ,
  prod_id    char(10)     NOT NULL ,
  quantity   int          NOT NULL ,
  item_price decimal(8,2) NOT NULL ,
  PRIMARY KEY (order_num, order_item)
) ENGINE=InnoDB;

使用 AUTO_INCREMENT

cust_id      int       NOT NULL AUTO_INCREMENT

AUTO_INCREMENT告诉mysql,本列每当增加一行时自动增量。每次执行一个INSERT操作时,mysql自动对该列增量,给该列赋予下一个可用的值。这样每个行都会分配一个cust_id ,从而可以用作主键值。

:dark_sunglasses:每个表只允许一个AUTO_INCREMENT列。而且它必须被索引。(如:通过使他成为主键)

SELECT last_insert_id()

此语句返回最后一个AUTO_INCREMENT值,然后可以去利用它。

指定默认值

CREATE TABLE orderitems
(
  order_num  int          NOT NULL ,
  order_item int          NOT NULL ,
  prod_id    char(10)     NOT NULL ,
  quantity   int          NOT NULL   DEFAULT 1,
  item_price decimal(8,2) NOT NULL ,
  PRIMARY KEY (order_num, order_item)
) ENGINE=InnoDB;

DEFAULT关键字指定默认值。

:radio:MySQL与大多数DBMS不同,不允许使用函数作为默认值。

引擎类型

你可能注意到了创建表的最后一个语句,ENGINE=InnoDB。

mysql默认引擎 mysql-5.1版本之前默认引擎是MyISAM,之后是innoDB

InnoDB是一个可靠的事务处理引擎,它不支持全文本搜索

MEMORY在功能上等同于MyISAM。但由于数据存储在内存中,速度很快

MyISAM是一个性能极高的引擎,它支持全文本搜索,但不支持事务处理。

在一个数据库实例里,不同的表是可以使用不同的引擎。

:ice_cream:混用引擎还有一个大问题,那就是外键不能跨引擎。换句话说就是,使用一个引擎的表不能引用具有使用不同引擎的表的外键。

更新表

使用ALTER TABLE语句。

ALTER TABLE vendors
ADD vend_phone CHAR(20);

ALTER TABLE 一种常用的用途是定义外键。

ALTER TABLE 从表 
ADD [CONSTRAINT] [外键约束名称] 
FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);

删除表

使用DROP TABLE语句

DROP TABLE customers2

重命名表

RENAME TABLE 语句可以重命名一个表

RENAME TABLE  customers2 TO customers;

重命名多个表:

RENAME TABLE  customers2 TO customers,
            customers3 TO customers5,
            customers4 TO customers6;
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
27天前
|
关系型数据库 MySQL Java
【MySQL+java+jpa】MySQL数据返回项目的感悟
【MySQL+java+jpa】MySQL数据返回项目的感悟
39 1
|
28天前
|
SQL 监控 关系型数据库
MySQL怎么全局把一张表的数据回滚
MySQL怎么全局把一张表的数据回滚
73 2
|
28天前
|
存储 SQL 关系型数据库
MySQL批量添加数据并取外表的某个字段值
MySQL批量添加数据并取外表的某个字段值
58 1
|
12天前
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
79 0
|
18天前
|
SQL 前端开发 关系型数据库
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
35 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
|
23天前
|
关系型数据库 MySQL 数据库
mysql 里创建表并插入数据
【10月更文挑战第5天】
98 1
|
25天前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
45 3
|
9天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
5天前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
16 1
|
6天前
|
SQL 关系型数据库 MySQL
mysql数据误删后的数据回滚
【11月更文挑战第1天】本文介绍了四种恢复误删数据的方法:1. 使用事务回滚,通过 `pymysql` 库在 Python 中实现;2. 使用备份恢复,通过 `mysqldump` 命令备份和恢复数据;3. 使用二进制日志恢复,通过 `mysqlbinlog` 工具恢复特定位置的事件;4. 使用延迟复制从副本恢复,通过停止和重启从库复制来恢复数据。每种方法都有详细的步骤和示例代码。