MySQL数据库-----10月5号学习笔记
条件查询
简而言之就是简单查询后加通过WHERE子句指定查询条件对查询结果进行过滤。
\1. 使用关系运算符查询
\2. 使用IN关键字查询
\3. 使用BETWEEN AND 关键字查询
\4. 使用空值查询
在MySQL中,使用 IS NULL关键字判断字段的值是否为空值。请注意:空值NULL不同于0,也不同于空字符串
\5. 使用AND关键字查询
\6. 使用OR关键字查询
\7. 使用LIKE关键字查询
普通字符查询
select * from stu where name like ‘查询内容’ ;
含%通配的字符
select * from stu where name like ‘a%’; (a%表示的是以a开头的任意长度字符串)
select * from stu where name like ‘%a’; (%a表示的是以a结尾的任意长度字符串)
含有_通配的字符
下划线只能匹配单一字符,如需匹配多个字符需使用相应数量的下划线
例如:
select * from stu where name like 'a___'; (表示首字母为a长度为4的字符串)
\8. 使用LIMIT限制查询结果
例如:
select * from student order by age asc limit 3;
即可筛选出年龄最小的三位学生
\9. 使用GROUP BY 进行分组查询
GROUP BY和聚合函数配合使用
select 聚合函数, 字段 from 表名 group by 字段;
加上HAVING语句就是进一步进行筛选 HAVING 后面加的便是筛选的条件
\10. 使用ORDER BY 对查询结果排序
其语法格式如下所示:
SELECT 字段名1,字段名2,…
FROM 表名
ORDER BY 字段名1 [ASC 丨 DESC],字段名2 [ASC | DESC];
注:参数 ASC表示按照升序排序,DESC表示按照降序排序;默认情况下,按照ASC方式排序。通常情况下,ORDER BY子句位于整个SELECT语句的末尾。
别名设置
用as即可
格式为
select * from 表名 as 表的别名 where .....
select 字段名 as 字段的别名 from 表名 where ......
关联查询
例子为班级表中与学生表中对应的‘Java’班的学生查询
select * from student where classid=(select cid from class where cname='Java');
关于关联关系的删除数据
请注意:班级表和学生表之间存在关联关系;要删除Java班级,应该先删除学生表中与该班相关联的学生。否则,假若先删除Java班那么学生表中的cid就失去了关联
delete from student where classid=(select cid from class where cname='Java');
delete from class where cname='Java';
多表连接查询
交叉链接查询
其语法格式如下:
SELECT * FROM 表1 CROSS JOIN 表2;
内连接查询
在内连接查询中只有满足条件的记录才能出现在查询结果中
其语法格式如下:
SELECT 查询字段1,查询字段2, ... FROM 表1 [INNER] JOIN 表2 ON 表1.关系字段=表2.关系字段;
外连接查询
其语法格式如下:
SELECT 查询字段1,查询字段2, ... FROM 表1 LEFT | RIGHT [OUTER] JOIN 表2 ON 表1.关系字段=表2.关系字段 WHERE 条件;
分为左右两种(左外连接查询,如果左表中的记录在右表中找不到对应的记录则返回为空。右外连接查询相反)
子查询
在子査询中通常可以使用比较运算符和IN、EXISTS、ANY、ALL等关键字。
\1. 带比较运算符的子查询
select * from class where cid=(>,<,>=,<=等)(select classid from student where sname='zhangsan');
\2. 带EXISTS关键字的子查询
EXISTS关键字后面的参数可以是任意一个子查询, 它不产生任何数据只返回TRUE或FALSE。当返回值为TRUE时外层查询才会执行
select * from class where exists (select * from student where sname='lisi');
\3. 带ANY关键字的子查询
ANY关键字表示满足其中任意一个条件就返回一个结果作为外层查询条件。
select * from class where cid >(<,=,<>等) any (select classid from student);
\4. 带ALL关键字的子查询
带ALL关键字的子査询返回的结果需同时满足所有内层査询条件。
select * from class where cid >(<,=,<>等) all (select classid from student);
总结规律:
查询语句的书写顺序
select ===> from ===> where ===> group by ===> having ===> order by ===> limit
查询语句的执行顺序
from ===> where ===> group by ===> having ===> select ===> order by ===> limit
|