【D1n910】(7/42)学习【MySQL数据库】C++语言程序设计 - MySQL数据库的笔记
正常操作,正常分析,大家好,我是D1N910。
本文是我学习【MySQL数据库】C++语言程序设计 - MySQL数据库所做的文字笔记。
之前提要


外键约束
主要用于定义表与表之间的关系
主表:提供数据的表
从表:使用主表中数据的表
外键字段的值,要么是NULL,要么来自于主表的主键
比如
A表表示所有的班级及班级的名称,是主表,有班号和班级名称;
B表表示所有的学生,是从表,学生有班号,班号必须是来自A表中的数据,或者是为空(用以表示学生还没分配班级)。
举例说明:A表只有班号 1~3,B表中新来个学生,班号是4,那么就是错了,因为4号在A表中不存在。这就是所谓的外键约束。B表的班号被A表的班号约束了。
语法规则
示例
将学生表student的class _no设置为外键,引用classes表中的class _no字段,可以在创建student表时添加如下SQL语句:
》 现在先是一个错误的用法,不添加主键的
这时候报送没有index错误,实际上就是要加主键
下面是正确的,添加了主键的
这里限制的是
外键字段的值,要么是NULL,要么来自于主表的主键
在刚刚创建好的表后插入一串数据,其中 c_no 的值对应 1
这时候报错了
-- 错误 违反了外键约束 在主表 classes 中不存在 class_no = 1 的班级
加了以后就可以了。
可以输入null!
删表时,需要先删除子表,然后删除主表!直接删除主表会报错!
P7 1.4 表结构管理(二)~2
自增长字段
如果要求数据库表的某个字段依次递增,且不重复,则可以将该字段设置为自增型字段。
语法:
》字段名 数据类型 auto_increment
示例
》将班级表classes的class_no字段设置为主键,并且设置为自增型字段,SQL语句如下class_no int auto_increment primary key
自增型字段的数据类型必须是整数。
》向自增型字段插入一个NULL值 (推荐)或0时,该字段值会自动设置为比上一次插入值更大的值。如果新增加的记录时表中的第一条记录,则该值为1。
自增型字段必须是主键
比如QQ号,每次注册一个新的QQ时,对应的QQ号段会++,然后不会重复。
当然可以自行定义一个数字
复制表结构
在create table语句的末尾添加like子句
》语法
-- create table 表名 like 源表
示例
-- 将student表的表结构复制成新表stu1,可以使用下面的create table语句:
在create table语句的末尾添加select语句
》语法
create table 表名 select *from 源表
示例
- 将stu1表的表结构及其所有记录复制成新表stu2,可以使用下面的create table语句
- create table stu2 select * from stul;
只有非空复制才能复制,其他的限制不能够复制

基础现在学完了,开始做个课程!
学习进度
(7/42)学习【MySQL数据库】C++语言程序设计 - MySQL数据库的笔记