MySQL数据检索

本文详细介绍了MySQL中的数据查询,包括基本SELECT语句的使用,如何从单表中筛选信息,如使用WHERE子句、DISTINCT关键字、LIKE操作符进行条件过滤,以及如何处理空值。此外,还给出了各种查询示例,如范围查询、多条件查询和模糊匹配查询。
摘要由CSDN通过智能技术生成

数据检索

一.基 本 语 句 查 询
1.select 语句是SQL语言从数据库中获取信息的一个基本语句。该语句可以实现从一个或多个数据库中的一个或多个表中查询信息,并将结果显示为另外一个二维表的形式,称之为结果集(result set)。
格式归纳:
select [all|distinct]selection_list
from table_source [where search_condition]
[group by grouping_columns][with rollup]
[having search_condition]
[order by order_expression [asc|desc]]
[limit count]
2.select 语句的简单应用
1)使用select语句查询一个数据表。使用select语句时,首先要确定所要查询的列。“*”代表所有的列。

mysql> use teaching;
       Database changed
mysql> select * from course;

2)查询表中的指定列。针对表中的多列进行查询,只要在select后面指定要查询的列名即可,多列之间用“,”分隔。

mysql> select studentno,sname,phone from student; 

3)在对多个表进行查询时,同样使用“,”对多个表进行分隔。也可以通过where子句中使用连接运算来确定表之间的联系。
二.单 表 查 询
1.select…from基本子句的使用
1)为字段取名
Select子句的主要功能是输出字段或表达式的值,form子句的主要功能是指定数据源。
例子:在student表中查询出生日期在2001年以后的学生的学号、姓名、电话和年龄。

mysql> select studentno as '学号',sname as '姓名',
    -> phone as '手机号',year(now())-year(birthdate) as '年龄'
    -> from student
    -> where year(birthdate)>2001;

2)使用谓词过滤记录
如果希望一个列表没有重复值,可以利用distinct子句从结果集中除去重复的行。当使用distinct子句时,需要注意以下事项:
(1)选择列表的行集中,所有值的组合决定行的唯一性。
(2)数据检索包含任何唯一值组合的行,如果不指定distinct子句则将所有行返回到结果集中。
例子:在score表中查询期末成绩中有高于95的学生的学号和课程号,并按照学号排序。

mysql> select distinct studentno,courseno
    -> from score
    -> where final>95
    -> order by studentno;

2.使用where 子句过滤结果集
1)查询符合指定条件的记录数据
例子:查询表student中入学成绩在800分以上的学生的学号、姓名和电话信息。

mysql> select studentno,sname,phone
    -> from student
    -> where entrance>800;

2)带in关键字的查询
in关键字可以判断某个字段的值是否在于指定的集合中。
例子:查询学号分别为的18135222201、18137221508和19123567897的学生学号、课程号、平时成绩和期末成绩。

mysql> select studentno,courseno ,daily ,final
    -> from score
    -> where studentno in('18135222201','18137221508','19123567897');

3)带between and 的范围查询

在where子句中,可以使用between搜索条件检索指定范围内的行。使用between搜索条件时,使用between搜索条件相当于用and连接两个比较条件。
例子:查询选修课程号为c05109 的学生学号和期末成绩,并且要求平时成绩在80到95之间。

mysql> select studentno, final
    -> from score
    -> where courseno='c05109' and daily between 80 and 95;

4)带like的字符匹配查询
like属于较常用的比较运算符,通过它可以实现模糊查询。它有两种通配符:“%”和下划线“”:
!!“%”可以匹配一个或多个字符,可以代表任意长度的字符串,长度可以为0。
!!“­
”只匹配一个字符。
例子:在student表中显示所有姓何或姓韩的学生的姓名、生日和Email。

mysql> select sname, birthdate, Email
-> from student
-> where sname like '何%' or sname like '韩%';

5)用is null 关键字查询空值
说明:
(1)一个字段值是空值或者不是空值,要表示为:“is null”或“is not null”。不能表示为:“=null”或“<>null”。
(2)如果写成 “字段=null”或“字段<>null”,系统的运行结果都直接处理为null值,按照false处理而不报错。
(3)where子句有以下通用格式: column is [not] null
例子:在se_score表中添加成绩字段score,查询se_score表中学生的学号、课程号和成绩。

mysql> alter table se_course
    -> add score float(3,1) null after teacherno;
Query OK, 0 rows affected(1.27 sec)
mysql> select studentno, courseno,teacherno, score
    -> from se_course
    -> where score is null;

6)带and的多条件查询
例子:在score表中显示期中高于90分、期末成绩高于85分的学生学号、课程号和成绩。

mysql> select studentno,courseno,daily,final
    -> from score
    -> where daily >=90 and final >= 85;

7)带or的多条件查询
例子:查询计算机学院的具有高级职称教师的教师号、姓名和从事专业。

mysql> select teacherno,tname, major
    -> from teacher
    -> where department='计算机学院' and (prof='副教授'or prof='教授');
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值