2、创建一个stu表,字段有:自增主键id,不为空姓名,默认值性别(枚举类型),无限制身高
create table stu(
id int primary key auto_increment,
name char not null,
gender enum('男','女') default '男',
height float
);
3、为stu表依次插入以下三条数据

​ i)插入一条包含id,name,gender,height四个信息的数据

insert into stu values('0','nick','男','176')

​ ii)插入一条name,gender,height三个信息的数据

insert into stu(name,gender,height) values('nick','男','176')

​ iii)插入一条只有name信息的数据

insert into stu(name) values('nick')
4、创建一张有姓名、年龄的teacher表,在最后添加工资字段,在姓名后添加id主键字段
create table teacher(
name char not null,
id int primary key auto_increment,
age int,
salary float
);
5、思考:将4中id字段移到到表的最前方,形成最终字段顺序为id、姓名、年龄、工资
alter table 表名
change name name char not null default 0 alter id;
6、完成 学生表 与 国家表 的 多对一 表关系的创建,并完成数据测试
create table country(
id int primary key auto_increment,
countryname varchar(64) not null,
);
create table stu(
id int primary key auto_increment,
name char not null,
gender enum('男','女') default '男',
height float
stu_id int, # 一对多的外键不能设置唯一
foreign key(stu_id) references country(id)
on update cascade
on delete cascade,
);
# 增:先增加被关联表(country)的数据,再增加关联表(stu)的数据
mysql>: insert into country(name) values('中国'),('美国'),('德国');
mysql>: insert into stu(name, height, stu_id) values
('西游哥', 172.0, 1),
('东游哥', 186.1, 1),
('python小弟', 194.9, 2),
('轮回大哥', 166.4, 3);
# 更新:直接更新被关联表的(country) 主键,关联表(stu) 外键 会级联更新
mysql>: update country set id=10 where id=1;
# 更新:直接更新关联表的(stu) 外键,修改的值对应被关联表(country) 主键 如果存在,可以更新成功,反之失败
mysql>: update stu set stu_id=2 where id=3; # 成功
mysql>: update stu set stu_id=1 where id=4; # 失败
# 删被关联表,关联表会被级联删除
mysql>: delete from country where id = 2;
# 删关联表,被关联表不会发生变化
mysql>: delete from stu where stu_id = 3;
7、完成 学生表 与 课程表 的 多对多 表关系的创建,并完成数据测试
create table course(
id int primary key auto_increment,
name char not null,
course_time int unsigned default 0 # 课时
);
create table stu(
id int primary key auto_increment,
name char not null,
age int unsigned default 0
);
# 作者与出版社关系表:id, author_id, publish_id
create table stu_course(
id int primary key auto_increment,
# 关系表一定有多个外键,关联着多张表
stu_id int,
foreign key(stu_id) references stu(id)
on update cascade
on delete cascade,
course_id int,
foreign key(course_id) references course(id)
on update cascade
on delete cascade,
# 建立两个字段的联合唯一
unique(stu_id, course_id)
);
# 注:关系表 关联着 stu 和 course 两张表,在表结构上 stu 与 course 两表键没有任何关系
# 增:两张被关联表,没有前后关系,但关系表必须在两个表都提供数据后才能进行 关系匹配
mysql>: insert into course(name, course_time) values('python', 67),('java', 76),('go',3);
mysql>: insert into stu(name, age) values('nick', 20),('tank', 19);
# 操作关系表:
mysql>: insert into stu_course(stu_id, course_id) values(1,1),(1,2),(2,1),(2,2),(3,1);
# 关系表操作:增、删、改,只要两张被关系表有提供对应的操作数据,都可以操作成功,且对两张被关系表没有影响
# 操作两张被关系表:
# 增:不会影响关系表
mysql>: insert into course(name, course_time) values('PHP', 60);
# 改:关系表都会级联更新
mysql>: update course set id=10 where id=1;
# 删:关系表都会级联删除
mysql>: delete from stu where name='tank';
8、完成 学生表 与 学生简介表 的 一对一 表关系的创建,并完成数据测试
create table stu_detail(
id int primary key auto_increment,
info varchar(256),
info_address varchar(256)
);
create table stu(
id int primary key auto_increment,
name varchar(64) not null,
mobile char(11) unique not null,
sex enum('男', '女') default '男',
age int default 0,
detail_id int unique not null,
foreign key(detail_id) references stu_detail(id)
on update cascade
on delete cascade,
);
# 必须先创建被关联表数据,有关联表外键关联的记录后,关联表才可以创建数据
mysql>: insert into stu_detail(info,info_address) values('Tom_info','Tom_address');
mysql>: insert into author(name,mobile,detail_id) values('Tom','13344556677', 1);
mysql>: insert into author_detail(info,info_address) values('Bob_info','Bob_address');
mysql>: insert into author(name,mobile,detail_id) values('Bob','15666882233', 2);
# 修改关联表 author
mysql>: update stu set detail_id=3 where detail_id=2; # 失败,3详情不存在
mysql>: update stu set detail_id=1 where detail_id=2; # 失败,1详情已被关联
mysql>: insert into stu_detail(info,info_address) values('Tom_info_sup','Tom_address_sup');
mysql>: update stu set detail_id=3 where detail_id=2; # 有未被其他数据关联的数据,就可以修改
# 删除关联表 author
mysql>: delete from stu where detail_id=3; # 直接删除
# 修改被关联表 author_detail
mysql>: update stu_detail set id=10 where id=1; # 级联修改,同步关系关联表外键
# 删除被关联表 stu_detail
mysql>: delete from stu where detail_id=10; # 可以删除对被关联表无影响
mysql>: insert into stu(name,mobile,detail_id) values('Tom','13344556677', 10);
mysql>: delete from stu_detail where id=10; # 可以删除,将关联表的记录级联删除掉
9、将 学生表、国家表、课程表、学生简介表 四个表放在一起考虑表关系,并完成数据的增删测试
create table country(
id int primary key auto_increment,
countryname varchar(64) not null,
);
create table stu_detail(
id int primary key auto_increment,
info varchar(256),
info_address varchar(256)
);
create table course(
id int primary key auto_increment,
name char not null,
course_time int unsigned default 0
);
create table stu(
id int primary key auto_increment,
name char not null,
stu_id int,
foreign key(stu_id) references country(id)
on update cascade
on delete cascade,
detail_id int unique not null,
foreign key(detail_id) references stu_detail(id)
on update cascade
on delete cascade,
);
create table stu_course(
id int primary key auto_increment,
stu_id int,
foreign key(stu_id) references stu(id)
on update cascade
on delete cascade,
course_id int,
foreign key(course_id) references course(id)
on update cascade
on delete cascade,
unique(stu_id, course_id)
);

日考

第9题

9、将 学生表、国家表、课程表、学生简介表 四个表放在一起考虑表关系,并完成数据的增删测试

MySQL小测试(2)的更多相关文章

  1. MySQL小测试

    <> 2.创建一个字符集为utf8的数据库,将数据库字符集修改为gbk create database db1 charset='utf8'; alter database db1 cha ...

  2. mysql基础测试

    mysql基础测试 测试原因   为什么需要做性能测试 模拟比当前系统更高的负载,找出性能瓶颈 重现线上异常 测试不同硬件软件配置 规划未来的业务增长   测试分类   性能测试的分类 设备层的测试 ...

  3. PHP中使用PDO操作事务的一些小测试

    关于事务的问题,我们就不多解释了,以后在学习 MySQL 的相关内容时再深入的了解.今天我们主要是对 PDO 中操作事务的一些小测试,或许能发现一些比较好玩的内容. 在 MyISAM 上使用事务会怎么 ...

  4. Cad 二次开发关于SelectCrossingPolygon和SelectFence返回结果Status为error的小测试

    CAD2008的二次开发,有个很奇怪的现象,只要你选择的点集不在当前视图上SelectCrossingPolygon和SelectFence返回结果Status就会为error,所以要获取正确的结果, ...

  5. paip.提升性能---mysql 性能 测试以及 参数调整.txt

    paip.提升性能---mysql 性能 测试以及 参数调整.txt 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://b ...

  6. MySQL Router 测试使用 转

    MySQL Router 测试使用 . 特性 MySQL Router 并没有包括一些特别新的特性, 总体上看中规中矩, 不过 first-available 和插件两个特性挺有意思, 后续会进行讲解 ...

  7. 使用mysqlslap进行MySQL压力测试

    使用mysqlslap进行MySQL压力测试发表于236 天前 ? MySQL ? 暂无评论 MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来 ...

  8. mysql 通过测试'for update',深入了解行锁、表锁、索引

    mysql 通过测试'for update',深入了解行锁.表锁.索引 条件 FOR UPDATE 仅适用于InnoDB存储引擎,且必须在事务区块(BEGIN/COMMIT)中才能生效. mysql默 ...

  9. LINUX系统下MySQL 压力测试工具super smack

    摘要:1.源文件下载地址:http://vegan.net/tony/supersmack/2.安装:注意在编译时,可以先把对应的libmysqlclient.so.*拷贝到/usr/lib3.测试: ...

随机推荐

  1. AtCoder Grand Contest 036题解

    传送门 爆炸的比较厉害--果然还是菜啊-- \(A\) 我们强制一个点为\((0,0)\),那么设剩下两个点分别为\((a,b),(c,d)\),根据叉积可以计算出面积为\(ad-bc=S\),那么令 ...

  2. Codeforces 652F 解题报告

    题意 有n只蚂蚁在长度为m个格子的环上,环上的格子以逆时针编号,每只蚂蚁每秒往它面向的方向移动一格.如果有两只蚂蚁相撞则相互调换方向,问t秒后每只蚂蚁的位置. 题解 首先通过观察可以发现 蚂蚁相撞产生 ...

  3. thinkphp5.0 - nginx 配置

    上面介绍的是 thinkphp url 的访问方式,按照上面的访问方式配置nginx服务器配置,如下所示: server { listen 8090; server_name localhost 17 ...

  4. kubernetes-harbor 私有仓库 帐号与密码 配置

    如harbor地址:   harbor.qing.cn #docker login harbor.classba.cn #cat /root/.docker/config.json | base64 ...

  5. Qt 编写串口调试助手

    一.成品图展示 成品图如下所示: 二.串口通讯步骤 1.在工程文件(.pro)中添加串口通信相关运行库:QT += serialport 2.在头文件中添加: #include <QSerial ...

  6. 汉字转拼音,TinyPinyin、Pinyin4j与JPinyin哪个库更快

    1. 介绍 本文对TinyPinyin.Pinyin4j与JPinyin三个汉字转拼音库的用法.测试代码及转换的结果做一个简单的总结. TinyPinyin 适用于Java和Android的快速.低内 ...

  7. 【java】查看Java字节码文件内容的方法+使用javap找不到类 解决方法

    研究synchronized底层实现,涉及到查看java字节码的需要 前提是,你的PC已经成功安装了JDK并别配置了环境变量. ==========查看方法========= 一.javap查看简约字 ...

  8. 解决Web部署 svg/woff/woff2字体 404

    1.打开服务器IIS管理器,找到MIME类型 2.添加类型 文件扩展名      MIME类型 .svg             image/svg+xml.woff            appli ...

  9. bash信号捕捉

    我们ping一个主机,然后按下ctrl+c那么就会终止这个ping动作,如下图: 可是如果使用一个循环来逐个ping不同主机,你再按下ctrl+c就会发现停不下来,直到循环完成,如下图: #!/bin ...

  10. MySQL语言分类——DML

    DML DML的全称是Database management Language,数据库管理语言.主要包括以下操作: insert.delete.update.optimize. 本篇对其逐一介绍 IN ...