mysql SQL建表,新增、变更字段,存储过程,设置注释等

1、通过判断更新

-- 如果 Target_Count + 10 < 0 则 更新Target_Count 成0, 否则 更新成 Target_Count + 10
UPDATE fnd_logical_group SET Target_Count = IF(Target_Count + 10 < 0, 0, Target_Count + 10) WHERE Target_Count + 10 < 100 

2、初始化自动增长起始值

alter table table_name AUTO_INCREMENT = 1

3、创建外键表的存储过程,用于新增数据

公司 表
id  name

部门 表
id  name  CompanyId

其中CompanyId是外键,映射公司表的id

-- 创建各个公司的未知部门 存储过程
DROP PROCEDURE IF EXISTS INSERT_INTO_TB_Department;
CREATE PROCEDURE INSERT_INTO_TB_Department()
BEGIN
	declare done INT DEFAULT false;/*用于判断是否结束循环*/
	declare companyId BIGINT;/*公司id,游标分量*/
	declare companyName VARCHAR(50);/*公司NAME,游标分量*/
	declare departmentId INT;/*部门id*/

	DECLARE companys CURSOR FOR SELECT c.id, c.name FROM tb_Company c;/*定义游标.查询公司id,name列表*/
	DECLARE CONTINUE handler FOR NOT FOUND SET done = true;/*循环结束标志*/
	OPEN companys;/*打开游标*/
	
	SET departmentId = 1;/*初始化部门id, 新增的第一个id,后续递增*/

	REPEAT
		FETCH companys INTO companyId, companyName;/*取游标分量*/
		IF NOT done THEN/*存在分量。则*/
			INSERT INTO `TB_Department` (`Id`, `Name`, `CompanyId`) 
			VALUES (departmentId, '未知部门', companyId);
            SET departmentId = departmentId + 1;/*部门id加1*/
		END IF;
		until done END REPEAT;/*取完所有分量,结束循环*/
	CLOSE companys;/*关闭游标*/
END;

CALL INSERT_INTO_TB_Department(); 			/*调用存储过程*/
DROP PROCEDURE INSERT_INTO_TB_Department;  /*删除临时存储过程*/

4、创建表

-- 创建表
-- unsigned auto_increment  自增
-- primary key 定义主键
-- comment 注释
create table user(
	id int unsigned auto_increment comment 'id',
	name char(25) comment '姓名',
	number char(25) comment '编号',
	remark char(25) comment '备注',
	primary key(id)
) engine=innodb default charset=UTF8MB4 comment '用户';

5、新增主键,删除主键

-- 删除主键
ALTER TABLE tan_db DROP PRIMARY KEY;

-- 新增主键
ALTER TABLE tan_db ADD CONSTRAINT person_PK PRIMARY KEY (id);

6、设置字段(非主键)

-- --------------
-- 设置字段(非主键)
-- --------------
-- 非主键字段一般是6个属性:
-- 1、字段数据类型 COLUMN name char(25) 跟在字段名称之后
-- 2、字符集:CHARACTER SET utf8mb4   (不设置默认用表格的配置)
-- 3、排序规则:COLLATE utf8mb4_0900_ai_ci(不设置默认用表格的配置)
-- 4、默认值:DEFAULT "" 或者 没有
-- 5、是否为空:NOT NULL 或者 NULL (4、6组合出现, 要么为空 要么 默认值 + 不为空)
-- 6、字段注释:COMMENT '姓名'
-- --------------
-- 示例如下:
-- --------------
-- 字段类型 + 字符集 + 排序规则 + 默认值 + 不为空 + 注释
ALTER TABLE user MODIFY COLUMN name char(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '' NOT NULL COMMENT '姓名';
-- 字段类型 + 为空 + 注释
ALTER TABLE user MODIFY COLUMN name char(25) NULL COMMENT '姓名';
-- 字段类型 + 默认值 + 不为空 + 注释
ALTER TABLE user MODIFY COLUMN name char(25) DEFAULT "" NOT NULL COMMENT '姓名';
-- 字段类型 + 默认值 + 不为空 + 注释
ALTER TABLE user MODIFY COLUMN name int DEFAULT 0 NOT NULL COMMENT '姓名';

7、设置字段(主键)

-- --------------
-- 设置字段(主键)
-- --------------
-- 自增 auto_increment
-- 字段类型 + 自增 + 不为空 + 注释
ALTER TABLE user MODIFY COLUMN id int(11) auto_increment NOT NULL COMMENT 'id';

未完待续...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

cy谭

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

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

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

打赏作者

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

抵扣说明:

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

余额充值