Mysql数据库操作与表操作,看这一篇就够了~~

一、Navicat 安装与使用指南

1、Mysql客户端

上一篇文章中,我们已经对Mysql进行了安装,并可以通过Mysql自带的 Command Line Client 操作Mysql服务端,但是这种命令行的客户端对于新手来说不是很友好,操作也不方便,所以,我们可以通过一些带有图形化界面的客户端来操作Mysql服务器。

2、常用的GUI客户端

2.1 MySQL Workbench【了解】

免费的 MySQL 可视化工具,由 MySQL 官方供应商提供。

2.2 Navicat【重点】

Navicat 是一套功能强大的数据库管理工具,支持 MySQL、MariaDB、SQL Server、Oracle、PostgreSQL 和 SQLite 等多种数据库系统。但是需要收费,有14天的免费试用。
下载安装
下载路径:
需要地址的可以关注私信我~~~~
双击exe文件进行安装
解压Navicat16.3补丁.zip压缩包
双击运行
打开Navicat

3、Navicat的使用

3.1 配置数据库连接

点击左上角的“连接”,选择mysql

3.2 连接数据库

其中,information_schema,mysql,performance_schema,sys是当前数据库管理系统默认管理的4个数据库
  • information_schema
    • 功能:提供数据库元数据访问
    • 作用
      • 包含所有数据库、表、列、索引、权限等元信息
      • 只读视图,不存储实际数据
      • 用于查询数据库结构信息
      • 符合SQL标准,其他数据库系统也有类似结构
  • mysql
  • 功能:存储MySQL系统数据
  • 作用
    • 包含用户账户和权限信息
    • 存储存储过程、事件定义
    • 包含时区、日志等系统表
    • 是MySQL正常运行的核心数据库
  • performance_schema
  • 功能:性能监控和统计
  • 作用
    • 提供服务器运行时性能数据
    • 监控服务器事件和资源使用情况
    • 用于性能分析和故障排查
    • 数据存储在内存中,重启后不保留
  • sys
  • 功能:简化performance_schema的访问
  • 作用
    • 基于performance_schema和information_schema的视图和存储过程
    • 提供更易读的性能数据
    • 包含常用的诊断查询
这四个系统数据库共同为MySQL提供了元数据管理、权限控制、性能监控和诊断的功能,是MySQL正常运行和管理的核心组成部分。

3.3 查看表、表结构、表内容

查看数据库管理的表

打开表:查看表中的数据

会打开一个窗口,展示表中的数据

设计表:查看表的结构

会打开一个窗口,展示表的设计结构

3.4 SQL语句的编写与执行

我们前面知道,SQL是操作数据库的命令,在Navicat中,如何编写并执行SQL呢?

执行sql

保存编写过的SQL

Ctrl+S保存

我们最近学习Mysql,核心学习SQL语法,所以,Navicat只是方便我们查看SQL的运行结果,我们所有的操作还是通过SQL执行。

二、数据库的基本操作

我们通常不会对mysql自带的四个数据库做操作,如果我们想要管理我们自己的数据,会创建新的数据库,把数据保存到我们自己创建的数据库中。对于一些中小型项目,一个项目对应一个数据库。下面我们学习数据库的基本操作,包括创建、删除、使用、查看。

1、创建数据库

语法:
CREATE DATABASE database_name;
上述语法中,database_name表示要创建的数据库的名字,同一个数据库管理系统下的数据库名字不能重复,命名的格式也要符合规范:
  • 由字母、数字、下划线、@、#和$符号组成
  • 首字母不能是数字和$符号
  • 不能是关键字
    • 关键字表示有特殊意义的单词,比如CREATE、DATABASE等
    • 如果非要使用关键字,则使用``符号包裹,如: `CREATE`
  • 默认不区分大小写
  • 不允许有空格和特殊字符
  • 长度小于128位
  • 如果数据库名字由多个单词组成,则多个单词之间使用下划线连接
例子
创建一个数据库,名字为test
CREATE DATABASE test;

2、查看和选择数据库

我们对数据库的操作一定是基于某个数据库,所以在数据操作之前,要选择某个数据库,但是,我们要先查看我们管理了哪些数据库,防止选择的数据库不存在。

2.1 查看数据库

一般对于一个经验丰富的开发人员,在对数据库操作之前,都会先查看有哪些数据库,防止创建同名数据库或者选择了一个没有的数据库。
语法
SHOW DATABASES;

2.2 选择数据库

在数据操作之前一定是先选择某个数据库;
语法
USE database_name;
例子
执行SQL语句USE,选择名为test的数据库
如果我们用的命令行的客户端
大家可以尝试一下,如果我们选择了一个不存在的数据库执行结果会如何。

3、删除数据库

注意:删除数据库后,数据库中的所有表和数据以及其他数据库对象也会全部删除,所以删除数据库之前一定要仔细、小心。
语法
DROP DATABASE database_name;
database_name表示我们要删除的数据库的名称。我们可以根据数据库名称,删除数据库,比如我们要删除刚刚创建的test数据库。
补充[了解]:
查看当前正在使用的数据库:
SELECT DATABASE();
查看数据库创建时的语句
SHOW CREATE DATABASE 数据库名;

三、数据类型

1、为什么需要数据类型

有了数据库的操作,那么我们就可以在数据库中进行数据管理了,但是,所有的关系型数据库,数据都是存储到 中的,所以, 表是数据存储的最小结构单位,数据不能脱离表而存在。 我们先看一个表:
这是一个产品表
字段名
说明
id
产品ID
name
产品名称
category_id
分类ID,关联产品分类表
price
产品售价,十进制数(总位数10,小数位2)
cost_price
产品成本价
stock
库存数量
sku
库存单位编码(唯一产品标识)
barcode
商品条形码
description
产品详细描述
image_url
产品主图URL地址
status
产品状态:1-上架,0-下架
我们看“库存数量”这一列,存储的都是整数,如果我们填入的是“三十”、“贰拾”等这些值,是否方便计算?
所以,我们要保证每一列数据的正确性,需要对他们进行“规范”,这种限制数值种类的“规范”,我们称为列的数据类型。
Mysql数据库管理系统提供了整数类型、浮点数类型、定点数类型和位类型、日期和时间类型、字符串等。。

2、整数类型

在具体使用 MySQL 数据库管理系统时,如果需要存储整数类型数据,则可以选择TINYINT、SMALLINT、MEDIUMINT、INT、INTEGER 和BIGINT类型,至于选择这些类型中的哪一个,首先需要判断存储整数数据的取值范围, 当不超过255时,那选择TINYINT类型就足够了。虽然BIGINT 类型的取值范围最大,最常用的整数类型却是INT类型

3、浮点数、定点数类型

MySQL中使用浮点数和定点数来表示小数。浮点数类型有两种: 单精度浮点类型(FLOAT)和双精度浮点类型(DOUBLE)。定点数类型只有一种: DECIMAL。浮点数类型和定点数类型都可以用(M,N)来表示。其中,M称为精度,表示总共的位数;N称为标度表示小数的位数。
在具体使用MySQL数据管理系统时,如果需要存储小数数据,则可以选择FLOAT和DOUBLE类型,至于选择这两个类型中的哪一个,则需要判断存储小数数据需要精确的小数位数, 当需要精确到小数点后10位以上,就需要选择DOUBLE类型
在具体使用MSQL数据库管理系统时,如果需要存储小数数据,除了可以选择FLOAT和DOUBLE类型外,还可以选择DEC和DECIMAL类型, 当要求小数数据精确度非常高时,则可以选择 DEC 和 DECIMAL类型,它们的精确度比 DOUBLE 类型还要高。

4、日期与时间类型

MySQL中有多种表示日期的数据类型,主要有DATETIME ,DATE、TIMESTAMP、TIME和YEAR。例如,当只记录年信息的时候可以只使用YEAR类型,而没有必要使用DATE。每一个类型都有合法的取值范围,当指定确实不合法的值时系统将“零”值插入到数据库中。
在具体使用 MySQL 数据库管理系统时,要根据实际应用来选择满足需求的最小存储的日期类型。例如,如果应用只需存储“年份”,则可以选择存储字节为1的YEAR 类型。 如果要存储年月日时分秒,并且年份的取值可能比较久远,最好使用DATETIME类型,而不是TIMESTAMP 类型因为前者比后者所表示的日期范围要长一些。如果存储的日期需要让不同时区的用户使用,则可以使用 TIMESTAMP 类型,因为只有该类型日期能够与实际时区相对应。

5、文本字符串类型

5.1 什么是字符串

字符串类型是MySQL中用于存储文本数据的数据类型,用来保存字符序列(字母、数字、符号等)。与其他数据类型相比,字符串类型专门用于处理文本信息,而不是数值、日期或二进制数据。
1 整数 --- 表示数值
'112' 字符串 --- 表示文本

5.2 CHAR和VARCHAR类型

CHAR(M)为固定长度字符串,在定义时指定字符串列长。当保存时在右侧填充空格,以达到指定的长度。M表示列长度,M的范围是0~255个字符。例如,CHAR(4)定义了一个固定长度的字符串列,其包含的字符个数最大为4。当检索到CHAR值时,尾部的空格将被删除。
VARCHAR(M)是长度可变的字符串,M表示最大列长度。M的范围是0~65535。VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定,而其实际占用的空间为字符串的实际长度加1。例如,VARCHAR(50)定义了一个最大长度为50的字符串,如果插入的字符串只有10个字符,则实际存储的字符串为10个字符和一个字符串结束字符。VARCHAR在值保存和检索时尾部的空格仍保留。

5.3 TEXT类型

TEXT系列中的各种字符串类型允许的长度和存储字节不同,其中TINYTEXT字符串类型允许存储字符串长度最小,LONGTEXT字符串类型允许存储字符串长度最大。
在具体使用 MySQL数据库管理系统时,如果 需要存储大量字符串(存储文章内容的纯文本),则可以选择 TEXT系列字符串类型。至于是选择这些类型中的哪一个,则需要判断所存储字符串长度,根据存储字符的长度来决定是选择允许长度最小的TINYTEXT字符串类型,还是选择允许长度最大的 LONGTEXT 字符串类型。

5.4 ENUM类型

ENUM 是 MySQL 中的一种字符串对象类型,它允许你从一个预定义的值列表中选择一个值。
语法
字段名 ENUM('值1','值2',...,'值n')
“字段名”指将要定义的字段,“值n”指枚举列表中的第n个值。ENUM类型的字段在取值时,只能在指定的枚举列表中取而且一次只能取一个。创建的成员中有空格时,其尾部的空格将自动被删除。

5.5 SET类型

ENUM类型的列只能从ENUM的列表中选择某一个值进行插入。
如果我们想插入多个值,并且让这些值只能是预先设置的某些字符串,则可以使用SET。
语法
字段名 SET('值1','值2',...,'值n')
如果插入SET字段中列值有重复,则MySQL 自动删除重复的值;插入SET字段的值的顺序并不重要,MySQL会在存入数据库时按照定义的顺序显示;如果插入了不正确的值,默认情况下,MySQL将忽视这些值,并给出警告。

6、二进制类型

前面讲解的是如果我们想把字符串文本存入数据库,则可以使用文本字符串类型。如果我们想存储 图片、音频、视频这些数据,则可以选择二进制类型。MySQL中的二进制数据类型有BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和LONGBLOB。本节将讲解各类二进制字符串类型的特点和使用方法。

6.1 BIT

BIT类型是位字段类型。M表示每个值的位数,范围为1~64。如果M被省略,默认为1。
每一位上使用1或0表示,比如我们有8盏灯,要记录这8盏灯的状态,就可以使用值:
b'01001010'
来记录,而这个值就是BIT类型的。

6.2 BINARY和VARBINARY类型

BINARY和VARBINARY类型类似于CHAR和VARCHAR,不同的是它们包含二进制字节字符串。
在具体使用 MySQL 数据库管理系统时,如果需要存储少量二进制数据,则可以选择 BINARY和 VARBINARY类型。至于是选择这两个类型中的哪一个,则需要判断所存储二进制数据长度是否经常变化。如果经常发生变化则可以选择 VARBINARY 类型,否则选择BINARY 类型。

6.3 BLOB类型

BLOB是一个二进制大对象,用来存储可变数量的数据。BLOB类型分为4种:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB它们可容纳值的最大长度不同。
BLOB列存储的是二进制字符串(字节字符串),TEXT列存储的是非二进制字符串(字符字符串)。在具体使用 MySOL数据库管理系统时,如果需要存储 大量二进制数据(存储电影等视频文件),则可以选择 BLOB 系列字符串类型。至于是选择这些类型中的哪一个,则需要判断所存储二进制数据长度,根据存储二进制数据的长度来决定是选择允许长度最小的TINYBLOB 字符串类型,还是选择允许长度最大的LONGBLOB字符串类型。

7、如何选择数据类型

7.1 整数和浮点数

如果不需要小数部分,就使用整数来保存数据;如果需要表示小数部分,就使用浮点数类型。对于浮点数据列,存入的数值会对该列定义的小数位进行四舍五入。
浮点类型包括FLOAT和DOUBLE类型。DOUBLE类型精度比FLOAT类型高,因此要求存储精度较高时应选择DOUBLE类型。

7.2 浮点数和定位数

浮点数FLOAT、DOUBLE相对于定点数DECIMAL的优势是:在长度一定的情况下,浮点数能表示更大的数据范围。由于浮点数容易产生误差,因此 对精确度要求比较高时,建议使用DECIMAL来存储。DECIMAL在MySQL中是以字符串存储的,用于定义 货币等对精确度要求较高的数据。在数据迁移中, float(M,D)是非标准SQL定义,数据库迁移可能会出现问题,最好不要这样使用。另外,两个浮点数进行减法和比较运算时也容易出问题,因此在进行计算的时候一定要小心。进行数值比较时,最好使用DECIMAL类型。

7.3 日期与时间

MySQL对于不同种类的日期和时间有很多数据类型,比如YEAR和TIME。如果只需要记录年份,则使用YEAR类型即可;如果只记录时间,则使用TIME类型。
如果同时需要记录日期和时间,则可以使用TIMESTAMP或者DATETIME类型。由于TIMESTAMP列的取值范围小于DATETIME的取值范围, 因此存储范围较大的日期最好使用DATETIME.
TIMESTAMP也有一个DATETIME不具备的属性。默认的情况下当插入一条记录但并没有指定TIMESTAMP这个列值时,MySQL会把TIMESTAMP列设为当前的时间。 因此当需要插入记录的同时插入当前时间时,使用TIMESTAMP是方便的。另外,TIMESTAMP在空间上比DATETIME更有效。

7.4 CHAR与VARCHAR

CHAR和VARCHAR的区别如下:
  • CHAR是固定长度字符,VARCHAR是可变长度字符,
  • CHAR会自动删除插入数据的尾部空格,VARCHAR不会删除尾部空格。
CHAR是固定长度,所以它的处理速度比VARCHAR的速度要快但是它的缺点是浪费存储空间,所以对存储不大但在速度上有要求的可以使用CHAR类型,反之可以使用VARCHAR类型来实现。

7.5 ENUM和SET

ENUM只能取单值,它的数据列表是一个枚举集合。它的合法取值列表最多允许有65535个成员。因此,在需要从多个值中选取一个时,可以使用ENUM。比如:性别字段适合定义为ENUM类型,每次只能从'男’或'女’中取一个值。
SET可取多值。它的合法取值列表最多允许有64个成员。空字符串也是一个合法的SET值。在需要取多个值的时候,适合使用SET类型,比如要存储一个人的兴趣爱好,最好使用SET类型
ENUM和SET的值是以字符串形式出现的,但在内部,MySQL是以数值的形式存储它们的。

7.6 BLOB和TEXT

BLOB是二进制字符串,TEXT是非二进制字符串,两者均可存放大容量的信息。 BLOB主要存储图片、音频信息等,而TEXT只能存储纯文本文件

四、数据表的基本操作

1、创建数据表

在创建完数据库之后,我们学习了列的数据类型,接下来的工作就是创建数据表。所谓创建数据表,指的是在已经创建好的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性的过程。

1.1 创建表的语法

数据表属于数据库,在创建数据表之前,应该使用语句“USE <数据库名>”指定操作是在哪个数据库中进行,如果没有选择数据库就会抛出“ No database selected”的错误。
CREATE TABLE 表名 ( 列名1 数据类型, 列名2 数据类型, ... 列名n 数据类型 );
需要注意的事情:
  • 要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字,如DROP、CREATE、ALTER、INSERT等。
  • 数据表中每一列(字段)的名称和数据类型,如果创建多列,就要用逗号隔开,最后一列后面不写逗号。
  • 所有的标点符号都需要使用英文符号。
例子
创建员工表tb_emp1,结构如下所示
-- 创建数据库 CREATE DATABASE test_db; -- 切换数据库 USE test_db; -- 创建表 CREATE TABLE tb_emp1( id INT, name VARCHAR(25), deptId INT, salary FLOAT );
使用"SHOW TABLES"展示当前数据库下管理的所有表:
show tables; 查看当前数据库下管理的哪些表

1.2 查看表结构

当创建完表后,经常需要查看表信息。那么如何在MySQL软件中查看表信息呢?查看帮助文档,可以发现许多实现查看表信息的语句,例如DESCRIBE、SHOW CREATETABLE等。
DESCRIBE查看表定义
语法
DESCRIBE table_name;
table_name表示要查看的表的名称。
SHOW CREATE TABLE查看表详细定义
语法
SHOW CREATE TABLE table_name;
CREATE TABLE `tb_emp1` ( `id` int DEFAULT NULL, `name` varchar(25) DEFAULT NULL, `deptId` int DEFAULT NULL, `salary` float DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

1.3 练习

1. 创建学生信息表
创建一个名为 students 的表,包含以下字段:
学号(数字类型)
姓名(字符串类型)
性别(使用ENUM类型,可选'男','女','其他')
年龄(整数类型)
身高(小数类型,单位米)
是否团员(使用BIT类型表示)
CREATE TABLE students( student_id int, name varchar(30), gender ENUM('男','女','其他'), age int, height decimal(4,1), member bit );
2. 创建图书表
创建一个名为 books 的表,包含以下字段:
图书ID(数字类型)
书名(字符串类型)
图书类型(使用ENUM,可选'科技','文学','历史','艺术','其他')
价格(小数类型)
是否在馆(使用BIT类型表示)
create table books( id int, name varchar(50), type enum('科技','文学','历史','艺术','其他'), price double, is_stored bit );
3. 创建电脑配置表
创建一个名为 computer_configs 的表,包含以下字段:
配置ID(数字类型)
CPU型号(字符串类型)
内存大小(整数类型,单位GB)
硬盘类型(使用ENUM,可选'SSD','HDD','混合')
接口状态(使用BIT(8)表示8个USB接口的使用情况)
create table computer_configs( id int, cpu varchar(20), memory int, disk_type enum('SSD','HDD','混合'), state bit(8) );

2、删除表

表的操作包括创建表、查看表、删除表和修改表。所谓删除表就是指删除数据库中已经存在的表。 在具体删除表时,会直接删除表中所保存的所有数据,因此在删除表时应该非常小心
语法
DROP TABLE table_name;
table_name表示你要删除的表的名字。
删除后,通过show tables;语句查询不到删除的表。

3、修改表结构

对于已经创建好的表,当使用一段时间后,就需要进行一些结构上的修改,即表的修改操作。该操作的解决方案是先将表删除,然后再按照新的表定义重建表。但是这种解决方案有问题,即如果表中已经存在大量数据,那么重建表后还需要做许多额外工作,例如数据的重载等。为了解决上述问题,MySOL数据库提供“ ALTER TABLE”语句实现修改表结构。

3.1 修改表名

语法
ALTER TABLE old_table_name RENAME [TO] new_table_name;
在上述语句中,old_table_name表示所要修改的表的名字,new_table_name表示修改后的新名字。所要操作的表对象必须在数据库中已经存在。
例子
创建tb_emp1表,并把tb_emp1表的名字改为employee
我们看到tb_emp1表成功改名为employee。

3.2 增加字段

对于表,可以看成是由列和行来构成的,其中“列”经常被称为字段。根据创建表的语法可以发现,字段是由字段名和数据类型进行定义的。
在表的最后一个位置增加字段
ALTER TABLE table_name ADD 属性名 属性类型;
table_name表示所要修改表的名字。
属性名为要增加字段的名称。
属性类型为所要增加字段的能存储数据的数据类型。
如,给employee表添加年龄字段:
ALTER TABLE employee ADD age int;
在表的第一个位置增加字段
ALTER TABLE table_name ADD 属性名 属性类型 FIRST;
在上述语句中,多了一个FIRST,表示所增加的字段在所有字段之前,即在表中的第一个位置。
employ表中在最前列添加一列“出生日期”
ALTER TABLE employee ADD birthday date FIRST;
在表的指定字段之后增加字段
ALTER TABLE table_name ADD 属性名 属性类型 AFTER 属性名;
在上述语句中,多了一个关键字AFTER,表示所有增加的字段在该关键字所指定的字段之后。
例如,我们想在employee的name字段后面添加手机号码(telephone)字段
ALTER TABLE employee ADD telephone CHAR(11) AFTER name;

3.3 删除字段

对于表,既然可以在修改表时进行字段的增加操作,那么也可以在修改表时进行字段的删除。所谓删除字段是指删除已经在表中定义好的某个字段。
ALTER TABLE table_name DROP 属性名;
table_name 表示所要修改表的名字。
属性名表示所要删除的字段名。
如将之前添加的age字段删除:
ALTER TABLE employee DROP age;

3.4 修改字段

根据创建表的语法可以发现,字段是由字段名和数据类型来进行定义的,如果要实现修改字段,除了可以修改字段名外,还可以实现修改字段所能存储的数据类型。由于一个表中会拥有许多字段因此还可以实现修改字段的顺序。
修改字段的数据类型
ALTER TABLE table_name MODIFY 属性名 数据类型;
table_name 参数表示所要修改表的名字,“属性名”参数为所要修改的字段名,“数据类型”为 修改后的数据类型
我想把employee表中的telephone列的类型由char(11)改成varchar(11)
ALTER TABLE employee MODIFY telephone VARCHAR(11);
修改字段的名字
ALTER TABLE table_name CHANGE 旧属性名 新属性名 旧数据类型;
table_name 参数表示所要修改表的名字,“旧属性名”参数表示所要修改的字段名,“新属性名”参数表示所要修改成的字段名。
例如,我们想把employee表中的deptId列改成dept_id这个名字
ALTER TABLE employee CHANGE deptId dept_id int;
同时修改字段的名字和数据类型
ALTER TABLE table_name CHANGE 旧属性名 新属性名 新数据类型;
“新属性名”参数表示所要修改成的字段名,“新数据类型”为所要修改成的数据类型。
例如,我们想把employee的salary列改成bonus,数据类型改成double
ALTER TABLE employee CHANGE salary bonus double;
修改字段顺序
ALTER TABLE table_name CHANGE 属性名1 属性名1 旧数据类型 FIRST|AFTER 属性名2;
table_name 参数表示所要修改表的名字,“属性名1”参数表示所要调整顺序的字段名,“FIRST”参数表示将字段调整到表的第一个位置,“AFTER 属性名 2”参数表示将字段调整到属性名2字段位置之后。
注意:属性名1和属性名2必须是表中已经存在的字段名
例如,我想把bonus列调整到name列后面
ALTER TABLE employee CHANGE bonus bonus double AFTER name;

4、综合练习

假设你要为一个小型书店设计数据库,请完成以下任务:
(1)创建一个名为 books 的表,包含以下字段:
book_id - 整数类型
title - 字符串类型
author - 字符串类型
price - 小数类型(总共6位,小数点后2位)
publication_date - 日期类型
stock_quantity - 整数类型
category - 字符串类型
(2)创建一个名为 customers 的表,包含以下字段:
customer_id - 整数类型
name - 字符串类型
email - 字符串类型
phone - 字符串类型
registration_date - 日期类型
(3)创建一个名为 orders 的表,包含以下字段:
order_id - 整数类型
customer_id - 整数类型
order_date - 日期类型
total_amount - 小数类型(总共8位,小数点后2位)
(4)修改 books 表,添加一个新列 page_count(整数类型)
(5)修改 customers 表,将 phone 列的数据类型改为可变长度字符串(最大50个字符)
(6)删除 orders 表中的 total_amount 列
(7)创建一个新表 order_details 包含:
detail_id - 整数类型
order_id - 整数类型
book_id - 整数类型
quantity - 整数类型
unit_price - 小数类型(总共6位,小数点后2位)
(8)最后,删除 order_details 表
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值