mysql教材第四章课后题答案_Mysql第四章:mysql语法练习

更新时间:2023-06-19 07:45:08 阅读: 评论:0

mysql教材第四章课后题答案_Mysql第四章:mysql语法练习⽬录java
1:mysql经常使⽤语法练习
⾸先默认表数据以下:
2:查询语句(lect)
lect * from ur //查询全部数据
lect name,age from ur //查询指定字段
lect distinct address from ur// 因为地址信息有深圳,河南相同。查询结果为去重复
lect * from ur LIMIT 3,2 //从第3⾏开始查询2条数据。 查询结果是id是4,5的数据
3:排序语句(order by)
lect * from ur ORDER BY age //默认asc是a-z 数字1-9 升序,此处显⽰结果是1991-2020
lect * from ur ORDER BY age desc//desc是z-a,9-1 降序 此处显⽰结果是2020-1991
lect * from ur ORDER BY age desc,name //⾸先age降序2020-1991,⽽后name升序a-z
4:单⼀过滤语句(where)
//单⼀条件过滤语句
lect * from ur where name='bb' //等于
走过的路lect * from ur where age='2013-03-02'//等于
lect * from ur where name <> 'bb' // 不等于 查询名字不等于bb的数据
跑步知识lect * from ur where name != 'bb' // 不等于 查询名字不等于bb的数据
lect * from ur where age >'2013-03-02' //⼤于 适⽤于⽇期和数值类型
lect * from ur where age >='2013-03-02' //⼤于等于 适⽤于⽇期和数值类型
lect * from ur where age
lect * from ur where age <='2013-03-02' //⼩于等于 适⽤于⽇期和数值类型
lect * from ur where age BETWEEN '2013-03-02' AND '2020-03-02'//介于⼆者之间
lect * from ur where age is null //空值判断
5:组合条件过滤语句(where + 操做符)
//组合条件过滤
lect * from ur where name='bb' and address='河南' //and 两个条件都需套知⾜
lect * from ur where name='bb' OR address='深圳' //or 条件只需知⾜⼀个便可
lect * from ur where (address='河南' or address='深圳') and name='bb'//and运算优先级⾼和or混⽤的时候要加括号
lect * from ur where name in ('bb','cc','李四')//in操做符,与or操做符⼀致
lect * from ur where name not in ('bb','cc','李四') //not in操做符,与in相反
6:通配符过滤语句(like)
//通配符过滤(通配符效率⽐较低 尽可能不⽤在开始的位置)
lect * from ur where address LIKE '%南%' //包含有南的地址信息
lect * from ur where address like '河%1' //以河开始 1结束的地址信息
春天的样子
7:字段拼接求和
//拼接字段
lect *,CONCAT(name,'(',address,')','0000') as name_address from ur //CONCAT函数⽤来拼接字段name(address)0000,⽽且将字段别名为name_address
//查询全部的字段和sid*score ⽽且命名为求和
lect *,sid*score as 求和 from score
8:数据处理函数
//数据处理函数
lect *,UPPER(name) as ⼤写 from ur where address ='河南' //字段转⼤写
lect *,LOWER(name) as ⼩写 from ur where address ='河南' //字段转⼩写
lect *,LEFT(name,3) from ur //字段截取3位
//⽇期处理函数
lect * from ur where age='1991-03-02'
lect * from ur where DATE(age)='1991-03-02'//匹配年⽉⽇
lect * from ur where YEAR(age) BETWEEN '1991' and '2010' //匹配年
lect * from ur where DAY(age)='02' //匹配⽇
9:汇总函数(avg max min count)
lect * from score
lect AVG(score) from score where student_id=1 //学号1的学⽣的平均分
lect MAX(score) from score where student_id=1 //学好1的学⽣的最⾼分
lect MIN(score) from score where student_id=1 //学好1的学⽣的最低分
lect COUNT(*) from score //查询⾏数,全部⾏ 跟count(1)差很少
lect COUNT(1) from score //查询⾏数,全部⾏ 使⽤到主键索引 ⽐较快
lect COUNT(score) from score //查询⾏数 忽略字段为null的⾏ 该列没有索引会⽐较慢
10:数据分组(group by  having)
//group by数据分组 having过滤分组
lect student_id,AVG(score),MAX(score),MIN(score) from score GROUP BY student_id HAVING AVG(score)>60 11:⼦查询
//⼦查询,查询结果是其余查询的条件,查询学⽣表的学⽣id,根据学⽣id查询分数
lect * from score where student_id in (lect sid from students)
12:链接查询
lect * from a JOIN b on a.id=b.a_id //内连接(JOIN) 交集
lect * from a INNER JOIN b on a.id=b.a_id //内连接(inner join) 交集
lect * from a LEFT JOIN b on a.id=b.a_id //左连接 左边查询所有数据,关联右边
lect * from a RIGHT JOIN b on a.id=b.a_id//右链接 右边查询所有数据,关联左边
lect id from a
UNION
lect address from b
//UNION求并集 除⾍重复
lect id from a
UNION all
lect address from b
//UNION all求并集 不去重复
13:视图 (视图不包含数据,修改表数据,视图也会改变)
13.1:为何使⽤视图
生命中不能没有你1:重⽤复杂的sql,便于运维
2:使⽤表的部分组成字段⽽不是所有的sql,使⽤表的⼀部分
3:保护数据,经过视图访问部分数据,⽽不是直接查询全部的表。
写了⼀个很复杂的sql查询出来告终果,这些结果是不少各表
13.2:建⽴视图
//建⽴视图,将表b中的address和a_id抽取出来构成视图。
lect * from b
CREATE VIEW view1 as
lect address,a_id from b
lect * from view1//查询视图
UPDATE view1 SET address='update' where address='view'//修改视图
14:存储过程
14.1:什么是存储过程
存储过程是sql的封装,将复杂的sql封装成⼀个⽅法,能够有输⼊和输出参数,给外部调⽤。实现较为复杂的逻辑。
14.2:存储过程的优缺点
人的穴位优势:
篮球比赛策划
1:性能⾼:将不⼀样的sql封装,⽐单条sql执⾏效率⾼,链接屡次数据库。只需链接数据库⼀次,存储过程在建⽴的时候直接编译,⽽sql语句每次使⽤都要编译,提升执⾏效率
2:简单:复杂的sql封装,只管调⽤。外部简单,相似于java的⽅法封装同样
缺点:
1:对于专业技能姚要求⾼,简单的sql没必要要封装成为存储过程,复杂的才须要,因此对于技术要求⾼
2:移植能⼒较差,维护⿇烦
14.3:案例⽰范
--1:建⽴存储过程PROCEDURE1
CREATE PROCEDURE PROCEDURE1()
BEGIN
lect * FROM students;
END;
--2:建⽴存储过程PROCEDURE2
--这⾥先解释⼀下delimiter //是什么意思
--mysql客户端中分隔符默认是分号(;),因此若是不指定⼀个特殊的分隔符,可能会编译失败--上⾯语句将分隔符改成//,直到遇到下⼀个//才表⽰语句结束,这样能够保证建⽴语句完整。delimiter //
CREATE PROCEDURE PROCEDURE2()
BEGIN
lect * FROM students;
END//
delimiter ;
--3:调⽤存储过程procedure1
CALL procedure1
--4:调⽤存储过程procedure2
CALL procedure2
--5:建⽴含有参数和返回值的存储过程
CREATE PROCEDURE PROCEDURE2(
OUT a DECIMAL(8,2), #输出参数 (out 参数名字 参数类型)大学助学金申请
OUT b DECIMAL(8,2), #输出参数 (out 参数名字 参数类型)
OUT c DECIMAL(8,2), #输出参数 (out 参数名字 参数类型)
in d INT #输⼊参数 (in 参数名字 参数类型)
)
BEGIN
lect avg(score) INTO a #into 绑定输出参数
from score where student_id=d #直接饮⽤输⼊参数d
GROUP BY student_id;
lect max(score) INTO b #into 绑定输出参数
如何学习钢琴指法from score where student_id=d #直接饮⽤输⼊参数d
GROUP BY student_id;
lect min(score) INTO c #into 绑定输出参数

本文发布于:2023-06-19 07:45:08,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1045275.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:查询   数据   参数   语句
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图