DQL: 查询表中的记录

本贴最后更新于 1461 天前,其中的信息可能已经时异事殊

语法:

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 字段名 FROM 表名;
  • 只对一列操作
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 + 固定值 FROM 表名;
    SELECT 列名 1 + 列名 2 FROM 表名;

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

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

起别名

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

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

条件查询

  • 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 '%德%';
  • SQL
    124 引用 • 296 回帖 • 3 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...