MySQL之DQL

本文深入探讨了SQL数据查询语言(DQL),包括查询多个字段、条件查询、模糊查询以及如何使用运算符、聚合函数和别名。通过示例展示了如何创建、更新和查询数据库表,如员工和学生信息。还介绍了如何处理NULL值,以及使用LIKE进行模糊查询。此外,文章提供了随堂测试,以加深读者对SQL查询的理解。
摘要由CSDN通过智能技术生成

数据查询语言(DQL)

DQL(Data Query Language)数据查询语言

  • 用来查询数据库中表的记录(数据)。关键字:select等
create table student(
	id int,
    name varchar(10),
    age int,
    score double(4,1),
    birth date,
    insert_time timestamp
);

添加三行数据



create table employee(
    id int, -- 员工编号
    name varchar(20),-- 姓名
    gender char(1),-- 性别
    age int,-- 年龄
    work_years int,-- 工龄
    dp varchar(20),-- 部门
    birth date,-- 生日
    salary double(8,2) -- 工资
);



添加三行数据
  • 完整的查询语法

    select
    	字段列表
    from
    	表名列表
    where
    	条件列表
    group by
    	分组字段
    having
    	分组之后的条件
    order by
    	排序
    limit
    	分页限定
    
1.多个字段查询
select 字段名1,字段名2... from 表名;
注意: 如果查询所有字段,则可以使用*来替代字段列表。
  1. 去除重复

    关键字 distinct 
    直接放在select后面
    
  2. 四则运算

    create table stu(
    	id int,
        math double(4,1),
        english double(4,1)
    );
    
    一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
    
    ifnull(表达式1,表达式2):
    null参与的运算,计算结果都为null
    表达式1:哪个字段需要判断是否为null
    表达式2: 该字段为null后的替换值。
    

    案例:计算学员的英语和数学成绩和

    select math,english,ifnull(math,0)+ifnull(english,0) from stu;
    
  3. 起别名

    字段名 后写关键字 as  或省略as 直接用空格
    
随堂测试:
1.查询员工表中所有员工的姓名和工资
2.查询所有员工的部门,并去重
3.员工表添加'津贴'这一列
4.给每个员工加上600的津贴
5.查询员工的姓名,总工资(工资和津贴之和)

-- 随堂测试答案:
-- 3.员工表添加'津贴'这一列
ALTER TABLE emp ADD bonus DOUBLE(6,2);
ALTER TABLE emp ADD column  bonus DOUBLE(6,2);

-- 4.给每个员工加上600的津贴
UPDATE emp SET bonus =600;
-- 5.查询员工的姓名,总工资(工资和津贴之和)
SELECT NAME 姓名,(IFNULL(salary,0)+bonus) 总工资 FROM emp;
2. 条件查询

条件查询需要用到where语句,where必须放到from语句表的后面

支持如下运算符

运算符说明
=等于
<>或!=不等于
<小于
<=小于等于
>大于
>=大于等于
between … and ….两个值之间,等同于 >= and <=
is null为null(is not null 不为空)
and &&并且
or或者
in包含,相当于多个or(not in不在这个范围中)
notnot可以取非,主要用在is 或in中
likelike称为模糊查询,支持%或下划线匹配 %匹配任意个字符 下划线,一个下划线只匹配一个字符
  • 案例
-- 创建表
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,'柳岩',25,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);



-- 查询年龄大于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  name, english FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 	
	SELECT  name, english FROM student WHERE english IS NULL;
			
-- 查询英语成绩不为null
	SELECT * FROM student WHERE english  IS NOT NULL;
	SELECT * FROM student WHERE NOT english  IS  NULL;
随堂测试:
1.查询工资在1000-3000之间的员工 (3种方式)
2.查询没有工资的员工 
3. 模糊查询
  • 使用关键字 like

    通配符:
    _ 匹配一个字符
    % 匹配0-n个字符
    
  • 案例

    -- 查询姓马的有哪些? like
    	SELECT * FROM student WHERE NAME LIKE '马%';
    
    -- 查询姓名第二个字是化的人
    	SELECT * FROM student WHERE NAME LIKE "_化%";
    			
    -- 查询姓名是3个字的人
    	SELECT * FROM student WHERE NAME LIKE '___';
    	
    -- 查询姓名中包含德的人
    	SELECT * FROM student WHERE NAME LIKE '%德%';
    
    随堂测试:
    1.员工表中新增多名员工:
       小马 ,野马,汗血宝马,斗气化马,种马,马如风,马到成功
    2.查询员工表中姓名为两个字的员工    
    3.查询员工表中以'马'开头的,姓名为两个字的员工   
    4.查询员工表中以'马'结尾的员工      
    5.查询员工表中姓名包含'马'的员工     
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值