MySQL表、数据类型、约束


所用数据库——链接地址

一、MySQL常用数据类型

类型描述
int整型
bigint长整型
float数值型
double数值型
char定长字符串
varchar变长字符串
date日期型(年月日)
datetime日期型(年月日 时分秒 毫秒)
time日期型(时分秒)
BLOB二进制大对象(存储图片、视频等流媒体信息)
CLOB字符大对象(存储较大文本,例如4G字符串)
  • 任何一张表包含:表结构、表数据、索引

二、create 创建表

  • 语法:
create table 表名(字段名1 数据类型(长度) 约束, 字段名2 数据类型(长度) 约束, ...);
drop table if exists course; 
create table course(
	cno varchar(10) COMMENT '课程号',
	cname varchar(20) COMMENT '课程名',
	credit int(11) COMMENT '学分',
	semester int(11) COMMENT '开课学期',
	PRIMARY KEY (cno)
)

三、INSERT 向表中添加数据

  • 语法:
insert into 表名 (字段名...) values(1,2, ...)
INSERT INTO course (cno,cname,credit,semester) VALUES ('C001', '高等数学', 4, 1);
INSERT INTO course (cno,cname,credit,semester) VALUES ('C002', '大学英语', 3, 1);
INSERT INTO course (cno,cname,credit,semester) VALUES ('C003', '大学英语', 3, 2);
INSERT INTO course (cno,cname,credit,semester) VALUES ('C004', '计算机文化学', 2, 2);
INSERT INTO course (cno,cname,credit,semester) VALUES ('C005', 'Java', 2, 3);
INSERT INTO course (cno,cname,credit,semester) VALUES ('C006', '数据库基础', 4, 5);
INSERT INTO course (cno,cname,credit,semester) VALUES ('C007', '数据结构', 4, 4);
INSERT INTO course (cno,cname,credit,semester) VALUES ('C008', '计算机网络', 4, 4);

四、DDL 添加/删除/修改表结构

  • 采用alter table来增加/删除/修改表结构,即表结构发生改变,但不影响表中的数据

1. add 添加字段

alter table course add tel varchar(40);

2. modify 修改字段

alter table course modify cname varchar(50);

3. drop 删除字段

alter table course drop tel;

五、DML 添加/删除/修改

  • insert,delete,update,用于添加、删除、修改,不改变表结构

1. insert 添加表数据

语法:

insert into 表名 (字段名...) values(1,2, ...)
INSERT INTO course (cno,cname,credit,semester) VALUES ('C001', '高等数学', 4, 1);

字段的数量和values值的数量相同,顺序相同,数据类型相同
字段名可以省略,但不建议省略,因为当数据库表中的字段位置发生改变的时候会影响到insert语句

2. update 修改表数据

语法:

update 表名 set 字段名1=字段值1,字段名2=字段值2, ... where 条件;

没有 where 条件则整张表数据全部更新

UPDATE course SET cname = '外语' WHERE cno = 'C003';

3. delete 删除表数据

语法:

delete from 表名 where 条件;

没有 where 条件则全部删除

delete from course where cname = '外语';

4. truncate 删除大表数据

语法:

truncate table 表名 where 条件;
  • 表被截断,只删数据,不可回滚 ,永久丢失
  • truncate删除时,不删除表结构,但是删除的表中的数据是没办法恢复的
  • drop删除时,删除表结构,且删除速度更快,但是可恢复数据

六、约束

  • 使用约束保证表中数据的合法性、有效性、完整性

1. 非空约束

  • not null
    针对某个字段设置其值不为null,只有列级约束

2. 唯一约束

  • unique
    可以使某个字段的值不能重复,可以为null,但只能有一个值为null
    注意:一个表可以有多个唯一约束字段。
  • 唯一约束可以在单独字段名后面加(列级约束),也可以在两个或多个字段名后面加(表级约束),即两个或多个字段联合起来不能重复,不能单看任一个字段(列级约束也可以表示成表级约束)

2.1 NULL讨论

  • 唯一约束中多个null不是重复,因为null不是值,在数据库中,null不是一个值,代表什么也没有,为空,即空不是一个值,不能用等号衡量,表示是否为空必须使用is null 或 is not null
  • ifnull() 空处理函数(单行处理函数),即可能为null的数据,被当作什么处理

3. 主键约束

  • primary key
PRIMARY KEY (字段名)

主键列数据唯一且非空

  • 每个表应该具有主键,主键可以标识记录的唯一性,主键分为单一主键和复合(联合)主键,单一主键是由一个字段构成的,复合(联合)主键是由多个字段构成的
  • 所谓的一张表多个主键,称之为联合主键,但联合主键只能有一个主键自增auto_increment约束,自增类型必须是int类型和int类型相关的类型,不能是字符串类型、日期类型等等
    Oracle中的自增机制:序列(sequence)

3.1 主键的作用

  • 第一范式要求任何一张表中都应该有主键,主键值是这行记录在这张表当中的唯一标识,可以保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度

3.2 主键的分类

3.2.1 根据主键字段的字段数量划分
  • 单一主键(推荐使用)
  • 复合主键(多个字段联合起来添加一个主键约束)
3.2.2 根据主键的性质划分
  • 自然主键
  • 业务主键(主键值和系统的业务挂钩)(不推荐)

4. 外键约束

  • foreign key
foreign key(子表字段名) references 父表名(父表字段名)

一个表的外键如果引用的字段是主键,则外键值必须等于主键值;如果引用的字段不是主键,则至少应该具有unique唯一约束,所以外键也可以为null,但是外键为null的数据则与相关联的表就没有关系了,愧为外键的名称,所以一般又不采用外键为null的情况

  • 外键主要用来维护表之间的关系,保证参照完整性,如果表中的某个字段为外键字段,那么该字段的值必须来源于参照的表的主键
  • 引用的表叫做子表,被引用的表叫做父表

1. 顺序要求

  • 创建时先创建父表,再创建子表
  • 删除时,先删除子表,再删除父表
  • 添加数据的时候,先添加父表,再添加子表
  • 删除数据的时候,先删除子表,再删除父表

5. 检查约束

  • check
    Oracle数据库中有check约束,目前MySQL不支持

七、约束的指定时机

1. 建表的同时对相应的数据列指定约束
2. 建完表之后再创建,以修改表的方式增加约束,如add,modify

在现代电机控制领域中,FOC(Field Oriented Control,矢量控制)技术的应用日益广泛,其主要目的是为了提高电机控制的性能和效率。FOC通过将电机定子电流分解为与转子磁场同步旋转的坐标系中的两个正交分量来实现对电机转矩和磁通的独立控制,类似于直流电机的控制效果,从而实现精确的转矩控制和高速响应。本文件提到的手搓FOC驱动器涉及到了三个控制环路:位置环、速度环和电流环。在位置环中,控制算法只需要一个P(比例)参数来调整,因为位置控制相对来说较为简单,只需要通过比例控制来实现位置的准确跟随。在速度环的控制中,刚性等级的调节是关键,刚性等级高意味着系统对速度变化的反应更快,但同时也可能导致机械系统承受较大的冲击和震动。因此,适当调节速度环的刚性等级是实现电机平稳运行和快速响应的重要手段。电流环是电机控制中最为复杂的一个环节,因为它涉及到电机的电流动态控制。本文件中提到了电流环PI参数基于带宽调节。PI(比例-积分)控制器的参数设置对于电流环的性能至关重要。带宽的调节通常与系统的动态响应能力和稳定性有关,带宽越大,系统的响应速度越快,但稳定性可能下降;反之,带宽越小,系统越稳定,但响应速度会变慢。SVPWM(Space Vector Pulse Width Modulation,空间矢量脉宽调制)是另一种先进的调制技术,用于在电机驱动器中生成高效的开关波形。本文件提到的SVPWM采用基于零序注入的SPWM(正弦脉宽调制)控制,这种方法可以在保持载波频率不变的同时,调整输出波形的电压和频率,以满足电机的运行需求。零点电角度识别技术则是在电机运行过程中实时确定转子的准确位置,这对于实现精确的矢量控制至关重要。手搓FOC驱动器的设计需要综合考虑位置、速度和电流三个环路的控制要求,并合理配置相应的PI参数,采用高效的SVPWM控制策略和精确的电角度识别技术
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逐渐江江江江化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值