</pre><pre name="code" class="sql">select '(列/聚合函数/子查询(单列))'
from '(表/子查询(表))'
--1. where (列条件 (关系运算符) (条件值/子查询(单列)))
--2. where (列条件 in (一组范围值/子查询(单列)))
--3. exists (子查询) --比较
group by 列 --对某一列进行分组
having 聚合函数 > 1 --分组后再查询
--1. order by (列/select后面有的聚合函数) asc --升序
--2. order by (列/select后面有的聚合函数) desc --倒序
select 列,count(列) from 表 group by 列 --select 后面出现了列并且还有聚合函数, 就是要分组
select name from tb1 having min(fenshu) > 80 order by name --查询每门课都大于80分的人
select distinct name from tb1 where fenshu > 80 --distinct 去除重复项
select distinct name from tb1 where name like '张%' --查询所有姓张的 并去除重复
'_b%'
'%[_,%]%'
'%[[,]]%'
select * from tb1 as a INNER JOIN tb2 as b ON a.city = b.city --内链接
--LEFT OUTER --左外连接
select * from tb1 as a LEFT OUTER tb2 as b ON a.id = b.id where b.uid is null -- 查询右表没有数据的行
-----------------------------------------------------------------------------------------------------
--用一条SQL语句查询出表TB1中每门课都大于80分的学生姓名
select name from tb1
group by name
having min(fenshu) > 80
--用一条SQL语句查询出表TB1中学生姓名及大于80分的科目门数
select name,COUNT(*) as 门数 from tb1
where fenshu>80
group by Name
--查询出姓“张”的学生名称
select distinct name from tb1
where Name like'张%'
--复制表(只复制结构,源表名:a 新表名:b),并且在新表中增加一列字段名称为“goods_prc”的数字型
select *,0 as aaaaa into 新表名称 from tb1 --复制表的 数据 和 结构 并添加一列 int 类型 的aaaaa,如果想加一行string 类型的 把 0 改为 ""
where 1 <> 1 --只复制表的结构 而不复制表的数据
--请说明exists 与 IN 的异同,及union all 与 union 的 区别
--表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列
--请建立一个存储过程,返回今天是2014年中的第多少天
if exists(select * from sysobjects where name = 'proc_tianshu') --判断是否有那个存储过程
drop procedure proc_tianshu --如果有就删除
go
create proc proc_tianshu --创建存储过程
(
@shuchu int output --输出参数
)
as
select @shuchu = datediff(day,'2014-01-01',getdate())
go
declare @shuchu int --定义输出参数
exec proc_tianshu @shuchu output --执行存储过程 并赋值给输入参数
select @shuchu as 天数 --显示查询出来的东西
--创建存储过程,接收一个数据,如果大于 90,输出优秀,大于60 输出 合格,否则输出 不及格
if exists(select * from sysobjects where name = 'proc_chengji') --判断是否有那个存储过程
drop procedure proc_chengji --如果有就删除
go
create proc proc_chengji --创建存储过程
(
@shuru int, --输入参数
@shuchu varchar(50) output --输出参数
)
as
if @shuru > 90 --如果输入的参数大于90
begin
set @shuchu = '优秀' --输出参数赋值为 优秀
end
else if @shuru > 60 and @shuru <= 90 --如果输入的参数大于60 并小于90
begin
set @shuchu = '合格' --输出参数赋值为 合格
end
else --否则
begin
set @shuchu = '不及格' --输出参数赋值为 不及格
end
go
declare @shuchu varchar(50) --定义输出参数
exec proc_chengji 99,@shuchu output --执行存储过程 并赋值给输入参数
select @shuchu as 介绍 --显示查询出来的东西
--创建存储过程 接收一个数字 写一个循环,把数据从0 加到 指定数字,然后返回结果
if exists(select * from sysobjects where name = 'proc_shuzi') --判断是否有那个存储过程
drop procedure proc_shuzi --如果有就删除
go
create proc proc_shuzi --创建存储过程
(
@shuru int, --输入参数
@shuchu int output --输出参数
)
as
set @shuchu = 0 --为变量赋值
declare @i int = 0 --声明一个变量
while (@i <= @shuru)
begin
set @shuchu += @i
set @i += 1
end
go
declare @shuchu int --定义输出参数
exec proc_shuzi 100,@shuchu output --执行存储过程 并赋值给输入参数
select @shuchu as 数字 --显示查询出来的东西
--查询前1000条数据
SELECT TOP 1000 [Uid]
,[Uname]
,[Upwd]
FROM [UserDB].[dbo].[UserInfo]
或者
SELECT TOP 1000 *
FROM 表名
--查询第30到40条数据
select top 10 *
from table
where id not in (
select top 29 id
from table)