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

『 MySQL篇 』:MySQL表的相关约束

基础篇 MySQL系列专栏(持续更新中 …)
1『 MySQL篇 』:库操作、数据类型
2『 MySQL篇 』:MySQL表的CURD操作
3『 MySQL篇 』:MySQL表的相关约束

文章目录

          • 1 . 非空约束 (`not null`)
          • 2 . 唯一性约束(`unique`)
          • 3 . check约束
          • 4 . 默认约束(`default`)
          • 5 . 主键约束(`primary key`)
          • 6 . 外键约束(`foreign key`)
)

  • 概述 : 约束是作用于表中字段上的限制,用于限制存储在表中的数据

  • 目的: 保证数据库中的数据的正确 , 有效性 和完整性

  • 分类

约束描述关键字
非空约束限制该字段的数据不能为 nullNOT NULL
唯一性约束保证该字段的所有数据都是唯一. 不重复的UNIQUE
主键约束主键是一行数据唯一的表示 , 要求非空且唯一PRIMARY KEY
默认约束保存数据时 ,如果未指定该字段的值 , 则采用默认值DEFAULT
检查约束(8.0.16版本之后)保证字段值满足某一个条件CHECK
外键约束用来让两张表的数据之间建立连接 , 保证数据的一致性和完整性FOREIGN KEY
1 . 非空约束 (not null)

创建表时进行使用 , 指定某一列的值不为空

create table 表名(列名 类型 not null);
  • 案例

创建表中包含 字段名为 name 字段类型为 varchar(10) , name 不允许为空值

mysql> create table user(name varchar(10) not null,gender char(1));
Query OK, 0 rows affected (0.03 sec)mysql> desc user;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name   | varchar(10) | NO   |     | NULL    |       |
| gender | char(1)     | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
-- 插入姓名为空值时
mysql> insert into user values(null,'男');
ERROR 1048 (23000): Column 'name' cannot be null
mysql> insert into user values ('张三','男');
Query OK, 1 row affected (0.00 sec)
2 . 唯一性约束(unique)

在创建表时 , 对某一列使用唯一性约束 , 则该列的值不能重复 .

create table 表名(列名 类型 unique);
  • 案例

创建表中包含字段名为 name , 字段类型为 varchar(10) , name 不允许为空值 . 且name 为唯一

mysql> create table user(name varchar(20)not null unique);  
-- name 列不能重复且非空
Query OK, 0 rows affected (0.05 sec)mysql> desc user;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(20) | NO   | PRI | NULL    |       |
+-------+-------------+------+-----+---------+-------+
1 row in set (0.00 sec)
#第一次直接插入
mysql> insert into user values('张三');
Query OK, 1 row affected (0.00 sec)
#当插入重复值时 , 已存在不能重复添加
mysql> insert into user values('张三');
ERROR 1062 (23000): Duplicate entry '张三' for key 'name'
mysql>

如果没有指定非空 , 那么unique 字段可以有多个 null , 一张表中可以有多个unique 字段

  • 如果此时user 列已经创建 , 要将 唯一性约束添加到 name 列 , 则使用
# 修改user表中的约束
alter table user modify age int not null unique;
3 . check约束

用于强制行数据必须满足的条件 .

  • Oracle 和SQL sever均支持check , 但是mysql 5.7 目前还不支持check , 只进行语法检验 ,并不会生效 .
4 . 默认约束(default)

在创建表的时候可以使用 , 可以设置列的默认值

create table 表名(列名 类型 default 默认值..);
  • 案例

创建表中包含字段名为sex , 字段类型为char( 1 ) , 约束条件为 默认值为 ‘男’

mysql> create table user(id int , gender char(1) default '男');
Query OK, 0 rows affected (0.01 sec)mysql> desc user;
+--------+---------+------+-----+---------+-------+
| Field  | Type    | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| id     | int(11) | YES  |     | NULL    |       |
| gender | char(1) | YES  |     ||       |
+--------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
5 . 主键约束(primary key)

主键与外键之间的区别 ?

主键(主码) :主键用于唯一标识一个元组,不能有重复,不允许为空。一个表只能有一个主键。

外键(外码) :外键用来和其他表建立联系用,外键是另一表的主键,外键是可以有重复的,可以是空值。一个表可以有多个外键。

primary key 是主键约束 , 表由列和行组成。 通常,表具有一列或多列,列的值唯一地标识表中的每一行。 此列或多列称为主键。由两列或更多列组成的主键也称为复合主键。

create table 表名(列名 类型 primary key);
  • primary key 相当于not nullunique结合的效果 .
  • 在实际开发当中, 每个表通常都会设置一个主键 , 但允许多个列放到一起共同作为一个主键(联合主键)
  • 案例

创建表中包含字段名为 id , 字段类型为int , 其中 id为主键 ,不为空且唯一

mysql> create table user(id int primary key,name varchar(20));
Query OK, 0 rows affected (0.05 sec)mysql> desc user;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
# 当插入两条主键相同的数据时,
mysql> insert into user values(12,'张'),(12,'李');
ERROR 1062 (23000): Duplicate entry '12' for key 'PRIMARY'

设置自增主键

MySQl 当中支持自增主键 , 在插入数据时 ,未设置初始值的情况下 , 会自动从 1 开始自增

create table 表名(列名 类型 primary key auto_increment, ...);
  • 案例
#将user表中的主键id 设置为自增主键
mysql> create table user(id int primary key auto_increment,name varchar(20));
Query OK, 0 rows affected (0.05 sec)mysql> desc user;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)mysql> insert into user values(null,'李'),(null,'张'),(null,'王');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0
# 自增主键设置成功
mysql> select * from user;
+----+------+
| id | name |
+----+------+
|  1 ||
|  2 ||
|  3 ||
+----+------+
3 rows in set (0.00 sec)# id列的null并不是将id设置为null, 而是将id的赋值交给数据库来使用自增主键

MySQL当中数据量较大的时候 , 就需要使用多个主机进行储存, 本质上就是分表然后每个数据库服务器只储存一部分数据 , 这种情况下式就涉及到了"分布式系统中唯一id生成算法" , 利用不同时间下的时间戳和主机编号并结合随机因子 , 就可以得到唯一的id.

6 . 外键约束(foreign key)

外键用来让两张表的数据之间建立连接 , 从而保证数据的一致性和完整性 .

create table 表名(字段名 数据类型,foreign key(本表字段名) renferences 主表名(主键名或unique字段名)
)
alter table 添加外键的表名 add constraint 外键名称 foreign key(从表字段名) renferences 主表名(主表字段名)

外键约束常用来定义主表和从表的关系 , 外键约束定义在从表上 ,主表上必须具有主键约束或是unique约束

  • 外键约束演示
# 创建主班级表
mysql> create table class(id int primary key comment'班级编号',name varchar(10) not null);
Query OK, 0 rows affected (0.02 sec)# 创建学生表并建立外键约束
mysql> create table student(id int primary key comment '学生编号',name varchar(20) not null,class_id int, -- 学生所在的班级编号foreign key(class_id) references class(id));
Query OK, 0 rows affected (0.01 sec)# 主表副表结构
mysql> desc class;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(10) | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> desc student;
+----------+-------------+------+-----+---------+-------+
| 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 class values(100,'java'),(200,'web');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> select * from class;
+-----+------+
| id  | name |
+-----+------+
| 100 | java |
| 200 | web  |
+-----+------+#学生表插入数据
mysql> insert into student values(1,'tom',100);
Query OK, 1 row affected (0.02 sec)mysql> insert into student values(2,'jack',200);
Query OK, 1 row affected (0.02 sec)#添加失败,300号班级在class表中不存在,由于外键约束的作用,插入失败
mysql> insert into student values(3,'frx',300);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`mytestdb`.`student`, CONSTRAINT `student_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`id`))
  • 删除更新行为
行为说明(当在父表中删除/更新对应的记录时)
NO ACTION检查该记录是否有对应外籍,如果有则不允许删除/更新
RESTRICT检查该记录是否有对应的外键,有则不允许删除/更新
CASCADE(级联)检查该记录是否有对应的外键,如果有,则也删除/更新外键在子表中的记录
SET NULL检查该记录是否有对应的外键,如果有则设置子表中该外键的值为NULL
SET DEFAULT父表有变更时,子表将外键列设置成一个默认的值(innodb不支持)
  • 格式
alter table 子表 add constraint 外键名 foreign key (字段名) references 父表(字段名) on update 行为 on delete 行为;
  • 示例

将 student 表中的外键删除更新行为设置为 update set null 和 delete set null

#设置 student 表中的外键
mysql> alter table student add constraint class_id foreign key(class_id) references class(id) on update set null on delete set null;Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0#更新父表中的 id 
mysql> update class set id = 300 where name = 'web';Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0#查询子表中的全部信息
mysql> select * from student;
+----+------+----------+
| id | name | class_id |
+----+------+----------+
|  1 | tom  |      100 |
|  2 | jack |     NULL |
+----+------+----------+
2 rows in set (0.00 sec)
  • 删除外键约束

定义的任何约束可以使用带有DROP CONSTRAINT选项的ALTER TABLE命令删除 ,

ALTER TABLE table_name DROP CONSTRAINT fk_name;

如果使用的是MySQL,则可以使用更清晰的语法,如下所示:

ALTER TABLE table_name  DROP FOREIGN KEY fk_name;

示例:

-#删除外键约束
mysql> alter table student drop foreign key class_id;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0#删除外键约束后,主表与从表再无关联,成功插入
mysql> insert into student values(100,'张',550);
Query OK, 1 row affected (0.00 se
  • 实际开发中 , 为什么不推荐使用外键 与级联?

一方面 , 外键的使用保证了数据库中数据的一致性和完整性 , 并且级联操作方便,减少了程序的代码量

另一方面 , 每次进行 update 和 delete 都需要考虑外键约束 , 导致测试数据极不方便 , 主从关系是确定的,如果哪天需求发生变化 , 会增加很多麻烦 .

所以 , 外键与级联更新适用于单机低并发,不适合分布式、高并发集群; 级联更新是强阻塞,存在数据库更新风暴的风 险; 外键影响数据库的插入速度 , 并发量不是很高的情况下可以使用外键


相关文章:

『 MySQL篇 』:MySQL表的相关约束

基础篇 MySQL系列专栏(持续更新中 …)1『 MySQL篇 』:库操作、数据类型2『 MySQL篇 』:MySQL表的CURD操作3『 MySQL篇 』:MySQL表的相关约束文章目录 1 . 非空约束 (not null)2 . 唯一性约束(unique)3 . check约束4 . 默认约束(default)5 . 主…...

家政服务小程序实战教程10-分类展示

小程序一般底部菜单栏会有一个分类的功能,点击分类,以侧边栏导航的形式列出所有类目,点击某个类目可以做数据筛选,我们本篇就实现一下该功能 01 优化数据源 在我们家政服务小程序里,我们已经建立了类型和服务的数据源…...

一篇文章带你学会Ansible的安装及部署

目录 前言 一、什么是Ansible 二、Ansible的工作方式 三、Ansible的安装 四、构建Anisble清单 1、清单书写方式 2、清单查看 3、清单书写规则 4、主机规格的范围化操作 五、ansible命令指定清单的正则表达式 六、 Ansible配置文件参数详解 1、配置文件的分类与优先…...

opencv常用函数

1)读视频 img cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) if vc.isOpened():ret, frame vc.read() else:ret False while ret:#此处省略具体的操作ret, frame vc.read() # 读下一帧 vc.release() 2)保存视频 def mk_video_writer(vc, path,frame_…...

Java集合框架常见面试题

1. 剖析面试最常见问题之 Java 集合框架 1.1. 集合概述 1.1.1. Java 集合概览1.1.2. 说说 List,Set,Map 三者的区别?1.1.3. 集合框架底层数据结构总结 1.1.3.1. List1.1.3.2. Set1.1.3.3. Map 1.1.4. 如何选用集合?1.1.5. 为什么要使用集合? 1.2. Colle…...

医用雾化器单片机方案设计

产品概述 雾化器是一款基于电路板的振荡信号被大功率三极管进行能量放大,传递给压电陶瓷片,当压电陶瓷片受电信号的激励,产生高频谐振,并使吸附在微孔膜上的液体结产生超声振荡,将液体的结构打散而产生自然飘逸的雾。不…...

python魔术方法(一)

所谓的魔术方法就是让用户客制化类的方法,常常是python中开头有两个下划线的方法。 __new__() new是创建一个类的过程 class A:def __new__(cls,x):print("__new__")return super().__new__(cls)由于new函数是建立了一个对象,所以必须返回一…...

IDEA配置部署tomcat详细步骤(maven web 和Javaweb)

目录 读者手册 一、概念与准备工作 (一)概念 (二)准备工作 (三)IDEA配置tomcat服务器(maven web项目演示) ( 四)Javaweb项目创建tomcat演示 读者手册 读…...

没有设置密码,每次打开RAR文件却都要输密码?

有小伙伴说遇到这种情况:用WinRAR软件压缩RAR文件后,再次打开时显示需要输入密码,但自己压缩文件时并没有设置密码,后续不管几次压缩文件都需要密码,这是怎么回事呢? 其实,这很可能是之前设置压…...

想要知道有哪些免费API接口,看它就够了

免费API它来啦! 微信开放平台 https://open.weixin.qq.com/ 让你的应用支持微信登录、微信分享、微信支付等功能。 百度地图开放平台 https://lbsyun.baidu.com/index.php?titlewebapi 百度地图Web服务API为开发者提供http/https接口,即开发者通过…...

【Java】二叉树

一、树形结构 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 有一个特殊…...

C++学习记录——구 模板初阶

文章目录1、泛型编程和函数模板1、函数模板的实例化2、模板参数的匹配原则2、类模板1、泛型编程和函数模板 泛型编程顾名思义,泛用性很高。之前C可以用重载来对付同名函数,但还是麻烦,有一个类型的变量就得写一个类型的函数。C对此创建了库这…...

筑基五层 —— 位运算看这篇就行了

目录 一.修炼必备 二. 位运算 二.移位运算符 三.位运算综合使用 恭喜你,成功突破至筑基五层!!! 一.修炼必备 1.入门必备:VS2019社区版,下载地址:Visual Studio 较旧的下载 - 2019、2017、201…...

windows安装proget实现nuget私有包部署

下载proget 官网 下载地址 免费下载 安装proget 下载完成之后双击安装 选择ProGet 默认选择即可 也可以指定数据库,SQL Server数据库 Server服务器名;Database数据库名;User Id用户名;Password密码 Serverlocalhost;DatabaseProGet2;User Idsa;Passwordxxxx…...

SpringBoot简单集成OpenFeign

问题 在SpringBoot中简单集成Feign&#xff0c;不想使用Rest Temple了。 步骤 Maven <properties><spring.cloud-version>2022.0.1</spring.cloud-version></properties> <dependencyManagement><dependencies><dependency><g…...

dfs(九)字符串的全排列

字符串的排列_牛客题霸_牛客网【牛客题霸】收集各企业高频校招笔面试题目&#xff0c;配有官方题解&#xff0c;在线进行百度阿里腾讯网易等互联网名企笔试面试模拟考试练习,和牛人一起讨论经典试题,全面提升你的技术能力https://www.nowcoder.com/practice/fe6b651b66ae47d7ac…...

别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(1)

别具一格&#xff0c;原创唯美浪漫情人节表白专辑&#xff0c; (复制就可用)&#xff08;html5,css3,svg)表白爱心代码(1) 一、 前言 回眸之间&#xff0c;丰盈了岁月&#xff0c;涟漪了思绪&#xff0c;轻轻落笔&#xff0c;不写伤痕&#xff0c;不写仇怨&#xff0c;只写岁月…...

Hudi-集成Spark之spark-sql方式

Hudi集成Spark之spark-sql方式 启动spark-sql # 启动spark-sql之前需要先启动Hive的Metastore nohup hive --service metastore & #针对Spark 3.2 spark-sql \--conf spark.serializerorg.apache.spark.serializer.KryoSerializer \--conf spark.sql.catalog.spark_catal…...

快速排序基本原理

快速排序基本原理1.快速排序1.1 基本原理1.2 快速排序执行步骤1.2.1 分区包含步骤1.2.1 分区步骤1.3 快速排序大O记法表示2. 将[0,5,2,1,6,3]进行快速排序 【实战】2.1 第一次分区步骤2.2 第二次分区步骤2.3 第三次分区步骤2.4 第四次分区步骤3.快速排序代码实现1.快速排序 1.…...

Android开发笔记-提纲(连载中....)

文章目录Android概述Android开发学习笔记提纲1. 认识AS开发Android的基础入门知识2. 认识Activity的生命周期和基础使用3. 认识Activity之间的跳转和传值4. 认识Intent以及全局Activity的属性的共享5. 认识Service6. 学习跨应用服务【AIDL通信】Android概述 Android系统框架的四…...

React Native(一)

移动端触摸事件example1:<ButtononPress{() > {Alert.alert(你点击了按钮&#xff01;);}}title"点我&#xff01;" />Touchable 系列组件TouchableHighlight 此组件的背景会在用户手指按下时变暗TouchableNativeFeedback 会在用户手指按下时形成类似墨水涟…...

Kotlin 26. Kotlin 如何播放音频文件

Kotlin 如何播放音频文件 文章目录Kotlin 如何播放音频文件1 下载并放置音频文件2 activity_main.xml3 MainActivity.kt1 下载并放置音频文件 我们可以随便下载一个音频文件&#xff0c;比如 alarm.mp3&#xff0c;需要将其放置在 /res/raw/ 路径下。 2 activity_main.xml 这…...

recv和明文收包分析

我们CTRLg 跳到recv 分析收包函数 发现函数会断并且收包函数返回值(收包包长)也会不断变化 那么证明recv是真正的收包函数&#xff0c;游戏没有重新实现该函数 我们只要分析该函数即可 在recv函数执行完毕以后下断 eax是包长,esi28是包指针 我们上2个号&#xff0c;让另外…...

【IVIF的超分重建】

Multimodal super-resolution reconstruction of infrared and visible images via deep learning &#xff08;基于深度学习的红外和可见光图像多模态超分辨率重建&#xff09; 提出了一种基于编解码器结构的红外-可见光图像融合方法。图像融合任务被重新表述为保持红外-可见…...

“深度学习”学习日记。--加深网络

2023.2.13 深度学习 是加深了层的深度神经网络的学习过程。基于之前介绍的网络&#xff0c;只需要通过 叠加层&#xff0c; 就可以创建深度网络 之前的学习&#xff0c;已经学习到了很多东西&#xff0c;比如构成神经网络的各种层、参数优化方法、误差反向传播法&#xff0c;…...

2023前端面试总结含参考答案

文章目录1. 父子组件生命周期的执行顺序:2. 原型链&#xff1a;3. promise的理解&#xff1a;4. 数组循环&#xff0c;foreach&#xff0c;filter&#xff0c;map&#xff0c;reduce5. 数组去重&#xff0c;set6. 组件通信方式7. 路由钩子8. 首页首屏加载优化&#xff1a;9. th…...

总览 Java 容器--集合框架的体系结构

前言 我们在讲 Java 的数据类型的时候&#xff0c;单独介绍过数组&#xff0c;数组也确实是开发程序中常用的内存类型之一&#xff0c;不过 Java 内置的数组限制颇多&#xff0c;所以此后扩展出了List这种结构&#xff0c;与之类似的Set、Queue 这些内存中的容器都被放在了 Co…...

即便考分很好也不予录取的研究生复试红线,都是原则性问题

在浙大研究生招生录取政策文件中有这么一句话&#xff1a;坚持“按需招生、全面衡量、择优录取、宁缺毋滥”的原则&#xff0c;以提高人才选拔质量为核心&#xff0c;在确保安全性、公平性和科学性的基础上&#xff0c;做到统筹兼顾、精准施策、严格管理。字字体现出研究生招生…...

Android java创建子线程的几种方法

1.新建一个类继承自Thread&#xff0c;并重写run()方法&#xff0c;并在里面编写耗时逻辑。 1 2 3 4 5 6 7 class ThreadTest extends Thread { Override public void run() { //具体的耗时逻辑代码 } } new ThreadTest().st…...

UVa 11212 Editing a Book 编辑书稿 IDA* Iterative Deepening A Star 迭代加深搜剪枝

题目链接&#xff1a;Editing a Book 题目描述&#xff1a; 给定nnn个(1<n<10)1<n<10)1<n<10)数字&#xff0c;数字分别是1,2,3,...,n1, 2, 3, ...,n1,2,3,...,n&#xff0c;但是顺序是打乱的&#xff0c;你可以选择一个索引区间的数字进行剪切操作。问最少进…...

wordpress改变域名/深圳做网站的公司

环境及工具 手机 &#xff1a;小米手机 MI 2A 系统版本: Android 4.1.1 工具 : IDA pro 6.6 、C32Asm 、VS2005 一&#xff1a;第一次打开加密视频会出现如下验证: 输入用户名与密码登录成功后如下图 点击“支付并获取许可证”成功后就可以播放加密的视频了&#xff0c;并…...

中天银都建设集团网站/网站开发语言

Mcrypt扩展库可以实现加密解密功能&#xff0c;就是既能将明文加密&#xff0c;也可以密文还原。1.安装PHP加密扩展Mcrypt要使用该扩展&#xff0c;必须首先安装mcrypt标准类库&#xff0c;注意的是mcrypt软件依赖libmcrypt和mhash两个库。2.PHP加密扩展库Mcrypt的算法和加密模…...

教育机构logo/宁波seo教程

张宴网站中涉及到的加速文章地址&#xff1a; http://blog.s135.com/nginx_cache/2/1/具体参数说明是这样的形式&#xff0c;写得不完善&#xff0c;没有加入自动清理缓存时间 proxy_cache_path /usr/local/nginx/proxy_cache levels1:2 keys_zonecache_one:200m inactive1d ma…...

wordpress好看的中文主题/营销网站类型

一、分析目的 通过分析2B产品中的团队协作管理软件的对比分析&#xff0c;用于为公司团队协作软件的选型做产考。 二、竞品归属市场概况 2.1.目标用户群及需求 主要面向企业用户&#xff0c;用于解决企业不同地域以及不同职能部门之间的团队协作难点。 2.2.市场规模 中国大概有…...

南充市住房和城乡建设厅网站/建立网站的基本步骤

<script language"javascript" type"text/javascript">ar ReTitle 回复:光能充电手机被指电视直销广告虚假宣传;</script> 广告宣传的光能充电&#xff0c;消费者买回后发现根本没有这项功能&#xff1b;广告称内置1000多种游戏的手机实际只有…...

轻量级应用服务器wordpress/百度快速收录开通

过去一年大家都在谈论比特币、挖矿&#xff0c;今年大家又都在谈论区块链、去中心化&#xff0c;可我发现一个非常有意思的现象&#xff0c;是什么?我身边所有的人&#xff1a;老师、同学、同事、一些互联网圈内的比较有名的站长、IT程序员&#xff0c;对于什么是比特币、区块…...