进阶语法
limit
用于限制返回的记录数量
# mysql
select 列名 from 表名 limit 数量
# sql server
select top 数量 [percent] 列名 from 表名
# oracle
select 列名 from 表名 where rowrun <= 数量
like ( 模糊查找模式 )
用于where语句的模糊查找
select 列名 from 表名 where 列名 like 值
# 查找名字以y开头的
select * from person where name like 'y%'
# 查找名字以y结尾的
select * from person where name like '%y'
# 查找包含ky的
select * from person where name like '%ky%'
# 查找不包含ky的
select * from person where name not like '%y'
通配符
通配符 | 描述 |
---|---|
% | 代替一个或多个字符 |
_ | 代替一个字符 |
[charlist] | 代替括号内, 任意单一字符 |
[^charlist] 或 [!charlist] | 代替不在括号内, 任意单一字符 |
# 选取名字不以 "A" 或 "L" 或 "N" 开头的人
select * from person where name like '[^ALN]%'
in ( 查找多值 )
in操作符允许我们在where语句中规定多个值
select 列名 from 表名 where 列名 in (值1, 值2..)
# 查找 name 字段为 alex 或 Jing 信息
select * from person where name in ('alex','Jing')
as ( 别名 )
给表起别名, 方便看
# 给表起别名
select t_name1.name, t_name1.age, t_name2.name, t_name2.school from
t_name1 as t1, t_name2 as t2 where t1.name = t2.name
# 给列起别名
select age as A, school as S from person
join..on..
- 引用网上的例子
inner join ( 内连接 )
只保留两张表中完全匹配的结果集
这种连接方式, 当orders表Id_P字段在Persons表中找不到匹配时, 不会列出
select Persons.LastName, Persons.FirstName, Orders.OrderNo \
from Persons inner join Orders\
on Persons.Id_P=Orders.Id_P order by Persons.LastName;
left join ( 左连接 )
即使右表中没有匹配, 也返回左表所有的行, 右表的不匹配项为NULL
select Persons.LastName, Persons.FirstName, Orders.OrderNo \
from Persons left join Orders\
on Persons.Id_P=Orders.Id_P order by Persons.LastName;
right join ( 右连接 )
即使左表中没有匹配, 也返回右表所有的行, 左表的不匹配项为NULL
select Persons.LastName, Persons.FirstName, Orders.OrderNo \
from Persons right join Orders\
on Persons.Id_P=Orders.Id_P order by Persons.LastName;
full join ( 全连接 )
查询结果为left join和right join的并集
select Persons.LastName, Persons.FirstName, Orders.OrderNo \
from Persons full join Orders on \
Persons.Id_P=Orders.Id_P order by Persons.LastName;
union
用于合并两个或多个select语句的结果集
结果集列的数量必须相同
* 列出t1和t2的name字段, 不会重复显示
select name from t1
union
select name from t2
- 列出t1和t2的name字段, 会重复显示
select name from t1
union all
select name from t2
select into
从一个表中选取数据, 并将数据插入到另一个表中
- select .. into ..
# 将旧表数据存入新表中
select * into new_table from old_table
select name,age into new_table from old_table
- select .. into .. where ..
# 将旧表数据存入新表中
select * into new_table from old_table where 条件1
select name,age into new_table from old_table where age=18
- select .. into .. join ..
select * into new_table from old_table1 inner join old_table2 on 条件