MySQL怎样查询数据(单表查询语句)——MySQL5.7数据库
⽂章⽬录
数据检索是指从数据库中按照预定条件查询数据,及引⽤相关数据进⾏计算⽽获取所需信息的过程。
MySQL是通过select语句查询实现数据检索的。
何云辉 CSDN ⼀、基本查询语句。
select 语句是SQL语⾔从数据库中获取信息的⼀个基本语句。该语句可以实现从⼀个或多个数据库中的⼀个或多个表中查询信息,并将结果显⽰为另外⼀个⼆维表的形式,称之为结果集(result set)。
select语句的基本的语法格式可归纳如下:
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]
1.使⽤select语句查询⼀个数据表。使⽤select语句时,⾸先要确定所要查询的列。“*”代表所有的列。
查询teaching数据库course表中的所有数据。
mysql>use teaching;
mysql>select*from course;
2.查询表中的指定列。针对表中的多列进⾏查询,只要在select后⾯指定要查询的列名即可,多列之间⽤“,”分隔。
少儿编程语言排行榜查询student表中的studentno、sname和phone数据。
mysql>select studentno,sname,phone from student;
3.可以从⼀个或多个表中获取数据。
使⽤select语句进⾏查询,需要确定所要查询的数据在哪个表中,或在哪些表中,在对多个表进⾏查询时,同样使⽤“,”对多个表进⾏分隔。进⾏多表查询,主要采⽤多表连接或⼦查询的⽅式,也可以通过where⼦句中使⽤连接运算来确定表之间的联系,然后根据这个条件返回查询结果。
何云辉 CSDN ⼆、单表查询。
1.select…from基本⼦句的使⽤。
select⼦句的主要功能是输出字段或表达式的值,form⼦句的主要功能是指定数据源。这两个⼦句在进⾏数据库表查询时,都是必选项。
为字段取别名
利⽤select语句查询数据时,输出项⼀般显⽰创建表时定义的字段名。MySQL可以为查询显⽰的每个输出字段或表达式取⼀个别名,以增加结果集的可读性。例如,可以⽤as关键字给字段取⼀个中⽂名。实现给select⼦句中的各项取别名其语法格式为:select项的原名 as 别名
在student表中查询出⽣⽇期在2001年以后的学⽣的学号、姓名、电话和年龄。
分析:可以通过as为列或表达式更改名称,增加可读性。
mysql>select studentno as'学号',sname as'姓名',
-> phone as'⼿机号',year(now())-year(birthdate)as'年龄'
->from student
->where year(birthdate)>2001;
(1)使⽤谓词过滤记录
如果希望⼀个列表没有重复值,可以利⽤distinct⼦句从结果集中除去重复的⾏。当使⽤distinct⼦句时,需要注意以下事项:
(1)选择列表的⾏集中,所有值的组合决定⾏的唯⼀性。
(2)数据检索包含任何唯⼀值组合的⾏,如果不指定distinct⼦句则将所有⾏返回到结果集中。
在score表中查询期末成绩中有⾼于95的学⽣的学号和课程号,并按照学号排序。
accessories手链分析:不管学⽣有⼏门课的成绩⾼于95,只要有⼀门就可以显⽰,利⽤distinct⼦句可将重复⾏消除。
mysql语句分类mysql>select distinct studentno,courseno
->from score
->where final>95
->order by studentno;
2.使⽤where⼦句过滤结果集
(1)查询符合指定条件的记录数据。
如果要从很多记录中查询出指定的记录,那么就需要⼀个查询的条件。设定查询条件应⽤的是where⼦句,通过where⼦句可以实现很多复杂的条件查询。在使⽤where⼦句时,需要使⽤⼀些⽐较运算符来确定查询的条件。
查询表student中⼊学成绩在800分以上的学⽣的学号、姓名和电话信息。
分析:本例中要求输出学号、姓名和电话信息,即为select⼦句输出表列数据源为表student,条件为⼊学成绩在800分以上。
mysql>select studentno,sname,phone
->from student
云计算培训 机构真正linux->where entrance>800;
(2)带in关键字的查询。
in关键字可以判断某个字段的值是否在于指定的集合中。如果字段的值在集合中,则满⾜查询条件,该记录将被查询出来;如果不在集合中,则不满⾜查询条件。实际上,使⽤in搜索条件相当于⽤or连接两个⽐较条件,如“ xin(10,15)” 相当于表达式“ x=10 or x=15”。也可以使⽤not in关键词查询不在某取值范围内的记录⾏数据。
查询学号分别为的181********、181********和19123567897的学⽣学号、课程号、平时成绩和期末成绩。
分析:检索条件中枚举某些确定值的范围,⼀般可以利⽤ in关键字实现。
mysql>select studentno,courseno ,daily ,final
->from score
->where studentno in('181********','181********','19123567897');
(3)带between and的范围查询。
在where⼦句中,可以使⽤between搜索条件检索指定范围内的⾏。使⽤between搜索条件时,使⽤between搜索条件相当于⽤and连接两个⽐较条件,如“ x between 10 and 27” 相当于表达式“ x>=10 and x<=27 ”。由此可见,在⽣成结果集中,边界值也是符合条件的。检索条件指定排除某个范围的值,⼀般可以利⽤ not between关键字实现。
查询选修课程号为c05109 的学⽣学号和期末成绩,并且要求平时成绩在80到95之间。
分析:检索条件设置在某个的范围内,⼀般可以利⽤between关键字实现。
mysql>select studentno, final
->from score
->where courseno='c05109'and daily between80and95;
(4)带like的字符匹配查询
使⽤通配符结合的like搜索条件,通过进⾏字符串的⽐较来选择符合条件的⾏。当使⽤like搜索条件时,模式字符串中的所有字符都有意义,包括开头和结尾的空格。like主要⽤于字符类型数据。字符串内的英⽂字母和汉字都算⼀个字符。也可⽤通配符并使⽤ not like作为查询条件。
like属于较常⽤的⽐较运算符,通过它可以实现模糊查询。它有两种通配符:“%”和下划线“”:
“%”可以匹配⼀个或多个字符,可以代表任意长度的字符串,长度可以为0。
“”只匹配⼀个字符。
在student表中显⽰所有姓何或姓韩的学⽣的姓名、⽣⽇和Email。
分析:设置where条件实现上述要求,需要采⽤or和like等逻辑运算。Like 操作符可以和通配符⼀起将列的值与某个特定的模式作⽐较,列的数据类型可以是任何字符串类型。无法打开open xml文件
mysql>select sname, birthdate, Email
->from student
->where sname like'何%'or sname like'韩%';
(5)⽤is null关键字查询空值。
涉及空值的查询⽤null来表⽰。create table语句或alter table 语句中的null表明在列中允许存在被称为null的特殊数值,它不同于数据库中的其他任何值。在select语句中,where⼦句通常会返回⽐较的计算结果为真的⾏。那么,在where⼦句中,如何处理null的值的⽐较呢?为了取得列中含有null的⾏,MySQL语句包含了操作符功能is [not] null。
⼀个字段值是空值或者不是空值,要表⽰为:“is null”或“is not null”。不能表⽰为:“=null”或“<>null”。
如果写成 “字段=null”或“字段<>null”,系统的运⾏结果都直接处理为null值,按照false处理⽽不报错。
where⼦句有以下通⽤格式: column is [not] null
在se_score表中添加成绩字段score,查询se_score表中学⽣的学号、课程号和成绩。
分析:学⽣选修课程表se_course中的成绩是允许空值,以此是否成绩为空值作为查询条件,即可查到学⽣的选课情况。
mysql>alter table se_course
->add score float(3,1)null AFTER teacherno;
mysql>select studentno, courseno,teacherno, score
->from se_course
->where score is null;
(6)带and的多条件查询。
where⼦句的主要功能是利⽤指定的条件选择结果集中的⾏。符合条件的⾏出现在结果集中,不符合条件的⾏将不出现在结果集中。利⽤where⼦句指定⾏时,条件表达式中的字符型和⽇期类型值要放到单引号内,数值类型的值直接出现在表达式中。
在score表中显⽰期中⾼于90分、期末成绩⾼于85分的学⽣学号、课程号和成绩。
分析:设置where条件实现上述要求,需要采⽤and逻辑运算,将两个⽐较运算表达式连接起来。apache反向代理配置
mysql>select studentno,courseno,daily,final
->from score
->where daily >=90and final >=85;
(7)带or的多条件查询。
带or的多条件查询,实际上是指只要符合多条件中的⼀个,记录就会被搜索出来;如果不满⾜这些查询条件中的任何⼀个,这样的记录将被排除掉。or可以⽤来连接两个条件表达式。⽽且,可以同时使⽤多个or关键字连接多个条件表达式。
查询计算机学院的具有⾼级职称教师的教师号、姓名和从事专业。
分析:where⼦句设置的条件包括部门和职称,其中⾼级职称⼜包括教授和副教授两类,需要包括or 和and两种逻辑运算。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论