SQL复习 总结

新建数据库
删除数据库
新建数据表
create table Test
{
number varchar(10),
ammout float
}
drop table Test-----删除表

修改表字段(一列):
alter table Test alter column Number  nvarchar(50)
插入数据:
insert  into Test Number,ammout values()
修改表中的数据:
update Test set ammont=ammont+50  where Number=PK1
删除表中的数据
Delect from Test where ammout<0
插入多行
inset into Test
select   union
聚合函数
Max Min Sum() Count() avg
分组
group by()
排序
order by
*******复制表结构,Copy表内容

4 复制表(只要表结构,不要数据)
  

 (1)方法1

select *
into New2Teacher
from TblTeacher
where 1<>1

(2)方法2
use TestSchool
select top 0 *
into New3Teacher
from TblTeacher

5 把一个表的数据copy到另一个 已经用上面的方式生成的

表中。
set identity_insert New3Teacher on
insert into New3Teacher values('玉良',1,22,2000,'2010-10-10')
select* from TblTeacher
set identity_insert New3Teacher off

 

insert  into TestDatatime (uname) values('战三')

----默认值绑定
转换日期类型
select GetDate()
print GetDate()
Print convert(varchar(50),getdate(),105)
**Print  以消息的方式输出

把‘2012-03-22’----转换为----‘201203’
Print convert (varchar(50),getdate(),105)
Print cast(getdate() as varchar(10))

3  dateadd  日期相加
 算出100 天后的日期                   
Print dateadd(day,100,getdate())
算出200天后的日期
Print dateadd(day,200,getdate())
再转换一下
Print convert(varchar(50),dateadd(day,200,getdate()),111)

插入日期数据
update  MyStudent set FBirthday='1992-03-22' where FBirthday is null

select * from Employees
order by EmpInTime  

给入职超过一年的员工加薪1000
入职时间大于1 年,使用getdate和dateadd
入职日期+1年  还<当前日期
update Employees
 set EmpSalary=EmpSalary+1000
where EmpInTime
DATEADD(year,1,EmpInTime)<GETDATE()

1983 年11月22日距现在相差多少年?(月)
datadiff()  相减
datadiff(year,'1983-11-22',getdate())
datadiff(month,'1983-11-22',getdate())

统计每年入职的人数
select year(EmpInTime) as 入职年份,
人数=count(*)
from Employees
group by  year(EmpInTime)
---用year 获取时间的一部分

统计1991 年出生的学生 MyStudet
select *  from MyStudents
where YEAR(FBirthday)='1991'


datepart 日期的一部分
print datapart(hour,getdate())
print datapart(minute,getdate())
print datapart(second,getdate())
print datapart(ms,getdate())

4.
select top 3 CallerNumber as 呼叫员编号,
count(*) 呼叫次数
from CallerRecords
where
group by CallerNumber
order by 呼叫次数 desc

更新时间

update  CallRecords set StartDateTime=Dataadd(year,2,StartDateTime),
ENDDateTime=Dataadd(year,2,EndDateTime)

 

CASE函数
select  scoreId,StudentId,english,
评级=
case(
when english>=90 then  '优秀'
when english>=80 then  '良好’
when english>=70 then  '中等'
when english>=60 then  '及格'
else'不及格'
)
end
from Score

 

一个表中,有AB两列,现在要求查询结果集中包含ABC三列。
如果A>B则
C列中的值为A,否则为B
create table 表名
(
A int,
B int
)
insert into    values()

select A, B ,
C=
case
  when A>B then A
  else B
end
 from   表名

 


-------------------------------------
USE Test
select * from MyOrders

select 
salesAssistant  as 销售员,
Sum(saveNumber*savePrice) as 销售总金额,
称号=
case
 when  Sum(saveNumber*savePrice) >6000 then '金牌'
 when  Sum(saveNumber*savePrice) >6000 then '银牌'
 when  Sum(saveNumber*savePrice) >6000 then '铜牌'
else '普通'
end
from MyOrders
group by salesAssistant
order by 销售总金额    desc
----------------------------------
cerate table TestCase2
(
Number varchar(50),
Amount float
)
insert into TestCase2 values('RK1',10)
insert into TestCase2 values('RK2',30)
insert into TestCase2 values(RK3',-20)
insert into TestCase2 values('RK4',-60)

select
number as 账号,
支出=
case
when Amont>0 then AMOUNT
else 0
end,
收入=
case
when Amount<=0 then   abs(Amount)
else 0
end

from 表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值