mysql学习04( DML )
-
MYSQL的数据管理:目录
-
外键(了解即可)
-
DML:数据库管理语言(必会)
-
添加:insert
-
修改
-
删除
-
-
外键:
-
方式1:在创建表的时候,增加约束(麻烦,比较复杂)
CREATE TABLE IF NOT EXISTS `student` (
`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 '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(50) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
`gradeId` INT(10) NOT NULL COMMENT '年级ID',
PRIMARY KEY (id),
KEY `FK_gradeId`(`gradeId`),
CONSTRAINT `FK_gradeId` FOREIGN KEY (`gradeId`) REFERENCES `grade`(`gradeId`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
CREATE TABLE `grade` (
`gradeId` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级ID',
`gradeName` VARCHAR(50) NOT NULL COMMENT '年级名称',
PRIMARY KEY(`gradeId`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
--删除有外键关系表的时候,必须要删除引用别人的表(从表),再删除被引用的表(主表); -
方式2:创建表成功后,添加外键约束
-- 创建表的时候,没有外键关系
ALTER TABLE `student` ADD CONSTRAINT `FK_greadeid`
FOREIGN KEY (`gradeId`) REFERENCES `grade`(`gradeId`)
-- alter table 表 add CONSTAINT 约束名 FOREIGN KEY(作为外键的列) REFERENCES 哪个表(哪个字段)
-
以上的操作都是物理外键,都是数据库级别的,不建议使用;(避免数据库过多,造成困扰)
-
最佳:
-
数据库就是单纯的表,只用来存数据,只有行(列);
-
如果我们想使用多张表,想使用外键(使用程序去实现);
-
阿里巴巴开发规范:明确说明不得使用外键;
-
-
-
DML语言:数据库管理语言
-
数据库的意义:数据存储,数据管理;
-
DML:insert , update ,delete (增,删,改,查)
-
添加:插入语句:
-
insert ;
-
字段和字段之间使用英文隔开;
-
字段是可以省略的,但是后面的值,必须一一对应,不能少;
-
可以同时插入多条数据:后面的值需要使用逗号隔开;
-- 插入语句:insert
INSERT INTO 表名([字段1,字段2]) VALUES('值1'),('值2');
INSERT INTO `grade` (`gradeName`) VALUES ('大四');
--一般写插入语句,我们一定要数据和字段一一对应!
-- 一次插入多条记录
INSERT INTO `grade` (`gradeName`) VALUES ('大三'),('大二');
-
-
更新语句:
-
update ;
-
条件:where子句;
//语法
update 表名 set column=新值1,column=新值2 where 条件;
-- 修改学员名字
UPDATE `student` SET `name` ='张三' WHERE id=1;
-- 不指定条件的情况下,会改动所有记录;
UPDATE `student` SET `name` ='张三' WHERE id=1;
--修改多个属性
UPDATE `student` SET `name`='zs' ,`email`='2223@qq.com' ;
-
-
删除语句:
-
delete
--语法:
delete from 表名 where 条件;
-
truncate命令:
--清空一个数据库表,表的结构,索引,约束不会变;
TRUNCATE `student` ; -
delete 和 truncate的区别:
--相同点:
1,都能删除数据,都不会删除表结构;
--不同点:
1,truncate 重新设置自增列,自增会归零;不会影响事务;
2,delete 不会影响自增;
--了解即可:delete删除的问题,重启数据库,现象:
1,InnoDB:自增列会从1开始(存在内存中,断电即失)
2,MyISAM:继续从上一个自增量开始(存在文件中,不会丢失)
-
-
分类:
03-mysql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!