mysql整数约束_MySql基本数据类型及约束

1. 常用的数据类型(data_type)

字符串类型

CHAR(n) :固定长度

VARCHAR(n) :可变长度

NCHAR(n):使用utf8存储,固定长度

NVARCHAR(n) :使用utf8存储,可变长度

BLOB:(2^16 - 1)字节

LONGBOLB:(2^32 - 1)字节

ENUM('value1','value2',...):枚举,填入的值必须是枚举列表中的某一个

数字类型

INT, INTEGER (n) :标准整型

DOUBLE(m,n) :标准双精度浮点型, m为总长度,n为小数精确位数(0<= n <=6)

BOOL, BOOLEAN:值为零则视为false,非零视为true

日期和时间类型

DATE:以'YYYY-MM-DD'形式现实

DATETIME(fsp) :以'YYYY-MM-DD HH:MM:SS[.fsp]'格式显示, (0 <= fsp <= 6)

TIME(fsp) :以'HH:MM:SS[.fsp]'格式显示

YEAR:以'YYYY'格式显示

JSONS数据类型(从MySql5.7.8开始支持)

JSON

JSON数据类型的优势:

自动验证存储在JSON列中的JSON文档 。无效的文档会产生错误。

优化的存储格式。存储在JSON列中的JSON文档将 转换为内部格式,以允许快速读取文档元素。当服务器稍后必须读取以此二进制格式存储的JSON值时,不需要从文本表示中解析该值。二进制格式的结构使服务器能够直接通过键或数组索引查找子对象或嵌套值,而无需在文档中读取它们之前或之后的所有值。

2. MySql表级约束和列级约束

表级约束

PRIMARY KEY

UNIQUE

CHECK(exp)

FOREIGN KEY (column-name, ......) REFERENCES foreign-table (column-name, ......) ON [DELETE | UPDATE] [SET NULL | RESTRICT | CASCADE | NO ACTION | SET DEFAULT]

列级约束

PRIMARY KEY, AUTO_INCREMENT

NOT NULL

UNIQUE

CHECK(exp)

DEFAULT

REFERENCES foreign-table (column-name, ......) ON [DELETE | UPDATE] [SET NULL | RESTRICT | CASCADE | NO ACTION | SET DEFAULT]

注意: 整数或浮点列可以具有附加属性AUTO_INCREMENT。通常该值为 value+1 ,这里 value 是目前在表中的列的最大值。如果插入NULL时自动为该列设至此值。

3. Example

CREATE TABLE T_DEPT

(

DEPTNO INTEGER(2) PRIMARY KEY,

DNAMEVARCHAR(15),

LOCVARCHAR(15)

) DEFAULT CHARACTER SET utf8;

INSERT INTO T_DEPT VALUES(10, 'ACCOUNTING', 'NEW YORK');

INSERT INTO T_DEPT VALUES(20, 'RESEARCH', 'DALLAS');

INSERT INTO T_DEPT VALUES(30, 'SALES', 'CHICAGO');

INSERT INTO T_DEPT VALUES(40, 'OPERATIONS', 'BOSTON');

CREATE TABLE T_EMP

(

EMPNOINTEGER(4)PRIMARY KEY,

ENAMEVARCHAR(15),

JOBVARCHAR(9),

MGRINTEGER(4),

HIREDATEDATE,

SALDOUBLE(7,2),

COMMDOUBLE(7,2),

DEPTNOINTEGER(2)REFERENCES T_DEPT(DEPTNO) ON UPDATE CASCADE

) DEFAULT CHARACTER SET utf8;

INSERT INTO T_EMP VALUES(7369, 'SMITH', 'CLERK', 7902, CURRENT_DATE, 800, NULL, 20);

INSERT INTO T_EMP VALUES(7499, 'ALLEN', 'SALESMAN', 7698, CURRENT_DATE, 1600, 300, 30);

INSERT INTO T_EMP VALUES(7521, 'WARD', 'SALESMAN', 7698, CURRENT_DATE, 1250, 500, 30);

INSERT INTO T_EMP VALUES(7566, 'JONES', 'MANAGER', 7839, CURRENT_DATE, 2975, NULL, 20);

INSERT INTO T_EMP VALUES(7654, 'MARTIN', 'SALESMAN', 7698, CURRENT_DATE, 1250, 1400, 30);

INSERT INTO T_EMP VALUES(7698, 'BLAKE', 'MANAGER', 7839, CURRENT_DATE, 2850, NULL, 30);

INSERT INTO T_EMP VALUES(7782, 'CLARK', 'MANAGER', 7839, CURRENT_DATE, 2450, NULL, 10);

INSERT INTO T_EMP VALUES(7788, 'SCOTT', 'ANALYST', 7566, CURRENT_DATE, 3000, NULL, 20);

INSERT INTO T_EMP VALUES(7839, 'KING', 'PRESIDENT',NULL, CURRENT_DATE, 5000, NULL, 10);

INSERT INTO T_EMP VALUES(7844, 'TURNER', 'SALESMAN', 7698, CURRENT_DATE, 1500, 0, 30);

INSERT INTO T_EMP VALUES(7876, 'ADAMS', 'CLERK', 7788, CURRENT_DATE, 1100, NULL, 20);

INSERT INTO T_EMP VALUES(7900, 'JAMES', 'CLERK', 7698, CURRENT_DATE, 950, NULL, 30);

INSERT INTO T_EMP VALUES(7902, 'FORD', 'ANALYST', 7566, CURRENT_DATE, 3000, NULL, 20);

INSERT INTO T_EMP VALUES(7934, 'MILLER', 'CLERK', 7782, CURRENT_DATE, 1300, NULL, 10);

CREATE TABLE T_SALGRADE

(

GRADEINTEGERPRIMARY KEY AUTO_INCREMENT,

LOSALINTEGER,

HISALINTEGER

) DEFAULT CHARACTER SET utf8;

INSERT INTO T_SALGRADE VALUES(1, 700, 1200);

INSERT INTO T_SALGRADE VALUES(2, 1201, 1400);

INSERT INTO T_SALGRADE VALUES(3, 1401, 2000);

INSERT INTO T_SALGRADE VALUES(4, 2001, 3000);

INSERT INTO T_SALGRADE VALUES(5, 3001, 9999);

CREATE TABLE T_JSON

(

JOSN_TEXT JSON DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO T_JSON VALUES \

(

'{"type": \

[{"lavel": 1, "price": 500.12}, \

{"lavel": 2, "price": 800.78}], \

"width": 50, "height": 100}'\

);

--搜索JSON值

mysql> SELECT JSON_EXTRACT(JOSN_TEXT, '$.width') from T_JSON;

+------------------------------------+

| JSON_EXTRACT(JOSN_TEXT, '$.width') |

+------------------------------------+

| 50 |

+------------------------------------+

mysql> SELECT JSON_EXTRACT(JOSN_TEXT, '$.type[1].lavel') from T_JSON;

+--------------------------------------------+

| JSON_EXTRACT(JOSN_TEXT, '$.type[1].lavel') |

+--------------------------------------------+

| 2 |

+--------------------------------------------+

使用优化算法,以优化VMD算法的惩罚因子惩罚因子 (α) 和分解层数 (K)。 1、将量子粒子群优化(QPSO)算法与变分模态分解(VMD)算法结合 VMD算法背景: VMD算法是一种自适应信号分解算法,主要用于分解信号为不同频率带宽的模态。 VMD的关键参数包括: 惩罚因子 α:控制带宽的限制。 分解层数 K:决定分解出的模态数。 QPSO算法背景: 量子粒子群优化(QPSO)是一种基于粒子群优化(PSO)的一种改进算法,通过量子行为模型增强全局搜索能力。 QPSO通过粒子的量子行为使其在搜索空间中不受位置限制,从而提高算法的收敛速度与全局优化能力。 任务: 使用QPSO优化VMD中的惩罚因子 α 和分解层数 K,以获得信号分解的最佳效果。 计划: 定义适应度函数:适应度函数根据VMD分解的效果来定义,通常使用重构信号的误差(例如均方误差、交叉熵等)来衡量分解的质量。 初始化QPSO粒子:定义粒子的位置和速度,表示 α 和 K 两个参数。初始化时需要在一个合理的范围内为每个粒子分配初始位置。 执行VMD分解:对每一组 α 和 K 参数,运行VMD算法分解信号。 更新QPSO粒子:使用QPSO算法更新粒子的状态,根据适应度函数调整粒子的搜索方向和位置。 迭代求解:重复QPSO的粒子更新步骤,直到满足终止条件(如适应度函数达到设定阈值,或最大迭代次数)。 输出优化结果:最终,QPSO算法会返回一个优化的 α 和 K,从而使VMD分解效果最佳。 2、将极光粒子(PLO)算法与变分模态分解(VMD)算法结合 PLO的优点与适用性 强大的全局搜索能力:PLO通过模拟极光粒子的运动,能够更高效地探索复杂的多峰优化问题,避免陷入局部最优。 鲁棒性强:PLO在面对高维、多模态问题时有较好的适应性,因此适合海上风电时间序列这种非线性、多噪声的数据。 应用场景:PLO适合用于优化VMD参数(α 和 K),并将其用于风电时间序列的预测任务。 进一步优化的建议 a. 实现更细致的PLO更新策略,优化极光粒子的运动模型。 b. 将PLO优化后的VMD应用于真实的海上风电数据,结合LSTM或XGBoost等模型进行风电功率预测。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值