您的位置:首页 > 数据库 > MySQL

济宁实训第六天&&MySQL笔记

2020-02-03 04:26 826 查看

单表查询

– 1 查询所有学生信息
SELECT * FROM student;
– 2 查询学生信息,显示学生姓名,电话,性别
SELECT

name
,phone,sex FROM student;
– 3 查询学生在哪些班级中,显示班级编号 DISTINCT对查询结果去重
SELECT DISTINCT cid FROM student;
– 4 把所有学生成绩加5分
SELECT socre as 加分前的成绩,socre+5 加分后的成绩 FROM score;
– WHERE
– 1 查询学号为4的学生信息
SELECT * FROM student WHERE stuid=4;
– 查询考试成绩在60分到80分的学生学号,分数
SELECT stuid,socre FROM score WHERE socre>=60 AND socre<=80;
– BETWEEN AND 在两个值之间同等于 小于等于 大于等于
SELECT stuid,socre FROM score WHERE socre BETWEEN 60 and 80;
SELECT stuid,socre FROM score WHERE socre NOT BETWEEN 60 and 80;
– in
– 查询成绩为69 79 71的学生学号,分数
– 只要满足in里面其中一个值,就能查询出来
SELECT stuid,socre FROM score WHERE socre=69 OR socre=79 OR socre=71;
SELECT stuid,socre FROM score WHERE socre in(69,79,71);
– LIKE 像模糊查询
– %代表多个字符

– 查询姓张的学生信息
SELECT * FROM student WHERE

name
LIKE ‘张%’;
– 查询以4结尾的学生信息
SELECT * FROM student WHERE
name
LIKE ‘%四’;
– 查询姓名中带m的学生信息
SELECT * FROM student WHERE
name
LIKE ‘%m%’;
– —_代表一个字符
SELECT * FROM student WHERE
name
LIKE ‘张 _’;
– IS NULL
SELECT * FROM score WHERE socre IS NULL;

聚合函数

– AVG( expr): 平均值
– 求科目编号是1 的平均成绩
SELECT AVG(socre) 平均成绩 FROM score WHERE subid=1;
– 统计科目编号为1的学生数量
SELECT COUNT(*)FROM score WHERE subid=1;
–SUM(expr)
SELECT SUM(socre) FROM score;
– MAX(expr) MIN(expr)
– 求score成绩表中科目编号为2的学生的最高成绩和最低成绩
SELECT MAX(socre),MIN(socre) FROM score WHERE subid=2;

分组

– 获取各科目的平均成绩
– 1 查询有哪些科目
SELECT DISTINCT subid FROM score;
– 2 根据科目求平均分
SELECT AVG(socre) FROM score WHERE subid=1;
SELECT AVG(socre) FROM score WHERE subid=2;
– 每 个 带聚合函数的都会分组
SELECT AVG(socre) FROM score GROUP BY stuid;
– 在 sqlserver 中 不能单独使用,字段要在前面写上
SELECT AVG(socre),subid FROM score GROUP BY stuid;

having

– having 查询出所有成绩加五分之后成绩还是小于60的学生学号
– WHERE 针对表中真正存在的列
– HAVING 针对查询结果
SELECT stuid FROM score WHERE socre+5<60;
SELECT stuid ,socre+5 AS 加分后的成绩 FROM score HAVING 加分后的成绩 <60;
SELECT stuid,AVG(socre) FROM score GROUP BY subid HAVING AVG(socre)>70;

order by

– 员工大会
– 排名不分先后
– 根据首字母
– ORDER BY 分为 ASC升序默认是升序 DESC降序 可以写多个字段
SELECT * FROM student ORDER BY cid,birthday asc;

limit(常用在分页)

– 查询年龄最大的五名学生信息
– LIMIT(数据的坐标,显示的条数)数据的坐标从0开始
SELECT * FROM student ORDER BY birthday LIMIT 0,5;

多表查询

1、交叉连接:
– 交叉连接
– 多表查询 查询李四所在班级,显示班级编号,姓名,班级名
SELECT * FROM student,classinfo WHERE cid=cid1;
– 步骤:
– 1、把两个表连成一个大表,即笛卡尔积
SELECT student.cid,name,cname FROM student,classinfo
– 2、确定连接条件
WHERE student.cid=classinfo.cid
– 3、确定其他筛选条件
and name=‘李四’

等值连接:

–example(等值连接): 查询张三c++考试成绩,显示学生姓名、班级名、学号、成绩、科目名

SELECT student.

name
,classinfo.cname,student.stuid,score.socre,
subject
.subname FROM student,classinfo,score,
subject

WHERE classinfo.cid=student.cid AND
subject
.subid=score.subid AND student.stuid=score.stuid
AND
name
=‘张三’ AND subname=‘C++’

内连接:

– 查询李四所考科目的平均成绩,显示姓名,平均成绩:
– 1、把两个表连成一个大表
SELECT

name
,AVG(socre) FROM student INNER JOIN score
– 2、连接条件
ON student.stuid=score.stuid
– 3、筛选条件
WHERE
name
=‘李四’
SELECT student.
name
,classinfo.cname,student.stuid,score.socre,
subject
.subname FROM student INNER JOIN classinfo
ON student.cid=classinfo.cid
INNER JOIN score
ON student.stuid=score.stuid
INNER JOIN
subject

on score.subid=
subject
.subid
WHERE
name
=‘张三’ AND subname=‘C++’

JDBC

1、connection:连接对象,负责应用程序和数据库建立连接,只要连接成功以后,才能向数据库发生命令,但是在创建链接之前,需要制定数据库的连接地址,用户名和密码
2、statement:执行对象,负责发送sql语句,用它执行时需要拼接sql,使用弊端,使用繁琐,容易出错,容易引起sql注入
3、DriverManager:创建连接对象

  • 点赞
  • 收藏
  • 分享
  • 文章举报
鱼鱼 发布了7 篇原创文章 · 获赞 0 · 访问量 98 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: