sql命令三

Select 详解

select语法说明

Name: 'SELECT'
Description:
Syntax:
SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [MAX_STATEMENT_TIME = N]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
      [PARTITION partition_list]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [PROCEDURE procedure_name(argument_list)]
    [INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
      | INTO DUMPFILE 'file_name'
      | INTO var_name [, var_name]]
    [FOR UPDATE | LOCK IN SHARE MODE]]

查询记录

select [*|columnName] from tableName [where condition];
//1、‘*’表示将所有的字段都显示出来
//2、用逗号将columnName分隔,列出需要查询显示的字段
//eg(当前版本mysql。user表中不存在password字段,为加密后的密钥)
select user,host,password from mysql.user;

查询不重复记录

select Distinct columnName From tableName Where selectCondition;

//1、Distinct必须放在最开头
//2、Distinct只能使用需要去重的字段进行操作(如果我对name和age字段进行了去重,我后面就只能根据name或者age或者这两个字段进行排序,而不能使用其他字段进行排序)
//3、Distinct去重多个字段时,是指 几个字段 同时重复时才会被过滤

条件查询

select columnName from tableName where Condition;
//Where条件又叫过滤条件,它从From子句的中间结果中去掉所有条件补位True(为False或Null)的行
//Where子句跟在From子句后面,不能再Where子句中使用列别名
eg: select * from student where sex='1' and age>20;
//where 后面的条件可以用>、<、>=、<=、!= 等多种比较运算符
//多个条件之间可以用or、and、not、xor等逻辑运算符

Where中出现的字符串或者日期字面量必须使用引号括起来
Mysql不区分大小写进行查询(与oracle不同),字符串字面量大小写查询结果一致

Where 条件中逻辑操作符

逻辑操作符说明
and逻辑与(两个子条件)。只有子条件都为True时,才为True
or逻辑或(两个子条件)。所有条件中只要有一个为True,就为True
not逻辑非(一个子条件)。如果子条件为True,则子条件为False(反转)
xor逻辑异或(两个子条件)。当一个子条件为True而另一个子条件为False时,其结果为True;当两个子条件都为True或False时,结果为False。否则结果为Null

范围比较查询

//eg:
select * From world.city Where population Between 10000 And 20000;

In 查询

//eg:
select * From world.city Where countrycode In ('chn','jpn');

模糊查询

select * From world.city Where countrycode Like '匹配模式字符串';
//eg:
Select * From world.city Where countrycode Like 'ch%';

实现模式匹配查询或者模糊查询:测试一个列值是否匹配给出的模式
在‘匹配模式字符串’中,可以有两个具有特殊含义的通配字符
1. %:表示0个或者多个字符
2. _:只表示一个任意字符

查询结果排序

使用order by排序;如果select语句中没有order by子句,那么结果集中行的顺序是不可预料的。

//eg:
Select * From world.city ORDER BY population(columnName) desc;
//多个排序字段
Select * From world.city ORDER BY population desc countrycode asc;
//以表中列编号进行排序
Select * From world.city ORDER BY 5 desc;

MYSQL中,把Null值当做一列值中最小的值对待。因此,ASC排序时,Null值在最前面。
使用方法:ORDER BY子句一般在Select语句的最后。
ORDER BY子句后面可以跟多个不同的排序字段(columnName),每个字段都可以有不同的排序顺序。
当第一个排序字段的值一样时,相同的结果行按照第二个排序字段进行排序。
如果只有一个排序字段,则字段相同的记录将会无序排序。

部分参数说明:
* ASC:执行升序排序,默认值。
* DESC:执行降序排序。

限制查询(限制显示的结果集:LIMIT)

//用法
Limit [跳过行号('偏移量')] <获取行数>
//eg:
Select * From world.city Where population Between 10000 and 20000 Limit 2,10;
//行号从零开始
//意思为跳过第0,1,2行,显示10行结果

Select语句中的最后一个子句(在ORDER BY之后)【MYSQL特有子句】
偏移量最小为0
它用来表示从结果集中选取最前面或最后面的几行。

综合查询实例

select * from world.city where population between 10000 and 20000 order by population desc limit 0,10;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值