DQL语句

DQL语句

查询不会对数据库中的数据进行修改.只是一种显示数据的方式

Data Query Language DQL 数据查询语句,用于查询

简单查询

查询表所有行和列的数据

 使用*表示所有列
SELECT * FROM 表名;
 具体操作:
SELECT * FROM student;

写出查询每列的名称
SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;
 具体操作:
SELECT id, NAME ,age, sex, address FROM student;

查询指定列

 查询指定列的数据,多个列之间以逗号分隔
SELECT 字段名 1, 字段名 2... FROM 表名;

 查询 student 表中的 name 和 age 列
SELECT NAME, age FROM student;

别名查询

-- 使用关键字 -- 查询时给列、表指定别名需要使用 AS 关键字
 使用别名的好处:是方便观看和处理查询到的数据

 语法:
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名; 
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS 表别名;


具体操作:
 查询 sudent 表中 name 和 age 列,name 列的别名为”姓名”,age 列的别名为”年龄”
SELECT NAME AS 姓名, age AS 年龄 FROM student;

 查询 sudent 表中 name 和 age 列,student 表别名为 s
SELECT NAME, age FROM student AS s;

清除重复值

查询指定列并且结果不出现重复数据
SELECT DISTINCT 字段名 FROM 表名;

具体操作:
 查询 name,age 列并且结果不出现重复 name
SELECT DISTINCT NAME, age FROM student;

查询结果参与运算

某列数据和固定值运算
SELECT 列名 1 + 固定值 FROM 表名;

某列数据和其他列数据参与运算
SELECT 列名 1 + 列名 2 FROM 表名;
-- 注意: 参与运算的必须是数值类型
-- 需求:
-- 添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩
-- 查询的时候将数学和英语的成绩相加
-- 实现:
-- 修改 student 表结构,添加数学和英语成绩列

添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩
ALTER TABLE student ADD math INT;
ALTER TABLE student ADD english INT;

给每条记录添加对应的数学和英语成绩
 查询 math + english 的和
SELECT math + english FROM student;

 结果确实将每条记录的 math 和 english 相加,但是效果不好看
 查询 math + english 的和使用别名”总成绩”
SELECT math + english 总成绩 FROM student;

 查询所有列与 math + english 的和并使用别名”总成绩”
SELECT *, math + english 总成绩 FROM student;
 查询姓名、年龄,将每个人的年龄增加 10
SELECT name, age + 10 FROM student;

条件查询

前面我们的查询都是将所有数据都查询出来,但是有时候我们只想获取到满足条件的数据
语法格式:SELECT 字段名 FROM 表名 WHERE 条件;
流程:取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回
准备数据
CREATE TABLE student3 (
 id int,
 name varchar(20),
 age int,
 sex varchar(5),
 address varchar(100),
 math int,
 english int
);
INSERT INTO student3(id,NAME,age,sex,address,math,english) 
VALUES (1,'马云',55,'男','杭州',66,78),(2,'马化腾',45,'女','深圳',98,87),
       (3,'马景涛',55,'男','香港',56,77),(4,'柳岩',20,'女','湖南',76,65),
       (5,'柳青',20,'男','湖南',86,NULL),(6,'刘德华',57,'男','香港',99,99),
       (7,'马德',22,'女','香港',99,99),(8,'德玛西亚',18,'男','南京',56,65);

比较运算符

-- 大于 <小于 <=小于等于 >=大于等于 =等于 <>、!=不等于

具体操作:
查询 math 分数大于 80 分的学生
SELECT * FROM student3 WHERE math>80;

查询 english 分数小于或等于 80 分的学生
SELECT * FROM student3 WHERE english<=80;

查询 age 等于 20 岁的学生
SELECT * FROM student3 WHERE age=20;

查询 age 不等于 20 岁的学生
-- SELECT * FROM student3 WHERE age!=20;不推荐
SELECT * FROM student3 WHERE age<>20;

逻辑运算符

-- and(&&) 多个条件同时满足 or(||) 多个条件其中一个满足 not(!) 不满足

具体操作:
查询 age 大于 35 且性别为男的学生(两个条件同时满足)
SELECT * FROM student3 WHERE age>35 AND sex='男';

查询 age 大于 35 或性别为男的学生(两个条件其中一个满足)
SELECT * FROM student333 WHERE age>35 OR sex='男';

查询 id 是 135 的学生
SELECT * FROM student3 WHERE id=1 OR id=3 OR id=5;

in 关键字

语法格式:SELECT 字段名 FROM 表名 WHERE 字段 IN (数据 1, 数据 2...);
IN 里面的每个数据都会作为一次条件,只要满足条件的就会显示

具体操作:
• 查询 id 是 135 的学生
SELECT * FROM student3 WHERE id IN (1,3,5);

• 查询 id 不是 135 的学生
SELECT * FROM student3 WHERE id NOT IN (1,3,5);

范围查询

BETWEEN1 AND2 表示从值 1 到值 2 范围,包头又包尾 
比如:age BETWEEN 80 AND 100
相当于: age>=80 && age<=100

具体操作:
查询 english 成绩大于等于 75,且小于等于 90 的学生
SELECT * FROM student3 WHERE english>=75 AND english<=90;
SELECT * FROM student3 WHERE english BETWEEN 75 AND 90;

like 关键字

-- LIKE 表示模糊查询 
SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串'; 

满足通配符字符串规则的数据就会显示出来 
所谓的通配符字符串就是含有通配符的字符串 MySQL 通配符有两个: 
-- %:表示 0 个或多个字符(任意个字符) 
-- _: 表示一个字符

具体操作:
• 查询姓马的学生
SELECT * FROM student3 WHERE NAME LIKE '马%';

• 查询姓名中包含'德'字的学生
SELECT * FROM student3 WHERE NAME LIKE '%德%';

• 查询姓马,且姓名有三个字的学生
SELECT * FROM student3 WHERE NAME LIKE '马__';

猜你喜欢

转载自blog.csdn.net/h294590501/article/details/80344719