摘要:本文主要向大家介绍了MySQL数据库学习完后总结的知识点3,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。
本文主要向大家介绍了MySQL数据库学习完后总结的知识点3,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。
#上机练习8
#查询所有科目的考试成绩信息 (某些科目可能从没有被考试过)
SELECT s.sunname,r.studentresult FROM sub_kemu s
LEFT JOIN result r
ON s.subid=r.subno
#查询从未考试的科目
SELECT s.sunname,r.studentresult FROM sub_kemu s
LEFT JOIN result r
ON s.subid=r.subno
#where r.studentresult is null; 不能拿成绩 做条件 有的人缺考
WHERE r.examdate IS NULL;
SELECT sunname, studentresult FROM sub_kemu s
LEFT JOIN result r
ON s.subid= r.subno
WHERE r.examdate IS NULL;
#----------------------------自身连接
CREATE TABLE fuzi(
id INT(4) UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
idname VARCHAR(6) NOT NULL,
parentid INT(4) UNSIGNED
)CHARSET=utf8
INSERT INTO fuzi (id,idname) VALUES (1,‘软件开发‘),
(2,‘美术设计‘),
(3,‘java基础‘),
(4,‘oop基础‘),
(5,‘数据库技术‘),
(6,‘ps技术‘),
(7,‘色彩搭配技术‘)
#要求把父类子类信息分别显示出来
SELECT p.idname AS 父栏目,c.idname AS 子栏目 FROM fuzi p
INNER JOIN fuzi c
ON p.id=c.parentid
#-------------分页显示
#要求 分页显示学生信息 每页显示5条
SELECT * FROM student
ORDER BY stuid DESC
#第一页
LIMIT 0,5
SELECT * FROM student
ORDER BY stuid DESC
#第二页
LIMIT 5,5
SELECT * FROM student
ORDER BY stuid DESC
#第三页
LIMIT 10,5
#偏移量的算法是 当前页数减去一在乘 当前显示的条数 列如 第三页 偏移量=3-1*5(条数)
# 子查询 也叫嵌套查询 查询方式由里到外 子查询的结果一般是集合 建议使用in关键字
#查询比孙悟空小的学生信息
SELECT * FROM student
WHERE birthday>(
SELECT MAX(birthday) FROM student
WHERE stuname=‘孙悟空‘
)
#使用子查询 查询参加最近一次 java考试成绩的学生最高分和最低分
#查询Logic Java的科目编号
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘
#查询获得Logic Java最近一次的考试日期
SELECT MAX(DATE(examdate)) FROM result
WHERE subjectno IN(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘)
#根据课程编号获取考试成绩的最高分和最低分
SELECT MAX(studentresult),MIN(studentresult) FROM result
WHERE subjectno=(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘
)
AND
DATE(examdate)=(
SELECT MAX(DATE(examdate)) FROM result
WHERE subjectno=(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘)
)
---------------------------------------------------------------------
SELECT MAX(studentresult), MIN(studentresult) FROM result
WHERE subno IN(
SELECT subid FROM sub_kemu WHERE sunname=‘java‘
)
AND
DATE(examdate)=(
SELECT MAX(DATE(examdate)) FROM result
WHERE subno IN(
SELECT subid FROM sub_kemu WHERE sunname=‘java‘
)
)
#检查LogicJava课程最近一次考试。如果有成绩达到80分
#以上者,则显示分数排在前5名学员的学号和分数
SELECT studentno,studentresult FROM result
WHERE EXISTS(
SELECT * FROM result WHERE subjectno=(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘
) AND examdate=(
SELECT MAX(examdate) FROM result
WHERE subjectno=(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘)
) AND studentresult>80
)
AND
subjectno=(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘
)
ORDER BY studentresult DESC
LIMIT 5
SELECT * FROM result WHERE EXISTS
(
SELECT * FROM result WHERE studentresult>80
)
--------------------------------------------------------------------------------------------------------------------
------HAVING子句是用来对分组后的数据进行筛选的 where不能对分组的进行筛选
执行顺序 WHERE---GROUP BY--HAVING
--DATEDIFF(date1,date2)返回1和2之间相隔的天数
--ADDDATE(date,n)计算date加上n天的日期
---数据类型 double(5,2)取值范围是-999.99~999.99
tinyint smallint mediumint int float double decimal
字符串类型
char 固定长度 varchar 可变长度
语法
where
group by
order by
limit 4 ,4
是从第五条数据开始显示的第一条数据的偏移量是0 8
--子查询作为where条件的一部分 当和比较运算符比较的时候子查询返回的值不能多于一个
--inner jion 。。。on
--子查询必须在一个小括号里面
--模糊查询 %代替一个或者多个字符 _ 代表一个字符查询
--查询没有参加最近一次java考试的学生的学生信息 参加了用 in 没有参加就用 not in
--高级子查询
exists和not exists 子查询是将主查询字段传递到后边的查询作为条件 返回值true或者false
内连接 外链接(左右连接)
=和<>
使用inner join on 或者 where进行表之间的连接
inner jion 连接俩个表(inner可以省略)
on 用来设置条件
事务 原子性 一致性 隔离性 持久性
set autocommit=0 关闭自动提交 =1 开启自动提交 begin或者start transaction 开始事务 commit 提交事务 rollback 回滚事务
--------------《数据库设计》
建模
visio流程图 UML 图 ---》 数据库模型图、
powerdesigner 数据库模型图---》流程图 UML图
rose
数据库设计流程
需求分析 分析客户业务和数据处理需求
概要设计 设计数据库的E-R模型图确认需求信息的正确性和完整
详细设计 应用三大范式审核数据库结构
代码编写 物理实现数据库编写实现应用
软件测试。。。。
软件部署。。。
E-R图是实体关系图 数据库模型图 俩大图
entity实体 relationship实体之间的关系
实体 矩形 属性 椭圆 关系 菱形
后缀 .cdm 是E-R图的后缀
后缀 .pdm是数据库模型图
映射基数 一对多
一对一 一对多 多对一 多对多
第一范式 确保每列的原子性 (满足是不可再分的最小单元) 则就是第一范式
第二范式 确保每个表只描述一件事情
第三范式 满足了第二范式然后确保每列和主键列直接相关 而不是间接相关
创建索引
CREATE TABLE `table` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`title` char(255) CHARACTER NOT NULL ,
`content` text CHARACTER NULL ,
`time` int(10) NULL DEFAULT NULL ,
PRIMARY KEY (`id`),
INDEX index_name (title(length))-------------------------------
)
修改表结构的方式添加索引
ALTER TABLE table_name ADD INDEX index_name ON (column(length))
删除索引
DROP INDEX index_name ON tabl
本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号