• mysql——查询语句——单表查询——(示例)


    一、基本查询语句
    
    select的基本语法格式如下:
    
    select 属性列表 from 表名和视图列表
    
    [ where 条件表达式1 ]
    
    [ group by 属性名1 [ having 条件表达式2 ] ]
    
    [ order by 属性名2 [ asc | desc ] ]
    
    
    属性列表参数表示需要查询的字段名;
    
    表名和视图列表参数表示从此处指定的表或者视图中查询数据,表和视图可以有多个;
    
    条件表达式1参数指定查询条件;
    
    属性名1参数指按照该字段的数据进行分组;
    
    条件表达式2参数满足该表达式的数据才能输出;
    
    属性名2参数指按照该字段中的数据进行排序;排序方式由asc和desc这两个参数指出;
    
    asc参数表示升序,这是默认参数,desc表示降序;(升序表示从小到大)
    
    对记录没有指定是asc或者desc,默认情况下是asc;
    
    
    
    如果有where子句,就按照“条件表达式1”指定的条件进行查询;如果没有where子句,就查询所有记录;
    
    
    
    
    如果有group by子句,就按照“属性名1”指定的字段进行分组,如果group by后面带having关键字,那么只有
    
    满足“条件表达式2”中知道的条件才能输出。group by子句通常和count()、sum()等聚合函数一起使用;
    
    
    
    
    如果有order by子句,就按照“属性名2”指定的字段进行排序,排序方式由asc和desc两个参数指出;默认情况下是asc;

    前提准备:

    create table student(  sid varchar(50),
                           sname varchar(50),
                           sage  varchar(50),
                           ssex  varchar(50)
                        );
    
    insert into student( sid,sname,sage,ssex ) values('1','zhaolei','1990-01-01','nan');
    
    insert into student values('2','qiandian','1990-12-21','nan');
    insert into student values('3','sunfeng','1990-05-20','nan');
    insert into student values('4','liyun','1990-08-06','nan');
    
    insert into student values('5','zhoumei','1991-12-01','nv'),
                              ('6','wulan','1992-03-01','nv'),
                              ('7','zhenzu','1989-07-01','nv'),
                              ('8','wangju','1990-01-20','nv');
    
    select * from student;

    一、查询所有字段

    (1)、列出表的所有字段

    (2)、使用 ‘ * ’ 查询所有字段:select * from 表名;

    select sid,sname,sage,ssex from student;
    
    select * from student;

    二、查询指定字段

    查询数据时,可以在select语句的‘属性列表’中列出  所有查询的指定字段。这种方式可以指定需要查询的字段,而不需要查询出所有的字段;

    查询出来的字段的顺序与select中给出的字段的排列顺序相同。

    select sid,sname,ssex,sage from student;

    示例02:

    select sid,sname from student;

    三、查询指定记录

    即按照条件进行查询:  where   条件表达式;

    查询的结果必须满足查询条件。

    where子句可以用来指定查询条件
    
    语法格式:where 条件表达式
    
    
    其中条件表达式参数指定select语句的查询条件;
    
    
    where子句常用的查询条件又很多种,如下表示:
    
    
    比较                   =<><=>=、……
    
    指定范围               between andnot between and
    
    指定集合               innot in
    
    匹配字符               likenot like
    
    是否为空值             is nullis not null
    
    多个查询条件           andor

    执行语句:

    select * from student where sid = '1';

    四、带in关键字的查询

    in关键字可以判断某个字段的值是否在指定的集合中。

    语法格式:[not] in (元素1,元素2,……元素n);

    注释:各个元素之间用逗号隔开

    执行语句:

    select * from student where sid in ('2','3','5')
    
    select * from student where sid not in ('2','3','5')

    五、带between and的范围查询

    between and关键字可以判断某个字段的值是否在指定范围内。


    语法格式:[not] between 取值1 and 取值2;

    其中not是可选参数,加上not表示不在指定范围内满足条件;

    “取值1”表示范围的起始值;“取值2”表示范围的终止值;

    执行语句:

    select * from student where sid BETWEEN '2' and '5';
    
    select * from student where sid not BETWEEN '2' and '5';

    六、带like的字符匹配查询


    like关键字可以匹配字符串是否相等。

    语法格式:[not] like '字符串';


    not是可选参数,加上not表示与指定的字符串不匹配时满足条件;

    字符串表示指定用来匹配的字符串,该字符串必须添加单引号或者双引号。

    字符串参数的值可以是一个完整的字符串,也可以是包含%或者_的通配符;


    %可以代表任意长度的字符串,长度可以为0,

    举例:b%k表示以字母b开头,以字母k结尾的任意长度的字符串;该字符串可以代表bk,buk,book,break等字符串;

    _只能代表单个字符;

    举例:b_k表示以字母b开头,以字母k结尾的长度为3的字符串。中间的_可以代表任意一个字符串;

    举例:select * from employee where name like 'aric';

    此处查询出name='aric'的记录,这里like相当于=


    注意一个汉字是2个字符串,要用2个--

    执行语句:

    select * from student where sname like 'zhao%';
    
    select * from student where sname not like 'zhao%';

    七、查询空值

    is null关键字可以用来判断字段的值是否为空值。

    语法格式:is [not] null;

    执行语句:

    select * from student where sname is null;
    
    select * from student where sname is not null;

    八、带and的多条件查询

    and关键字可以联合多个条件进行查询,使用and关键字时,只有同时满足所有查询条件的记录才会被查询出来;


    语法格式:条件表达式1 and 条件表达式2 […… and 条件表达式n]

    执行语句:

    select * from student where sid < 4 and ssex = 'nan';

     九、带or的多条件查询

    使用or关键字时,只要满足这几个查询条件中的一个,这样的记录将会被查询出来,如果不满足这些查询条件的任何一个,这样的记录将会被排除


    语法格式:条件表达式1 or 条件表达式2 [ ……or 条件表达式n ]

     注意:and 和 or 关键字一起使用时,and比or要先运算,and关键字前后的条件先结合,然后再与or关键字的条件结合。

    执行语句:

    select * from student where sid < 4 or ssex = 'nan';

    十、查询结果不重复

    如果表中的某些字段没有唯一性约束,这些字段可能存在着重复的值。


    select语句中可以使用distinct关键字来消除重复的记录;

    语法格式: select distinct 属性名

    select distinct ssex from student;

    十一、对查询结果排序

    使用order by关键字对记录进行排序


    语法格式:order by 属性名 [ asc|desc ]


    属性名参数表示按照该字段进行排序;

    asc参数表示按照升序的顺序进行排序;

    desc参数表示按照降序的顺序进行排序;

    默认情况下按照asc方式进行排序;

    举例:select * from employee order by age desc;

    注意:如果记录中存在一条记录,其age字段的值是空值(null),则这条记录将会显示为第一条记录,因为按照升序排序时,


    含空值的记录将最先显示,可以理解为空值是该字段的最小值;而按照降序排序时,age字段为空值的记录将最后显示

    MYSQL中,可以指定按照多个字段进行排序

    举例:select * from employee order by d_id asc,age desc;

    查询employee表中的所有记录,按照d_id字段的升序方式和age字段的降序方式进行排序

    查询结果排序时,先按照d_id字段的升序方式进行排序,如果有多个d_id字段的值相同,则这几个记录再按照age字段进行降序排列;

    执行语句:

    select * from student order by sid desc;

    十二、用limit限制查询结果的数量


    limit关键字可以指定查询结果从哪条记录开始显示,还可以指定一共可以显示多少条记录。

    limit关键字有两种使用方式。分别是不指定出事位置和指定初始位置。

    (1)不指定初始位置

    limit关键字不指定初始位置时,记录从第一条记录开始显示。显示的记录条数由limit关键字指定

    语法格式:limit 记录数

    记录数参数表示显示记录的条数


    注释:如果“记录数”的值小于查询结果的总记录数,将会从第一条记录开始显示,显示指定条数的记录;

    如果“记录数“的值大于查询结果的总记录数,数据库系统会显示查询出的所有记录


    举例:select * from employee limit 2;

    举例:select * from employee limit 10;

    虽然limit关键字指定了10条记录,但是查询结果中只有4条记录,因此数据库系统会显示全部4条记录;


    (2)指定初始位置


    limit关键字可以指定从哪条记录开始显示,并且可以指定显示多少条记录


    语法格式:limit 初始位置,记录数

    初始位置指定从哪条记录开始显示;

    记录数表示显示记录的条数;

    第一条记录的位置是0,第二条记录的位置是1,后面以此类推;

    执行语句:不指定初始位置

    select * from student limit 3;

    执行语句:指定初始位置

    select * from student limit 1,3;

     
  • 相关阅读:
    php利用__callStatic静态调用同类中非静态方法
    Using $this when not in object context错误原因及解决办法
    fastadmin权限修改
    call_user_func()
    php empty()奇怪现象
    LF will be replaced by CRLF in vendor/
    git放弃本地,强制拉取远程
    tp5防xss攻击方法
    php curl
    关于Mac设置alias别名访问服务器
  • 原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12091935.html
Copyright © 2020-2023  润新知