mysql的知识点

1,一个完整的SELECT语句包括6个子句,其中前面的2个子句是必不可少的,其他子句可以省略。

SELECT 语句的完整格式如下:
SELECT [DISTINCT] 目标列名序列-----要查看的列
FROM 表名或视图名------------------数据来源
[WHERE 条件表达式]----------------查询条件
[GROUP BY + 列名] --------------------分组依据
[HAVING + 组条件表达式] ---------分组条件
[ORDER BY + 列名 + [ASC|DESC]序列]----排序依据

2,不要写select * from table;

计算机在识别的时候会将*对应的列名依次转换,效率低,且不方便阅读,*只有自己知道指的是什么。

3,查询多列时,需要去重只留下唯一的部分时需要用到,distinct.

select distinct +列名 from table;

4,使用LIMIT限制结果集

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。
LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。
如果只给定一个参数,它表示返回最大的记录行数目。
如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1。
初始记录行的偏移量是 0(而不是 1)。

例.检索记录行 6-10

1

SELECT FROM table LIMIT 5,5

例.检索记录行 11-last

1

SELECT FROM table LIMIT 10,-1

例.检索前 5 个记录行

1

SELECT FROM table LIMIT 5

5,涉及到多表的查询

多表查询 - 多表连接

若一个查询同时涉及两个或两个以上的表,则称之为连接查询。
连接查询是关系数据库中最主要的查询。
连接查询包括内连接、外连接和交叉连接等。

连接查询中用于连接两个表的条件称为连接条件或连接谓词。
一般格式为:

内连接

内连接语法如下:

1

2

3

4

SELECT

FROM 表名

[INNERJOIN 被连接表

ON 连接条件

例39.查询每个学生及其班级的详细信息。

1

2

SELECT FROM 学生表

INNER JOIN 班级表 ON 学生表.班号=班级表.班号

结果中有重复的列:班号。

例40.去掉例39中的重复列。

1

2

SELECT 学号, 姓名,班级表.班号, 班名 FROM 学生表 JOIN 班级表

ON 学生表.班号=班级表.班号

例41.查询重修学生的修课情况,要求列出学生的名字、所修课的课程号和成绩。

1

2

3

4

SELECT 姓名, 课程号, 成绩

FROM 学生表 JOIN 成绩表

ON 学生表.学号 = 成绩表.学号

WHERE 状态 = '重修'

执行连接操作的过程

首先取表1中的第1个元组,然后从头开始扫描表2,逐一查找满足连接条件的元组,
找到后就将表1中的第1个元组与该元组拼接起来,形成结果表中的一个元组。 表2全部查找完毕后,再取表1中的第2个元组,然后再从头开始扫描表2, …
重复这个过程,直到表1中的全部元组都处理完毕为止。

表别名

可以为表提供别名,其格式如下:
<源表名> [ AS ] <表别名>
使用别名时例41可写为如下形式:

1

2

3

4

SELECT 姓名, 课程号, 成绩

FROM 学生表 S JOIN 成绩表 g

ON S.学号 = g.学号

WHERE 状态 = ‘重修’

注:如果为表指定了别名,则查询语句中其他所有用到表名的地方都要使用别名

例42.查询所有学生的姓名、班名和系名。

1

2

3

4

SELECT 姓名,班名,系名

FROM 学生表 s JOIN 班级表 bjb

ON s.班号 = bjb.班号

JOIN 系表 xb ON bjb.系号 = xb.系号

例43.查询软件工程系所有学生的情况,要求列出学生姓名和所在的系。

1

2

3

4

5

SELECT 姓名, 系名

FROM 学生表 s JOIN 班级表 bjb

ON s.班号 = bjb.班号

JOIN 系表 xb ON bjb.系号 = xb.系号

WHERE 系名= '软件工程系

例44.有分组的多表连接查询。查询每个班的学生的考试平均成绩。

1

2

3

4

5

SELECT 班号,

AVG(成绩) AS 班平均

FROM 学生表 S JOIN 成绩表 g

ON S.学号 = g.学号

GROUP BY 班号

例45.有分组和行过滤的多表连接查询。查询21226P班每门课程的选课人数、平均成绩、最高成绩和最低成绩。

1

2

3

4

5

6

7

8

SELECT 课程号, COUNT(*) AS Total,

AVG(成绩) AS Avg成绩,

MAX(成绩) AS Max成绩,

MIN(成绩) AS Min成绩

FROM 学生表 S JOIN 成绩表 g

ON S.学号 = g.学号

WHERE 班号 = '21226P'

GROUP BY 课程号

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值