select * from 表名;
一、语法:
select 字段列表
from 表名列表
here 条件列表
group by 分组字段
having 分组之后的条件
order by 排序
limit 分页限定
先利用上一讲的知识创建以下表格及数据
二、基础查询
2.1查询表中所有列数据(多个字段的查询)
2.1.1写出查询每列的名称
SELECT 字段名, 字段名 FROM 表名;
SELECT -- 表示查询
FROM -- 从哪个表查询
具体操作:
SELECT id, NAME ,age, sex, address FROM student2;
2.1.2.使用*表示所有列
SELECT * FROM 表名;
具体操作:
SELECT * FROM student2;
2.2查询表中指定列数据
查询指定列的数据,多个列之间以逗号分隔
SELECT 字段名1, 字段名2 FROM 表名;
具体操作:
查询student表中的name 和 age 列
SELECT NAME, age FROM student2;
2.3 别名查询
1.查询时给列、表指定别名需要使用AS关键字
2.使用别名的好处是方便观看和处理查询到的数据
SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;
SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名;
注意:
查询给表取别名目前还看不到效果,需要到多表查询的时候才能体现出好处
AS关键字可以省略
具体操作:
查询sudent表中name 和 age 列,
name列的别名为”姓名”,age列的别名为”年龄”
SELECT NAME AS 姓名, age AS 年龄 FROM student2;
2.4清除重复值:
查询指定列并且结果不出现重复数据
SELECT DISTINCT 字段名 FROM 表名;
具体操作:
查询address列并且结果不出现重复的address
SELECT DISTINCT address 城市 FROM student2;
2.5查询结果参与运算
2.5.1.某列数据和固定值运算
SELECT 字段名 + 数值 FROM 表名;
2.5.2.某列数据和其他列数据参与运算
SELECT 字段1 + 字段2 FROM 表名;
注意: 参与运算的必须是数值类型
2.5.3需求:
添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩
查询的时候将数学和英语的成绩相加
2.5.4.实现:
修改student2表结构,添加数学和英语成绩列
ALTER TABLE student2 ADD math INT;
ALTER TABLE student2 ADD english INT;
给每条记录添加对应的数学和英语成绩
查询math + english的和
SELECT math + english FROM student2;
结果确实将每条记录的math和english相加,但是效果不好看
查询math + english的和使用别名”总成绩”
SELECT math + english 总成绩 FROM student2;
查询姓名、年龄,将每个人的数学增加10分
SELECT name, math + 10 FROM student2;
SELECT name, math + 10 数学加10分 FROM student2;
SELECT age, math + 10 数学加10分 FROM student2;
SELECT age, math + 10 FROM student2;
三、条件查询
- where子句后跟条件
- 运算符
、< 、<= 、>= 、= 、<>
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
SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 判断
SELECT * FROM student WHERE english IS NULL;
-- 查询英语成绩不为null
SELECT * FROM student WHERE english IS NOT NULL;
-- 查询姓马的有哪些? 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 '%德%';