DQL: 查询表中的记录

辰远的博客 There is no born master, there is no forever rookie. 本文由博客端 https://101.37.34.184 主动推送

语法:

select * from 表名;
select 字段名 1, 字段名 2, 字段名 3, ... from 表名;
select 列名 from 表名 [where 条件表达式]

1.SELECT 命令可以读取一行或者多行记录。
2.你可以使用星号(*)来代替其他字段,SELECT 语句会返回表的所有字段数据
3.你可以使用 WHERE 语句来包含任何条件。

使用*表示查询所有的学生:

select * from student;

查询 student 表中的 name 和 age 列

select name,age from student;

去除重复:distinct

select distinct country from person

20200311213259347.png

select distinct country, province from person

20200311213351424.png

从上例中可以发现,当 distinct 应用到多个字段的时候,其应用的范围是其后面的所有字段,而不只是紧挨着它的一个字段,而且 distinct 只能放到所有字段的前面,如下语句是错误的:

SELECT country, distinct province from person; // 该语句是错误的

计算列

注意: 参与运算的必须是数值类型

起别名

SELECT 字段名1 AS 别名, 字段名2 AS 别名... 	FROM 表名;
- 对列和表同时指定别名
SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名;

SELECT 字段名 1 别名, 字段名 2 别名... FROM 表名;
as:as 也可以省略

条件查询

查询年龄大于 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 '%德%';
  • SQL
    99 引用 • 285 回帖 • 3 关注

赞助商 我要投放

回帖
请输入回帖内容 ...