MySQL 数据库 增删查改、克隆、外键 等操作

v2-938dbacea61895346964343d6a050828_b.jpg

表中添加字段

ALTER TABLE 表名 ADD 字段名 varchar(50) default ‘默认值’;

#default 表示此字段设置默认值;可与 NOT NULL 配合使用,默认值立即生效

例:

ALTER TABLE USER_MESG ADD STATUS VARCHAR(20) DEFAULT ‘在用’;

v2-b717873d7c9ac4aa80f7b89d65f64d16_b.jpg

删除表中字段

ALTER TABLE 表名 DROP 字段名;

修改字段(列)名,添加唯一键约束

ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];

例:

ALTER TABLE USER_MESG CHANGE NAME DEV_NAME VARCHAR(30) UNIQUE KEY;

#验证唯一键约束,添加重名的约束字段

INSERT INTO USER_MESG VALUES (1008,‘牛奶’,‘饮料’,‘2021-06-28’,‘D0001’,‘已过期’);

#触发唯一键约束,新增失败

UNIQUE KEY 唯一键:可以用有空值,不能出现重复值,也不能为 NULL,

v2-6dd13969ef4c1db775da07e0fbea491a_b.jpg

v2-6594f0a1e0f3ef3ccc820f6fb37d0964_b.jpg

查看、删除、添加 表中的索引


#查看表有哪些索引

SHOW INDEXES FROM 表名;

v2-1c6805ed38db83a0c17ae33542ee149d_b.png

单独新增 去除唯一键约束

#给字段 DEV_NAM 增加唯一键约束

ALTER TABLE USER_MESG ADD UNIQUE INDEX (DEV_NAME);

#给字段 DEV_NAM 去除唯一键约束

#查看索引表中,字段 DEV_NAME 对应的 索引名 Key_name,根据索引名删除索引

ALTER TABLE USER_MESG DROP INDEX 索引名;

v2-d5e042390c896a26043a15e6a6c81d3d_b.png

v2-d7cdb9c44a1df92fb256fc8cf820f534_b.jpg

v2-f4db0ae5095884305b772cc1fb8be39f_b.jpg

扩展功能,字段值自增等


use school;

CREATE TABLE IF NOT EXISTS AREA_INFO ( -> AREA_ID int(4) ZEROFILL PRIMARY KEY AUTO_INCREMENT, #指定主键的另一种方式

-> AREA_NAME VARCHAR(20) NOT NULL UNIQUE KEY,

-> IS_USED CHAR(5) NOT NULL);

#---------------命令解释--------------------------------

#if not exists:表示检测要创建的表是否已存在,如果不存在就继续创建

#int(4) zerofill:表示若数值不满4位数,则前面用“0”填充,例0001

#auto_increment:表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;

#自增长字段必须是主键;字段类型必须是 int 类型,如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次

#unique key:表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键

#not null:表示此字段不允许为NULL

v2-07062a0f8a3af81ded9f7e10c9fd9ce8_b.jpg

v2-ac4b37d9049f27231cdf3d46fde6e613_b.jpg

数据表高级操作


克隆表,将数据表的数据记录生成到新的表中


方法一:使用 like

#先克隆表结构

#在插入所有数据

CREATE TABLE AREA_CLONE1 LIKE AREA_INFO; #通过 LIKE 方法,复制 AREA_INFO 表结构生成 AREA_CLONE1 表

INSERT INTO AREA_CLONE1 SELECT * FROM AREA_INFO;

v2-2db3edd4bbbbed8dae51bed4c2dc02d1_b.jpg

如果两张表结构一样,可将一张表的查询结果集返回给 另一张表

INSERT INTO 表1 SELECT * FROM 表2

v2-102dfcb6db6c5f2d6b2bd9c561a2a64e_b.jpg

方法二:直接克隆

#直接将源表的查询结果给创建的新表

CREATE TABLE 克隆表名(SELECT * FROM 源表名);

SHOW CREATE TABLE 克隆表名\G; #获取数据表的表结构、索引等信息

注意:直接克隆无法复制原表的 主键、自动增长、约束、索引等配置。 用 LIKE 可以。

v2-2e09d3ef56c5fbdfd7fdd277c5f83ff3_b.jpg

删除记录后主键记录重头开始自增


DELETE FROM 表名;

#DELETE清空表后,返回的结果内有删除的记录条目;DELETE工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM 删除所有记录后,再次新添加的记录会从原来最大的记录 ID 后面继续自增写入记录。

truncate table 表名;

#TRUNCATE 清空表后,没有返回被删除的条目;TRUNCATE 工作时是将表结构按原样重新建立,因此在速度上 TRUNCATE 会比 DELETE 清空表快;使用 TRUNCATE TABLE 清空表内数据后,ID 会从 1 开始重新记录。

#相当于直接格式化表

创建临时表


临时表是在当前连接中生效的表。

  • 临时表创建成功之后,使用 SHOW TABLES 命令是看不到创建的临时表的;

  • 临时表会在连接退出后被销毁。 如果在退出连接之前,也可以可执行增删改查等操作,比如使用 DROP TABLE 语句手动直接删除临时表。

CREATE TEMPORARY TABLE 表名 (字段1 数据类型,字段2 数据类型[,…][,PRIMARY KEY (主键名)]);

例:

CREATE TEMPORARY TABLE TEM_TABLE (ID int(4) PRIMARY KEY, REMARK VARCHAR(20));

INSERT INTO TEM_TABLE VALUES(1001,‘临时表’);

SELECT * from TEM_TABLE;

v2-47d38f770db93a95c99a7211607918c8_b.jpg

执行 quit 退出连接后,再次登录,就操作不了临时表了

v2-396895b0938bd4559e14fdcb96abaca5_b.png

创建外键约束,保证数据的完整性和一致性


外键的定义:如果同一个属性字段X 在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。

主键表和外键表的理解:

(1)以公共关键字作主键的表为主键表(父表、主表)

(2)以公共关键字作外键的表为外键表(从表、外表)

注意:

  1. 与外键关联的主表的字段必须设置为主键。

  2. 要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。

#创建主表HOBBY

CREATE TABLE HOBBY (HOBID int(4),HOBNAME VARCHAR(50));

#创建从表HOBBY_DETAIL

CREATE TABLE HOBBY_DETAIL (ID int(4) PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10),AGE int(3),HOBID int(4));

#为主表HOBBY 添加一个主键约束。主键名建议以“PK_”开头。

ALTER TABLE HOBBY ADD CONSTRAINT PK_HOBID PRIMARY KEY (HOBID);

#为从表HOBBY_DETAIL 表添加外键,并将 HOBBY_DETAIL 表的 hobid 字段和 HOBBY 表的 hobid 字段建立外键关联。

#外键名建议以“FK_”开头。

ALTER TABLE HOBBY_DETAIL ADD CONSTRAINT FK_HOB FOREIGN KEY (HOBID) REFERENCES HOBBY (HOBID);

DESC HOBBY_DETAIL ;

#插入新的数据记录时,要先主表再从表

INSERT INTO HOBBY VALUES(1,‘Football’);

INSERT INTO HOBBY_DETAIL VALUES(1,‘Messi’,32,1);

v2-ff08ff5be41ccdaea694ed5e37f46505_b.jpg

v2-d9320da46c46b16388e35f906bc12c49_b.jpg

#删数数据记录时,要先从表再主表,也就是说删除主键表时必须先删除其他与之关联的表。

DROP TABLES HOBBY_DETAIL ;

DROP TABLES HOBBY ;

#查看和删除外键约束

SHOW CREATE TABLE HOBBY_DETAIL ;

ALTER TABLES HOBBY_DETAIL DROP foreign key FK_HOB ; #FK_HOB 是之前添加的外键名

ALTER TABLES HOBBY_DETAIL DROP key FK_HOB ;

DESC HOBBY_DETAIL ;

v2-597dfc0ae0ebd039cba0a0c77953d515_b.png

v2-9d9999edfd90e01e0ce3a8167942bf4d_b.jpg

v2-7feb6632f2a3f66d27589a36773b107b_b.jpg

去除外键后就可以删除表了

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

面试了阿里,滴滴,网易,蚂蚁,最终有幸去了网易【面试题分享】

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!
资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

[外链图片转存中…(img-wnLi11io-1712176541911)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!

  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值