SQL的select语句完整语法

select 语句查询格式

select 目标表的列名或列表达式序列(2019-ave)
from 基本表名 (最好加一个别名容易操作)和(或)视图序列
[where 行条件表达式]
[group by 列名序列
[having 组条件表达式]]
[order by 列名[asc(升序)| desc(降序)]…]

  1. 子句select-from-where的执行过程
    根据where子句的条件表达式,从from表中指定的表或视图中找到满足条件的元组,再按照select子句中的目标列表达式再选出元组中的属性形成结果表。

  2. 整个子句的执行过程
    读取from子句中的基本表,视图,进行笛卡尔积操作——>选取满足where子句中条件表达式的元组——>按照group子句里面的指定列进行分组,提取满足having子句条件的表达式的组——>按select给出的列名或列表达式求值取出——>根据order by对输出表进行排序,升序或降序。

表的查询

单表查询(最简单的查询)

// 1.查询指定列
select SNO, SNAME from s;

//2.查询全部列(两种方法)
select * from s;  /**列名非常的多时推荐使用**/
select sno, sname, sex, avg, sdept from s; /**列的显示顺序与基表的顺序相同**/

//3.查询经过计算的列
//比如:查询全体学生的姓名及出生年份
select sname, 2019 - ave from s;

//4.选择表中的若干行
/**distinct消除重复行,默认是all**/
select distinct sno from sc; 
/**用in查找指定集合的元组**/
//比如:查询计算机系(CS),数学系(MA), 信息系(IS)学生的姓名和性别
select sname, sex from s where sdept in ('CS', 'MA', 'IS');

//5.涉及到空值的查询(只能用is不能用=)
select sno,cno from sc where grade is null;
select sno,cno from sc where grade is not null;

//6.多重条件:可用逻辑运算符AND和OR来连接多个查询条件,AND的优先级高于OR,括号可以改变优先级
select sno,cno from sc where  sdept in ('CS', 'MA', 'IS') and grade is not null;

//7.order by子句:按一个或多个属性列排序。升序:ASC;降序:DESC;默认是升序
select sno,cno from sc order by grade desc;
* 当排序含空值时:ASC:排序列为空值的元组最后显示;DESC:排序列为空值的元组最先显示




你可能感兴趣的:(sql,数据库)