首页 > 数据库 >MySQL学习日志五,外键与DML语言

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

时间:2023-05-13 18:55:53浏览次数:34  
标签:COMMENT VARCHAR gradeid DML 外键 KEY MySQL NULL

外键

准备一个表,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 另一个外键的表 (另一个外键表的字段);


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

标签:COMMENT,VARCHAR,gradeid,DML,外键,KEY,MySQL,NULL
From: https://www.cnblogs.com/yzx-sir/p/17397891.html

相关文章

  • Window环境下Java备份和恢复Mysql数据
    ***java执行代码中必须加cmd/cProcessexec=Runtime.getRuntime().exec("cmd/cmysqldump-uroot-p123456xxl_job>e:/home/jobbak.sql");Processexec1=Runtime.getRuntime().exec("pingwww.baidu.com");BufferedReaderbufferedReader=newBuf......
  • Mysql union和union all用法
    我们经常会碰到这样的应用,两个表的数据按照一定的查询条件查询出来以后,需要将结果合并到一起显示出来,这个时候就需要用到union和unionall关键字来实现这样的功能,union和unionall的主要区别是unionall是把结果集直接合并在一起,而union是将unionall后的结果镜像一次distinct,去除......
  • mysql用户表root用户被锁定,无法登陆(Account is locked)
    今天看到mysql的user表就打开了看看,看到root还有些权限是N,然后顺手就改成了Y,结果保存之后就凉凉了,数据库就打不开了,报“Accountislocked”这个错误,上网排查了好半天才解决,解决方法记录一下。解决思路:1、使用skip-grant-tables跳过密码验证,此时可以打开MySQL服务并登录2、......
  • MySql的数据存储之B+树(浅谈)
    一.MySql的实际存储位置B+树是MySql数据结构的主流存储方式,包括InnoDB和MYISAM引擎,它们的默认存储结构都是B+树了解B+树前,我们先要知道MySql的实际存储位置在哪?有人会说它存在我么的D盘或C盘的MySql文件夹的Data目录里,这个回答没错,我们在深入的了解一下呢?不管是在个人电脑上......
  • MySQL多列字段去重的案例实践
    作者:刘晨网名bisal,具有十年以上信息系统建设经验,目前主要从事数据库应用研发能力提升和技术管理方面的工作,OracleACE(Alums),腾讯云TVP,墨天轮MVP,拥有OracleOCM&OCP、EXINDevOpsMaster、SCJP、OBCA、腾讯云CloudLite、PCSD、GDCA等技术认证,国内首批OracleYEP成员,OCMU成......
  • MySQL学习日志四,数据表的类型
    --关于数据库引擎/*INNODB默认使用MYISAM早些年使用*/区别MYISAMINNODB事务支持不支持支持数据行锁定不支持支持外键约束不支持支持全文索引支持不支持表空间大小较小较大,约为MYISAM2倍常规使用操作:MYISAM节约空间,速度较快INNOD......
  • MySql学习日志三,测试小练习
    --跟着遇见狂神说mysql进行小练习--题目--目标:创建一个schoo1数据库--创建学生表(列,字段)使用Sql创建--学号int登入密码varchar(20)姓名,性別varchar(2),出生日期Cdatatime),家庭住址,email自己敲了一遍,成功了CREATETABLEIFNOTEXISTS`student`( `id`I......
  • MySQL-----DCL数据控制语言
    MySQL-----DCL数据控制语言用来管理数据库用户,控制数据库的访问权限用户管理查询用户USEmysql;SELECT*FROMuser;创建用户CREATEUSER'用户名'@'主机名'IDENTIFIEDBY'密码';修改用户密码ALTERUSER'用户名'@'主机名'IDENTIFIEDWITHmysql_native_passwordBY�......
  • MySql学习日志二,数据库的笔记
    数据库的列类型【了解】数值tinyint十分小的数据1个字节smallint较小的数据2个字节mediumint中等大小的数据三个字节int标准的整数4个字节常用intbigint较大的数据8个字节float浮点数4个字节double浮点数8个字节decimal字符......
  • mysql常用函数、查询和事务说明笔记
    1.MySQL中内置了很多字符串函数,常用的几个如下:运用示例:示例表里初始数据:  字段title和titleImageconcat:字符串拼接selectconcat(title,titleImage)asnewtitlefrom testtablewhereid=65;lower:全部转小写select lower(title) asnewtitlefrom testta......