MySQL表的约束
文章目录
- 表的约束
- 空属性
- 默认值
- 列描述
- zerofill
- 主键
- 自增长
- 唯一键
- 外键
表的约束
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如说我们的居民身份证,电话号码,都被要求是唯一的,这就需要约束。
空属性
空属性约束字段:null(默认)和 not null(不为空)
数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运算。
mysql> select NULL;
+------+
| NULL |
+------+
| NULL |
+------+
1 row in set (0.00 sec)mysql> select NULL+1;
+--------+
| NULL+1 |
+--------+
| NULL |
+--------+
1 row in set (0.01 sec)
MySQL中的NULL不同于C语言的NULL,C语言中的NULL表示ASCII表中的0,而MySQL中的NULL表示空,不参与任何运算。
案例:
创建一个班级表,包含班级名和班级所在的教室。
站在正常的业务逻辑中:
- 班级的名字不能为空,每个人都有对应的班级名
- 教室的名字不能为空,每节课都有对应的教室
所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。这就是“约束”。
mysql> create table class (-> class_name varchar(20) not null,-> class_room varchar(20) not null-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.03 sec)mysql> desc class;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| class_name | varchar(20) | NO | | NULL | |
| class_room | varchar(20) | NO | | NULL | |
+------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
插入数据时,如果没有给班级名或教室名,MySQL就会报错:
mysql> insert into class (class_name) values ('20计算机');
ERROR 1364 (HY000): Field 'class_room' doesn't have a default value
默认值
默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。
案例:
mysql> create table persons (-> name varchar(20) not null,-> age tinyint default 18,-> sex char(2) default '男'-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.02 sec)mysql> desc persons;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(20) | NO | | NULL | |
| age | tinyint(4) | YES | | 18 | |
| sex | char(2) | YES | | 男 | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)mysql> insert into persons (name) values ('Curry');
Query OK, 1 row affected (0.01 sec)mysql> select * from persons;
+-------+------+------+
| name | age | sex |
+-------+------+------+
| Curry | 18 | 男 |
+-------+------+------+
1 row in set (0.00 sec)
只有在该字段定义了默认值后,在插入的时候,才可以进行列省略。
列描述
列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存。
mysql> create table people (-> name varchar(20) not null comment '姓名',-> age tinyint default 18 comment '年龄',-> sex char(2) default '男' comment '性别'-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.01 sec)
通过desc people查看不到注释:
mysql> desc people;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(20) | NO | | NULL | |
| age | tinyint(4) | YES | | 18 | |
| sex | char(2) | YES | | 男 | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
通过show create table people可以查看:
mysql> show create table people \G
*************************** 1. row ***************************Table: people
Create Table: CREATE TABLE `people` (`name` varchar(20) NOT NULL COMMENT '姓名',`age` tinyint(4) DEFAULT '18' COMMENT '年龄',`sex` char(2) DEFAULT '男' COMMENT '性别'
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
zerofill
数据类型中,整型数据后的长度代表的意义与zerofill紧密相关
mysql> show create table people \G
*************************** 1. row ***************************Table: people
Create Table: CREATE TABLE `people` (`name` varchar(20) NOT NULL COMMENT '姓名',`age` int(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
案例:
mysql> create table table1 ( a int(10) zerofill, b int(10) )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.02 sec)mysql> desc table1;
+-------+---------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------------+------+-----+---------+-------+
| a | int(10) unsigned zerofill | YES | | NULL | |
| b | int(10) | YES | | NULL | |
+-------+---------------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into table1 (a,b) values (10, 10);
Query OK, 1 row affected (0.01 sec)mysql> select * from table1;
+------------+------+
| a | b |
+------------+------+
| 0000000010 | 10 |
+------------+------+
1 row in set (0.00 sec)
zerofill属性的作用是如果宽度小于设定的宽度,自动填充0。要注意的是,这只是最后显示的结果,在MySQL中实际存储的还是1。
主键
主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。
案例:
mysql> create table students (-> id int unsigned primary key,-> name varchar(10) not null-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.01 sec)mysql> desc students;
+-------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | NO | PRI | NULL | |
| name | varchar(10) | NO | | NULL | |
+-------+------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
主键约束:主键对应的字段中不能重复,一旦重复,操作失败。
mysql> insert into students (id,name) values (1, 'Durant');
Query OK, 1 row affected (0.00 sec)mysql> insert into students (id,name) values (1, 'Curry');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
删除主键:
alter table 表名 drop primary key
示例:
mysql> alter table students drop primary key;
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0mysql> desc students;
+-------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | NO | | NULL | |
| name | varchar(10) | NO | | NULL | |
+-------+------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
当表创建好以后但是没有主键的时候,可以再次追加主键:
alter table 表名 add primary key (字段列表)
示例:
mysql> alter table students add primary key (id);
Query OK, 0 rows affected (0.07 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> desc students;
+-------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | NO | PRI | NULL | |
| name | varchar(10) | NO | | NULL | |
+-------+------------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
复合主键:在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段作为主键,可以使用复合主键。
案例:
mysql> create table students (-> id int unsigned,-> course char(10) comment '课程代码',-> score tinyint unsigned comment '分数',-> primary key(id, course)-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.02 sec)mysql> desc students;
+--------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| id | int(10) unsigned | NO | PRI | NULL | |
| course | char(10) | NO | PRI | NULL | |
| score | tinyint(3) unsigned | YES | | NULL | |
+--------+---------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)mysql> insert into students (id,course) values (1, '123');
Query OK, 1 row affected (0.00 sec)mysql> insert into students (id,course) values (1, '124');
Query OK, 1 row affected (0.00 sec)mysql> insert into students (id,course) values (1, '123');
ERROR 1062 (23000): Duplicate entry '1-123' for key 'PRIMARY'
自增长
auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。
自增长的特点:
- 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
- 自增长字段必须是整数
-一张表最多只能有一个自增长
mysql> create table persons (-> id int unsigned primary key auto_increment,-> name varchar(10) not null-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.02 sec)mysql> desc persons;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)mysql> insert into persons (name) values ('a');
Query OK, 1 row affected (0.00 sec)mysql> insert into persons (name) values ('b');
Query OK, 1 row affected (0.00 sec)mysql> select * from persons;
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
+----+------+
2 rows in set (0.00 sec)
唯一键
一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以解决表中有多个字段需要唯一性约束的问题。
唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。
关于唯一键和主键的区别:
我们可以简单理解成,主键更多的是标识唯一性的。而唯一键更多的是保证在业务上,不要和别的信息出现重复。
比如说,有一张存放公民信息的表,里面字段有身份证号,姓名,性别,手机号和家庭住址,我们可以使用身份证号作为主键,因为身份证号码具有唯一性,但是由于数据库是具有很强的数据明确性的,不允许有本应该唯一的字段被误操作添加重复的值,所以数据库就需要一种约束,约束公民的其他唯一存在的字段比如手机号不能重复,这个约束就叫做唯一键。
案例:
mysql> create table person (-> id int unsigned primary key,-> telephone int unsigned unique not null,-> sex char(2) default '男',-> address varchar(20) not null-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.03 sec)mysql> desc person;
+-----------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | NO | PRI | NULL | |
| telephone | int(10) unsigned | NO | UNI | NULL | |
| sex | char(2) | YES | | 男 | |
| address | varchar(20) | NO | | NULL | |
+-----------+------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)mysql> insert into person (id, telephone, sex, address) values(3306, 8520170, '男', '福建漳州');
Query OK, 1 row affected (0.00 sec)mysql> insert into person (id, telephone, sex, address) values(8080, 8520170, '男', '福建漳州');
ERROR 1062 (23000): Duplicate entry '8520170' for key 'telephone'
外键
外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。
对比外键和外键约束:
- 外键是在逻辑上关联两个表的字段,但是仅仅在逻辑上有关联是不够的,需要有MySQL的操作来维护两个表逻辑的正确性
- 外键约束就是MySQL用来约束两个表逻辑关系正确性的约束
案例:
创建主表:
mysql> create table Class (-> id int primary key,-> class_name varchar(20) not null-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.02 sec)mysql> desc Class;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| class_name | varchar(20) | NO | | NULL | |
+------------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
创建从表:
mysql> create table Stu (-> id int primary key,-> name varchar(20) not null,-> class_id int,-> foreign key (class_id) references Class(id)-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.03 sec)mysql> desc Stu;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(20) | NO | | NULL | |
| class_id | int(11) | YES | MUL | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
插入数据:如果插入不存在的班级,就会报错
mysql> insert into Stu (id, name, class_id) values (30, 'Curry', 10);
Query OK, 1 row affected (0.00 sec)mysql> insert into Stu (id, name, class_id) values (35, 'Durant', 20);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`table_restraint`.`Stu`, CONSTRAINT `Stu_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `Class` (`id`))
相关文章:
MySQL表的约束
文章目录表的约束空属性默认值列描述zerofill主键自增长唯一键外键表的约束 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如说我们的居民…...
Go语言的条件控制语句及循环语句的学习笔记
一、Go的条件控制语句 Go 语言提供了以下几种条件判断语句: 语句描述if 语句if 语句 由一个布尔表达式后紧跟一个或多个语句组成。if…else 语句if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。if 嵌套语句你可以在 if 或…...
D. Linguistics(思维 + 贪心)
Problem - D - Codeforces Alina发现了一种奇怪的语言,它只有4个单词:a, B, AB, BA。事实也证明,在这种语言中没有空格:一个句子是通过将单词连接成一个字符串来写的。Alina发现了一个这样的句子,她很好奇:有没有可能它恰好由a个单词a, b个单…...
maxWell数据迁移
目录 1.开启mysql的binlog 1.1: Statement-based 1.2: Row-based 1.3: mixed 2. 重启mysql服务 3. 创建Maxwell所需数据库和用户 4. 配置Maxwell 5. Maxwell启停(实时同步) 6. 历史数据全量同步 这里使用maxWell对mysql数据迁移到kafka中 官网下载地址点击下载 注&#x…...
混合图像python旗舰版
仔细看这个图像。然后后退几米再看。你看到了什么?混合图像是指将一张图片的低频与另一张图片的高频相结合的图片。根据观看距离的不同,所得到的图像有两种解释。在上面的图片中,你可以看到阿尔伯特爱因斯坦,一旦你离开屏幕或缩小…...
开发手册——一、编程规约_5.集合处理
这篇文章主要梳理了在java的实际开发过程中的编程规范问题。本篇文章主要借鉴于《阿里巴巴java开发手册终极版》 下面我们一起来看一下吧。 1. 【强制】关于 hashCode 和 equals 的处理,遵循如下规则: 只要重写 equals,就必须重写 hashCod…...
【elastic】elastic高可用集群部署
文章目录前言一、资源分享1、包含源码包、配置文件二、部署过程三、报错锦集四、es的部分相关命令前言 本博客内容仅为记录博主思路,仅供参考,一切以自己实践结果为准。 一、资源分享 1、包含源码包、配置文件 链接:https://pan.baidu.com…...
初识Liunx下的进程状态和环境变量以及进程优先级
文章目录前言1.进程状态1.阻塞与挂起2.Linux下的进程状态1.概念知识2.R状态2.休眠状态(S/D)3.T状态4.Z状态(僵尸进程)和X状态5.孤儿进程3.环境变量1.概念2.获取环境变量1.环境变量表2.函数获取环境变量3.关于环境变量的理解和main函数中的两个参数1.环境变量的理解2…...
JavaEE——何为线程及创建线程
文章目录一、认识线程1. 线程的概念2. 出现多线程的原因3. 进程与线程4. 对多线程的详细解释二、初次实现多线程代码1. 初步了解2. 使用 Java 中的工具查看当前的所有线程3. Java 中创建线程的多种方式一、认识线程 1. 线程的概念 所谓线程,就是指在一个 ‘执行流…...
linux配置核查MySQL 配置规范 (Linux)_S3A3G3
linux的配置核查问题: 解决: 1.检查是否禁止mysql对本地文件存取 方法一:在my.cnf的mysql字段下加local-infile0 方法二:启动mysql时加参数local-infile0 /etc/init.d/mysql start --local-infile0 假如需要获取本地文件…...
Protobuf简介
Protobuf简介 1. Protocol Buffers1.1. 什么是Protocol Buffers?1.2. 选择你最喜欢的语言1.3. 如何开始2. Protocol Buffer Basics: C++2.1. 问题领域2.2. 在哪里找到示例代码2.3. 定义协议格式(Defining Your Protocol Format)1. Protocol Buffers Protocol Buffers(协议缓冲…...
【Kubernetes】第十七篇 - ECS 服务停机和环境修复
一,前言 上一篇,介绍了 Secret 镜像的使用; 三台服务每天大概 15 块钱的支出,用一个月也是不少钱; 闲时可以停掉,这样每天只有 4 块钱支出,剩下一大笔; ECS 服务停机后公网 IP 会…...
Vue2的生命周期(详解)
Vue的生命周期一、生命周期的概念二、钩子函数三、Vue2的生命周期3.1 初始化阶段3.2 挂载阶段3.3 更新阶段3.4 销毁阶段一、生命周期的概念 Vue实例的生命周期: 从创建到销毁的整个过程 二、钩子函数 Vue框架内置函数,随着组件的生命周期阶段,自动执行 作用:特定的时间点,执行特…...
Potions (Hard Version) and (Easy Version)(背包DP + 反悔贪心)
[TOC](Potions (Hard Version) and (Easy Version)) 一、Potions(Easy Version) 1、问题 2、分析(背包DP 贪心) 简而言之就是我们需要从左到右开始选数字,选的过程中我们需要保证我们选的数字的和始终是大于等于0的,在满足这个…...
剑指 Offer II 017. 含有所有字符的最短字符串
题目链接 剑指 Offer II 017. 含有所有字符的最短字符串 hard 题目描述 给定两个字符串 s和 t。返回 s中包含 t的所有字符的最短子字符串。如果 s中不存在符合条件的子字符串,则返回空字符串 ""。 如果 s中存在多个符合条件的子字符串,返回任…...
Modbus协议初探(C#实现)
由于作者水平有限,如有写得不对得地方请指正 趁着今天休息,就折腾一下Modbus协议,之前零零散散的看过几篇博客,听说搞上位机开发的要会这个协议,虽然我不是搞上位机开发的,但个人对这个比较感兴趣。按照我个…...
【华为OD机试2023】静态扫描 C++ Java Python
【华为OD机试2023】静态扫描 C++ Java Python 前言 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过率。 Tips1:机试为ACM 模式 你的代码需要处理输入输出,input/cin接收输入、…...
函数栈帧的创建和销毁(详解)
函数栈帧的创建和销毁🦖函数栈帧是什么?🦖函数栈帧的创建和销毁解析🐋栈是什么?🐋认识相关寄存器和汇编指令🐋解析函数栈帧的创建和销毁🐳预备知识🐳函数的调用堆栈&…...
【100个 Unity实用技能】 | 脚本无需挂载到游戏对象上也可执行的方法
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案ÿ…...
条件期望5
条件期望例题 随机图 从节点1开始, N为一个随机变量, 表示整个过程第一次出现"贪吃蛇"情形时, 所进行的步数.即Nk⇒Xk(1)∈{1,X(1),X2(1),...Xk−1(1)}其中1,X(1),X2(1),...Xk−1(1)各不相同N k \Rightarrow X^k(1) \in \{1,X(1), X^2(1),...X^{k-1}(1)\} \\ 其中1…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
