数据查询语言(DQL)

目录

1.简单查询数据

2.比较查询:

3.范围查询

4.逻辑查询

5.模糊查询

6.非空查询

7.排序查询

8.聚合查询

例题

1.简单查询数据
# 查询表内所有数据
select * from 表名;

# 查询表内数据,以指定的列来显示结果
select [distinct] 字段名1,字段名2,... from 表名;

说明: 查询出数据内容,通常称为结果集。

2.比较查询
#对数据进行条件筛选
select [*|字段名1, 字段名2, ...] from 表名 where 条件;

说明:

        1)当条件结果为True时,才能查询出数据结果。

        2)在where 条件中,使用比较运算符来查询结果。

比较运算符有:

说明: 比较运算符的所有符号都是英文状态下的符号。

3.范围查询

范围查询是指在某个范围内进行查询,分别有in和between...and...。

(A)in是用于非连续值的范围查询,语法:

select * from 表名 where 字段名 in (范围值1,范围值2,...);

(B)between and 是用于值在连续范围的查询,语法:

select * from 表名 where 字段名 between 范围值1 and 范围值2
4.逻辑查询
#对数据进行条件筛选处理
select [*|字段名1, 字段名2, ...] from 表名 where 条件;

说明: 当条件结果为True时,才能查询出数据结果。

逻辑运算符有:

5.模糊查询
select * from 表名 where 字段名 like '%某个字%'; 
或
select * from 表名 where 字段名 like '某个字_';

说明: %表示任意多个任意字符,_表示一个任意字符。

6.非空查询
select * from 表名 where 字段名 [条件]; 

说明: [条件]部分就可以使用空或非空来表示。

非空运算符有:

说明: 此处的等于需要使用is来表示,可以简单的理解为是用于判断null对象。

7.排序查询
#SQL查询通用语法
select [*|字段名1,字段名2,...|函数(...)] from 表名 where 条件 另外的要求;

#排序查询:对某字段进行升序或降序的形式来查询结果
select * from 表名 where 条件 order by 字段名 [asc|desc];

说明:

        1)asc从小到大排列,即升序;

        2)desc从大到小排序,即降序;

        3)默认按照列值从小到大进行排序(即asc升序)。

8.聚合查询
select 函数(...) from 表名 [where 条件];

说明: 函数(...)指的是聚合函数。

聚合函数有:

说明:

        1)聚合函数是用于对一列数据进行统计,结果会返回一个单一的值;

        2)注意:聚合函数会忽略空值进行统计处理。

动动手,练习一下吧~

例题:

先来创建一个数据库db_1,设定编码为utf8;

在库中创建一个worker表, 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等


#创建数据库
create database db_2;
#使用数据库
use db_2;
#创建worker表
create table worker (
部门号 int(11) NOT NULL,
职工号 int(11) primary key,
工作时间 date NOT NULL,
工资 float(8,2) NOT NULL,
政治面貌 varchar(10) NOT NULL default '群众',
姓名 varchar(20) NOT NULL,
出生日期 date NOT NULL
) engine=InnoDB default charset=utf8 ;
#插入数据
INSERT INTO worker (部门号, 职工号, 工作时间, 工资, 政治面貌, 姓名, 出生日期) VALUES (101, 1001, '2015-5-4', 3500.00, '群众', '张三', '1990-7-1');
INSERT INTO worker (部门号, 职工号, 工作时间, 工资, 政治面貌, 姓名, 出生日期) VALUES (101, 1002, '2017-2-6', 3200.00, '团员', '李四', '1997-2-8');
INSERT INTO worker (部门号, 职工号, 工作时间, 工资, 政治面貌, 姓名, 出生日期) VALUES (102, 1003, '2011-1-4', 8500.00,'团员', '王亮', '1983-6-8');
INSERT INTO worker (部门号, 职工号, 工作时间, 工资, 政治面貌, 姓名, 出生日期) VALUES (102, 1004, '2016-10-10', 5500.00,'群众', '赵六', '1994-9-5');
INSERT INTO worker (部门号, 职工号, 工作时间, 工资, 政治面貌, 姓名, 出生日期) VALUES (102, 1005, '2014-4-1', 4800.00,'党员', '钱七', '1992-12-30');
INSERT INTO worker (部门号, 职工号, 工作时间, 工资, 政治面貌, 姓名, 出生日期) VALUES (102, 1006, '2017-5-5', 4500.00,'党员', '孙八', '1996-9-1');

1、显示所有职工的基本信息。
2、查询所有职工所属部门的部门号,不显示重复的部门号。
3、求出所有职工的人数。
4、列出最高工和最低工资。
5、列出职工的平均工资和总工资。
6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。
7、列出所有姓刘的职工的职工号、姓名和出生日期。
8、列出1960年以前出生的职工的姓名、参加工作日期。
9、列出工资在1000-2000之间的所有职工姓名。
10、列出所有陈姓和李姓的职工姓名。
11、列出所有部门号为2和3的职工号、姓名、党员否。
12、将职工表worker中的职工按出生的先后顺序排序。
13、显示工资最高的前3名职工的职工号和姓名。
14、求出各部门党员的人数。
15、统计各部门的工资和平均工资
16、列出总人数大于4的部门号和总人数。

# 1、显示所有职工的基本信息。
    select * from worker;
# 2、查询所有职工所属部门的部门号,不显示重复的部门号。
    select distinct 部门号 from worker;
# 3、求出所有职工的人数。
    select count(职工号) from worker;
# 4、列出最高工和最低工资。
    select max(工资),min(工资) from worker;
# 5、列出职工的平均工资和总工资。as 起别名
    select avg(工资) as 平均工资,sum(工资) as 总工资 from worker;
# 6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。
    select 职工号,姓名,工作时间 from worker as worker_data;
# 7、列出所有姓张的职工的职工号、姓名和出生日期。
    select 职工号,姓名,出生日期 from worker where 姓名 like '张%';
# 8、列出1990年以前出生的职工的姓名、参加工作日期。  year()只取日期中的年份
    select 姓名,工作时间,出生日期 from worker where year(出生日期)<'1990';
# 9、列出工资在3000-4000之间的所有职工姓名。
    select 姓名 from worker where 工资 between 3000 and 4000;
# 10、列出所有孙姓和李姓的职工姓名。
    select 部门号,姓名 from worker where 姓名 like '孙%' or 姓名 like '李%';
# 11、列出所有部门号为102和103的职工号、姓名。
    select 职工号,姓名 from worker where 部门号=102 or 部门号=103;
# 12、将职工表worker中的职工按出生的先后顺序排序。
    select 姓名,出生日期 from worker order by 出生日期;
# 13、显示工资最高的前3名职工的职工号和姓名。  limit a:取前a行
    select 职工号,姓名,工资 from worker order by 工资 desc limit 3;
# 14、求出各部门党员的人数。
    select 部门号,count(姓名) from worker where 政治面貌 = '党员' group by 部门号;
# 15、统计各部门的平均工资
    select 部门号,avg(工资) from worker group by 部门号 ;
# 16、列出总人数大于4的部门号和总人数。
    select 部门号,count(职工号) as 总人数 from worker group by 部门号 having count(职工号)>=4;
  • 28
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值