单表查询、多表查询

单表查询:
SELECT [DISTINCT] *|{column1, column2. column3…} FROM tablename;

select 指定查询哪些列的数据。
column指定列名。
*号代表查询所有列。
from指定查询哪张表。
DISTINCT可选,指显示结果时,是否剔除重复数据

查询全部的行和列:select * from student;
查询指定的列:select name from student;
查询多个列:select stuid,name,sex from student;
使用别名:select name AS 姓名,sex AS 性别 from student;

Select五种子句:

Where条件查询:
	查询学号为4的学生信息
	SELECT * FROM student WHERE stuid=4;
	
	between... and...在两个值之间
	查询出生日期在1995-07-14到1995-07-16出生的学生信息
	SELECT * FROM student WHERE birthday BETWEEN '1995-07-14' AND '1995-07-16';
	
	in 在什么里面
	SELECT * FROM student WHERE birthday in ('1995-07-14','1995-07-15','1995-07-16');
	
	not 查询出生日期不在1995-07-14到1995-07-16出生的学生信息
	SELECT * FROM student WHERE birthday not in('1995-07-14','1995-07-15','1995-07-16');
	
	LIKE 像 喜欢(模糊查询)
	查询姓张的学生信息
	SELECT * FROM student WHERE name LIKE '张%';
	
	查询姓名以张结尾的
	SELECT * FROM student WHERE name LIKE '%张';
	
	查询姓名中包含四的学生信息 %四%
	SELECT * FROM student WHERE name LIKE '%四%';
	
	_:代表一个字符
	查询姓张且姓名为两个字的学生信息
	SELECT * FROM student WHERE name LIKE '张_';
	
	查询成绩为空的成绩编号 is null 为空
	SELECT scoid FROM score WHERE socre is NULL;

	AND
	查询性别是男并且班级编号是1的学生信息
	SELECT * FROM student WHERE sex='男' AND cid=1;
	
	OR
	查询性别是男或者班级编号是1的学生信息
	SELECT * FROM student WHERE sex='男' OR cid=1;

	聚合函数
	SELECT * FROM score;

	查询学号为1的学员的平均成绩 AVG([DISTINCT] expr)
	SELECT avg(socre) AS 平均成绩 FROM score WHERE stuid=1;

	COUNT(expr) : 统计参加了科目1考试的学生数量
	SELECT COUNT(*) AS 学生数量 FROM score WHERE subid=1;

	查询参加科目一考试的所有学生成绩总和
	SELECT SUM(socre) FROM score WHERE subid=1;

	查询科目一最高分和最低分
	SELECT MAX(socre) AS 最高分,MIN(socre) AS 最低分 FROM score WHERE subid=1;

Group分组查询:
	根据每个科目编号查询每个科目的平均成绩
	SELECT AVG(socre) FROM score GROUP BY subid;

Having筛选:
		having 针对查询结果起作用,where 针对表中真真正正存在的列起作用
		SELECT subid,AVG(socre) AS 平均成绩 FROM score  GROUP BY subid HAVING AVG(socre)>60;
Order by排序:
	查询学生信息并按照班级编号升序(默认是asc)
	SELECT * FROM student ORDER BY cid ASC;
Limit限制结果条数:
	LIMIT(数据的坐标,显示多少条) 数据库的坐标从0开始
	查询年龄最小的五名学生信息
	SELECT * FROM student ORDER BY birthday DESC LIMIT 0,5;
	
五种子句的编写顺序:
	SELECT … FROM … WHERE … GROUP BY … HAVING … ORDER BY …limit

多表查询:

等值连接:
	查询张三Java的考试成绩,显示学生姓名,科目名,成绩,班级名
	1.把表链接成大表
	SELECT `name`,subname,socre,cname FROM student,classinfo,score,`subject` WHERE
	2.确定连接条件
	student.cid=classinfo.cid AND student.stuid=score.stuid AND score.subid=subject.subid
	3.筛选条件
	AND name='张三' AND subname='Java';
	
INNER JOIN:内连接
	获取姓名为Jim的学生的所在班级,显示学生姓名,科目名,成绩,班级名
	1.把几个表链接成一个大表
	SELECT stuid,`name`,student.cid,cname FROM student INNER JOIN classinfo
	2.确定连接条件
	ON student.cid=classinfo.cid
	3.确定筛选条件
	WHERE name='Jim';

左连接:LEFT JOIN
	查询所有学生课程的考试成绩,查询结果保留学生ID、姓名、性别、课程ID、成绩
	SELECT student.stuid,`name`,sex,subid,socre FROM student LEFT JOIN score ON student.stuid=score.stuid;
	
右连接:right join
SELECT student.stuid,`name`,sex,subid,socre FROM student RIGHT JOIN score ON student.stuid=score.stuid;

左外连接:以左表为准,去右表找匹配的数据,如果找不到匹配,用null填充
右外连接:以右表为准,去左表找匹配的数据,如果找不到匹配,用null填充
内连接:左表和右表的交集,如果匹配成功,拿出来,匹配不成功丢掉
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值