上一遍文章内容
查询时选择行
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
, major
和registration_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
为相应的字段名即可。