瀚高数据库----select用法

select用来检索数据,是数据库最常用的指令,下面将介绍select的常用语法。

1、表和别名

你可以给一个表或复杂的表引用指定一个临时的名字,用于剩下的查询中引用那些派生的表,这被叫做表别名

表别名经常用来代替很长的表明,例如:

select * from left_verylong_name_table s where s.label = 'vari';


当一个表拥有别名后,不能再用表原先的名字进行查询。例如:

select * from table1 t where table1.id = '1';


这样是错误的。

表别名主要用于简化符号,但是当把一个表连接到它自身时必须使用别名,例如:

select * from people a inner join people b where a.mother_name = b.name;


别名有自己的应用范围,例如:

SELECT a.* FROM (my_table AS a JOIN your_table AS b ON ...) AS c

是不合法的:表别名a在别名c外面是看不到的。

2、表连接

表查询时常常需要连接多个表,这时候就需要连接表的语法。下面举例子表明表连接的语法。

create table table1(id varchar,value varchar);

create table table2(id varchar,value varchar);

insert into table1 values (1,'a1');insert into table1 values (2,'a2');insert into table1 values (3,'a3');insert into table1 values (4,'a4');

insert into table2 values (1,'b1');insert into table2 values (2,'b2');insert into table2 values (3,'b3');insert into table2 values (5,'b5');


select * from table1 inner join table2 on table1.id = table2.id;


select * from table1 full join table2 on table1.id = table2.id;


select * from table1 left join table2 on table1.id = table2.id;


select * from table1 right join table2 on table1.id = table2.id;


3、组合查询

两个查询的结果可以用集合操作并、交、差进行组合。语法如下:

query1UNION [ALL]query2

query1INTERSECT [ALL]query2

query1EXCEPT [ALL]query2

UNION有效地把query2的结果附加到query1的结果上(不过我们不能保证这就是这些行实际被返回的顺序)。此外,它将删除结果中所有重复的行, 就象DISTINCT做的那样,除非你使用了UNION ALL。

INTERSECT返回那些同时存在于query1query2的结果中的行,除非声明了INTERSECT ALL, 否则所有重复行都被消除。

EXCEPT返回所有在query1的结果中但是不在query2的结果中的行(有时侯这叫做两个查询的)。同样的,除非声明了EXCEPT ALL,否则所有重复行都被消除。

你可能感兴趣的:(瀚高数据库----select用法)