基本的select语句

282 阅读3分钟

select ...

#没有任何子句
select 1;
#没有任何子句
select 10/2;

select ... from

  • 语法:
    • select 标识选择哪些列
    • from 标识从哪个表中选择
  • 选择全部列:
 select * from writing_task;
 一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符*,使用通配符虽然可以节省输入查询语句的时
 间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率,通配符的优势是,当不知道所需要的列名
 称时,可以通过它获取它们
 在生产环境下,不推荐你直接使用select * 进行查询
  • 选择特定列:
 select task_id,name,demand from writing_task;

列的别名

  • 重命名一个列;
  • 便于计算;
  • 紧跟列名,也可以在列名和别名之间加关键字as,别名使用"",以便在别名中包含空格或特殊的字符并区分大小写;
  • as可以省略;
  • 建议别名简短,见名知意;
select name as "名字",demand "任务 要求" from writing_task; 

去除重复行

默认情况下,查询会返回全部行,包括重复行.在select语句中使用distinct去除重复行,distinct其实是对后面所有列名的组合进行去重.

空值参与运算

  • 所有运算符或列值遇到null值,运算结果都为null.
  • 在mysql中,空值不等于空字符串,一个空字符串的长度为0,而一个空值的长度是空.而且,在mysql里面,空值是占用空间的.

着重号

我们需要保证表中的字段,表名等没有和保留字,数据库系统或常用的方法冲突,如果真的相同,请在sql语句中使用一对``(着重号)引起来.

create table order;#错误
create table `order`;#正确

select查询还可以对常数进行查询.对的,就是在select查询结果中增加一列固定的常数列,这列的取值由我们指定的,而不是从数据表中动态取出的.
你可能会问为什么我们还要对常数进行查询呢?
sql中的select语法的确提供了这个功能,一般来说我们只从一个表中查询数据,通常不需要增加一个固定的常数列,但是如果我们想整合不同的数据源,用常数列作为这个表的标记,就需要查询常数.

select  name,task_type,"百度" as corporation from writing_task;

显示表结构

DESC 表名/DESCRIBE 表名;
其中各个字段的含义:

  • Filed:表示字段名称;
  • Type:表示字段类型,这里的bracode,goodsname是文本类型,price是整数类型;
  • Null:表示该列是否可以存储null值;
  • Key:表示该列是否已编制索引,PRI表示该列是表主键的一部分,UNI表示该列是UNIQE索引的一部分,MUL表示在列中某个给定值允许出现的次数;
  • Defulat:表示该列是否有默认值,如果有,那么值是多少;
  • Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等;

过滤数据where

  • 语法:
    select 字段1,字段2
    from 表名
    where 条件
    
    • 使用where子句,将不满足的条件行过滤掉
    • where子句紧随from子句
  • 举例:
    select * from writing_task where task_type=2;