电商平台网站开发过程,企业网址搭建,有趣的网站名称,24小时免费看的视频哔哩哔哩一、常用查询
#xff08;增、删、改、查#xff09; 对 MySQL 数据库的查询#xff0c;除了基本的查询外#xff0c;有时候需要对查询的结果集进行处理。 例如只取 10 条数据、对查询结果进行排序或分组等等 1、按关键字排序
PS:类比于windows 任务管理器 使用 SELECT 语…一、常用查询
增、删、改、查 对 MySQL 数据库的查询除了基本的查询外有时候需要对查询的结果集进行处理。 例如只取 10 条数据、对查询结果进行排序或分组等等 1、按关键字排序
PS:类比于windows 任务管理器 使用 SELECT 语句可以将需要的数据从 MySQL 数据库中查询出来如果对查询的结果进行排序可以使用 ORDER BY 语句来对语句实现排序并最终将排序后的结果返回给用户。这个语句的排序不光可以针对某一个字段也可以针对多个字段
order by
语法 select 字段1,字段2,... from 表名 order by 字段1,字段2,... asc|desc; ASC 是按照升序进行排序的是默认的排序方式即 ASC 可以省略。SELECT 语句中如果没有指定具体的排序方式则默认按 ASC方式进行排序。小到大排序 DESC 是按降序方式进 行排列。当然 ORDER BY 前面也可以使用 WHERE 子句对查询结果进一步过滤。大到小排序 建立模板表
create database bank;
use bank;
create table school (id int not null primary key,name varchar(16),score decimal(5,2),hobby char(12));insert into school values (1,ww,66,2);
insert into school values (2,ee,77,3);
insert into school values (3,aa,56,5);
insert into school values (4,ss,89,2);
insert into school values (5,dd,96,3);
insert into school values (6,ff,80,4);
insert into school values (7,gg,100,6);mysql select * from school;
-------------------------
| id | name | score | hobby |
-------------------------
| 1 | ww | 66.00 | 2 |
| 2 | ee | 77.00 | 3 |
| 3 | aa | 56.00 | 5 |
| 4 | ss | 89.00 | 2 |
| 5 | dd | 96.00 | 3 |
| 6 | ff | 80.00 | 4 |
| 7 | gg | 100.00 | 6 |
-------------------------
7 rows in set (0.00 sec)
按分数排序默认不指定是升序排列 select id,name,score from school order by score; 分数按降序排列 select id,name,score from school order by score desc; order by还可以结合where进行条件过滤筛选 hobby 是 2 的学生按分数降序排列 select * from school where hobby2 order by score desc; ORDER BY 语句也可以使用多个字段来进行排序当排序的第一个字段相同的记录有多条的情况下这些多条的记录再按照第二个字段进行排序ORDER BY 后面跟多个字段时字段之间使用英文逗号隔开优先级是按先后顺序而定 但order by 之后的第一个参数只有在出现相同值时第二个字段才有意义 ① 查询学生信息先按 hobby 降序排列id也按降序排列 select * from school order by hobby desc,id desc; ① 查询学生信息先按 hobby 降序排列id按升序排列 select * from school order by hobby desc,id; 总结按照关键字 或者字段进行 降序排列或者升序排列 2、区间判断及查询不重复记录
① AND/OR ——且/或
and 且 select * from school where score 70 and score 96; 只会显示大于70且小于等于96的数据。 or 或 select * from school where score 70 or score 96; 大于70 和 小于等于96的数据都会显示出来。 嵌套/多条件 select * from school where score 70 or (score 80 and score 96); 查询不重复记录 distinct select distinct 字段 from 表名; select distinct hobby from school; 3、对结果进行分组 group by 通过 SQL 查询出来的结果还可以对其进行分组使用 GROUP BY 语句来实现 GROUP BY 通常都是结合聚合函数一起使用的常用的聚合函数包括计数COUNT、 求和SUM、求平均数AVG、最大值MAX、最小值MINGROUP BY 分组的时候可以按一个或多个字段对结果进行分组处理。
语法 select 字段名,聚合函数(字段名) from 表名 where 字段名 运算符值 group by 字段名; 按 hobby 相同的分组计算相同 hobby 的学生个数基于id个数进行计数
计算学生相同兴趣爱好的学生个数 select count(id),hobby from school group by hobby; 执行该查询后返回的结果将是一个包含两列的列表一列是每个 hobby 的人数另一列是 hobby 的名称。 结合where语句筛选分数大于等于80的分组计算相同 hobby 的学生个数 select count(id),hobby from school where score 80 group by hobby; 全班同学成绩表 count(id)计数 score 分数 score80 优秀 score 60 and score 80 :优- 结合order by 把学生个数按降序排列 select count(id),hobby from school where score 70 group by hoobby order by count(id) desc; 注意若是 hobby 4 统计出有两个学生 那么其中一个学生的分数不会显示。 统计表中有多少行 select count(*) from school; 求班级里学生分数的平均数。 select avg(score) from school; 求班级里学生的总分数 select sum(score) from school; 找出班级里最高分和最低分同理 select max(score) from school; select min(score) from school; 4. 限制结果条目 limit limit 限制输出的结果记录 在使用 MySQL SELECT 语句进行查询时结果集返回的是所有匹配的记录行。有时候仅 需要返回第一行或者前几行这时候就需要用到 LIMIT 子句
语法 select 字段名1,字段名2,... from 表名 limit [offset,] number LIMIT 的第一个参数是位置偏移量可选参数是设置 MySQL 从哪一行开始显示。 如果不设定第一个参数将会从表中的第一条记录开始显示。 需要注意的是第一条记录的 位置偏移量是 0第二条是 1以此类推。第二个参数是设置返回记录行的最大数目。 示例
查询所有信息显示前4行记录 select * from school limit 3; 从第4行开始往后显示3行内容 select * from school limit 3,3; 结合order by语句按id的大小 降序 排列显示后三行 select * from school order by id desc limit 3; 输出前三行怎么输出 limit 3
limit 2 说的是前三行limit 是做为位置偏移量的定义他的起始是从0开始,而0表示的是字段
以后删除表中数据 可以先 查询再 删除。 select * from 表名 where 字段名; delete from 表名 where 字段名; 5、设置别名 在 MySQL 查询时当表的名字比较长或者表内某些字段比较长时为了方便书写或者 多次使用相同的表可以给字段列或表设置别名。使用的时候直接使用别名简洁明了增强可读性
语法 对于列的别名select 字段名 as 字段别名 from 表名; 对于表的别名select 字段名... from 表名 as 表别名; 在使用 AS 后可以用 alias_name 代替 table_name其中 AS 语句是可选的不写也行。 AS 之后的别名主要是为表内的列或者表提供临时的名称在查询过程中使用库内实际的表名 或字段名是不会被改变的 列别名设置示例 select name as 姓名,hobby as 爱好 from school; 如果表的长度比较长可以使用 AS 给表设置别名在查询的过程中直接使用别名 临时设置 school 的别名为 s select s.name as 姓名,s.hobby as 爱好 from school as s; s.name 表示 school 表内的字段名。 查询school 表有多少行以number显示 select count(*) as number from school; 不用as也可以一样显示 使用场景
1、对复杂的表进行查询的时候别名可以缩短查询语句的长度 2、多表相连查询的时候通俗易懂、减短sql语句 此外AS 还可以作为连接语句的操作符。
创建 qute1 表将school表的查询记录全部插入qute1表 create table qute1 as select * from school; 但“约束” 没有被完全”复制“过来 #此处AS起到的作用 1、创建了一个新表 qute1 并定义表结构插入表数据与 school 表相同
2、但是”约束“没有被完全”复制“过来 #但是如果原表设置了主键那么附表的default字段会默认设置一个0 相似 克隆、复制表结构 create table school2 like school; #复制格式通过LIKE方法复制school表结构生成school2表 insert into school2 select * from school; #备份内容 或 create table school3 (select * from school); #复制school 表数据到 school3中 #也可以加入where 语句判断 create table asda as select * from school where score 60; #复制分数大于等于60的数据。 在为表设置别名时要保证别名不能与数据库中的其他表的名称冲突。 列的别名是在结果中有显示的而表的别名在结果中没有显示只在执行查询时使用。 6、通配符 通配符主要用于替换字符串中的部分字符通过部分字符的匹配将相关结果查询出来。 通常通配符都是跟 LIKE 一起使用的并协同 WHERE 子句共同来完成查询任务。常用的通配符有两个分别是 %百分号表示零个、一个或多个字符 * _下划线表示单个字符 . 需求查询名字是a开头的记录 select * from school where name like a%; 插入几条数据 insert into school values (8,qaxukl,68,7); insert into school values (9,caixk,99,9); insert into school values (10,majiak,45,8); 查询名字里开头是q 结尾 l 中间有一个 xu 字符的记录 select * from school where name like q_xu_l; 查询名字中间有 i 的记录 select * from school where name like %i%; 查询cai后面2个字符的名字记录 select * from school where name like cai__; 通配符“%”和“_”不仅可以单独使用也可以组合使用
组合使用% _ 查询名字以m开头的记录 select * from school where name like m%_;