DQL数据查询语句
以表为例
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,'Simeon',55,'男', ' 杭州',66,78),
(2,'Snow',45,'女','深圳',98,87),
(3,'Lcay',55,'男','香港',56,77),
(4,'LiLi',20,'女','湖南',76,65),
(5,'Long',20,'男','湖南',86,NULL),
(6,'Steven',57,'男','香港',99,99),
(7,'Mike',22,'女','香港',99,99),
(8,'LeiLei',18,'男','南京',56,65);
一、查询语句
1.语法形式
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序方式
limit
分页限定
2.基础查询
1.多个字段的查询
select 字段名1,字段名2,.... from 表名
若查询所有的字段,可以用 *来代替,即 select * from 表名
2.去除重复 distinct
SELECT DISTINCT address FROM student
3.计算列的值
*一般可以使用四则运算计算一些列的值(一般只会进行数值型的计算)
计算形式:select 字段名1 四则运算符 字段名2 from 表名
SELECT math+english FROM student
* 若所在的列含有null值(null与任何值计算都为null),则有如下形式
select 字段名1 四则运算符 IFNULL(表达式1,表时式2) from 表名
表达式1:那个字段需要判断为null
表达式2:null的替换值
SELECT math+IFNULL(english,0) FROM student
4.起别名 as(可省略)
SELECT math+IFNULL(english,0) AS 总分数 FROM student
3.条件查询
1. where子句后跟条件
2. 运算符
* > 、< 、<= 、>= 、= 、<>
* BETWEEN...AND
* IN( 集合)
* LIKE:模糊查询
* 占位符:
* _:单个任意字符
* %:多个任意字符
* IS NULL
* and 或 &&
* or 或 ||
* not 或 !
查询年龄大于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和不为null
SELECT * FROM student WHERE english IS NULL;
SELECT * FROM student WHERE english IS NOT NULL;
LIKE模糊查询
%表示任何字符出现的任意次数
下划线(_)匹配单个字符
SELECT NAME FROM student WHERE NAME LIKE '%S%'
SELECT NAME FROM student WHERE NAME LIKE '_n%'