MySQL学习日志五,外键与DML语言

外键

准备一个表,gradeid作为外键

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

创建生成的表




方法一:在创建表的时候,增加约束

第一步,学生表的gradeid字段,要引用年级表的gradeid
第二步,定义外键key
第三步,给这个外键添加约束(执行引用) references 引用

CREATE TABLE IF NOT EXISTS `student`
(
`id`INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`pwd` VARCHAR(30) NOT NULL DEFAULT '***' COMMENT'密码',
`name` VARCHAR(30) NOT NULL  DEFAULT '张三' COMMENT '姓名',
`sex` VARCHAR(50) NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` VARCHAR (20) NOT NULL COMMENT '生日',
`address` VARCHAR(30) NOT NULL COMMENT'住址',
`emill` VARCHAR (30) NOT NULL COMMENT'邮箱',
`gradeid` INT(4) NOT NULL COMMENT '学生的年级',
PRIMARY KEY(`id`),
KEY `FK_gradeid`(`gradeid`) , -- 定义外键
CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`) -- 添加约束和引用
)ENGINE=INNODB DEFAULT CHARSET=utf8



方法二,创建表成功后添加

-- 创建表的时候没有外键关系

ALTER TABLE student
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);
  • ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY(作为外键的列) REFERENCES 另一个外键的表 (另一个外键表的字段);


    狂神说:最佳实践
  • 数据库就是单纯的表,只能用来存数据,只有行(数据)和列(字段)
  • 我们想要使用多张表的数据,想要使用外键(程序去实现)

DML语言

数据库意义:数据存储,数据管理

  • DML语言:数据操作语言
    • insert
    • update
    • delete

添加 insert

  • 语法
insert into 表名([字段名1],[字段名2],[字段名3]...)values('值1'),('值2'),('值3')...

PS.
1.字段和字段之间使用英文逗号隔开
2.字段是可以省略的,但是后面的值必须一一对应
3.可以同时插入多条数据,VALUES/后面的值,需要使用,隔开即可

修改 update

  • 语法
update 修改谁(条件) set 原来的数值=新数值

例子:

带了条件

UPDATE 表名 SET 列名 ='新的值' WHERE 条件约束;

不带条件会修改全部的数值

UPDATE 表名 SET 列名='新的值' ;

多个属性用逗号隔开

UPDATE 表名 SET 列名1 ='新的值',`列名2`='新的值' WHERE 条件约束;

PS.条件约束使用AND连接

条件操作符 含义
= 等于
<> 或者 != 不等于
> , <,<=,>= 大于,小于,小于等于,大于等于
BETWEEN...AND 闭合区间
AND,OR 和,或

删除 delete

delete from 表名 where 条件

还有一个清除

  • TRUNCATE命令:删除一个数据库表,表的结构和索引不变


delete truncate
相同 删数据库,不会删除表结构 删数据库,不会删除表结构
不同 不会影事务 重新设置自增列,计数器归零

delete 问题,重启数据库现象

  • innoDB 自增列会重开始(存在内存当中的,断电即失)

  • MySAM 继续从上一个自增量开始(存在文件中的不会丢失)

posted @ 2023-05-13 18:47  YE-  阅读(12)  评论(0编辑  收藏  举报