MySQL(增、删、改)


1. MySQL数据管理

1.1 外键(了解)

方式1:创建表时增加约束

CREATE TABLE IF NOT EXISTS `grade` (
	`gradeid` INT(4) NOT NULL AUTO_INCREMENT COMMENT '年级id',
	`gradename` VARCHAR(30) NOT NULL COMMENT '年级名称',
	PRIMARY KEY (`gradeid`) 
)ENGINE=INNODB DEFAULT CHARSET=utf8 

CREATE TABLE IF NOT EXISTS `students` (
	`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
	`gradeid` int(4) not null comment '学生年级',
	PRIMARY KEY (`id`),
	-- 学生表的gradeid字段引用年级表的
	key `FK_gradeid` (`gradeid`),--  定义外键key
	constraint `FK_gradeid` foreign key (`gradeid`) references `grade`(`gradeid`)
	-- 给外键添加约束(执行引用)
)ENGINE=INNODB DEFAULT CHARSET=utf8 

在这里插入图片描述
删除有外键的表时,要先删除引用别人的表(从表)

方式2 先创建表后,在添加外键

CREATE TABLE IF NOT EXISTS `grade` (
	`gradeid` INT(4) NOT NULL AUTO_INCREMENT COMMENT '年级id',
	`gradename` VARCHAR(30) NOT NULL COMMENT '年级名称',
	PRIMARY KEY (`gradeid`) 
)ENGINE=INNODB DEFAULT CHARSET=utf8 

CREATE TABLE IF NOT EXISTS `students` (
	`id` INT(4) NOT NULL COMMENT '学号',
	`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
	`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
	`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
	`gradeid` INT(4) NOT NULL COMMENT '学生年级',
	PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8 

-- 创建表时没有外键
ALTER TABLE `students`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);

以上都是数据库级别外键(物理外键),不建议使用,避免数据库过多出现问题,一般用程序实现外键(在应用层实现),以此来使用多张表的数据。

1.2 DML语言(数据操作语言)

1.2.1 添加数据(INSERT)

-- INSERT INTO `表名`([`字段1`,`字段2`,`字段3`]) VALUES('值1','值2','值3'),(下一行);
-- 字段和值一一对应,注意格式
INSERT INTO `grade`(`gradename`) VALUES('大二');
INSERT INTO `grade`(`gradename`) VALUES('大四'),('大三'); 				-- 主键为自增。可同时添加多行数据
INSERT INTO `students`(`id`,`name`,`gradeid`) VALUES('1','kk','2'); 	-- 添加同一行的列数据
INSERT INTO `students` VALUES('2','kk','123','男','2');					-- 字段可以省略,但值要一一对应

1.2.2 修改数据(UPDATE)

-- UPDATE `表名` SET `字段`=val,`字段1`=value... [WHERE _字段=_val(条件)]; 
-- 将字段名为_val的  `字段`值改为val。不加WHERE条件则会全部修改
UPDATE `students` SET `sex`='女' WHERE `id`=1;
UPDATE `students` SET `pwd`='qdfr',`gradeid`=1 WHERE `id`=1;
UPDATE `students` SET `pwd`='qdfr',`gradeid`=1 WHERE `id` BETWEEN 2 AND 3;-- [2,3] 闭合区间
UPDATE `students` SET `sex`='女' WHERE `id`=1 AND `name`='kk';
update `students` set `pwd`='qdfr',`gradeid`=1 WHERE id=1 AND `gradeid` between 1 and 2;-- 多个条件

UPDATE `students` SET `datetime`=CURRENT_TIME WHERE `id`=1 AND `name`='kk'; -- 可使用内置变量(时间)修改值

条件:where子句(操作符),可使用多个判断语句定位数据

操作符作用
= 、<>或!=、>等比较运算符满足条件会返回布尔值并执行前面的修改语句
字段 BETWEEN from AND to在[from,to]闭区间内的值会执行修改语句
AND类似于&&运算符
OR类似于‘或’运算符

1.2.3 删除数据(DELETE)

-- DELETE FROM `表名` [WHERE语句]。不加where语句会全部删除
DELETE FROM `students` WHERE `id`=1;

清空数据库表(TRUNCATE)

-- 清空表,但表的结构和索引约束不会变
TRUNCATE `表名`;
  • 相同点:都能删除数据,且不会改变表的结构
  • 不同点:TRUNCATE 会重置所有设置,自增列、计数器等会归零 ;且不会影响事务
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值