SQL语法的一些基本应用

--有错误的地方麻烦补充一下, 谢谢!
</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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值