SQL语句学习笔记 - 进阶

进阶语法

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 条件

猜你喜欢

转载自blog.csdn.net/yang_kaiyue/article/details/82494545