博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017年07月05号课堂笔记
阅读量:4947 次
发布时间:2019-06-11

本文共 3758 字,大约阅读时间需要 12 分钟。

2017年07月05号 星期三 多云 空气质量:中度污染

内容:mysql第五节课+MySQL自测考试

表连接查询:内连接,左右外连接,自连接

事务:事务的特性 ACID,demo(模拟 银行转账)开启,回滚,提交,关闭/开启事务自动提交

一、表连接查询

1、概念:

1)内连接 : 通过匹配两个表中公共列,找到 公共的行!

2)左外连接: 以左表为准,右表中没有数据返回null

3)右外连接: 以右表为准,左表中没有数据返回null

4)自连接:  把一个表当成多个表来使用 关键是 使用别名

2、demo

1)内连接和隐式内连接

-- 输出学生姓名以及对应的年级名称 内连接

SELECT StudentName,GradeName FROM student INNER JOIN grade
ON student.`GradeId`=grade.`GradeID`

-- 隐式内连接

SELECT StudentName,GradeName FROM student,grade
WHERE student.`GradeId`=grade.`GradeID`

2)查询 考试 课程编号是1的 学生姓名 以及年级名称 和科目名称以及成绩

01.

SELECT s.StudentName,GradeName,SubjectName ,studentResult FROM student s
INNER JOIN grade g ON (s.gradeID=g.gradeID)
INNER JOIN `subject` b ON(g.gradeID=b.gradeID)
INNER JOIN result r ON (b.subjectNo=r.subjectNo)
AND s.studentNo=r.studentNo
AND b.subjectNo=1

02.

SELECT StudentName,GradeName,SubjectName ,studentResult FROM
student s,grade g,`subject` b,result r
WHERE s.gradeID=g.gradeID
AND g.gradeID=b.gradeID
AND s.studentNo=r.studentNo
AND b.subjectNo=r.subjectNo
AND b.subjectNo=1

3)左外连接和右外连接

-- 左外连接

SELECT * FROM grade LEFT JOIN student
ON grade.GradeID=student.gradeid;

-- 右外连接

SELECT * FROM grade RIGHT JOIN student
ON grade.GradeID=student.gradeid;

4)查询的列 不在同一个表中! 必须使用连接查询!建立关联关系!

-- 临时表只有当前连接可见 随连接的关闭 自动删除

-- 临时表的增删改 不会影响到 真表
CREATE TEMPORARY TABLE myStudent
(SELECT * FROM student)
SELECT * FROM myStudent
DELETE FROM mystudent -- 临时表的数据删除
SELECT * FROM student -- 不会影响到真表

5)自连接

SELECT * FROM teacher

-- 查询 老师3 的姓名和 对应的 导师的姓名
-- t1 老师 t2 导师 老师的导师编号=== 导师的编号
SELECT t1.`name` AS a,t2.`name` AS 导师姓名 FROM teacher t1,teacher t2
WHERE t1.`name`='老师3'
AND t2.id=t1.tid

二、事务

1、事务的概念及特性

1)事务:一条或者多条sql语句的集合!

2)事务的特性 ACID

①原子性 (Atomicity):在事务中的操作,要么都执行,要么都不执行!

②一致性(Consistency):事务必须保证数据库从一个一致性的状态变成另一个一致性的状态!
③隔离性(Isolation):每个事务之间互不干扰!哪怕是并发执行也不干扰!
④持久性(Durability):事务一旦被改变,那么对数据库中数据的影响是永久性的!

2.demo(模拟 银行转账

1)-- 创建数据库

CREATE DATABASE myBank;
-- 切换指定的数据库
USE myBank;
-- 创建表
CREATE TABLE IF NOT EXISTS bank(
customerName VARCHAR(10) NOT NULL COMMENT '用户名',
currentMoney DECIMAL(10,2) NOT NULL COMMENT '账户余额'
);
-- 插入数据
INSERT INTO bank VALUES('小黑',50000),('小白',500000);

-- 小黑 给小白 转账10000
-- 修改两条数据
-- 01.小黑-10000
-- 02.小白+10000

UPDATE bank SET currentMoney=currentMoney-10000
WHERE customerName='小黑';
-- 故意写错字段名称 让02 报错
UPDATE bank SET currentMoneysss=currentMoney+10000
WHERE customerName='小白';
2)-- 开启事务 START TRANSACTION 或者 BEGIN
-- 01.02 为一个事务
BEGIN
UPDATE bank SET currentMoney=currentMoney-10000
WHERE customerName='小黑';
UPDATE bank SET currentMoneysss=currentMoney+10000
WHERE customerName='小白';
-- 事务回滚 ROLLBACK
-- 提交事务 COMMIT

UPDATE bank SET currentMoney=500000

WHERE customerName='小黑';
-- 证明mysql是默认提交事务的!

3)SET autocommit=0(关闭事务自动提交) | 1(开启事务自动提交)

-- 关闭事务自动提交

SET autocommit=0;

BEGIN; -- 开启事务

UPDATE bank SET currentMoney=currentMoney-10000
WHERE customerName='小黑';
UPDATE bank SET currentMoney=currentMoney+10000
WHERE customerName='小白';
COMMIT; -- 手动提交事务
UPDATE bank SET currentMoney=10000;
ROLLBACK; -- 事务回滚

SET autocommit=1; -- 恢复自动提交

三、MySQL自测考试

1.cmd 命令后 使用mysql的root用户登录语句

 自己答案:

 

2.创建一个用户并给用户授权,刷新权限

自己答案:

 

3.创建一个名称为T13的数据库

自己答案:

 

4.切换到T13数据库

自己答案:

 

5.创建一个Teacher 表

字段有
id 主键 不为空
name
age
address
teacherID 代表导师的编号
创建成功后,给teacher表添加一个sex字段

自己答案:

 

6.创建一个Student表

id 主键 不为空
age
name
tid 代表对应的教师编号

自己答案:

 

7.给两个表中 新增 至少5条测试数据

自己答案:

 

8.创建teacher表和student表的 主外键关系

提示: 外键关系应该建立在 从表上

自己答案:

9.查询 年龄在20 到 25之间的 学生姓名以及对应的老师姓名

自己答案:

 

10.查询老师的姓名和对应导师的姓名 (自身连接)

自己答案:

 

11.查询老师的平均,最大,最小年龄

自己答案:

 

12.查询年龄最大的前2名学生信息,并按照 降序排列

自己答案:

 

13. sql结构化查询语言的分类,并写出相应的单词

自己答案:

14.常见的约束名称以及关键字?
自己答案:

 

15.在模糊查询中 % 和 _ 的区别

自己答案:

 

16.sql语句的执行顺序

自己答案:

 

17.mysql中 获取时间的函数 至少4个

自己答案:

 

18.有符号和无符号的区别,以及关键字是什么!zerofill的作用

自己答案:

19.MyISAM 和InnoDB两种引擎的区别

自己答案:

 

 

20. MYD,MYI,frm,ibd结尾的文件保存什么

自己答案:

 

 

 

四、老师辛苦了!

 

转载于:https://www.cnblogs.com/wsnedved2017/p/7120925.html

你可能感兴趣的文章
我的友情链接
查看>>
写Use Case的一种方式,从oracle的tutorial抄来的
查看>>
【C#】protected 变量类型
查看>>
Ubuntu解压
查看>>
爬虫_房多多(设置随机数反爬)
查看>>
藏地密码
查看>>
爬虫去重(只是讲了去重的策略,没有具体讲实现过程,反正就是云里雾里)...
查看>>
react中将px转化为rem或者vw
查看>>
8816
查看>>
avcodec_open2()分析
查看>>
何如获取单选框中某一个选中的值
查看>>
paip.输入法编程----删除双字词简拼
查看>>
QQ悬浮返回顶部
查看>>
MySQL建表语句的一些特殊字段
查看>>
《Unix环境高级编程》读书笔记 第8章-进程控制
查看>>
腾讯前端二面题目详解
查看>>
mascara-1
查看>>
Jquery Form表单取值
查看>>
Android API level 与version对应关系
查看>>
Team Name
查看>>