MySQL六种约束的示例详解(全网最全)

目录
  • 一、概述
  • 二、约束演示
  • 三、外键约束
    • 1、 什么是外键约束
    • 2、 不使用外键有什么影响
    • 3、 添加外键的语法
    • 4、 删除/更新行为
    • 5、 演示删除/更新行为
  • 四、主键id到底用自增好还是uuid好
  • 五、实际开发尽量少用外键

一、概述

概念: 约束是作用于表中字段上的规则,用于限制存储在表中的数据。

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

分类:

注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

二、约束演示

上面我们介绍了数据库中常见的约束,以及约束涉及到的关键字,那这些约束我们到底如何在创建表、修改表的时候来指定呢,接下来我们就通过一个案例,来演示一下。

案例需求: 根据需求,完成表结构的创建。需求如下:

对应的建表语句为:

CREATE TABLE tb_user (
	id INT AUTO_INCREMENT PRIMARY KEY COMMENT 'ID唯一标识',
	NAME VARCHAR ( 10 ) NOT NULL UNIQUE COMMENT '姓名',
	age INT CHECK ( age > 0 && age <= 120 ) COMMENT '年龄',
	STATUS CHAR ( 1 ) DEFAULT '1' COMMENT '状态',
	gender CHAR ( 1 ) COMMENT '性别'
);

在为字段添加约束时,我们只需要在字段之后加上约束的关键字即可,需要关注其语法。

我们执行上面的SQL把表结构创建完成,然后接下来,就可以通过一组数据进行测试,从而验证一下,约束是否可以生效。

(1)先是新增了三条数据

insert into tb_user(name,age,status,gender) values ('Tom1',19,'1','男'),('Tom2',25,'0','男');
insert into tb_user(name,age,status,gender) values ('Tom3',19,'1','男');

新增三条数据,竟然用了21秒,这是什么情况?

本来我还以为是新增这些约束导致新增数据慢的,其实不是,因为我这个是阿里的linux服务器,然后我在linux中通过客户端连接mysql执行新增,也就0.01秒,说明这是navicat连接远程主机耗时的。

就算新增了这些约束,会导致新增数据慢,那也是批量的时候才能明显察觉出来,单条数据基本上看不出来的。

(2)测试name NOT NULL

insert into tb_user(name,age,status,gender) values (null,19,'1','男');

(3)测试name UNIQUE(唯一)

上面新增的数据已经有Tom3了,再次新增直接报错。

insert into tb_user(name,age,status,gender) values ('Tom3',19,'1','男');

虽然报错了,但是我们这时候再新增一条数据会发现一个现象。

insert into tb_user(name,age,status,gender) values ('Tom4',80,'1','男');

明明是自增id,但是却没有4,原因就是UNIQUE(唯一)是在申请完自增id后,准备入库了,然后这时候会先去看看库里面是否有存在相同name的值,如果有则新增失败,虽然新增失败了,但是自增id已经申请过了!

相反我们刚刚测试的null的name的时候他并没有去申请id,因为他在刚开始就已经判断他为空了,还没走到申请id这一步。

判断是否为空 -》 申请自增id -》 判断是否已经有存在的值

总结:当新增的name不为空的时候,但是和之前存在的数据有相同的,这时候新增会失败,但是他会申请主键id。

(4)测试CHECK

我们设置的是age必须大于0小于等于120,否则保存失败!

age int check (age > 0 && age <= 120) COMMENT '年龄' ,
insert into tb_user(name,age,status,gender) values ('Tom5',-1,'1','男');
insert into tb_user(name,age,status,gender) values ('Tom5',121,'1','男');

(5)测试 DEFAULT ‘1’ 默认值

STATUS CHAR ( 1 ) DEFAULT '1' COMMENT '状态',
insert into tb_user(name,age,gender) values ('Tom5',120,'男');

(6)上面,我们是通过编写SQL语句的形式来完成约束的指定,那假如我们是Navicat客户端呢?

主键自增

name唯一约束

status默认为1

三、外键约束

1、 什么是外键约束

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

我们来看一个例子:

左侧的emp表是员工表,里面存储员工的基本信息,包含员工的ID、姓名、年龄、职位、薪资、入职日期、上级主管ID、部门ID,在员工的信息中存储的是部门的ID dept_id,而这个部门的ID是关联的部门表dept的主键id,那emp表的dept_id就是外键,关联的是另一张表的主键。

2、 不使用外键有什么影响

通过上面的示例,我们分别来演示 添加外键 和不添加外键的区别,首先来看不添加 外键 对数据有什么影响:

准备数据:

CREATE TABLE dept ( id INT auto_increment COMMENT 'ID' PRIMARY KEY, NAME VARCHAR ( 50 ) NOT NULL COMMENT '部门名称' ) COMMENT '部门表';

INSERT INTO dept (id, name) VALUES (1, '研发部'), (2, '市场部'),(3, '财务部'), (4, '销售部'), (5, '总经办');

CREATE TABLE emp (
	id INT auto_increment COMMENT 'ID' PRIMARY KEY,
	NAME VARCHAR ( 50 ) NOT NULL COMMENT '姓名',
	age INT COMMENT '年龄',
	job VARCHAR ( 20 ) COMMENT '职位',
	salary INT COMMENT '薪资',
	entrydate date COMMENT '入职时间',
	managerid INT COMMENT '直属领导ID',
dept_id INT COMMENT '部门ID'
) COMMENT '员工表';

INSERT INTO emp (id, name, age, job,salary, entrydate, managerid, dept_id) VALUES
(1, '金庸', 66, '总裁',20000, '2000-01-01', null,5),
(2, '张无忌', 20, '项目经理',12500, '2005-12-05', 1,1),
(3, '杨逍', 33, '开发', 8400,'2000-11-03', 2,1),
(4, '韦一笑', 48, '开 发',11000, '2002-02-05', 2,1),
(5, '常遇春', 43, '开发',10500, '2004-09-07', 3,1),
(6, '小昭', 19, '程 序员鼓励师',6600, '2004-10-12', 2,1);

接下来,我们可以做一个测试,删除id为1的部门信息。

结果,我们看到删除成功,而删除成功之后,部门表不存在id为1的部门,而在emp表中还有很多的员工,关联的为id为1的部门,此时就出现了数据的不完整性。 而要想解决这个问题就得通过数据库的外键约束。

正常开发当中有时候会通过业务代码来控制数据的不完整性,例如删除部门的时候会先根据部门id去查看一下有没有对应的员工表,如果有则删除失败,没有则删除成功。

3、 添加外键的语法

可以在创建表的时候直接添加外键,也可以对现已存在的表添加外键。

(1)方式一

CREATE TABLE 表名(
	字段名 数据类型,
	...
	[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名)
);

使用示例:

CREATE TABLE emp (
	id INT auto_increment COMMENT 'ID' PRIMARY KEY,
	NAME VARCHAR ( 50 ) NOT NULL COMMENT '姓名',
	age INT COMMENT '年龄',
	job VARCHAR ( 20 ) COMMENT '职位',
	salary INT COMMENT '薪资',
	entrydate date COMMENT '入职时间',
	managerid INT COMMENT '直属领导ID',
	dept_id INT COMMENT '部门ID',
	CONSTRAINT fk_emp_dept_id FOREIGN KEY (dept_id) REFERENCES dept (id)
) COMMENT '员工表';

也可以省略掉CONSTRAINT fk_emp_dept_id 这样mysql就会自动给我们起外键名称。

方式二:对现存在的表添加外键

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名) ;

使用示例:

alter table emp add constraint fk_emp_dept_id FOREIGN KEY (dept_id) REFERENCES dept(id);

方式三:Navicat添加外键

删除外键:

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

使用示例:

alter table emp drop foreign key fk_emp_dept_id;

4、 删除/更新行为

添加了外键之后,在删除父表数据时产生的约束行为,我们就称为删除/更新行为。具体的删除/更新行为有以下几种:

在mysql8.0.27版本当中,RESTRICT是默认的删除更新行为!不同的版本可能也会有所差距!

具体语法为:

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;

就是比原先添加外键后面多了这些ON UPDATE CASCADE ON DELETE CASCADE,代表的是更新时采用CASCADE ,删除时也采用CASCADE

5、 演示删除/更新行为

(1)演示RESTRICT

当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。 (与 NO ACTION 一致) 默认行为

首先要添加外键,默认是RESTRICT行为!

alter table emp add constraint fk_emp_dept_id FOREIGN KEY (dept_id) REFERENCES dept(id);

当我要删除父表当中id为5的记录的时候会报错,原因就是emp表的dept_id存在5。假如要更新id也同样会报错的!

(2)演示CASCADE

当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则

也删除/更新外键在子表中的记录。

删除外键的语法:

ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;

删除外键的示例:

ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept_id;

指定外键的删除更新行为为cascade

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;

修改父表id为1的记录,将id修改为6

我们发现,原来在子表中dept_id值为1的记录,现在也变为6了,这就是cascade级联的效果。

在一般的业务系统中,不会修改一张表的主键值。

删除父表id为6的记录

我们发现,父表的数据删除成功了,但是子表中关联的记录也被级联删除了。

(3)演示SET NULL

当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(这就要求该外键允许取null)。

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update set null on delete set null ;

在进行测试之前,我们先需要删除上面建立的外键 fk_emp_dept_id。然后再通过数据脚本,将emp、dept表的数据恢复了。

接下来,我们删除id为1的数据,看看会发生什么样的现象。

我们发现父表的记录是可以正常的删除的,父表的数据删除之后,再打开子表 emp,我们发现子表emp的dept_id字段,原来dept_id为1的数据,现在都被置为NULL了。

这就是SET NULL这种删除/更新行为的效果。

四、主键id到底用自增好还是uuid好

在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?

1、测试uuid和自增id还有随机数插入效率

首先来建立三张表,user_auto_key代表的是自增表,user_uuid代表的是id存储的uuid,random_key代表的是表id是雪花id。然后通过连接jdbc批量插入数据测试测试结果如下:

在已有数据量为130W的时候:我们再来测试一下插入10w数据,看看会有什么结果:

可以看出在数据量100W左右的时候,uuid的插入效率垫底,并且在后序增加了130W的数据,uudi的时间又直线下降。时间占用量总体可以打出的效率排名为:auto_key>random_key>uuid,uuid的效率最低

2、使用自增id的缺点

1.别人一旦爬取你的数据库,就可以根据数据库的自增id获取到你的业务增长信息,很容易分析出你的经营情况

2.对于高并发的负载,innodb在按主键进行插入的时候会造成明显的锁争用,主键的上界会成为争抢的热点,因为所有的插入都发生在这里,并发插入会导致间隙锁竞争

3.Auto_Increment锁机制会造成自增锁的抢夺,有一定的性能损失

4.自增id涉及到数据迁移的话是相当麻烦的!

5.而且一旦涉及到分库分表自增id也是相当麻烦的!

3、使用uuid的缺点

因为uuid相对顺序的自增id来说是毫无规律可言的,新行的值不一定要比之前的主键的值要大,所以innodb无法做到总是把新行插入到索引的最后,而是需要为新行寻找新的合适的位置从而来分配新的空间。这个过程需要做很多额外的操作,数据的毫无顺序会导致数据分布散乱,将会导致以下的问题:

1.写入的目标页很可能已经刷新到磁盘上并且从缓存上移除,或者还没有被加载到缓存中,innodb在插入之前不得不先找到并从磁盘读取目标页到内存中,这将导致大量的随机IO

2.因为写入是乱序的,innodb不得不频繁的做页分裂操作,以便为新的行分配空间,页分裂导致移动大量的数据,一次插入最少需要修改三个页以上

3.由于频繁的页分裂,页会变得稀疏并被不规则的填充,最终会导致数据会有碎片

页分裂和碎片问题,uuid确实会引起这个问题,但雪花可以解决这个问题,雪花算法天然具有顺序性新插入的ID一定是最大的,所以我认为用雪花算法是一个很不错的选择!

五、实际开发尽量少用外键

主键和索引是不可少的,不仅可以优化数据检索速度,开发人员还省不其它的工作。

矛盾焦点:数据库设计是否需要外键。这里有两个问题:

一个是如何保证数据库数据的完整性和一致性;

二是第一条对性能的影响。

这里分为了正方和反方两个观点,供参考!

1、正方观点

1.由数据库自身保证数据一致性,完整性,更可靠,因为程序很难100%保证数据的完整性,而用外键即使在数据库服务器当机或者出现其他问题的时候,也能够最大限度的保证数据的一致性和完整性。

2.有主外键的数据库设计可以增加ER图的可读性,这点在数据库设计时非常重要。

3.外键在一定程度上说明的业务逻辑,会使设计周到具体全面。

数据库和应用是一对多的关系,A应用会维护他那部分数据的完整性,系统一变大时,增加了B应用,A和B两个应用也许是不同的开发团队来做的。他们如何协调保证数据的完整性,而且一年以后如果又增加了C应用呢?

2、反方观点

1.可以用触发器或应用程序保证数据的完整性

2.过分强调或者说使用主键/外键会平添开发难度,导致表过多等问题

3.不用外键时数据管理简单,操作方便,性能高(导入导出等操作,在insert, update, delete 数据的时候更快)

在海量的数据库中想都不要去想外键,试想,一个程序每天要insert数百万条记录,当存在外键约束的时候,每次要去扫描此记录是否合格,一般还不 止一个字段有外键,这样扫描的数量是成级数的增长!我的一个程序入库在3个小时做完,如果加上外键,需要28个小时!

3、结论

1.在大型系统中(性能要求不高,安全要求高),使用外键;在大型系统中(性能要求高,安全自己控制),不用外键;小系统随便,最好用外键。

2.用外键要适当,不能过分追求

3.不用外键而用程序控制数据一致性和完整性时,应该写一层来保证,然后个个应用通过这个层来访问数据库。

需要注意的是:

MySQL允许使用外键,但是为了完整性检验的目的,在除了InnoDB表类型之外的所有表类型中都忽略了这个功能。这可能有些怪异,实际上却非常正常:对于数据库的所有外键的每次插入、更新和删除后,进行完整性检查是一个耗费时间和资源的过程,它可能影响性能,特别是当处理复杂的或者是缠绕的连接数时。因而,用户可以在表的基础上,选择适合于特定需求的。

所以,如果需要更好的性能,并且不需要完整性检查,可以选择使用MyISAM表类型,如果想要在MySQL中根据参照完整性来建立表并且希望在此基础上保持良好的性能,最好选择表结构为innoDB类型

以上就是MySQL六种约束的示例详解(全网最全)的详细内容,更多关于MySQL约束的资料请关注我们其它相关文章!

(0)

相关推荐

  • MySQL中常见的六个约束类型详解

    目录 前言 1. not null 2. unique 3. default 4. primary key 自增主键auto_increment 5. foreign key 6. check 总结 前言 在向数据表中插入数据时,有的时候对于插入的数据是有特殊要求的,比如学生成绩不能为空,学生学号不能重复等等,这个时候约束就派上用场了. 约束类型是通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性.这一章我们主要介绍六个常见的MySQL约束类型. 1. not null 保证指定不能

  • MySQL数据库表约束讲解

    目录 MySQL数据库表约束 一.主键约束 二.外键约束 三.非空约束 四.唯一约束 五.默认约束 六.自增约束 数据库建表的约束条件 常用约束条件及简单介绍 MySQL数据库表约束 为了防止往数据表中插入错误的数据,在MySQL中,定义了一些维护数据库完整性的规则,即表的约束. 常见的表的约束: 上表中列举的约束条件都是针对表中字段进行限制, 从而保证数据表中数据的正确性和唯一性. 一.主键约束 在MySQL中,为了快速查找表中的某条信息,可以通过设置主键来实现.主键约束是通过PRIMARY

  • 详解MySQL 外键约束

    官方文档: https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html 1.外键作用: MySQL通过外键约束来保证表与表之间的数据的完整性和准确性. 2.外键的使用条件 两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持) 外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立: 外键关系的两个表的列必须

  • 详解MySQL中的外键约束问题

    使用MySQL开发过数据库驱动的小型web应用程序的人都知道,对关系数据库的表进行创建.检索.更新和删除等操作都是些比较简单的过程.理论上,只要掌握了最常见的SQL语句的用法,并熟悉您选择使用的服务器端脚本语言,就足以应付对MySQL表所需的各种操作了,尤其是当您使用了快速MyISAM数据库引擎的时候.但是,即使在最简单的情况下,事情也要比我们想象的要复杂得多.下面我们用一个典型的例子进行说明.假设您正在运行一个博客网站,您几乎天天更新,并且该站点允许访问者评论您的帖子. MySQL外键约束条件

  • MySQL约束超详解

    目录 MySQL约束操作 1.非空约束 2.唯一约束 3.主键约束 4.外键约束 5.级联 MySQL约束操作 概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性. 分类: 主键:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign key 1.非空约束 not null,值不能为空. 创建表时添加非空约束: CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL ); 创建表完后,添加非空

  • MySQL约束类型及举例介绍

    约束 约束保证数据的完整性和一致性 约束分为表级约束和列级约束 约束类型包括:NOT NULL (非空约束),PRIMARY KEY(主键约束),UNIQUE KEY(唯一约束),DEFAULT(默认约束),FOREIGN(外键约束) 1.主键约束 PRIMARY KEY 每张数据表只能存在一个主键 主键保证记录的唯一性,主键的值不重复 主键自动为 NOT NULL 举例,创建一张student表,将学号设置为主键创建完表之后,通过SHWO COLUMNS FROM student查看表结构 C

  • MySQL六种约束的示例详解(全网最全)

    目录 一.概述 二.约束演示 三.外键约束 1. 什么是外键约束 2. 不使用外键有什么影响 3. 添加外键的语法 4. 删除/更新行为 5. 演示删除/更新行为 四.主键id到底用自增好还是uuid好 五.实际开发尽量少用外键 一.概述 概念: 约束是作用于表中字段上的规则,用于限制存储在表中的数据. 目的: 保证数据库中数据的正确.有效性和完整性. 分类: 注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束. 二.约束演示 上面我们介绍了数据库中常见的约束,以及约束涉及到的关

  • MySQL六种约束的示例详解

    目录 什么是约束 外键约束 什么是约束 作用于表上的规则,限制存储在表中的数据 约束分类: 约束 描述 关键字 非空约束 该字段数据不能为null NOT NULL 唯一约束 该字段数据唯一不重复 UNIQUE 主键约束 一行数据的唯一标识(非空且唯一) PRIMARY KEY 默认约束 未指定该字段值则使用默认值 DEFAULT 检查约束(8.0.16以后) 该字段值满足某一条件 CHECK 外键约束 为两张表建立连接(数据一致.完整) FOREIGN KEY 创建表示例: CREATE TA

  • MySQL数据操作管理示例详解

    目录 一.查看表和查看表的定义 二.删除表 三.创建表 四.表类型 五.修改表 六.完整性 1.数据完整性 2.使用约束实现数据完整性 3.在数据表上添加约束 4.删除约束 七.添加数据 八.修改数据 九.删除数据 十.SQL语句中的运算符 算数运算符 比较运算符 逻辑运算符 一.查看表和查看表的定义 SHOW TABLE 表名 DESC 表名; DESCRIBE 表名 二.删除表 DROP TABLE [IF EXISTS ] 表名; 如果表USER存在,删除表USER DROP TABLE

  • MySQL教程子查询示例详解

    目录 1.什么是子查询? 2.子查询可以出现的位置有哪些? 3.where子查询 4.from后面使用子查询.(太重要了) 1.什么是子查询? 当一个查询是另外一个查询的一部分时,我们将内层的查询叫做子查询,外层的查询叫做主查询. 2.子查询可以出现的位置有哪些? select ..(select). from ..(select). where ..(select). 从上面可以看出,子查询常常出现在三个地方,select后面可以跟子查询:from后面可以跟子查询:where后面可以跟子查询;

  • MySql数据类型教程示例详解

    目录 1.简要概述 2. MySQL数据类型详解 1) 字符串类型 2) 整数类型 3)浮点数类型 4)日期/时间类型 1.简要概述 为什么要开通MySQL这个学习板块呢?因为这是一名数据分析师必要的一项技能.分析数据什么最重要?当然是数据,既然如此!在数据呈现爆发式增长的年代,怎么能够不学学数据库呢?其实这也是很多读者朋友希望看到的,也是他们建议我写的. 难者不会,会者不难!其实网上很多MySQL的总结文章,不可否认,知识点写的都很全,但是呢!这个只是会使用MySQL数据库的朋友的一个查询手册

  • MySQL中使用去重distinct方法的示例详解

    一 distinct 含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段 用法注意: 1.distinct[查询字段],必须放在要查询字段的开头,即放在第一个参数: 2.只能在SELECT 语句中使用,不能在 INSERT, DELETE, UPDATE 中使用: 3.DISTINCT 表示对后面的所有参数的拼接取 不重复的记录,即查出的参数拼接每行记录

  • MySql中子查询内查询示例详解

    西北望乡何处是,东南见月几回圆. 月亮又慢悠悠的挂上了天空,趁着睡前梦呓,我就带领各位可爱的读者们探索MySql最后的子查询部分. 说明:有些查询结果出来结果截图与题目要求不一样会出现多余的字段是为了方便展示结果的可读性.实际操作的读者可以删除SELECT后面多余的字段得到正确的结果. #WHERE或HAVING后面 #1.标量子查询(单行子查询) #2.列子查询(多行子查询) #3.行子查询(多列多行) #特点: # ①子查询放在小括号内 # ②子查询一般放在条件的右侧 # ③标量子查询:一般

  • Mysql联表update数据的示例详解

    1.MySQL UPDATE JOIN语法 在MySQL中,可以在 UPDATE语句 中使用JOIN子句执行跨表更新.MySQL UPDATE JOIN的语法如下: UPDATE T1, T2, [INNER JOIN | LEFT JOIN] T1 ON T1.C1 = T2. C1 SET T1.C2 = T2.C2, T2.C3 = expr WHERE condition 更详细地看看MySQL UPDATE JOIN语法: 首先,在UPDATE子句之后,指定主表(T1)和希望主表连接表

  • Mysql教程分组排名实现示例详解

    目录 1.数据源 2.数据整体排名 1)普通排名 2)并列排名 3)并列排名 3.数据分组后组内排名 1)分组普通排名 2)分组后并列排名 3)分组后并列排名 4.分组后取各组的前两名 1.数据源 2.数据整体排名 1)普通排名 从1开始,按照顺序一次往下排(相同的值也是不同的排名). set @rank =0; select city , score, @rank := @rank+1 rank from cs order by score desc; 结果如下: 2)并列排名 相同的值是相同

  • MySQL教程数据定义语言DDL示例详解

    目录 1.SQL语言的基本功能介绍 2.数据定义语言的用途 3.数据库的创建和销毁 4.数据库表的操作(所有演示都以student表为例) 1)创建表 2)修改表 3)销毁表 如果你是刚刚学习MySQL的小白,在你看这篇文章之前,请先看看下面这些文章.有些知识你可能掌握起来有点困难,但请相信我,按照我提供的这个学习流程,反复去看,肯定可以看明白的,这样就不至于到了最后某些知识不懂却不知道从哪里下手去查. <MySQL详细安装教程> <MySQL完整卸载教程> <这点基础都不懂

随机推荐