DQL:数据查询语言

数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:

  • SELECT <字段名表>
  • FROM <表或视图名>
  • WHERE <查询条件>

在这里插入图片描述

1. 基础查询

查询表的基本操作

select
	字段列表
from
	表名列表
where
	条件列表
group by
	分组字段
having
	分组之后的条件
order by
	排序
limit
	分页限定
1. 多个字段的查询
  • select 字段名1,字段名2… from 表名;
  -- 查询姓名和年龄
SELECT 
	NAME, -- 姓名
	age   -- 年龄
FROM 
	student; -- 学生表
  • 如果查询所有字段,则可以使用*来替代字段列表
SELECT * FROM student;
2. 去除重复
  • distinct
  -- 去除重复的结果集
SELECT DISTINCT address FROM student;
SELECT DISTINCT NAME,address FROM student;
3. 计算列
  • 一般可以使用四则运算来计算一些列数值型的值。
  -- 计算 math 和 english 分数和
SELECT NAME,math,english,math + english FROM student;
  • ifnull(表达式1,表达式2):如果有null参与运算,计算结果都为null

参数

  • 表达式1:哪个字段需要判断是否为null
  • 表达式2:如果该字段为null后的替换值。
  -- 如果有null参与运算,计算结果都为null
SELECT NAME,math,english,math + IFNULL(english,0) FROM student;
4. 起别名
  • as:as也可以省略
  -- 起别名
SELECT NAME,math,english,math + IFNULL(english,0) AS 总分 FROM student;
SELECT NAME 姓名,math 数学,english 英语,math + IFNULL(english,0) 总分 FROM student;

在这里插入图片描述

5. 代码演示
CREATE TABLE student (
 id INT , -- 编号
 NAME VARCHAR(20), -- 姓名
 age INT, -- 年龄
 sex VARCHAR(5), -- 性别
 address VARCHAR(100), -- 地址
 math INT, -- 数学
 english INT -- 英语
);

INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES 
(1,'马云',55,'男','杭州',66,78),
(2,'马化腾',45,'女','深圳',98,87),
(3,'马景涛',55,'男','香港',56,77),
(4,'柳岩',20,'女','湖南',76,55),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);

SELECT * FROM student;

  -- 查询姓名和年龄
SELECT 
	NAME, -- 姓名
	age   -- 年龄
FROM 
	student; -- 学生表
	
  -- 去除重复的结果集
SELECT DISTINCT address FROM student;
SELECT DISTINCT NAME,address FROM student;

  -- 计算 math 和 english 分数和
SELECT NAME,math,english,math + english FROM student;
  -- 如果有null参与运算,计算结果都为null
SELECT NAME,math,english,math + IFNULL(english,0) FROM student;

  -- 起别名
SELECT NAME,math,english,math + IFNULL(english,0) AS 总分 FROM student;
SELECT NAME 姓名,math 数学,english 英语,math + IFNULL(english,0) 总分 FROM student;

2. 条件查询

where子句后跟条件

1. 运算符

  • < 、<= 、>= 、= 、<>
 -- 查询年龄大于20
SELECT * FROM student WHERE age > 20;
SELECT * FROM student WHERE age >= 20;
 -- 查询年龄等于于20
SELECT * FROM student WHERE age = 20;
 -- 查询年龄不等于20
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;

2. BETWEEN…AND

 -- 查询年龄大等于20 小等于30
 SELECT * FROM student WHERE age >= 20 && age <= 30;
SELECT * FROM student WHERE age >= 20 AND age <= 30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;

3. IN( 集合)

 -- 查询年龄22, 18,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25;
SELECT * FROM student WHERE age IN (22,18,25);

4. LIKE:模糊查询

占位符:

  • 单个任意字符:_
  • 多个任意字符:%
 -- 查询姓马的有哪些
SELECT * FROM student WHERE NAME LIKE '马%';

 -- 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE '_化%';

 -- 查询姓名是三个字的人
SELECT * FROM student WHERE NAME LIKE '___';

 -- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';

5. IS NULL

 -- 查询因英语成绩为null的信息
SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = 和 != 判断
SELECT * FROM student WHERE english IS NULL;
 -- 查询因英语成绩不为null的信息
SELECT * FROM student WHERE english IS NOT NULL;

6. and 或 &&

 -- 查询年龄大等于20 小等于30
SELECT * FROM student WHERE age >= 20 && age <= 30;
SELECT * FROM student WHERE age >= 20 AND age <= 30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;

7. or 或 ||

 -- 查询年龄22, 18,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25;
SELECT * FROM student WHERE age IN (22,18,25);

8. not 或 !

 -- 查询因英语成绩为null的信息
SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = 和 != 判断
SELECT * FROM student WHERE english IS NULL;
 -- 查询因英语成绩不为null的信息
SELECT * FROM student WHERE english IS NOT NULL;

9. 代码演示

SELECT * FROM student;
 -- 查询年龄大于20
SELECT * FROM student WHERE age > 20;
SELECT * FROM student WHERE age >= 20;
 -- 查询年龄等于于20
SELECT * FROM student WHERE age = 20;
 -- 查询年龄不等于20
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;
 -- 查询年龄大等于20 小等于30
SELECT * FROM student WHERE age >= 20 && age <= 30;
SELECT * FROM student WHERE age >= 20 AND age <= 30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;
 -- 查询年龄22, 18,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25;
SELECT * FROM student WHERE age IN (22,18,25);

 -- 查询因英语成绩为null的信息
SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = 和 != 判断
SELECT * FROM student WHERE english IS NULL;
 -- 查询因英语成绩不为null的信息
SELECT * FROM student WHERE english IS NOT NULL;

 -- 查询姓马的有哪些
SELECT * FROM student WHERE NAME LIKE '马%';

 -- 查询姓名第二个字是化的人
SELECT * FROM student WHERE NAME LIKE '_化%';

 -- 查询姓名是三个字的人
SELECT * FROM student WHERE NAME LIKE '___';

 -- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值