MySQl基础入门⑫

上一遍文章内容

查询时选择行

1.查询指定记录

假设students表包含字段name, major, 和 email,我们可以构造一个查询来找出所有专业为“计算机科学”且邮箱中包含"@university.edu"的学生姓名和邮箱:

SELECT name, email FROM students WHERE major = '计算机科学' AND email LIKE '%@example.com';

这个查询将返回满足条件(专业是“计算机科学”,并且邮箱地址包含"@example.com")的所有学生的姓名和邮箱信息。
在这里插入图片描述

2.带IN关键字的查询

假设students表有一个字段major,我们想查询专业为“计算机科学”或“数学与应用数学”的所有学生信息,可以使用IN关键字来实现:

SELECT * FROM students WHERE major IN ('计算机科学', '数学与应用数学');

这个查询将返回在students表中专业为“计算机科学”或“数学与应用数学”的所有学生的完整记录。
在这里插入图片描述
当然,如果你想查询特定字段(比如姓名name和邮箱email),可以这样指定:

SELECT name, email FROM students WHERE major IN ('计算机科学', '数学与应用数学');

这个查询将只返回在students表中专业为“计算机科学”或“数学与应用数学”的学生的姓名和邮箱信息。
在这里插入图片描述

where 写=、<>、!=、>=、<=、Between的6种用法

先给表添加年龄和成绩的字段属性
在这里插入图片描述

ALTER TABLE students ADD age INT,ADD grade VARCHAR(10);

再查看表结构是否发生改变
desc students

随机给年龄和成绩添加值
你应该使用UPDATE语句假设这些学生已经存在于数据库中,并且他们的id是从1到10,你可以这样更新:

UPDATE students 
SET age = CASE id 
            WHEN 1 THEN 20 
            WHEN 2 THEN 21 
            WHEN 3 THEN 19 
            WHEN 4 THEN 20 
            WHEN 5 THEN 21 
            WHEN 6 THEN 18 
            WHEN 7 THEN 22 
            WHEN 8 THEN 19 
            WHEN 9 THEN 20 
            WHEN 10 THEN 21 
        END,
    grade = CASE id 
              WHEN 1 THEN 95 
              WHEN 2 THEN 85 
              WHEN 3 THEN 90 
              WHEN 4 THEN 88 
              WHEN 5 THEN 92 
              WHEN 6 THEN 80 
              WHEN 7 THEN 93 
              WHEN 8 THEN 87 
              WHEN 9 THEN 91 
              WHEN 10 THEN 89 
          END
WHERE id BETWEEN 1 AND 10;

请注意,这里我们假设id字段确实是主键,并且存在对应的记录。此外,这种方法适用于每个id都有唯一对应的新年龄和成绩的情况。如果不同id有相同的年龄或成绩,可以直接用等值条件来简化UPDATE语句。
在这里插入图片描述

1. 查询所有专业为“计算机科学”的学生信息:

SELECT * FROM students WHERE major = '计算机科学';

在这里插入图片描述

2. 查询所有专业不为“数学与应用数学”的学生信息:

SELECT * FROM students WHERE major <> '数学与应用数学' OR major != '数学与应用数学'; 
-- 在SQL中,<>和!=的效果是一样的

在这里插入图片描述

3. 查询序号(id)大于等于5的学生信息:

**SELECT * FROM students WHERE id >= 5;**

在这里插入图片描述

4. 查询年龄(假设字段名为age)小于等于20的学生信息:

SELECT * FROM students WHERE age <= 20;

在这里插入图片描述

5. 查询成绩(假设字段名为grade)在80到90分之间的学生信息(包括80和90分):

SELECT * FROM students WHERE grade BETWEEN 80 AND 90;

在这里插入图片描述


BETWEEN AND的范围查询

假设在students表中有一个年龄(age)字段,你想查询年龄在18岁到25岁之间的所有学生信息,可以使用BETWEEN关键字来实现:

SELECT * FROM students WHERE age BETWEEN 18 AND 25;

这个SQL语句将返回students表中所有年龄在18岁至25岁(包括18岁和25岁)的学生的所有信息。如果需要指定查询特定字段,比如只查询姓名(name)和邮箱(email),则修改为:

SELECT name, email FROM students WHERE age BETWEEN 18 AND 25;

同样地,若成绩(grade)字段是数值类型,并且你想查询成绩在80分到90分之间(含80和90分)的学生,则可以这样写:

SELECT * FROM students WHERE grade BETWEEN 80 AND 90;

LIKE的字符串匹配查询

假设在students表中有一个字段email,你想查询所有电子邮件地址包含"@university.com"的学生信息,可以使用LIKE关键字来实现:

SELECT * FROM students WHERE email LIKE '%@university.com';

这个SQL语句将返回students表中所有邮箱地址含有"@university.com"子串的学生的所有信息。如果你想只查询特定字段(如姓名name和专业major),则可以这样写:

SELECT name, major FROM students WHERE email LIKE '%@university.com';

这里的'%@university.com'是一个通配符表达式,其中%表示任意数量的任意字符,@university.com是我们要匹配的部分。


空值查询

students表中添加一个新字段(例如:phone_number),可以使用ALTER TABLE语句。假设你想要添加的电话号码是一个字符串类型,你可以这样操作:

ALTER TABLE studentsADD COLUMN phone_number VARCHAR(20) DEFAULT NULL; -- 设置默认值为NULL,允许为空

执行上述命令后,students表中就会新增一个名为phone_number的字段,并且根据你的设定可能是可空的,并带有默认值(如果设置了的话)。然后你就可以开始向这个字段插入数据了。

若需要同时创建并填充该字段的数据,请参考以下示例(假设已知每个学生的电话号码):

UPDATE students
SET phone_number = CASE id 
                     WHEN 1 THEN '1234567890'
                     WHEN 2 THEN '0987654321'
                     -- ...以此类推,直到id=10的学生
                     WHEN 10 THEN '0987654321' 
                  END
WHERE id BETWEEN 1 AND 10;

这里需要注意的是,你需要根据实际情况替换每个学生对应的电话号码。

假设在students表中有一个字段phone_number,你想查询所有电话号码为空(即没有填写电话号码)的学生信息,可以使用IS NULL关键字来实现:

SELECT * FROM students WHERE phone_number IS NULL;

这个SQL语句将返回students表中所有电话号码字段为空的所有学生的所有信息。如果你想只查询特定字段(如姓名name和邮箱email),则可以这样写:

SELECT name, email FROM students WHERE phone_number IS NULL;

以上查询将会列出那些电话号码未填写的学生的姓名和邮箱地址。


带AND的多条件查询语句

假设在students表中,你想要查询所有年龄大于18岁并且专业为"计算机科学"的学生信息。可以这样写:

SELECT * FROM students WHERE age > 18 AND major = '计算机科学';

这个SQL语句将返回students表中所有满足条件(年龄大于18岁且专业为“计算机科学”)的学生的所有信息。

如果你想查询特定字段,例如姓名(name)和邮箱(email),则修改为:

SELECT name, email FROM students WHERE age > 18 AND major = '计算机科学';

假设在students表中有以下字段:id, name, age, majorregistration_year。现在,你想要查询所有年龄大于18岁、专业为"计算机科学"且注册年份为2020年的学生姓名及专业,可以使用如下SQL语句:

SELECT name, major FROM students WHERE age > 18 AND major = '计算机科学' AND registration_year = 2020;

registration_year字段 你自己添加
这个查询将返回满足所有条件(年龄大于18岁、专业为“计算机科学”以及注册年份为2020年)的学生的姓名和专业信息。


查询不同的值

students表中,假设我们想查询所有具有不同成绩(grade)的学生姓名和成绩,可以使用DISTINCT关键字来实现:

SELECT DISTINCT name, grade FROM students;

这个SQL语句将返回students表中所有不同的成绩及其对应的学生姓名。这里的“不同值”指的是去除重复的成绩记录,每个唯一的成绩只显示一次,并且与之关联的学生姓名也会显示出来。


显示前N行数据

students表中,假设你想要显示前5行的学生信息,可以使用LIMIT关键字来实现:

SELECT * FROM students LIMIT 5;

这个SQL语句将返回students表中的前5条记录,即前5名学生的所有信息。

如果你想按照某个特定字段(例如:成绩grade)降序排列后取前5名,可以这样写:

SELECT * FROM students ORDER BY grade DESC LIMIT 5;

上述查询将首先根据成绩从高到低排序,然后返回最高的5个成绩对应的学生的所有信息。如果想按其他字段排序,只需替换grade为相应的字段名即可。

相关推荐

  1. MySQL入门到精通——基础

    2024-03-21 15:42:02       15 阅读
  2. Mysql入门基础教程(第一部分)

    2024-03-21 15:42:02       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-21 15:42:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-21 15:42:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-21 15:42:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-21 15:42:02       20 阅读

热门阅读

  1. 【进阶版讲解深度学习如何入门?】

    2024-03-21 15:42:02       16 阅读
  2. 关于直接赋值对象导致响应式丢失

    2024-03-21 15:42:02       20 阅读
  3. nginx配置详解+nginx_lua模块的使用

    2024-03-21 15:42:02       19 阅读
  4. AI程序员对程序员的影响

    2024-03-21 15:42:02       20 阅读
  5. Python实现2024春晚刘谦魔术

    2024-03-21 15:42:02       24 阅读