数据库查询语句

1.查询全表数据

写法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
    表名;

2.冗余数据去掉

select
    distinct 关键字段
from
    表名;

3.查询时,可以将关键字段为整数类型进行求和

select
    关键字段1,
    关键字段2,
    (关键字段3+关键字段4),
    ...
from
    表名;

如果关键字段的值为null,进行数据运算时,需要给他赋一个期望值,ifnull(字段名称,期望值)
select
    关键字段1,
    关键字段2,
    (关键字段3+ifnull(关键字段4,0)),
    ...
from
    表名;


4.带条件查询

-- 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;

5.模糊查询

关键字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 '___' ;

6.聚合函数查询

-- 语法 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) ;

7.排序查询

-- 关键字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;



8.字符编码格式

show variables like '%character%';

set character_set_client=gbk;

9.分组查询

分组查询的时候,使用select可以查询出分组的字段

select 字段列表(包括字段分组) from 表名 group by 分组字段名称;

按照性别分组,计算出他们组的数学平均分

select sex '性别',avg(math) '数学平均分' from student group by sex;

group by和where一块使用

--where 条件必须置于group by 之前,先满足条件,才能分组

-- group by的后面不能使用聚合函数

10.筛选having

-- 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;

11.分页查询limit

-- 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;

  • 18
    点赞
  • 229
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
SQL数据库查询语句可以根据具体的需求使用不同的语句来实现。以下是一些常用的SQL查询语句: 1. SELECT语句:用于从数据库中选取数据。使用SELECT语句时,可以选择列名、表名和条件来筛选所需数据。例如,使用SELECT语句查询学生表中的所有学生姓名和年龄: SELECT 姓名, 年龄 FROM 学生表; 2. WHERE子句:用于在查询中添加条件。使用WHERE子句可以根据指定的条件过滤数据。例如,使用WHERE子句查询学生表中年龄大于18岁的学生: SELECT * FROM 学生表 WHERE 年龄 > 18; 3. INSERT INTO语句:用于向数据库表中插入新的数据。使用INSERT INTO语句需要指定表名和要插入的数据。例如,使用INSERT INTO语句将一条新的学生记录插入到学生表中: INSERT INTO 学生表 (姓名, 年龄, 成绩) VALUES ('张三', 20, 90); 4. UPDATE语句:用于更新数据库表中的数据。使用UPDATE语句需要指定表名、要更新的列和更新后的值,还可以使用WHERE子句来限制更新的范围。例如,使用UPDATE语句将学生表中姓为李的学生年龄更新为21岁: UPDATE 学生表 SET 年龄 = 21 WHERE 姓 = '李'; 5. DELETE语句:用于从数据库表中删除数据。使用DELETE语句需要指定表名和要删除的数据的条件。例如,使用DELETE语句删除学生表中年龄小于18岁的学生: DELETE FROM 学生表 WHERE 年龄 < 18; 请根据具体情况选择合适的SQL查询语句,并根据需要使用以上提到的语句的不同部分来构建完整的SQL查询语句

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值