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. 2020年数据库概念与MySQL的安装与配置-从零基础入门MySQL-mysql8版本

    作者 | Jeskson 来源 | 达达前端小酒馆 从零基础入门MySQL数据库基础课 数据的概念,简介,安装与配置,Windows平台下MySQL的安装与配置. 数据库的概念:数据库是一个用来存放数 ...

  2. Log-Structured Merge Tree (LSM Tree)

    一种树,适合于写多读少的场景.主要是利用了延迟更新.批量写.顺序写磁盘(磁盘sequence access比random access快). 背景 回顾数据存储的两个“极端”发展方向 加快读:加索引( ...

  3. Circumference of circle

    public class Solution { public static void main(String[] args) { Scanner ip = new Scanner(System.in) ...

  4. python jieba 分词进阶

    https://www.cnblogs.com/jiayongji/p/7119072.html 文本准备 到网上随便一搜"三体全集",就很容易下载到三体三部曲的全集文本(txt文 ...

  5. Oracle 自定义函数实现列转行效果

    在 Oracle 领域,我相信一说到列转行大部分人都会立马想到 WM_CONCAT 函数,我觉得主要是因为该函数比较实用.但事实上 WM_CONCAT 并非官方公开函数,使用会存在一定的风险:函数返回 ...

  6. MyBatis 通过 BATCH 批量提交

    本文由 简悦 SimpRead 转码, 原文地址 https://www.jb51.net/article/153382.htm 很多人在用 MyBatis 或者 通用 Mapper 时,经常会问有没 ...

  7. JSON.parse() 与 JSON.stringify()

    JSON.parse() 方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象.提供可选的reviver函数用以在返回之前对所得到的对象执行变换(操作). 语法 JSON.par ...

  8. ElasticSearch6.3.2 集群做节点冷(warm) 热(hot) 分离

    拿一个小规模的5节点ES集群做冷热分离尝试,它上面已经有60多个索引,有些索引按月.每月生成一个索引,随着数据的不断写入,历史数据(只需保留三个月数据,三个月之前的数据视为历史数据)越来越占磁盘空间和 ...

  9. mysql备份、还原数据库(命令行)

    这里记录下MySQL如何通过命令行备份和还原数据库. 简单的三个步骤 方法很简单,可以分为三个步骤: 1.打开cmd控制台(命令行). 2.输入相应命令完成备份还原操作. 3.关闭cmd控制台. 就和 ...

  10. 笔记本CPU性能排行

    截图如下: 1. 图1 2. 图2 3. 4. 5. 6. 7. 8. 谢谢浏览!