MySQL知识总结(二)

上一篇MySQL知识总结(一)的传送门:http://www.cnblogs.com/rosestudy/p/4820234.html


四、关系运算基础

  1. 选择运算(行运算 单表操作)
  2. 投影(列运算 单表操作)
  3. 连接运算(多表操作)
  • 等值连接:常用条件是两个表的某些列值相等
  • 自然连接:要求两个表有共同的属性(列),自然连接运算的结果集是在参与操作两个表的共同属性上进行等值连接后,再去除重复的属性所得的新表

五、MySQL数据库查询

选择SELECT列

  1. 选择指定列
  2. 定义列别名  格式:select column_name as column_alias
  3. 替换查询结果中的数据
  4. 计算列值
  5. 消除结果集中重复行 格式:select distinct | distinctrow column_name[,column_name...]
  6. 聚合函数(常用的有:count函数、max/min函数、sum/avg函数)
use test
select 姓名,学号
from student;            //执行结果是student表中全部学生的姓名和学号列上的信息
select count(*) as '学生总数'
from student;         //使用count函数用于统计组中满足条件的行数或总行数

FROM子句

  1. 引用一个表
  2. 多表连接 在不同的表中查询数据,必须在from子句中制定多个表
  • 全连接
  • JOIN连接
//查找xscj数据库中所有学生选过的课程名和课程号
select distinct kc.课程名,xs_kc.课程号
from kc,xs_kc
where kc.课程号=xs_kc.课程号;

WHERE子句

  1. 比较运算
  2. 模式匹配:比较常用的是LIKE运算符,“%”代表0个或多个字符,"_"代表单个字符;“#”为转义字符
  3. 范围比较:between、in
  4. 空值比较:is[not]null
  5. 子查询
  • IN子查询:用于指定一个给定值是否在子查询结果集中的判断
  • 比较子查询
  • exsits子查询:测试子查询的结果是否为空表,若子查询的结果集不为空,则exsits返回true,否则返回false
select 学号,姓名
from student
where 姓名 like '罗%';     //查询student表中姓罗的学生的学号、姓名

GROUP BY子句:用于根据字段对行分组

select 专业名,count(*) as '学生数'
from student
group by 专业名;        //求student表中各专业的学生数

HAVING子句:配合group by子句使用

//查询信息管理专也平均成绩在85分以上的学生的学号和平均成绩
select 学号,avg(成绩) as '平均成绩'
from xs_kc
where 学号 in 
( select 学号
  from xs
  where 专业名 = '信息管理'
)
group by 学号
having avg(成绩) >=85;

ORDER BY子句:保证结果中的行按一定的顺序排列。关键字ASC表示升序排列,DESC表示降序,系统默认是ASC。

语法格式:order by {col_name | expr | position} [ASC | DESC]              

     

LIMIT子句:主要用于限制被SELECT语句返回的行数。

语法格式:LIMIT {[offset,]row_count | row_count OFFSET offset}

如:limit 5 表示返回结果集中最前面的5行;limit 3,5 表示返回结果集中从第4行开始返回5行

UNION子句:可以把许多SELECT语句的结果组合到一个结果集中。(没怎么用过 orz...)

HANDLER子句:能够一行一行的浏览表中的数据。(没怎么用过 orz...)

六、视图

视图是根据用户的需求定义的数据结构,是一个虚表,即它所对应的数据不进行实际存储。

原文地址:https://www.cnblogs.com/rosestudy/p/4823554.html