赞
踩
写法1:
SELECT * FROM 表名;
写法2:
- select
- 字段名称1,
- 字段名称2,
- ...
- 字段名称n
- from
- 表名;
写法3:给表起别名,同时给字段起别名,as可以省略
- select
- 关键字段1 AS'别名1',
- 关键字段2 AS'别名2',
- ...
- 关键字段n AS'别名n'
- from
- 表名 AS'别名';
查询指定字段
- select
- 关键字段1,
- 关键字段2,
- 关键字段
- from
- 表名;
- select
- distinct 关键字段
- from
- 表名;
- select
- 关键字段1,
- 关键字段2,
- (关键字段3+关键字段4),
- ...
- from
- 表名;
-
- 如果关键字段的值为null,进行数据运算时,需要给他赋一个期望值,ifnull(字段名称,期望值)
- select
- 关键字段1,
- 关键字段2,
- (关键字段3+ifnull(关键字段4,0)),
- ...
- from
- 表名;
-
-
-- select指定字段名称 from 表名 where 条件;
-- where 后面可以使用 赋值运算符=,比较运算符<;<=,>,>=,!=
- -- 查询关键字段大于某个值的记录
- select
- 关键字段1,
- 关键字段2
- ...
- from
- 表名
- where
- 关键字段>值;
-
- -- mysql里面判断某个条件不等于,<>(不等于)
- --查询关键字段不等于某个值的记录
- select
- 关键字段1,
- 关键字段2
- ...
- from
- 表名
- where
- 关键字段<>值;
-- where后面跟多个条件,并列条件或或者的条件
-- 并列条件
- -- and 值1<关键字段的值<值2的记录
- select
- 关键字段1,
- 关键字段2
- ...
- from
- 表名
- where
- 关键字段>值1 and 关键字段<值2;
-
- -- && 值1<关键字段的值<值2的记录
-
- select
- 关键字段1,
- 关键字段2
- ...
- from
- 表名
- where
- 关键字段>值1 && 关键字段<值2;
-
- -- between and
- --关键字段的值在值1和值2之间的记录
- select
- 关键字段1,
- 关键字段2
- ...
- from
- 表名
- where
- 关键字段 between 值1 and 值2;
-- 或条件
- -- || 关键字段的值=值1或者=值2的记录
- select
- *
- from
- 表名
- where
- 关键字段=值1 || 关键字段=值2;
-
-
- -- or关键字段的值=值1或者=值2的记录
-
- select
- *
- from
- 表名
- where
- 关键字段=值1 or 关键字段=值2;
-
-
- -- in 关键字段的值=值1或者=值2的记录
- select
- *
- from
- 表名
- where
- 关键字段 in( 值1 , 值2);
-- where条件后面可以跟某个字段为null或者部位null的格式
- -- 关键字段=null的记录
- select
- *
- from
- 表名
- where
- 关键字段 is null;
-
-
- -- 关键字段!=null的记录
- select
- *
- from
- 表名
- where
- 关键字段 is not null;
关键字like
select 指定字段列表 from 表名 where 字段名称 like '%字符%';
%:就是匹配任意字符(代表多个字符),(使用最多)
_:一个下划线代表一个任意字符值 (包含关系) ,使用不多
- -- 需求:模糊查询所有姓为马的学生所有信息
- SELECT
- *
- FROM
- student3
- WHERE
- NAME
- LIKE '%马%' ;
-
- -- 需求:查询出姓名是两个字符的学生的所有信息
- -- where 条件后面 字段名称 like '__' ;
- SELECT
- *
- FROM
- student3
- WHERE
- NAME LIKE '__' ;
-
-
- -- 需求:模糊查询 学生姓名中第二个字是化的学生所有信息
- SELECT
- *
- FROM
- student3
- WHERE
- NAME LIKE '%_化%';
-
- -- 需求:查询学生姓名是否三个字符的人
- SELECT
- *
- FROM
- student3
- WHERE
- NAME LIKE '___' ;
-- 语法 select 聚合函数(字段名称) from 表名;
- -- count(字段名称):查询当前表的记录数
- -- 一般非业务字段 id,如果业务字段的有些值null,数据存在漏洞的!
- select
- count(字段名称)
- from
- 表名;
-
- -- sum(字段名称):求和,针对某列字段值进行求和(整数)
- select
- sum(字段名称)
- from
- 表名;
-
- -- avg(字段名称):平均分函数
- select
- avg(字段名称)
- from
- 表名;
-
- --max(字段名称):最大值函数
- select
- max(字段名称)
- from
- 表名;
-
- -- min(字段名称):最小值函数
- select
- min(字段名称)
- from
- 表名;
-- 复杂查询和聚合函数一块使用
- -- 条件查询嵌套聚合函数,数学成绩大于平均分的记录
-
- SELECT
- *
- FROM
-
- student3
- WHERE
- math > (SELECT AVG(math) FROM student3) ;
-- 关键字order by
--语法:select 字段列表 from 表名 order by 字段名称 排序规则
--排序规则:asc:升序(默认值) desc:降序
- -- 数学成绩升序排序
- select
- *
- from
- student
- order by math asc;
-
- -- 英语成绩降序排序
- select
- *
- from
- student
- order by english desc;
-
-
-- 多个字段排序
-- 语法:select 字段列表 from 表名 order by 字段名称1 排序规则1 ,字段名称2 排序规则2 ;
-- 需求:查询数学成绩降序,英语成绩是升序的所有学生信息
-- 如果数学成绩相同,按照英语成绩排序规则进行操作
- -- 数学成绩降序排序,英语成绩升序排序
- select
- *
- from
- student
- order by math desc,english asc;
-
-
-
show variables like '%character%';
set character_set_client=gbk;
分组查询的时候,使用select可以查询出分组的字段
select 字段列表(包括字段分组) from 表名 group by 分组字段名称;
按照性别分组,计算出他们组的数学平均分
select sex '性别',avg(math) '数学平均分' from student group by sex;
group by和where一块使用
--where 条件必须置于group by 之前,先满足条件,才能分组
-- group by的后面不能使用聚合函数
-- having和group by:having 后面可以使用聚合函数,而且group by 不能使用聚合函数
-- where 在前面,下来group by,再是having筛选
数学成绩不大于70分的人不参与分组,筛选出总人数大于2的一组
select sex '性别' ,avg(math) '数学平均分',count(id) '总人数' from student
where math>70 group by sex having count(id)>2;
-- select 字段列表 from 表名 limit 起始行数,每页显示的条数;
-- 起始行数=(当前页码-1)*每页显示的条数
已知参数:每页显示条数3条,查询第一页的数据
select * from student limit 0,3;
-- 第二页数据
select * from student limit 3,,3;
作业:
- USE ee_2204_02;
- CREATE TABLE student(
- id INT, -- id编号
- NAME VARCHAR(20), -- 姓名
- chinese INT, -- 语文
- english INT, -- 英语
- math INT -- 数学
- );
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(1,'行哥',89,78,90);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(2,'潘金莲',67,53,95);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(3,'凤姐',87,78,77);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(4,'旺财',88,98,92);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(5,'白小黑',82,84,67);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(6,'白小黄',55,85,45);
- INSERT INTO student(id,NAME,chinese,english,math) VALUES(7,'范蹦蹦',75,65,30);
- -- 查询表中所有学生的信息
- SELECT* FROM student;
-
- -- 查询表中所有学生的姓名和英语成绩
- SELECT
- NAME,english
- FROM
- student;
-
- -- 过滤表中重复数据(去重关键字distinct)
- SELECT
- DISTINCT english
- FROM
- student;
-
- -- 统计每个学生的总分
- SELECT
- id '编号',
- NAME '姓名',
- (chinese+english+math)'总分'
- FROM
- student;
-
- -- 总分数上加上10分特长分
- SELECT
- id '编号',
- NAME '姓名',
- (chinese+english+math+10)'总分'
- FROM
- student;
-
- -- 使用别名表示学生分数
- SELECT
- s.`id` '编号',
- s.`name` '姓名',
- s.`chinese`'语文',
- s.`english` '英语',
- s.`math` '数学',
- (chinese+english+math+10)'总分'
- FROM
- student s;
-
- -- 查询姓名为行哥的学生成绩
- SELECT
- *
- FROM
- student
- WHERE NAME='行哥';
-
- -- 查询英语成绩大于90分的同学
- SELECT
- *
- FROM
- student
- WHERE
- english>90;
-
- -- 查询总分大于200分的所有同学
- SELECT
- *
- FROM
- student
- WHERE (chinese+english+math)>200;
-
- -- 查询英语分数在80-90之间的同学
- SELECT
- *
- FROM
- student
- WHERE
- english BETWEEN 80 AND 90;
-
- -- 查询数学分数为89,90,91的同学
- SELECT
- *
- FROM
- student
- WHERE
- math IN(89,90,91);
-
- -- 查询所有姓白的同学的英语成绩
- SELECT
- NAME '姓名',
- english '英语成绩'
- FROM
- student
- WHERE
- NAME LIKE '%白%' ;
-
- -- 查询数学分>80并且语文分>80的同学
- SELECT
- *
- FROM
- student
- WHERE
- math>80 AND chinese>80;
-
- -- 查询英语>80或者总分>200的同学
- SELECT
- *
- FROM
- student
- WHERE
- english>80 OR (chinese+english+math)>200;
-
- -- 对数学成绩升序排序
- SELECT
- *
- FROM
- student
- ORDER BY math ASC;
-
- -- 对总分降序排序,然后再按数学从高到低的顺序输出
- SELECT
- *
- FROM
- student
- ORDER BY (chinese+english+math) DESC,math DESC;
-
- -- 对姓白的学生成绩排序输出(排序规则自己定义)
- SELECT
- *
- FROM
- student
- WHERE NAME LIKE '%白%'
- ORDER BY math ASC;
-
- -- 查询数学成绩大于等于平均分的所有学生信息
- SELECT
- *
- FROM
- student
- WHERE
- math>=(SELECT AVG(math) FROM student);
-
- -- 查询出英语成绩最高分的学生信息
- SELECT
- *
- FROM
- student
- WHERE
- english=(SELECT MAX(english) FROM student);
-
- -- 模糊查询出学生姓名中第二个字是金的学生信息
- SELECT
- *
- FROM
- student
- WHERE
- NAME LIKE '%_金%';
-
- -- 查询出英语成绩平均分是多少
- SELECT
- AVG(english)
-
- FROM
- student;
-
- -- 查询出数学总分是多少
- SELECT
- SUM(math)
- FROM
- student;
-
- -- 查询学生表中有多少条记录
- SELECT
- COUNT(id)
- FROM
- student;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。