网站链接: element-ui dtcms
当前位置: 首页 > 技术博文  > 技术博文

MySQL(增、删、改)

2021/4/4 14:47:56 人评论

文章目录1. MySQL数据管理1.1 外键(了解)1.2 DML语言(数据操作语言)1.2.1 添加数据(INSERT)1.2.2 修改数据(UPDATE)1.2.3 删除数据(DELETE)1. MySQL数据管理 1.1 外键(了解) 方式1:创建表时增加约束 CREATE TABLE IF NOT EXISTS grade (gradeid INT(4) NOT NULL …

文章目录

  • 1. MySQL数据管理
    • 1.1 外键(了解)
    • 1.2 DML语言(数据操作语言)
      • 1.2.1 添加数据(INSERT)
      • 1.2.2 修改数据(UPDATE)
      • 1.2.3 删除数据(DELETE)


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 会重置所有设置,自增列、计数器等会归零 ;且不会影响事务

相关资讯

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?