300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Sql学习6-2_数据库查询语言DQL

Sql学习6-2_数据库查询语言DQL

时间:2021-03-27 22:50:11

相关推荐

Sql学习6-2_数据库查询语言DQL

MySQL数据查询SQL-DQL

语法格式

select 字段列表|* from 表名[where 搜索条件][group by 分组字段 [having 分组条件]][order by 排序字段 排序规则][limit 分页参数]

查询语句概括说明

一、基础查询

-- 查询表中所有列 所有数据select * from student;-- 指定字段列表进行查询select id,name,phone from student;

二、条件查询

可以在where子句中指定任何条件可以使用 and 或者 or 指定一个或多个条件where条件也可以运用在update和delete语句的后面where子句类似程序语言中if条件,根据mysql表中的字段值来进行数据的过滤

-- 查询 student 表中 age > 22的数据SELECT * FROM student WHERE age > 18;-- 查询 student 表中 name=某个条件值 的数据SELECT * FROM student WHERE name = '王五';-- 查询 student 表中 年龄在22到25之间的数据SELECT * FROM student WHERE age >= 22 and age <= 25;SELECT * FROM student WHERE age between 22 AND 25;-- 查询 student 表中 年龄不在22到25之间的数据SELECT * FROM student WHERE age < 22 OR age > 25;SELECT * FROM student WHERE age NOT BETWEEN 22 AND 25;-- 查询 student 表中 年龄在22到25之间的女生信息SELECT * FROM student WHERE age >= 22 AND age <= 25 AND sex = '女';

2.1 AND 和 OR

要注意的是:当ANDOR一起使用时, sql会优先处理AND条件,如有需要应该使用括号来关联条件

2.2 LIKE 子句

可以只用LIKE语句进行模糊查询

-- 使用 % 模糊搜索。%代表任意个任意字符-- 查询name字段中包含五的SELECT * FROM student WHERE name LIKE '%五%';-- 查询name字段中最后一个字符 为 五的SELECT * FROM student WHERE name LIKE '%五';-- 查询name字段中第一个字符 为 王 的SELECT * FROM student WHERE name LIKE '王%';-- 使用 _ 单个的下划线。表示一个任意字符,使用和%类似-- 查询表中 name 字段为两个字符的数据SELECT * FROM student WHERE name LIKE '__';-- 查询 name 字段最后为五,的两个字符的数据SELECT * FROM student WHERE name LIKE '_五';

要注意的是:where子句中的like在使用%或者_进行模糊搜索时,效率不高,使用时注意:

尽可能的不去使用%或者_,如果需要使用,也尽可能不要把通配符放在开头处

三、 Mysql 统计函数(聚合函数)

-- 计算 users 表中 最大年龄,最小年龄,年龄和及平均年龄SELECT max(age) AS max_age,min(age) AS min_age,sum(age) AS sum_age,avg(age) AS avg_age FROM student;-- 统计 users 表中的数据量SELECT COUNT(*) FROM users;

聚合函数除了以上简单的使用意外,通常情况下都是配合着分组进行数据的统计和计算

四、Group BY 分组

group by 语句根据一个或多个列对结果集进行分组。一般情况下,是用与数据的统计或计算,配合聚合函数使用

-- 统计 student 表中 男女生人数,-- 很明显按照上面的需要,可以写出两个语句进行分别统计SELECT COUNT(*) FROM student WHERE sex = '女';SELECT COUNT(*) FROM student WHERE sex = '男';-- 可以使用分组进行统计,更方便SELECT sex,COUNT(*) FROM student GROUP BY sex;-- 统计1班和2班的人数SELECT classid,COUNT(*) FROM student GROUP BY classid;-- 分别统计每个班级的男女生人数SELECT classid,sex,COUNT(*) AS num FROM student GROUP BY classid,sex;

注意,在使用。group by分组时,一般除了聚合函数,其它在select后面出现的字段列都需要出现在grouop by后面

4.1 Having 子句

having是在分组聚合计算后,对结果再一次进行过滤,类似于where,where过滤的是行数据,having过滤的是分组数据

五、Order by 排序

我们在mysql中使用select的语句查询的数据结果是根据数据在底层文件的结构来排序的, 首先不要依赖默认的排序,另外在需要排序时要使用orderby对返回的结果进行排序 Asc 升序,默认 desc降序

-- 按照年龄对结果进行排序,从大到小SELECT * FROM users ORDER BY age DESC;-- 从小到大排序 asc 默认就是。可以不写SELECT * FROM users ORDER BY age;-- 也可以按照多个字段进行排序SELECT * FROM users ORDER BY age,id; -- 先按照age进行排序,age相同情况下,按照id进行排序SELECT * FROM users ORDER BY age,id DESC;

六、Limit 数据分页

limit n 提取n条数据limit m,n 跳过m跳数据,提取n条数据

-- 查询users表中的数据,只要3条SELECT * FROM users LIMIT 3;-- 跳过前4条数据,再取3条数据SELECT * FROM users LIMIT 4,3;-- limit一般应用在数据分页上面-- 例如每页显示10条数据,第三页的 limit应该怎么写? 思考--第一页LIMIT 0,10--第二页LIMIT 10,10--第三页LIMIT 20,10--第四页LIMIT 30,10-- 提取 user表中 年龄最大的三个用户数据 怎么查询?SELECT * FROM users ORDER BY age DESC LIMIT 3;

6.1 分页查询的使用

与前端页面交互就是,前端页面传入页数,然后,页数也就是limit的第一个参数page,每页行数就是limit的第二个参数row

SELECT * FROM users LIMIT page,row;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。