Mysql基础3-表级增删改操作

在人生的道路上,不管是潇洒走一回,或者是千山独行,皆须是自己想走的路,虽然,有的人并不是很快就能找到自己的方向和道路,不过,只要坚持到底,我相信,就一定可以找到自己的路,只要找到路,就不必怕路途遥远了。

导读:本篇文章讲解 Mysql基础3-表级增删改操作,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

2.5 修改删除表

2.5.1 修改
-- 修改表名alter TABLE TABLENAME_old RENAME as TABLENAME_new
alter TABLE teacher RENAME as teachers
-- 增加表字段alter TABLE TABLENAME ADD 字段名 列类型
alter TABLE teachers ADD sex CHAR(2)
-- 修改表字段 (重命名、修改约束)
-- ALTER TABLE TABLENAME MODIFY 字段名 列类型[]
ALTER TABLE teachers MODIFY sex VARCHAR(2) -- 修改列类型
-- ALTER TABLE TABLENAME CHANGE 字段名_旧 字段名_新 列类型[]
ALTER TABLE teachers CHANGE sex  sexs VARCHAR(10) -- 修改列类型

-- 删除表字段ALTER TABLE TABLENAME DROP 字段名
ALTER TABLE teachers DROP sexs
  • 用change可以修改字段类型和约束,要加上新字段名,新字段名可以和原来一样,modify只能修改字段类型
2.5.2 删除
-- 删除表(若存在则删除)不加可能会报错
DROP TABLE if EXISTS teachers
  • 所有的创建和删除操作尽量加上判断,以免报错
  • 字段名,使用飘包裹
  • sql关键字大小写不敏感,建议小写
  • 所有符号用英文

3. mysql数据管理

3.1 外键

  • 创建表的时候,增加外键约束,进行物理上的关联,数据库级别的外键不建议使用。表操作时(删除、更新)存在干扰。
-- 定义外键key
-- 给这个外键添加约束CONSTRAINT(执行引用) REFERENCES
CREATE TABLE `student` (
  `id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT COMMENT '学员ID',
  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '姓名',
  `age` int(3) unsigned DEFAULT NULL COMMENT '年龄',
  `user` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `addr` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '地址',
	`gardeid` int(11) NOT NULL COMMENT '年级外键',
	PRIMARY KEY (`id`),
	key `FK_gardeid`(`id`), --本表那个列是外键
	CONSTRAINT `FK_gardeid` FOREIGN key(`id`) REFERENCES `grade` (`id`) 
	--                      对本表的列加外键约束
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci AVG_ROW_LENGTH=3 KEY_BLOCK_SIZE=4

CREATE TABLE `grade` (
  `id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '名称',
	PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
  • 存在外键的表,先删除具有外键的表,在删除外键指向的表
  • 创建表的时候,不加外键约束,创建完之后在添加
ALTER TABLE `student` ADD CONSTRAINT `FK_gardeid` FOREIGN key(`gardeid`) REFERENCES `grade` (`gid`);
-- ALTER TABLE TABLENAME ADD CONSTRAINT `外键名` FOREIGN key(`本表外键列`) REFERENCES `从表表名` (`从表外键列`);

3.2 DML语言

  • 数据库意义:数据存储、数据管理

3.3 添加

insert INTO `TABLENAME`([字段1,字段2]) VALUES (值1,值2)
  • 不写表字段,值会从第一列开始一一匹配,即使是id字段也会匹配,所以字段全不写值中要加ID值
  • 一般写 添加语句,要将数据和字段匹配
-- 插入多行的值
insert INTO `grade`(`name`) VALUES ('初一'),('初二'),('初三');
insert INTO `student`(`name`,	`gardeid`) VALUES ('王一',1),('王二',2),('王三',3);
  • 字段之间用英文逗号隔开
  • 字段可以省略,但要将数据值和字段匹配
  • 可以同时插入多条数据,value后面多个小括号用英文逗号隔开

3.4 修改

  • 修改数据一定要保证走索引,否则事务未提交的话会是表级锁
-- UPDATE `TABLENAME` set `COLUMN`='value' WHERE 条件;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ucI3vmuF-1651401070755)(E:\zkNote\typora-user-images\image-20220423185339670.png)]

  • BETWEEN 条件 and 条件 //闭合区间
  • 修改的数据库列尽量带上飘`
  • value可以是函数或变量
UPDATE `student` set `user`=SYSDATE() ;
UPDATE `student` set `user`=CURRENT_DATE

3.5 删除

  • delete:此命令是条件删除
-- DELETE FROM `TABLENAME` WHERE 条件
  • TRUNCATE:此命令完全清空数据表,表结构和索引不会变
TRUNCATE `TABLENAME`
  • 区别

  • 相同点:都能删除数据,不会删除表结构

  • delete是dml语言,truncate是ddl语言(共性)truncate 清空表不能写条件

  • truncate是删除原表,并重新建立一张同样的无数据的新表,delete是逐条删除原表中的数据

  • truncate重新设置自增列,计数归0

  • truncate不会影响事物

  • delete删除问题,重启mysql服务,现象 存在在5.7 之前

  • innoDB:自增列会从1开始(存在内存中,断电即失)

  • MyISAM 继续从上个增量开始(存在文件中,不会丢失)

mysql表级查询操作见本专栏下篇

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123966.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!